Tool Reference
Every tool the Mythic MCP server exposes — 197 tools across 25 scope families — with the scope each one needs and the API route it proxies.
About this reference
All 197 tools the Settings Server registers, grouped by the scope family that grants them. Each tool is a thin proxy over the HTTP API: the Proxies column names the route it calls, so anything you can do here you can also do over HTTP, and both answer from the same implementation.
Tools are gated by the scopes on your mcp_ key. Only tools within the key's
scopes are listed; calling any other tool by name answers insufficient_scope
with the scope to request, so an agent can tell you exactly what to add. A :write scope
implies the matching :read. The same scope authorizes the Proxies route
when the key is used directly over HTTP.
Client-scoped tools operate on the selected client — see the select-a-client flow.
Session
No scope needed. list_clients and select_client register for every
agency-wide key (list_clients also fronts the roster route over HTTP, where it
takes agency:read); whoami and search_docs register for every key.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_clientsList Clients | — | List the clients (locations) this agency key can operate on. | GET /builder/locationsGET /client/v1/agency/locations |
select_clientSelect Client | — | Set the active client for this session by id (from list_clients). | — |
whoamiWho Am I | — | Describe this connection: key type (agency-wide or bound to one client), the pinned client if any, the scopes held, and per family whether this key can read, write, or nothing. | — |
search_docsSearch Documentation | — | Search the public Mythic Analytics documentation (docs.mythicdata.io): API routes, tool behaviour, scopes, error codes, SDK setup. | — |
People
Person profiles, identities, merges and merge warnings.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_peopleList People | people:read | Resolved person profiles for this client, most recently seen first — display name, email, company, session counts, first/last channel and UTMs per row, so rows are labelable without a per-person fetch. | GET /client/v1/data/people |
get_personGet Person | people:read | One full person profile: properties, all linked identities, first/last seen, session and device counts, first-touch geo/browser/OS. | GET /client/v1/data/people/:personId |
get_person_summaryGet Person Summary | people:read | Compact profile card for one person: properties, identities, first/last seen, plus a metrics block (session/device counts, first-touch landing page, UTMs, referrer, geo). | GET /client/v1/data/people/:personId/summary |
get_person_activityGet Person Activity | people:read | One person's raw event stream, newest first. | GET /client/v1/data/people/:personId/activity |
get_person_attributionGet Person Attribution | people:read | One person's marketing attribution: first-touch and last-touch channel/UTMs/referrer with first/last seen timestamps. | GET /client/v1/data/people/:personId/attribution |
list_identitiesList Identities | people:read | Bulk identity mappings (identity_value -> canonical person_id) for agencies maintaining their own identity graph. | GET /client/v1/data/identities |
list_mergesList Person Merges | people:read | Authoritative person-merge history for this client (source_person_id merged into target_person_id, with reason and timestamp), oldest first. | GET /client/v1/data/merges |
get_person_mergesGet Person Merges | people:read | Merge history touching ONE person — every merge where they were the source or the target, oldest first. | GET /client/v1/data/people/:personId/merges |
list_merge_warningsList Merge Warnings | people:read | Merges the identity processor REFUSED or flagged as suspicious — each row names the event, the identity value, and the reason. | GET /client/v1/data/merge-warnings |
Events & Explore
Event volumes, trends, breakdowns, property discovery, self-serve trend/funnel queries, tracking coverage and Core Web Vitals.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_eventsList Events | events:read | Every event name this client actually sends, with volumes, over a date range. | GET /client/v1/data/events/summary |
get_event_volume_dailyGet Daily Event Volume | events:read | Event counts per day (optionally for one event name via event_type). | GET /client/v1/data/events/daily |
get_event_trendGet Event Trend | events:read | Overall event-volume trend over a window — defaults to the last 14 days (days), or pass explicit start_date/end_date. | GET /client/v1/data/events/trend |
get_event_breakdownGet Event Breakdown | events:read | Traffic volume broken down by ONE dimension — top pages, referrers, devices, geo, or UTM values. | GET /client/v1/data/events/breakdown |
list_event_propertiesList Event Properties | events:read | Property catalog for this client: every event-property or person-property key ever observed, with an inferred type, a masked sample value, how often it appears and first/last seen. | GET /client/v1/data/properties |
query_eventsQuery Events (trend / funnel) | events:read | Self-serve analytics over the event stream in ONE call, sub-second: a TREND (1–5 series, each an event × math such as total/dau/unique_sessions/sum/p95, bucketed by hour/day/week/month or as a single number,… | POST /client/v1/data/query |
list_property_valuesList Property Values | events:read | Top values of ONE event property over the last N days (default 30), with counts — the picker behind query_events filters and breakdowns. | GET /client/v1/data/query/values |
get_commerce_summaryGet Commerce Summary | events:read | Daily ecommerce totals — orders, revenue, average order value, units, buyers — for clients emitting the Mythic commerce spec (Shopify does automatically). | GET /client/v1/data/commerce/summary |
get_commerce_itemsGet Commerce Items | events:read | Top products by revenue, units or orders — grouped by product id, SKU, variant, name, category or brand. | GET /client/v1/data/commerce/items |
explain_tracking_coverageExplain Tracking Coverage | events:read | Can a "why is this page losing people" question be answered from the data we have for it? Run this BEFORE any behavioural analysis of a page and take the verdict at face value — it reports session volume, wh… | GET /client/v1/data/explain/coverage |
get_core_web_vitalsGet Core Web Vitals | events:read | Core Web Vitals measured on this client's site (lcp, fcp, cls, ttfb, fid, inp). | GET /client/v1/performance/cwv |
Sessions
Session analytics — durations, engagement, breakdowns.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_sessionsList Sessions | sessions:read | One row per website session, most recent first — landing/exit page, duration, pageviews, device/browser/geo, UTMs, engagement and bounce flags, identity link. | GET /client/v1/data/sessions |
get_sessions_breakdownGet Sessions Breakdown | sessions:read | Session aggregates grouped by ONE dimension — sessions, engagement, bounce rate etc. | GET /client/v1/data/sessions/breakdown |
Session Replays
Compact, LLM-ready timelines of recorded visitor sessions (no PII).
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_replaysList Replays | replays:read | Index of sessions that have a screen recording, with interaction counters merged in where available (duration, clicks, keypresses, console_errors, network_count, last_url). | GET /client/v1/data/replays |
get_session_timelineGet Session Timeline | replays:read | Compact, chronological timeline of one visitor session for the active client — page journey, dwell time, form submissions, field inputs, identify, custom events and errors. | GET /client/v1/data/replays/:sessionId/timeline |
Error Tracking
Grouped JavaScript exceptions, occurrences and digests.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_exception_issuesList Exception Issues | exceptions:read | Grouped JavaScript error issues — one row per fingerprinted issue (stable issue_id from error type + normalized message) with occurrence/session/user counts and a volume sparkline. | GET /client/v1/data/exceptions/issues |
get_exception_issueGet Exception Issue | exceptions:read | Detail header for ONE grouped error issue by its stable issue_id (from list_exception_issues): counts, first/last seen and volume series over the window. | GET /client/v1/data/exceptions/issues/:id |
list_exception_occurrencesList Exception Occurrences | exceptions:read | Raw occurrences of ONE error issue — individual events with parsed stack frames, page URL and session_id, newest first. | GET /client/v1/data/exceptions/issues/:id/occurrences |
get_exception_digestGet Exception Digest | exceptions:read | Weekly error digest in one call: summary with week-over-week deltas, a daily bar series, the top issues, and issues NEW this week (new = not seen in the preceding new_lookback_days, default 90). | GET /client/v1/data/exceptions/digest |
Heatmaps
Click cells and scroll depth per page.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
get_heatmapGet Heatmap | heatmaps:read | Aggregated click grid for one page. | GET /client/v1/data/heatmap |
list_heatmap_pagesList Heatmap Pages | heatmaps:read | Pages that actually have heatmap data for this client, busiest first — START HERE before get_heatmap or get_heatmap_scroll. | GET /client/v1/data/heatmap/pages |
get_heatmap_facetsGet Heatmap Facets | heatmaps:read | Filter values that exist for one page (device_type, utm_source, utm_medium, each with session counts), scoped to sessions that actually left heatmap points there — so every value returned yields a non-empty… | GET /client/v1/data/heatmap/facets |
get_heatmap_scrollGet Heatmap Scroll Depth | heatmaps:read | Cumulative scroll-depth curve for one page: bands of band px with how many sessions reached at least that depth. | GET /client/v1/data/heatmap/scroll |
BigQuery Export
Export status and schema for the agency or one location.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
get_bigquery_export_schemaGet BigQuery Export Schema | bigquery_export:read | The static semantic catalog of the BigQuery export: every table with its columns, types and descriptions. | GET /client/v1/data/export/schema |
get_bigquery_exportGet BigQuery Export | bigquery_export:read | This client's BigQuery export handle: the fully-qualified dataset (mythic-data.<name>), its table ids, provisioning status and timestamps. | GET /client/v1/data/export |
Insights
Saved analytics queries and their results.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_insightsList Insights | insights:read | List insights for the active client. | GET /builder/insights |
get_insightGet Insight | insights:read | Get a single insight by ID, including its full config (config.query is the explore spec it runs). | GET /builder/insights/:id |
run_insightRun Insight | insights:read | Execute a STORED insight and return its series/buckets (trend) or steps (funnel) — the same shape query_events returns. | POST /builder/insights/:id/query |
preview_insightPreview Insight | insights:read | Execute an insight CONFIG without saving it — the same { insight_type, config } shape create_insight stores, run in-memory and never persisted. | POST /builder/insights/preview |
create_insightCreate Insight | insights:write | Create a new insight for the active client: a saved explore spec (config.query) drawn as insight_type. | POST /builder/insights |
update_insightUpdate Insight | insights:write | Update an existing insight. | PATCH /builder/insights/:id |
delete_insightDelete Insight | insights:write | Permanently delete an insight by ID. | DELETE /builder/insights/:id |
Dashboards
Collections of insights arranged into dashboards.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_dashboardsList Dashboards | dashboards:read | List all dashboards, optionally filtered by location_id. | GET /builder/dashboards |
get_dashboardGet Dashboard | dashboards:read | Get a dashboard by ID, including all its insight items with layout and insight details. | GET /builder/dashboards/:id |
create_dashboardCreate Dashboard | dashboards:write | Create a new dashboard for the active client. | POST /builder/dashboards |
update_dashboardUpdate Dashboard | dashboards:write | Update dashboard metadata. | PATCH /builder/dashboards/:id |
delete_dashboardDelete Dashboard | dashboards:write | Permanently delete a dashboard and all its insight associations. | DELETE /builder/dashboards/:id |
add_insight_to_dashboardAdd Insight to Dashboard | dashboards:write | Add an insight to a dashboard with responsive grid layout positions. | POST /builder/dashboards/:id/insights |
remove_insight_from_dashboardRemove Insight from Dashboard | dashboards:write | Remove an insight from a dashboard. | DELETE /builder/dashboard-insights/:id |
Canvases
Freeform node/edge canvases with attached events.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_canvasesList Canvases | canvases:read | List all canvases (visual tag management configurations), optionally filtered by tenant_key. | GET /builder/canvases |
get_canvasGet Canvas | canvases:read | Get a canvas with all its nodes, edges, node URLs, and node events. | GET /builder/canvases/:id |
create_canvasCreate Canvas | canvases:write | Create a new canvas for visual tag management for the active client. | POST /builder/canvases |
update_canvasUpdate Canvas | canvases:write | Update canvas metadata. | PATCH /builder/canvases/:id |
delete_canvasDelete Canvas | canvases:write | Permanently delete a canvas and all its nodes, edges, and events (cascading). | DELETE /builder/canvases/:id |
add_canvas_nodeAdd Canvas Node | canvases:write | Add a node (page, action, decision, or offsite) to a canvas. | — |
update_canvas_nodeUpdate Canvas Node | canvases:write | Update a canvas node's properties. | — |
delete_canvas_nodeDelete Canvas Node | canvases:write | Delete a canvas node and its associated URLs, events, and edges (cascading). | — |
add_canvas_edgeAdd Canvas Edge | canvases:write | Connect two canvas nodes with an edge (defines flow between pages/actions). | — |
delete_canvas_edgeDelete Canvas Edge | canvases:write | Remove an edge between two canvas nodes. | — |
add_node_eventAdd Node Event | canvases:write | Add a tracking event to a canvas node (e.g., fire a Meta Pixel event on page load). | POST /builder/canvases/:id/nodes/:nodeId/events |
delete_node_eventDelete Node Event | canvases:write | Remove a tracking event from a canvas node. | DELETE /builder/canvases/:id/events/:eventId |
Segments
Stored person segments — definitions, live counts, membership.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_segmentsList Segments | segments:read | Every stored segment for this client — reusable audience definitions over person profiles. | GET /builder/segments |
get_segmentGet Segment | segments:read | One segment by id, including its full filter definition. | GET /builder/segments/:id |
get_segment_countGet Segment Count | segments:read | Live person count for a segment — how many people match its definition right now. | GET /builder/segments/:id/count |
list_segment_membersList Segment Members | segments:read | The people currently matching a segment, resolved live, with pagination. | GET /builder/segments/:id/members |
create_segmentCreate Segment | segments:write | Create a segment from a filter definition. | POST /builder/segments |
update_segmentUpdate Segment | segments:write | Update a segment. | PATCH /builder/segments/:id |
delete_segmentDelete Segment | segments:write | Permanently delete a segment. | DELETE /builder/segments/:id |
Constraint Finder
End-to-end paid funnel analysis and its stored benchmarks.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
find_constraintFind Funnel Constraint | constraints:read | End-to-end paid-funnel analysis (Meta spend → pixel sessions → conversions) per campaign/adset/ad: impressions→clicks (ad), clicks→sessions (tracking), sessions→leads (landing), leads→conversions (sales) — w… | GET /client/v1/constraints |
list_constraint_eventsList Constraint-Eligible Events | constraints:read | Which events can serve as lead_event / conversion_event for the constraint finder, and — the part no other endpoint reports — what share of each actually carries a session. | GET /client/v1/constraints/events |
get_constraint_auditConstraint Tracking Audit | constraints:read | Tracking hygiene per campaign: WHICH campaigns are measurable at all, and WHERE the ad clicks that reached no campaign went. | GET /client/v1/constraints/audit |
get_constraint_optionsConstraint Finder Options | constraints:read | The constraint finder vocabulary — valid group_by/attribution values, benchmark steps and their precedence chain, defaults, and usage hints. | GET /client/v1/constraints/options |
get_constraint_benchmarksGet Stored Constraint Benchmarks | constraints:read | The standing benchmark targets on file for this location: the account-wide default plus per-campaign targets, applied automatically to every find_constraint call. | GET /client/v1/constraints/benchmarks |
set_constraint_benchmarksSet Constraint Benchmarks | constraints:write | Store standing benchmark targets for ONE scope — a campaign (by id or name) or, with campaign omitted, the account-wide default. | PUT /client/v1/constraints/benchmarks |
delete_constraint_benchmarksDelete Constraint Benchmarks | constraints:write | Clear stored benchmark targets for ONE scope, or one step of it. | DELETE /client/v1/constraints/benchmarks |
Correlation
Pairwise and rolling metric correlation with lead/lag scan.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
get_correlationCorrelate Metrics | correlation:read | Trend of 2-5 metrics over day/week/month buckets with every pairwise Pearson AND Spearman coefficient, a rolling correlation folded into the series rows (corr:<x>~<y>, plottable on the same axis), and a le… | GET /client/v1/correlation |
list_correlation_metricsList Correlatable Metrics | correlation:read | Real discovery of what can be correlated for THIS client, not a static list: event families list the event names actually captured in the window, Meta metrics are marked unavailable when the client has no ad… | GET /client/v1/correlation/metrics |
get_correlation_optionsCorrelation Options | correlation:read | The correlation vocabulary at no query cost: grains, the fixed metric registry, the metric-family grammar (family:<event_name>), and every query param with its bounds and defaults. | GET /client/v1/correlation/options |
Incrementality
Geo-holdout experiments, iROAS and coefficients.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_incrementality_marketsList Incrementality Markets | incrementality:read | Daily revenue by geographic region over a lookback, with candidate CONTROL markets ranked by Pearson correlation against a proposed test set. | GET /client/v1/incrementality/markets |
get_incrementality_eligibilityIncrementality Eligibility | incrementality:read | Pre-flight before designing any geo experiment: geo coverage of revenue, history depth, matchable market count, and the daily budget the client's noise floor implies for a conclusive 30-day test. | GET /client/v1/incrementality/eligibility |
list_incrementality_experimentsList Incrementality Experiments | incrementality:read | Every geo-holdout experiment for this client with definition, design (power analysis), result, and derived lifecycle progress (pending/running/cooldown/complete). | GET /client/v1/incrementality/experiments |
get_incrementality_experimentGet Incrementality Experiment | incrementality:read | One experiment by id: definition, design, stored result (normalized on read), and lifecycle progress. | GET /client/v1/incrementality/experiments/:id |
get_incrementality_launch_planIncrementality Launch Plan | incrementality:read | The exact Meta ad-side recipe for conducting the holdout: control regions resolved to Meta targeting keys, apply/revert dates, paste-ready API calls. | GET /client/v1/incrementality/experiments/:id/launch-plan |
validate_incrementality_experimentValidate Incrementality Experiment | incrementality:read | Two modes, chosen by phase. | GET /client/v1/incrementality/experiments/:id/validate |
get_incrementality_coefficientsGet Incrementality Coefficients | incrementality:read | The progressive truth: computed experiments pooled by coefficient series (channel + revenue definition + spend scope — only same-estimand experiments pool) into an inverse-variance weighted median. | GET /client/v1/incrementality/coefficients |
get_incrementality_coefficients_historyIncrementality Coefficient History | incrementality:read | The progressive truth over time: every computed experiment's coefficient in sequence plus the running weighted median at each point, per coefficient series. | GET /client/v1/incrementality/coefficients/history |
create_incrementality_experimentCreate Incrementality Experiment | incrementality:write | Create a geo-holdout experiment (status draft). | POST /client/v1/incrementality/experiments |
delete_incrementality_experimentDelete Incrementality Experiment | incrementality:write | Delete an experiment. | DELETE /client/v1/incrementality/experiments/:id |
compute_incrementalityCompute Incrementality | incrementality:write | Run the iROAS computation for an experiment: weighted-synthetic-control diff-in-diff over pre vs test+cooldown, folded with the Meta spend row, stored as the experiment result (status becomes computed). | POST /client/v1/incrementality/experiments/:id/compute |
Event Contracts
Declared per-event property schemas and their violation reports.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_event_contractsList Event Contracts | contracts:read | The event contracts stored for this client — each one an event name plus the properties it is declared to carry, their types, and which are required. | GET /client/v1/contracts |
check_event_contractsCheck Event Contracts | contracts:read | Diff every stored contract (or one, with event) against live traffic and report violations, worst first. | GET /client/v1/contracts/violations |
get_contract_samplesGet Contract Violation Samples | contracts:read | The actual offending events behind ONE violation from check_event_contracts — up to 50 raw examples with session_id and $current_url, so you can see where the bad data comes from. | GET /client/v1/contracts/samples |
suggest_event_contractSuggest Event Contract | contracts:read | Infer a contract for one event from its live traffic — the fastest way to author one. | GET /client/v1/contracts/suggest |
list_contract_presetsList Contract Presets | contracts:read | The built-in contract packs and every contract in them. | GET /client/v1/contracts/presets |
set_event_contractSet Event Contract | contracts:write | Create or replace the contract for ONE event. | PUT /client/v1/contracts |
delete_event_contractDelete Event Contract | contracts:write | Remove one event contract. | DELETE /client/v1/contracts/:event |
apply_contract_presetApply Contract Preset | contracts:write | Apply a built-in contract pack to a client in one call. | POST /client/v1/contracts/presets/:preset |
Destinations
Activation destinations events are forwarded to, their credentials and deliveries.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_destinationsList Destinations | destinations:read | List activation destinations for the active client (webhook, Meta CAPI, Google Ads). | GET /client/v1/destinations |
get_destinationGet Destination | destinations:read | Get a single activation destination by ID, including its full action_config and trigger_rules. | GET /client/v1/destinations/:id |
list_destination_credentialsList Destination Credentials | destinations:read | Which destination credentials are stored for this client — METADATA ONLY (id, destination_type, credential_name, created/updated timestamps). | GET /client/v1/destinations/credentials |
get_destination_oauth_clientGet Destination OAuth Client | destinations:read | Which Google OAuth client this agency's consent flows run as: has_client (agency registered its own), source ('agency' or the platform default), the client_id (not a secret — what you check against the Cloud… | GET /client/v1/destinations/oauth/client |
list_destination_deliveriesList Destination Deliveries | destinations:read | Delivery log for this client's destinations, newest first — one row per delivery attempt with status (success|failed|retrying|skipped|test), response status, error, and timing. | GET /client/v1/destinations/deliveriesGET /client/v1/destinations/:id/deliveries |
get_destination_deliveryGet Destination Delivery | destinations:read | Full detail for ONE delivery (destination + source event uuid from list_destination_deliveries): the request actually sent (body + headers), the destination's response, attempt counts, field warnings/violati… | GET /client/v1/destinations/:id/deliveries/:eventUuid |
get_destination_delivery_statusGet Destination Delivery Status | destinations:read | What Google did with a delivery AFTER accepting it — google_ads / google_analytics destinations only. | GET /client/v1/destinations/:id/deliveries/:eventUuid/status |
get_destination_healthGet Destination Health | destinations:read | Per-destination delivery health rollup over a recent window: success/failure/skip counts, success rate, latency (avg + p95), queue lag, last error, and a credential_ok flag (false when the most recent failur… | GET /client/v1/destinations/health |
verify_destinationVerify Destination | destinations:read | Did deliveries actually COUNT downstream? convert_experiments destinations only. | GET /client/v1/destinations/:id/verification |
list_platform_integrationsList Platform Integrations | destinations:read | Show the managed Meta / Google Ads integrations for the active client: which halves are connected (browser pixel tag, server destination) and whether the delivery credential is stored. | GET /client/v1/destinations/integrations |
create_destinationCreate Destination | destinations:write | Create an activation destination for the active client. | POST /client/v1/destinations |
update_destinationUpdate Destination | destinations:write | Update an existing destination. | PATCH /client/v1/destinations/:id |
delete_destinationDelete Destination | destinations:write | Permanently delete an activation destination by ID. | DELETE /client/v1/destinations/:id |
set_destination_credentialSet Destination Credential | destinations:write | Store (or rotate — same type+name overwrites) the credential one destination type delivers with. | PUT /client/v1/destinations/credentials/:type |
delete_destination_credentialDelete Destination Credential | destinations:write | Delete stored credential(s) for one destination type. | DELETE /client/v1/destinations/credentials/:type |
set_destination_oauth_clientSet Destination OAuth Client | destinations:write | Register the agency's OWN Google OAuth client for destination consent flows (their brand on the consent screen, their API quota) instead of the platform default. | PUT /client/v1/destinations/oauth/client |
delete_destination_oauth_clientDelete Destination OAuth Client | destinations:write | Remove the agency's registered Google OAuth client; future consent flows fall back to the platform default (Mythic's brand and quota). | DELETE /client/v1/destinations/oauth/client |
initiate_destination_oauthInitiate Destination OAuth | destinations:write | Start the Google consent flow that stores a google_ads / google_analytics credential WITHOUT anyone handling a refresh token. | POST /client/v1/destinations/oauth/initiate |
test_destinationTest Destination | destinations:write | Fire a REAL test delivery through one destination — this sends an actual event to the live ad platform using the stored credential, and the attempt lands in the delivery log (status "test"). | POST /client/v1/destinations/:id/test |
connect_meta_integrationConnect Meta Integration | destinations:write | One-click Meta tracking: creates the managed Meta Pixel browser tag AND the Meta CAPI server destination. | POST /client/v1/destinations/integrations/meta |
connect_google_ads_integrationConnect Google Ads Integration | destinations:write | One-click Google Ads tracking: creates the Google Ads (Data Manager) server destination, plus a managed gtag browser tag when any event has a conversion_label. | POST /client/v1/destinations/integrations/google_ads |
connect_google_analytics_integrationConnect GA4 Integration | destinations:write | One-click GA4 measurement with NO page tag: creates the GA4 (Data Manager) server destination mapped to the commerce spec. | POST /client/v1/destinations/integrations/google_analytics |
connect_openai_ads_integrationConnect OpenAI Ads Integration | destinations:write | One-click OpenAI Ads conversions: creates the OpenAI Ads server destination mapped from the commerce spec to OpenAIu2019s event taxonomy. | POST /client/v1/destinations/integrations/openai_ads |
delete_platform_integrationDelete Platform Integration | destinations:write | Disconnect a managed integration (Meta, Google Ads, GA4, OpenAI Ads): detaches the managed browser tag where there is one and removes the managed destination (and its stored credential when nothing else uses… | DELETE /client/v1/destinations/integrations/:platform |
Tracking Settings
Per-location ingestion controls: allowed origins, autocapture, heatmaps, experiments, conversions, contract alerts — and the ingestion on/off switch.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
get_tracking_settingsGet Tracking Settings | settings:read | Read this client's per-location tracking settings. | GET /client/v1/settings/allowed-originsGET /client/v1/settings/autocaptureGET /client/v1/settings/ip-geo-enrichmentGET /client/v1/settings/heatmapsGET /client/v1/settings/experimentsGET /client/v1/settings/conversionsGET /client/v1/settings/session-replayGET /client/v1/settings/contract-alerts |
get_client_statusGet Client Status | settings:read | Whether this client (location) is active — an inactive client's events are rejected at ingestion. | GET /client/v1/status |
update_tracking_settingUpdate Tracking Setting | settings:write | Update ONE tracking setting for this client. | PUT /client/v1/settings/allowed-originsPUT /client/v1/settings/autocapturePUT /client/v1/settings/ip-geo-enrichmentPUT /client/v1/settings/heatmapsPUT /client/v1/settings/experimentsPUT /client/v1/settings/conversionsPUT /client/v1/settings/session-replayPUT /client/v1/settings/contract-alerts |
set_client_statusSet Client Status | settings:write | Activate or deactivate this client. | POST /client/v1/status |
Client Provisioning
Create new clients under the agency. Agency-wide by nature: a client-scoped key must not be able to create siblings.
Agency-wide keys only — a key bound to one client cannot hold this scope.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
create_locationCreate Location | provisioning:write | Provision a new client (location) under your agency. | POST /client/v1/locations |
Client Setup
One client’s own setup — details, install snippet, custom tracking hostname and install verification.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
get_locationGet Location | locations:read | This client's provisioning details: id, name, publishable key, secret key, domain, contact fields, timezone, SDK global name, and whether tracking is currently enabled. | GET /client/v1/locations/details |
get_location_loaderGet Install Snippet | locations:read | The tracking snippet to paste into this client's site, plus the publishable key, API host and SDK global name it uses. | GET /client/v1/locations/loader |
get_location_hostnameGet Custom Tracking Hostname | locations:read | This client's custom tracking hostname and its validation state (Cloudflare hostname status and SSL status), or null when none is attached. | GET /client/v1/locations/hostname |
get_location_last_eventCheck Tracking Is Live | locations:read | Event count and the most recent event timestamp for this client. | GET /client/v1/locations/last-event |
list_location_eventsList Raw Events | locations:read | Individual events for this client, newest first — the debugging view for confirming an install or chasing a missing property. | GET /client/v1/locations/events |
update_locationUpdate Location | locations:write | Update a client's own details — name, domain, email, phone, website, timezone or global_name. | PATCH /client/v1/locations/details |
set_location_hostnameSet Custom Tracking Hostname | locations:write | Attach a first-party tracking hostname (e.g. | PUT /client/v1/locations/hostname |
delete_location_hostnameRemove Custom Tracking Hostname | locations:write | Detach this client's custom tracking hostname and stop routing events for it. | DELETE /client/v1/locations/hostname |
Links & Uptime
Link redirects, click analytics, link webhooks and uptime.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_linksList Links | links:read | This client's link redirects, newest first, each enriched with its all-time click_count. | GET /client/v1/links |
get_link_analyticsGet Link Analytics | links:read | Aggregated click analytics per link (totals by slug), optionally narrowed to one slug, a date range, or specific UTM values. | GET /client/v1/links/analytics |
get_link_trendGet Link Click Trend | links:read | Click counts over time for link redirects — the time-series companion to get_link_analytics. | GET /client/v1/links/trend |
get_link_click_streamGet Link Click Stream | links:read | Individual recent link clicks (real-time stream), newest first — who clicked what, with UTM detail. | GET /client/v1/links/stream |
list_link_utm_valuesList Link UTM Values | links:read | Distinct UTM values seen on link clicks — use to discover what to pass as UTM filters to the analytics/trend/stream tools. | GET /client/v1/links/utm-values |
list_link_webhooksList Link Uptime Webhooks | links:read | The uptime notification webhooks for this client — each fires on link_down and/or link_up when a monitored link destination goes down or recovers. | GET /client/v1/links/webhooks |
get_link_uptimeGet Link Uptime | links:read | Current up/down status of each monitored link destination (or one, with slug). | GET /client/v1/links/uptime |
get_link_uptime_historyGet Link Uptime History | links:read | Uptime check time-series for monitored link destinations — status codes and response times over a date range. | GET /client/v1/links/uptime/history |
create_linkCreate Link | links:write | Create a link redirect. | POST /client/v1/links |
update_linkUpdate Link | links:write | Update fields on an existing link redirect (partial update — only the fields you pass change). | PATCH /client/v1/links/:linkId |
delete_linkDelete Link | links:write | Permanently delete a link redirect. | DELETE /client/v1/links/:linkId |
create_link_webhookCreate Link Uptime Webhook | links:write | Create a webhook that is called when a monitored link destination goes down (link_down) or recovers (link_up). | POST /client/v1/links/webhooks |
update_link_webhookUpdate Link Uptime Webhook | links:write | Update an uptime webhook (partial — only the fields you pass change). | PATCH /client/v1/links/webhooks/:webhookId |
delete_link_webhookDelete Link Uptime Webhook | links:write | Permanently delete an uptime webhook. | DELETE /client/v1/links/webhooks/:webhookId |
Tags
GTM-like tags fired by the SDK.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_tagsList Tags | tags:read | List tag assignments (tenant_tags) for the active client. | GET /client/v1/config/tags |
create_tagCreate Tag Assignment | tags:write | Assign a tag to the active client (tenant_tags row). | POST /client/v1/config/tags |
update_tagUpdate Tag Assignment | tags:write | Update a tag assignment for the active client. | PATCH /client/v1/config/tags/:tagId |
delete_tagDelete Tag Assignment | tags:write | Remove a tag assignment from the active client. | DELETE /client/v1/config/tags/:tagId |
Snippets
Custom code snippets injected by the SDK.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_snippetsList Snippets | snippets:read | List custom code snippets (tenant_snippets) for the active client. | GET /client/v1/config/snippets |
get_snippetGet Snippet | snippets:read | Get a single code snippet by ID, including its full code. | GET /client/v1/config/snippets/:id |
create_snippetCreate Snippet | snippets:write | Create a custom code snippet for the active client. | POST /client/v1/config/snippets |
update_snippetUpdate Snippet | snippets:write | Update a code snippet. | PATCH /client/v1/config/snippets/:id |
delete_snippetDelete Snippet | snippets:write | Permanently delete a code snippet by ID. | DELETE /client/v1/config/snippets/:id |
Transformers
Event transformers applied during ingestion.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_transformersList Transformers | transformers:read | List event enrichment transformers for the active client. | GET /client/v1/config/transformers |
get_transformerGet Transformer | transformers:read | Get a single transformer by ID, including its full config. | GET /client/v1/config/transformers/:id |
create_transformerCreate Transformer | transformers:write | Create an event enrichment transformer for the active client. | POST /client/v1/config/transformers |
update_transformerUpdate Transformer | transformers:write | Update a transformer. | PATCH /client/v1/config/transformers/:id |
delete_transformerDelete Transformer | transformers:write | Permanently delete a transformer by ID. | DELETE /client/v1/config/transformers/:id |
Airbyte Sync
Agency-grain sync orchestration: connections, schedules, pipelines, sync history.
Agency-wide keys only — a key bound to one client cannot hold this scope.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_airbyte_platformsList Airbyte Platforms | airbyte:read | The ad/CRM platforms Mythic can connect through Airbyte (google_ads, meta_ads, bing_ads, tiktok_ads, salesforce, …) with their default streams, sync options and whether they support the OAuth consent flow. | GET /client/v1/airbyte/platforms |
get_airbyte_configGet Airbyte Config | airbyte:read | This agency's Airbyte workspace configuration and provisioning status. | GET /client/v1/airbyte/config |
list_airbyte_webhooksList Airbyte Webhook Subscriptions | airbyte:read | The agency's sync-notification relay subscriptions. | GET /client/v1/airbyte/webhooks |
list_airbyte_connectionsList Airbyte Connections | airbyte:read | Every Airbyte connection this agency owns, optionally filtered. | GET /client/v1/airbyte/connections |
get_airbyte_connectionGet Airbyte Connection | airbyte:read | One connection by its Mythic id — platform, client, enabled streams, schedule, sync_dow, last sync. | GET /client/v1/airbyte/connections/:id |
list_airbyte_jobsList Airbyte Jobs | airbyte:read | A connection's recent sync jobs, fetched live from Airbyte. | GET /client/v1/airbyte/connections/:id/jobs |
list_airbyte_sync_eventsList Airbyte Sync Events | airbyte:read | Sync history as received from Airbyte's notifications, newest first. | GET /client/v1/airbyte/sync-events |
get_airbyte_statsGet Airbyte Stats | airbyte:read | Aggregate sync statistics across all of this agency’s connections (volumes, success rates). | GET /client/v1/airbyte/stats |
get_airbyte_healthGet Airbyte Health | airbyte:read | Per-connection health: latest sync plus the consecutive-failure streak. | GET /client/v1/airbyte/health |
get_airbyte_pipelineGet Airbyte Pipeline | airbyte:read | One client's pipeline config: the connections in scope, enabled flag, run_hour_utc, and completion-webhook settings (the secret is never returned — only has_webhook_secret). | GET /client/v1/airbyte/pipelines/:clientId |
list_airbyte_pipeline_candidatesList Airbyte Pipeline Candidates | airbyte:read | This client's connections annotated with in_scope (already in the pipeline) and suggested (currently active — a reasonable default). | GET /client/v1/airbyte/pipelines/:clientId/candidates |
list_airbyte_pipeline_runsList Airbyte Pipeline Runs | airbyte:read | Recent pipeline runs for a client, newest first. | GET /client/v1/airbyte/pipelines/:clientId/runs |
get_airbyte_pipeline_runGet Airbyte Pipeline Run | airbyte:read | One pipeline run with its per-connection steps — what synced, what failed and why, and whether the completion webhook was delivered. | GET /client/v1/airbyte/pipelines/:clientId/runs/:runId |
update_airbyte_configUpdate Airbyte Config | airbyte:write | Set the origins the OAuth consent flow may redirect the browser back to (replaces the stored list). | PATCH /client/v1/airbyte/config |
provision_airbyteProvision Airbyte Workspace | airbyte:write | Provision (or adopt) this agency's Airbyte workspace. | POST /client/v1/airbyte/config/provision |
register_airbyte_notificationsRegister Airbyte Notifications | airbyte:write | Point this agency's Airbyte workspace at Mythic's sync-notification receiver. | POST /client/v1/airbyte/config/notifications |
create_airbyte_webhookCreate Airbyte Webhook Subscription | airbyte:write | Subscribe an agency URL to relayed sync notifications (Mythic keeps Airbyte's single webhook slot and forwards). | POST /client/v1/airbyte/webhooks |
delete_airbyte_webhookDelete Airbyte Webhook Subscription | airbyte:write | Remove one relay subscription. | DELETE /client/v1/airbyte/webhooks/:id |
create_airbyte_connectionCreate Airbyte Connection | airbyte:write | Create a source + connection for one client. | POST /client/v1/airbyte/connections |
replace_airbyte_connectionReplace Airbyte Connection Settings | airbyte:write | PUT a connection's settings: every field you send replaces what is stored, and streams in particular replaces the ENTIRE enabled-stream list — a stream you leave out stops syncing, so send the complete set… | PUT /client/v1/airbyte/connections/:id |
delete_airbyte_connectionDelete Airbyte Connection | airbyte:write | Delete a connection (and its Airbyte source). | DELETE /client/v1/airbyte/connections/:id |
trigger_airbyte_syncTrigger Airbyte Sync | airbyte:write | Start a sync job on one connection now, regardless of its schedule. | POST /client/v1/airbyte/connections/:id/sync |
set_airbyte_scheduleSet Airbyte Schedule | airbyte:write | Change one connection's own Airbyte schedule. | PATCH /client/v1/airbyte/connections/:id/schedule |
initiate_airbyte_oauthInitiate Airbyte OAuth | airbyte:write | Start the OAuth handoff for an OAuth-capable platform. | POST /client/v1/airbyte/oauth/initiate |
set_airbyte_pipelineSet Airbyte Pipeline | airbyte:write | Create or update a client's pipeline (orchestrated daily sync of a set of connections, driven by Mythic's cron, with a signed completion webhook once the whole set is done). | PUT /client/v1/airbyte/pipelines/:clientId |
start_airbyte_pipeline_runStart Airbyte Pipeline Run | airbyte:write | Start a pipeline run now instead of waiting for run_hour_utc. | POST /client/v1/airbyte/pipelines/:clientId/runs |
airbyte_pipeline_run_actionAirbyte Pipeline Run Action | airbyte:write | Act on one pipeline run. | POST /client/v1/airbyte/pipelines/:clientId/runs/:runId/retryPOST /client/v1/airbyte/pipelines/:clientId/runs/:runId/forcePOST /client/v1/airbyte/pipelines/:clientId/runs/:runId/redeliver |
Agency Rollups
The client roster and cross-location stats, usage, quota, destination health and contract summaries.
Agency-wide keys only — a key bound to one client cannot hold this scope.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
get_agency_statsGet Agency Stats | agency:read | Cross-location rollup for the whole agency: one row per location with event volume, unique users, unique sessions over a date window, plus the all-time live person count. | GET /client/v1/agency/stats |
get_agency_destination_healthGet Agency Destination Health | agency:read | Delivery health of every location's activation destinations over a trailing window — one row per (location, destination) with success rate, failure counts, and the last error. | GET /client/v1/agency/destinations/health |
get_agency_contracts_summaryGet Agency Contracts Summary | agency:read | Per location: how many event contracts are declared, whether the daily contract-alert webhook is configured, and when the last alert fired. | GET /client/v1/agency/contracts/summary |
get_agency_usageGet Agency API Usage | agency:read | The agency's own API + MCP usage, daily per location/surface/route: request counts, auth failures, rate-limited and error counts, and latency. | GET /client/v1/agency/usage |
get_agency_quotaGet Agency Plan & Event Quota | agency:read | The agency's plan, the features it includes, and month-to-date ingested events against the quota. | GET /client/v1/agency/quota |