Docs

Tools

All data tools take project (see MCP server); analysis tools take the filter object (default: last 30 days, test traffic excluded). The scope column names what a key or OAuth grant needs; tools without a scope work signed out.

Tool names of the original cpi-website2 server (overview, breakdown, list_sessions, get_session, page_stats, video_retention, quiz_answers, events, leads, schema, sql_query, mark_conversion, list_conversions, retry_conversion, update_conversion_status) are still accepted as hidden aliases, so existing prompts keep working.

Some tools accept one of several scopes (written config:write or project:admin): the tool is listed when your credential holds at least one of them. A tool you may not call returns an error that ends with (insufficient_scope).

Onboarding

ToolScopePurpose
setup_statusanalytics:readThe project's onboarding status derived from real data: tracking (hosts, SDK, consent, custom events), goals seen, ad platforms and UTM coverage, conversion destinations and tests, Claude activity, team – every open item with reason and fix. Records the onboarding's MCP function test.
setup_get_promptconfig:write or project:admin (mcp_analysis, troubleshoot, connection_test: analytics:read)A project-specific instruction text for one onboarding task (install, events, server_conversions, mcp_analysis, troubleshoot, connection_test); never contains secrets
conversions_send_testproject:adminOne synthetic test conversion to a configured provider in its test mode, returns the provider's answer (asks for confirmation)

Aliases (recorded deviation from the product brief). The brief named these tools get_setup_status, get_setup_prompt, verify_installation and send_test_conversion. X3 keeps its naming scheme (setup_*, conversions_*) in the listed catalog and accepts the brief's names as hidden aliases on tools/call; each canonical description ends with "Also callable as …", so a client searching the catalog still finds them.

Projects

ToolScopePurpose
project_listanyProjects you can access (id, slug, organization, domains)
project_getanalytics:readSettings and tracking config
project_statusanalytics:readLast events, quotas and budgets, event-name cardinality, conversions and ad-sync health
project_createproject:createNew project from name, slug, domains, time zone, currency, preset
project_update_settingsproject:adminName, time zone, retention, settings
project_update_tracking_configconfig:write or project:adminReplaces top-level tracking config keys – read project_get first and send complete objects/lists. With config:write only: the measurement keys cta, messaging, downloads, notFound, bookings, bridges, plugins, events, questionnaires, pageGroups, defaultGroup, excludePaths, legacyTrackAttributes, and consent without a mode change; domains, allowed origins, localhost, privacy and test parameters need project:admin
project_deleteorg:adminDeletes a project (asks for confirmation, needs confirm_slug)

Analysis

ToolScopePurpose
analytics_overviewanalytics:readKPIs (sessions, visitors estimate, engaged time, scroll, bounce, clicks, video, quiz funnel, conversions, relevance), optional comparison period
analytics_timeseriesanalytics:readKPIs per day/week/month
analytics_breakdownanalytics:readAll session KPIs per value of one dimension, sortable
analytics_relevance_rankinganalytics:readDimension values ranked by relevance (share of hot/engaged sessions)
analytics_pagesanalytics:readPage table; for one page or group: scroll curve and fold, section reach, clicks, dwell, flow
analytics_videos / analytics_video_retentionanalytics:readVideo list; retention curve per video and format
analytics_answersanalytics:readQuestionnaire (quiz) funnel and answer distribution
analytics_funnelanalytics:readStep conversion of a funnel
analytics_goalsanalytics:readGoal completions and rates
analytics_filter_optionsanalytics:readValues that exist for each filter key in the range

Sessions, events and SQL

ToolScopePurpose
sessions_listanalytics:readSessions explorer: filter, sort, limit ≤ 100, offset
sessions_getanalytics:readOne session's timeline: pageviews, events with props, scroll, sections, videos, conversions
events_queryanalytics:readRaw event search: names, prop containment, prop substring, session
events_tailanalytics:readLive events after a cursor, waits up to 20 s – used to watch an installation
schema_event_cataloganalytics:readBuilt-in, registered and observed events with counts
schema_getanalytics:readSQL views and columns, filter documentation
sql_queryanalytics:readRead-only SQL over the project's views (one statement, SELECT/WITH, ≤ 500 rows, 8 s)

sql_query runs in a read-only transaction as a reader role that sees only the calling project's rows (row-level security), behind a lexical guard. Hashes, transient conversion fields and other projects are unreachable.

Leads and conversions

ToolScopePurpose
leads_listleads:readRecent leads with attribution (personal data; never phone or free text)
leads_getleads:readOne lead
conversions_listconversions:readConversions with per-platform upload status
conversions_definitions_listconversions:readConversion definitions and their platform mapping
conversions_markconversions:writeRecord a conversion for a session, or find the session by time window, UTM and WhatsApp click; optional contact data (hashed); uploads immediately unless upload: false; dry_run
conversions_retryconversions:writeRe-send now (all failed providers, or force)
conversions_update_statusconversions:writeManual bookkeeping of status per provider

Typical WhatsApp flow: a visitor clicked the WhatsApp button and wrote you; once you know it is a real lead, ask Claude "mark the WhatsApp lead from 14:05 as a conversion" – it calls conversions_mark with match: {at: "…T14:05:00+02:00"}, shows the candidate sessions and uploads the conversion with the session's click ids.

Ads

ToolScopePurpose
ads_performanceads:readSpend, impressions, clicks, CPC, cost per session, cost per relevant session, CPL, ROAS – per platform, campaign, ad set or ad, next to the platform's own numbers
ads_timeseriesads:readThe same per day/week/month
ads_unmatchedads:readUTM combinations with sessions but no ad match
ads_accounts_list, ads_sync_statusads:readConnected accounts, sync runs and errors
ads_sync_runads:writeQueue a sync or backfill
ads_mapping_rules_list / _create / _deleteads:read / ads:writeManual UTM → campaign rules
ads_utm_templatesads:readURL templates per platform for exact matching

Configuration

ToolScopePurpose
goals_list / goals_create / goals_update / goals_deleteanalytics:read / config:writeGoals
funnels_list / funnels_create / funnels_update / funnels_deleteanalytics:read / config:writeFunnels
questionnaires_list / questionnaires_upsertanalytics:read / config:writeQuiz definitions (questions, answer labels)
event_schemas_upsert / event_schemas_deleteconfig:writeRegister custom events and their props
relevance_get_config / relevance_update_config / relevance_previewanalytics:read / config:write / analytics:readRelevance weights and rules; preview the effect before saving (saving rescores retroactively)

Keys and members

ToolScopePurpose
keys_listorg:adminSecret keys of an organization
keys_create / keys_roll / keys_revokeorg:adminManage secret keys (Claude asks you to confirm; the value is shown once – keep it in .env.local, never commit it)
publishable_keys_list / publishable_keys_createanalytics:read / project:adminPublishable keys of a project
members_listorg:adminMembers and roles

Developer tools

ToolScopePurpose
docs_search–Full-text search over these guides; hits link to x3://docs/…
docs_read–One guide as markdown
setup_detect_stack–Framework, router, TypeScript, package manager, CSP and CMP hints from the files you pass
setup_get_instructions–Step-by-step install recipe for a framework (optionally with proxy and consent)
setup_generate_snippetconfig:write or project:adminThe recipe filled with the project's real publishable key and API host. With a proxy: mint_proxy_key: false (used by the onboarding prompts), or a caller without project:admin + ingest:proxy, never creates a proxy key – an existing one is reported by hint, a missing one as missing: true (why); otherwise a missing key is created and shown once
setup_verify_installationconfig:write or project:adminFetches the site and checks snippet, key, origin, proxy and CSP; reports recent events from that origin. Stored for the onboarding's live panel; 10 checks per minute and project. Alias verify_installation
events_validate–Checks an event name and props against the catalog and privacy rules before you ship