Pendo MCP connector
OAuth 2.1/DCRAnalyticsMonitoringConnect to Pendo MCP to access product analytics, user guidance, and engagement data directly from your AI workflows.
Pendo MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'pendomcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Pendo MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'pendomcp_list_all_applications',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "pendomcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Pendo MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="pendomcp_list_all_applications",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Visitorquery records — Retrieve visitor data and metadata, or count matching visitors
- Visitormetadataschema records — Return the set of metadata fields available for visitors
- Segmentlist records — List all segments in the subscription with their IDs, names, and optional feature flag names
- Searchentities records — Search for product entities such as pages, features, track types, guides, accounts, and segments
- Productengagementscore records — Calculate the Product Engagement Score for an application over a date range, returning adoption, stickiness, and growth metrics
- Productareamemberactivity records — Return all pages, features, or track types in a product area including those with zero activity
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
pendomcp_accountmetadataschema#Return the set of metadata fields available for accounts.2 params
Return the set of metadata fields available for accounts.
subIdstringrequiredSubscription ID that owns the data. Required for all queries.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_accountquery#Retrieve account data and metadata, or count matching accounts.7 params
Retrieve account data and metadata, or count matching accounts.
subIdstringrequiredSubscription ID that owns the data. Required for all queries.accountIdstringoptionalonly return data about the specified accountIdcountbooleanoptionalSet to true to return only the total count of matching records instead of rows.metadataFilterstringoptionalFilter using: metadata.metadataGroup.metadataField == metadataValue. Groups: agent, auto, custom, salesforce. Operators: == != < > <= >=. Combine with && or ||. String values need quotes. Dates: date("YYYY-MM-DD"). e.g. metadata.auto.country == "US" && metadata.custom.plan == "enterprise"segmentIdstringoptionalfilter the results by the specified segment id. If not provided, no segment filtering is applied.selectarrayoptionallist of fields to read in addition to the accountId. only exact field names may be used, and should come from the accountMetadataSchema tooluserQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_activityquery#Query aggregated activity metrics for pages, features, and track types over a date range.19 params
Query aggregated activity metrics for pages, features, and track types over a date range.
appIdstringrequiredApplication id of the app to querydateRangeobjectrequiredThe time period to query. Use 'relative' with lastNDays or 'custom' with explicit dates.entityTypestringrequiredThe entity type to querysubIdstringrequiredSubscription ID that owns the data. Required for all queries.accountIdstringoptionalFilter results to a specific account. REQUIRED when the user mentions or references a specific account. Use the exact account ID stringcountbooleanoptionalSet to true to return only the total count of matching records instead of rows.featureFlagobjectoptionalFilter events to those where a feature flag was set. Object: {name, value}. e.g. {"name": "myFlag", "value": true}. Use value:false to filter to events where the flag is not true.frustrationMetricsbooleanoptionalToggles return of frustration metrics: error click/rage click/u-turn/dead click countgrouparrayoptionalFields to group results by. e.g. ["featureId"] for per-feature rows, ["visitorId"] for per-visitor rows. Any field in select can be used.historicalMetadataFilterobjectoptionalFilter by metadata values at event time (not current). Object: {kind, group, field, op, value}. kind: visitor|account|parentAccount. op: == != < > <= >=. e.g. {"kind":"visitor","group":"agent","field":"email","op":"==","value":"\"user@example.com\""}itemIdsarrayoptionalThe item ids to querylimitnumberoptionalMaximum number of rows to return. Range: 1-1000. Default: 1000.periodstringoptionalAggregation period: dayRange (default), day, week, month. Controls how date ranges are bucketed in results.productAreaIdstringoptionalScope query to one product area. Mutually exclusive with itemIds. Use listProductAreas to find the ID.segmentIdstringoptionalfilter the results by the specified segment id. If not provided, no segment filtering is applied.sortarrayoptionalThe fields to sort by. Prepending the field with a + (ascending) or - (descending) determines the sort direction.userQuerystringoptionalThe original user query or question that triggered this tool call.visitorIdstringoptionalFilter results to a specific visitor. REQUIRED when the user mentions or references a specific visitor. Use the exact visitor ID stringvisitorMetadataFilterstringoptionalFilter activity by visitor metadata (current values). e.g. metadata.auto.country == "US" && metadata.custom.plan == "enterprise". Mutually exclusive with segmentId.pendomcp_agent_analytics_key_metrics#Return key aggregate metrics for an AI agent's conversations over a date range, with period-over-period comparison.6 params
Return key aggregate metrics for an AI agent's conversations over a date range, with period-over-period comparison.
agentIdstringrequiredRequired. The AI agent ID to get metrics for (from list_ai_agents).endDatestringrequiredQuery end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.startDatestringrequiredQuery start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.subIdstringrequiredSubscription ID that owns the data. Required for all queries.appIdstringoptionalApplication ID of the app to query (defaults to -323232 if not specified)userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_ai_agent_issue_analysis#Return diagnoses, flagged tool/model usage, and user prompt content for a specific detected issue in an AI agent.8 params
Return diagnoses, flagged tool/model usage, and user prompt content for a specific detected issue in an AI agent.
agentIdstringrequiredThe AI agent ID (from list_ai_agents). Used to scope the lookup to the correct agent.appIdstringrequiredApplication id of the app to queryconversationIdsarrayrequiredList of conversation IDs for the issue cluster (from the list_ai_agent_issues response).endDatestringrequiredQuery end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.eventIdsarrayrequiredList 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.startDatestringrequiredQuery start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.subIdstringrequiredSubscription ID that owns the data. Required for all queries.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_get_agent_context#Fetch a grounding document describing a Pendo product resource so an LLM can answer questions about it.5 params
Fetch a grounding document describing a Pendo product resource so an LLM can answer questions about it.
resource_idstringrequiredOpaque id for that resource type (e.g. when resource_type is 'space', the space id).resource_typestringrequiredWhich product resource to load context for. Supported values depend on subscription features; currently includes 'space'.subIdstringrequiredSubscription ID that owns the data. Required for all queries.frame_idstringoptionalWhen 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.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_guidemetrics#Get performance metrics for a single guide over a date range, including reach, views, and completion rates.7 params
Get performance metrics for a single guide over a date range, including reach, views, and completion rates.
endDatestringrequiredQuery end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.guideIdstringrequiredThe exact guide ID to analyze.startDatestringrequiredQuery start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.subIdstringrequiredSubscription ID that owns the data. Required for all queries.blackliststringoptionalBlacklist behavior: 'apply' (use blacklist, normal behavior), 'ignore' (do not use blacklist), 'only' (invert blacklist, return only blacklisted activity)periodstringoptionalAggregation period: dayRange (default), day, week, month. Controls how date ranges are bucketed in results.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_list_ai_agent_issues#List detected issues in an AI agent's conversations with instance and conversation counts.7 params
List detected issues in an AI agent's conversations with instance and conversation counts.
agentIdstringrequiredRequired. The AI agent ID to filter by (from list_ai_agents). Issues are clustered per agent to match the emergent issues table.endDatestringrequiredQuery end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.startDatestringrequiredQuery start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.subIdstringrequiredSubscription ID that owns the data. Required for all queries.appIdstringoptionalApplication ID to filter by. If omitted, returns data across all applications the user can access.limitnumberoptionalMaximum number of issue rows to return. Range: 1-500. Default: 100.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_list_ai_agents#List all AI agents accessible in this subscription with agent IDs, names, and deployment configuration.2 params
List all AI agents accessible in this subscription with agent IDs, names, and deployment configuration.
subIdstringrequiredSubscription ID that owns the data. Required for all queries.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_list_all_applications#List all applications and subscriptions the current user has access to.1 param
List all applications and subscriptions the current user has access to.
userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_list_spaces#List the Pendo Spaces accessible to the current user.2 params
List the Pendo Spaces accessible to the current user.
subIdstringrequiredSubscription ID that owns the data. Required for all queries.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_list_use_cases#Return conversation clustering analysis for an AI agent, grouped by semantic topic.5 params
Return conversation clustering analysis for an AI agent, grouped by semantic topic.
agentIdstringrequiredThe AI agent ID to analyze retrieved from the list_ai_agents toolendDatestringrequiredQuery end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.startDatestringrequiredQuery start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.subIdstringrequiredSubscription ID that owns the data. Required for all queries.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_listguides#List, filter, and search in-app guides, or fetch a single guide's full content.13 params
List, filter, and search in-app guides, or fetch a single guide's full content.
subIdstringrequiredSubscription ID that owns the data. Required for all queries.activationstringoptionalFilter by launch method: auto (automatic), api (programmatic), badge, dom (element click), embed, launcher (resource center), page (page view), feature (mobile element click), form, track (track event).appIdstringoptionalApplication ID to filter by. If omitted, returns data across all applications the user can access.expandbooleanoptionalSet to true for detailed guide metadata (steps, polls, scheduling, recurrence, conversion). Does not include guide content text — use guideId for that.expirationstringoptionalFilter 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.guideIdstringoptionalFetch 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.guideTypestringoptionalFilter by type: banner, tooltip, lightbox, walkthrough, whatsnew, building-block, group, training, launcher, mobile-lightbox.limitnumberoptionalMaximum number of results to return.offsetnumberoptionalNumber of matching results to skip before returning. Use with limit to paginate through large result sets.searchstringoptionalSearch query for guide names/descriptions. Use with searchType. Offset is ignored when search is active — use limit to control result count.searchTypestringoptionalSearch mode: semantic (natural-language ranked by meaning) or fuzzy (keyword matching on name and description).statusstringoptionalFilter guides by state. Values: "public" (live), "staged" (testing), "draft" (in progress), "_pendingReview_" (awaiting review), "disabled" (turned off).userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_listproductareas#List all product areas in the subscription with their IDs, names, and descriptions.5 params
List all product areas in the subscription with their IDs, names, and descriptions.
subIdstringrequiredSubscription ID that owns the data. Required for all queries.limitnumberoptionalMaximum number of results to return.offsetnumberoptionalNumber of matching results to skip before returning. Use with limit to paginate through large result sets.searchstringoptionalOptional fuzzy search string to filter product areas by name or description. When omitted, all product areas are returned.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_productareamemberactivity#Return all pages, features, or track types in a product area including those with zero activity.10 params
Return all pages, features, or track types in a product area including those with zero activity.
dateRangeobjectrequiredThe time period to query. Use 'relative' with lastNDays or 'custom' with explicit dates.entityTypestringrequiredThe entity type to query. Must be a direct product area type: page, feature, or trackType.productAreaIdstringrequiredThe ID of the product area whose members to return.subIdstringrequiredSubscription ID that owns the data. Required for all queries.appIdstringoptionalApplication ID of the app to query (defaults to -323232 if not specified)limitnumberoptionalMaximum number of rows to return. Range: 1-1000. Default: 1000.periodstringoptionalAggregation period: dayRange (default), day, week, month. Controls how date ranges are bucketed in results.segmentIdstringoptionalfilter the results by the specified segment id. If not provided, no segment filtering is applied.sortarrayoptionalThe fields to sort by. Prepending the field with a + (ascending) or - (descending) determines the sort direction.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_productengagementscore#Calculate the Product Engagement Score for an application over a date range, returning adoption, stickiness, and growth metrics.18 params
Calculate the Product Engagement Score for an application over a date range, returning adoption, stickiness, and growth metrics.
appIdstringrequiredApplication id of the app to queryendDatestringrequiredQuery end date in YYYY-MM-DD format (e.g., '2025-01-31'). Inclusive.startDatestringrequiredQuery start date in YYYY-MM-DD format (e.g., '2025-01-01'). Inclusive.subIdstringrequiredSubscription ID that owns the data. Required for all queries.accountIdstringoptionalFilter results to a specific account. REQUIRED when the user mentions or references a specific account. Use the exact account ID stringadoptionUserBasestringoptionalThe user base for the adoption score.blackliststringoptionalBlacklist behavior: 'apply' (use blacklist, normal behavior), 'ignore' (do not use blacklist), 'only' (invert blacklist, return only blacklisted activity)excludeWeekendsbooleanoptionalWhether to exclude weekends in the stickiness score calculation.featureIdsarrayoptionalArray of the featureIds to include in the adoption score calculation. If this, pageIds, and trackEventIds are empty, default core events are included.growthUserBasestringoptionalThe user base for the growth score.pageIdsarrayoptionalArray of the pageIds to include in the adoption score calculation. If this, featureIds, and trackEventIds are empty, default core events are included.scoresarrayoptionalArray of the scores to return. If empty, only PES is returnedsegmentIdstringoptionalfilter the results by the specified segment id. If not provided, no segment filtering is applied.stickinessDenominatorstringoptionalThe denominator time range for the stickiness score. If denominator is provided, numerator must also be provided. Numerator cannot equal denominator.stickinessNumeratorstringoptionalThe numerator time range for the stickiness score. If numerator is provided, denominator must also be provided. Numerator cannot equal denominator.stickinessUserBasestringoptionalThe user base for the stickiness score.trackEventIdsarrayoptionalArray of the trackEventIds to include in the adoption score calculation. If this, pageIds, and featureIds are empty, default core events are included.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_searchentities#Search for product entities such as pages, features, track types, guides, accounts, and segments.9 params
Search for product entities such as pages, features, track types, guides, accounts, and segments.
appIdstringrequiredApplication id of the app to queryitemTypearrayrequiredThe types of items to search for. Case-sensitive.subIdstringrequiredSubscription ID that owns the data. Required for all queries.itemIdsarrayoptionalFetch specific entities by ID. Requires exactly one itemType. Cannot be combined with search or search_fallback.limitnumberoptionalReturn at most this many items for each itemType.searchstringoptionalThe semantic search query (e.g., "Bridgeway Logistics", "onboarding features"). Use natural phrases, not meta-instructions.
Must always be specified together with search_fallback.
search_fallbackarrayoptionalFuzzy fallback search terms. Must be provided together with search for search mode. Not allowed with itemIds.starredItemTypesarrayoptionalReturn only entities starred by the current user for these types. Combine multiple types in one call (e.g. ["Guide", "SessionRecording"]).userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_segmentlist#List all segments in the subscription with their IDs, names, and optional feature flag names.3 params
List all segments in the subscription with their IDs, names, and optional feature flag names.
subIdstringrequiredSubscription ID that owns the data. Required for all queries.substringstringoptionalOnly return segments whose name contains this value; matching is case insensitiveuserQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_visitormetadataschema#Return the set of metadata fields available for visitors.2 params
Return the set of metadata fields available for visitors.
subIdstringrequiredSubscription ID that owns the data. Required for all queries.userQuerystringoptionalThe original user query or question that triggered this tool call.pendomcp_visitorquery#Retrieve visitor data and metadata, or count matching visitors.9 params
Retrieve visitor data and metadata, or count matching visitors.
appIdstringrequiredApplication id of the app to querysubIdstringrequiredSubscription ID that owns the data. Required for all queries.countbooleanoptionalSet to true to return only the total count of matching records instead of rows.limitnumberoptionalNumber of visitors to return. Only set this if count is false. Defaults to 10000, max of 50000metadataFilterstringoptionalFilter using: metadata.metadataGroup.metadataField == metadataValue. Groups: agent, auto, custom, salesforce. Operators: == != < > <= >=. Combine with && or ||. String values need quotes. Dates: date("YYYY-MM-DD"). e.g. metadata.auto.country == "US" && metadata.custom.plan == "enterprise"segmentIdstringoptionalfilter the results by the specified segment id. If not provided, no segment filtering is applied.selectarrayoptionallist of fields to read in addition to the visitorId. only exact field names may be used, and should come from the visitorMetadataSchema tooluserQuerystringoptionalThe original user query or question that triggered this tool call.visitorIdstringoptionalonly return data about the specified visitorId (often formatted as email address)