Tool Reference
Every tool the Mythic MCP server exposes — 313 tools across 31 scope families — with the scope each one needs and the API route it proxies.
About this reference
All 313 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 |
get_person_logsGet Person Logs | people:read + logs:read | One person's server log records across ALL of their identities (every distinct_id, user_id and email the identity graph links to them, up to 50; meta.identities_omitted > 0 says some were left out). | GET /client/v1/data/people/:personId/logs |
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 / paths / attribution) | 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 (distinct_id plus person_id, the canonical person… | 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 |
get_session_healthGet Session Health | sessions:read | Checks whether the site's own code keeps starting new sessions. | GET /client/v1/data/sessions/health |
get_bot_trafficGet Ad Platform Bot Traffic | sessions:read | Daily count of ad platform review bots Mythic dropped before storing anything: requests from Meta's, TikTok's, LinkedIn's or X's own networks, and declared ad crawlers such as AdsBot-Google. | GET /client/v1/data/sessions/bot-traffic |
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 |
get_session_logsGet Session Logs | replays:read + logs:read | One visitor session's server log records: records the producer sent with this session's id as mythic.session_id (the browser's Mythic session id, forwarded with each request). | GET /client/v1/data/replays/:sessionId/logs |
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 |
Logs
OpenTelemetry log records sent over OTLP: search, record detail, volume, services, attributes, patterns and a bounded digest.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
search_logsSearch Logs | logs:read | A client's log records, newest first, filtered by level, service, body text, attributes, distinct_id, session_id or trace_id. | GET /client/v1/logs |
get_log_recordGet Log Record | logs:read | One log record by uuid (from search_logs, a pattern sample, or the digest) with its FULL body, attributes and resource attributes. | GET /client/v1/logs/records/:uuid |
get_log_sparklineGet Log Volume | logs:read | Log record counts per time bucket, split by level and zero-filled, for the filtered window. | GET /client/v1/logs/sparkline |
list_log_servicesList Log Services | logs:read | Services (OTel service.name) that sent logs in the window, with record, error and warning counts and last-seen time. | GET /client/v1/logs/services |
list_log_attributesList Log Attributes | logs:read | Attribute keys present on log records in the window, with how many records carry each. | GET /client/v1/logs/attributes |
list_log_attribute_valuesList Log Attribute Values | logs:read | Top values of ONE attribute key in the window with counts. | GET /client/v1/logs/attributes/values |
list_log_patternsList Log Patterns | logs:read | Log lines grouped into patterns: bodies that differ only in volatile tokens (dates, UUIDs, hex ids, numbers of 4+ digits; short numbers like status codes are kept) share a pattern_id. | GET /client/v1/logs/patterns |
get_log_patternGet Log Pattern | logs:read | One pattern by pattern_id: template, counts, first/last seen, sample, and its volume series over the window. | GET /client/v1/logs/patterns/:id |
list_log_pattern_occurrencesList Log Pattern Occurrences | logs:read | The records of ONE pattern, paged exactly like search_logs (next_cursor). | GET /client/v1/logs/patterns/:id/occurrences |
get_log_digestGet Log Digest | logs:read | START HERE for logs. | GET /client/v1/logs/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, and viewport layout buckets mobile/tablet/desktop with their px range), each with session counts, scoped to sessions that actuall… | 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), steps (funnel) or rows/totals (attribution) — the same shape query_events returns — or, for an analysis panel, {engine:"analysis", kind, result… | 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 (a dashboard panel) for the active client. | 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 | Person count for a segment. | 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 |
preview_segmentPreview Segment | segments:read | Person count for a draft definition before saving it. | POST /builder/segments/preview |
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→unique click ids that became a visit (tracking; split into delivery/load whe… | 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 |
get_contract_historyGet Contract History | contracts:read | Daily results of this client's event contracts, as the ~08:00 UTC sweep judged each previous UTC day: status (ok / violations / no_data), event counts, lowest required-property coverage, per-property coverag… | GET /client/v1/contracts/history |
list_contract_candidatesList Contract Candidates | contracts:read | Which events this client should put a contract on first, ranked. | GET /client/v1/contracts/candidates |
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 |
list_destination_activityList Destination Activity | destinations:read | Activity log for this client's destinations, newest first: ONE row per (source event x destination) with the outcome of its LATEST attempt (success|failed|skipped|retrying; test rows only with status=test),… | GET /client/v1/destinations/activity |
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 |
get_mida_experimentsGet Mida Experiments | destinations:read | Mida's OWN readout for this client's Mida (mida.so) project, plus how long each running test still needs. | GET /client/v1/destinations/mida/experiments |
get_destination_qualityGet Destination Quality | destinations:read | Meta's OWN verdict on the data this client sends — meta_capi destinations only. | GET /client/v1/destinations/:id/quality |
get_destination_quality_trendGet Destination Quality Trend | destinations:read | Meta match quality for one destination DAY BY DAY — event match quality, server-vs-browser coverage, dedupe-key coverage on both halves, and the findings that stood on each day. | GET /client/v1/destinations/:id/quality/trend |
get_destination_quality_match_keysGet Destination Match Key Coverage | destinations:read | Per-PARAMETER match coverage over time for one Meta destination: email, phone, fn, ln, fbp, fbc, external_id, ip_address, ct, st, zip, country — each as a daily percentage. | GET /client/v1/destinations/:id/quality/match-keys |
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 |
Ad UTM Auto-tagging
Meta ad UTM tagging for one client: config and campaign rules, the ad accounts its token can see, previews of which ads lack UTMs, applying the fix (creative copy + swap), the scheduled auto mode and run history.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
get_meta_ad_taggingGet Meta Ad UTM Tagging | ad_tagging:read | This client's Meta ad UTM tagging config (ad account, template, overwrite policy, campaign rules, auto mode), whether a meta_ads token is stored, the last apply/auto run, and whether live writes are switched… | GET /client/v1/ad-tagging/meta |
list_meta_ad_accountsList Meta Ad Accounts | ad_tagging:read | The Meta ad accounts the stored meta_ads token can see (id, account_id, name, status, currency). | GET /client/v1/ad-tagging/meta/ad-accounts |
list_meta_ad_tagging_runsList Meta Ad Tagging Runs | ad_tagging:read | Recent preview, apply and auto runs for this client, newest first, with counts (planned, applied, failed, uncertain, skipped, stale). | GET /client/v1/ad-tagging/meta/runs |
get_meta_ad_tagging_runGet Meta Ad Tagging Run | ad_tagging:read | One run with its per-ad journal: url_tags before/after, the action, and the outcome (applied, reconciled, failed, uncertain, stale, skipped with reason). | GET /client/v1/ad-tagging/meta/runs/:id |
set_meta_ad_taggingSet Meta Ad UTM Tagging | ad_tagging:write | Create or update this client's config, including how often automatic scans run (auto_interval_minutes). | PUT /client/v1/ad-tagging/meta |
delete_meta_ad_taggingDelete Meta Ad UTM Tagging | ad_tagging:write | Remove the config and cancel its queued or running runs. | DELETE /client/v1/ad-tagging/meta |
preview_meta_ad_taggingPreview Meta Ad UTM Tagging | ad_tagging:write | Read the matching campaigns, their ads and creatives from Meta and decide per ad: "set" (with url_tags before/after) or "skip" with a reason (already_correct, has_values_fill_missing, inline_utms_in_link, un… | POST /client/v1/ad-tagging/meta/preview |
apply_meta_ad_taggingApply Meta Ad UTM Tagging | ad_tagging:write | Queue the selected "set" ads from a preview of the SAVED config (made in the last 24h, tagging config unchanged since; interval-only edits are allowed). | POST /client/v1/ad-tagging/meta/apply |
set_meta_ad_tagging_autoSet Meta Ad UTM Tagging Auto Mode | ad_tagging:write | Turns automatic scans on or off. | POST /client/v1/ad-tagging/meta/auto |
cancel_meta_ad_tagging_runCancel Meta Ad Tagging Run | ad_tagging:write | Stop a queued or running apply/auto run. | POST /client/v1/ad-tagging/meta/runs/:id/cancel |
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-alertsGET /client/v1/settings/timezone |
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-alertsPUT /client/v1/settings/timezone |
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_planGet Client Tier | locations:read | Which billing tier this client is on, and the tiers it can be moved to. | GET /client/v1/locations/plan |
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_ghl_connectionGet GoHighLevel Connection | locations:read | This client's GoHighLevel connection: status (active, not_connected, token_inactive, incomplete), the linked GHL sub-account id, and when it connected. | GET /client/v1/locations/ghl |
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_planSet Client Tier | locations:write | Move this client to a different billing tier. | PUT /client/v1/locations/plan |
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 |
create_ghl_install_linkCreate GoHighLevel Install Link | locations:write | A link that installs the Mythic GoHighLevel app on one GHL sub-account and links it to this client. | POST /client/v1/locations/ghl/install |
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 click_count for date_from..date_to (default: the last 30 days). | 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_click_id_recoveryGet Click ID Recovery | links:read | One row per ad platform (google, meta, microsoft): paid sessions, how many arrived without their click ID (gclid/gbraid/wbraid, fbclid, msclkid), and how many of those the Mythic short link restored from the… | GET /client/v1/links/click-id-recovery |
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 |
list_tag_templatesList Tag Templates | tags:read | Tag templates this client can assign with create_tag: Mythic's catalog (owner "mythic", read-only) plus the client's own (owner "location"). | GET /client/v1/config/tag-templates |
get_tag_templateGet Tag Template | tags:read | One tag template by id, including its src or code. | GET /client/v1/config/tag-templates/:id |
get_tag_workspaceGet Tag Workspace | tags:read | Publishing mode (immediate or draft) and what a publish would change: every tag, snippet and transformer added, removed or modified since the latest version. | GET /client/v1/config/workspace |
list_tag_versionsList Tag Versions | tags:read | Version history of the tag config, newest first: number, source (auto, publish, restore, mode_change), name, notes, who created it and when. | GET /client/v1/config/versions |
get_tag_versionGet Tag Version | tags:read | One version: what changed from the previous version, the full snapshot (disabled rows included) and the layer the SDK runs from it. | GET /client/v1/config/versions/:version |
get_live_tag_configGet Live Tag Config | tags:read | The tags, snippets and transformers the SDK is served right now, which version that is, and in_sync: whether it matches what should be live (latest version in draft mode, workspace in immediate mode). | GET /client/v1/config/live |
list_tag_firingsList Tag Firings | tags:read | How often each tag and snippet fired in a window: fires, sessions, distinct pages, distinct triggers, first and last fired. | GET /client/v1/config/firings |
get_tag_firing_breakdownGet Tag Firing Breakdown | tags:read | Where one tag or snippet fired: by page (host + path), by trigger ("page_load" or the Mythic event that triggered it) or by day. | GET /client/v1/config/firings/:kind/:id |
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 |
create_tag_templateCreate Tag Template | tags:write | Create a tag template owned by this client. | POST /client/v1/config/tag-templates |
update_tag_templateUpdate Tag Template | tags:write | Update one of this client's own tag templates (Mythic's are read-only). | PATCH /client/v1/config/tag-templates/:id |
delete_tag_templateDelete Tag Template | tags:write | Delete one of this client's own tag templates. | DELETE /client/v1/config/tag-templates/:id |
set_tag_publish_modeSet Tag Publish Mode | tags:write | immediate: every tag, snippet and transformer write goes live and records a version. | PUT /client/v1/config/publish-mode |
publish_tag_configPublish Tag Config | tags:write | Record the workspace (tags, snippets, transformers) as a new version and make it live. | POST /client/v1/config/publish |
restore_tag_versionRestore Tag Version | tags:write | Roll back: rewrite the workspace to an earlier version and publish it as a new version. | POST /client/v1/config/versions/:version/restore |
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 |
Replay Vision
AI scanners that watch session recordings with the agency’s own model key (OpenRouter, Gemini or Cloudflare): keys, scanners, on-demand scans and their observations. A key bound to one client may read that client’s scanners, observations and summaries; everything else is agency-wide.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
get_replay_vision_statsGet Replay Vision Stats | replay_vision:read | UTC inclusive range (max 90 days, default last 30) with zero-filled completion-day counts/known BYOK costs; independent current-month created_at scan-limit usage and flat per-scanner month counts including z… | GET /client/v1/replay-vision/stats |
list_replay_scout_templatesList Replay Scout Templates | replay_vision:read | Compatible read-only Scout templates and defaults, each with its sources. | GET /client/v1/replay-vision/scout-templates |
list_replay_scoutsList Replay Scouts | replay_vision:read | Scouts for one scanner, with latest_report_id, current_run, can_run_now and persisted IANA schedule. | GET /client/v1/replay-vision/scanners/:id/scouts |
get_replay_scoutGet Replay Scout | replay_vision:read | One read-only Scout configuration and lifecycle. | GET /client/v1/replay-vision/scouts/:id |
list_replay_scout_reportsList Replay Scout Reports | replay_vision:read | Frozen report summaries newest first, scoped to the current client roster. | GET /client/v1/replay-vision/reports |
get_replay_scout_reportGet Replay Scout Report | replay_vision:read | Immutable report text/sections, bounded input coverage, frozen server-built evidence, RUN-attempt cost/coverage and publish/delivery states. | GET /client/v1/replay-vision/reports/:id |
list_replay_vision_keysList Replay Vision Keys | replay_vision:read | The agency's model keys for Replay Vision and client scouts: agency keys (scope agency) and per-client overrides (scope location), at most one per provider (openrouter, gemini, cloudflare) in each scope. | GET /client/v1/replay-vision/keys |
list_replay_vision_modelsList Replay Vision Models | replay_vision:read | Models that can scan a recording (video or still frames) and return structured answers. | GET /client/v1/replay-vision/models |
list_replay_scannersList Replay Scanners | replay_vision:read | Replay Vision scanners: saved questions an AI model answers by watching session recordings. | GET /client/v1/replay-vision/scanners |
get_replay_scannerGet Replay Scanner | replay_vision:read | One scanner with this month's usage: queued, succeeded, failed, ineligible, how many count against monthly_scan_limit, and the model spend the provider reported (OpenRouter reports it; direct Gemini does not… | GET /client/v1/replay-vision/scanners/:id |
list_scanner_observationsList Scanner Observations | replay_vision:read | One scanner's observations. | GET /client/v1/replay-vision/scanners/:id/observations |
list_replay_observationsList Replay Observations | replay_vision:read | Agency-wide observations across the current client roster, optionally scoped to location, scanner or session. | GET /client/v1/replay-vision/observations |
get_replay_observationGet Replay Observation | replay_vision:read | One observation with frozen scanner config/snapshot, agency-shared rating, answer, decision, provider usage and cost. | GET /client/v1/replay-vision/observations/:id |
get_scanner_summaryGet Scanner Summary | replay_vision:read | What one scanner found over a UTC date range, counted in one call: observation statuses, and per type, monitor yes/no counts with shares, classifier tag counts with shares (plus freeform tags), scorer averag… | GET /client/v1/replay-vision/scanners/:id/summary |
create_replay_scoutCreate Replay Scout | replay_vision:write | Create a read-only scheduled text Scout on a scanner, max 5. | POST /client/v1/replay-vision/scanners/:id/scouts |
update_replay_scoutUpdate Replay Scout | replay_vision:write | Merge a Scout patch; scanner/template/sources are immutable. | PATCH /client/v1/replay-vision/scouts/:id |
delete_replay_scoutDelete Replay Scout | replay_vision:write | Soft-delete and disable a Scout, cancel pending runs; retains immutable reports/evidence. | DELETE /client/v1/replay-vision/scouts/:id |
run_replay_scoutRun Replay Scout | replay_vision:write | Queue an enabled Scout before its FIRST report only; returns 202 run_id/status pending. | POST /client/v1/replay-vision/scouts/:id/run |
rate_replay_observationRate Replay Observation | replay_vision:write | Set or clear an agency-shared rating on a succeeded observation only (409 otherwise). | PUT /client/v1/replay-vision/observations/:id/rating |
delete_replay_vision_keyDelete Replay Vision Key | replay_vision:write | Remove one model key: an agency key (no location_id) or one client's override (location_id), chosen by provider. | DELETE /client/v1/replay-vision/keys |
make_default_replay_vision_keySet Default Replay Vision Key | replay_vision:write | Make one key its scope's default: the key scanners and client scouts without a provider run on. | POST /client/v1/replay-vision/keys/default |
create_replay_scannerCreate Replay Scanner | replay_vision:write | Create a scanner on one client. | POST /client/v1/replay-vision/scanners |
update_replay_scannerUpdate Replay Scanner | replay_vision:write | Change a scanner. | PATCH /client/v1/replay-vision/scanners/:id |
delete_replay_scannerDelete Replay Scanner | replay_vision:write | Delete a scanner and its observations/scouts. | DELETE /client/v1/replay-vision/scanners/:id |
scan_replaysScan Replays | replay_vision:write | Queue up to 50 recordings (session ids from list_replays) for one scanner now. | POST /client/v1/replay-vision/scanners/:id/scan |
retry_replay_observationRetry Replay Observation | replay_vision:write | Put a failed observation back in the queue with the same scanner snapshot. | POST /client/v1/replay-vision/observations/:id/retry |
Scouts
Scheduled agents that read one client’s data with the agency’s own model key and file findings into the client’s inbox: scouts, runs, memory, reports and report status. Reading a report also needs the read scope of every surface the scout read.
Agency-wide keys only — a key bound to one client cannot hold this scope.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_scout_skillsList Scout Skills | scouts:read | The built-in client scout skills with what each reads (families) and its full playbook: error_tracking (browser exceptions + server error logs that cost visitors, leads or tracking), attribution_drift (paid… | GET /client/v1/scouts/skills |
list_scout_modelsList Scout Models | scouts:read | Tool-capable models a scout can run on, for one provider (the client's or agency's model key). | GET /client/v1/scouts/models |
get_scout_usageGet Scout Usage | scouts:read | Reported BYOK spend on scout model calls: runs, calls, known cost and calls whose cost the provider did not report, per scout. | GET /client/v1/scouts/usage |
list_scout_reportsList Scout Reports | scouts:read | The inbox: scout reports newest first, one finding each, with title, headline, priority (P0-P4), actionability, status and the scout that filed it. | GET /client/v1/scouts/reports |
get_scout_reportGet Scout Report | scouts:read | One report: summary, actionability and its explanation, suggested next step, status history, and evidence. | GET /client/v1/scouts/reports/:id |
list_scoutsList Scouts | scouts:read | Client scouts (agency-wide, or one client with location_id): skill, schedule, model, enabled, next/last run, last error and any run in progress. | GET /client/v1/scouts |
get_scoutGet Scout | scouts:read | One client scout's configuration and state. | GET /client/v1/scouts/:id |
list_scout_runsList Scout Runs | scouts:read | A scout's last 30 runs: status, its close-out summary (what it looked at, filed, ruled out), turns, tool calls, reports filed/edited, surfaces read, model, and reported spend. | GET /client/v1/scouts/:id/runs |
get_scout_memoryGet Scout Memory | scouts:read | What a scout remembers between runs: pattern: (baselines), noise: (what it skips), dedupe:, addressed: (fixed), report: (which report tracks what). | GET /client/v1/scouts/:id/memory |
update_scout_reportUpdate Scout Report | scouts:write | Triage a report: resolve (terminal; a recurrence is filed as a new report), dismiss with a reason (the scout reads it on its next runs, for 30 days, so it stops re-filing), snooze until a time (max 90 days),… | PATCH /client/v1/scouts/reports/:id |
create_scoutCreate Scout | scouts:write | Create a scheduled client scout that reads the client's data with the agency's own model key and files one report per finding into the inbox. | POST /client/v1/scouts |
update_scoutUpdate Scout | scouts:write | Change a scout's name, instructions, schedule, delivery, model, or pause it (enabled:false). | PATCH /client/v1/scouts/:id |
delete_scoutDelete Scout | scouts:write | Delete a scout. | DELETE /client/v1/scouts/:id |
run_scoutRun Scout Now | scouts:write | Queue a run now (the scout must be enabled with no run in progress). | POST /client/v1/scouts/:id/run |
forget_scout_memoryForget Scout Memory | scouts:write | Delete one memory entry by key (for example a noise: entry that hides something that now matters). | DELETE /client/v1/scouts/:id/memory/:key |
Alerts
The central alert feed across every client, the rules that route alerts, and the Slack/webhook channels they are delivered to.
Agency-wide keys only — a key bound to one client cannot hold this scope.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
list_alertsList Alerts | alerts:read | The central alert feed across every client, newest first. | GET /client/v1/alerts/events |
get_alertGet Alert | alerts:read | One alert with its payload and every delivery attempt (which channel, which rule routed it, ok or the error). | GET /client/v1/alerts/events/:id |
list_alert_rulesList Alert Rules | alerts:read | The agency's routing rules: which sources, for which clients (empty = all, including future clients), at or above which severity, go to which channels. | GET /client/v1/alerts/rules |
list_alert_channelsList Alert Channels | alerts:read | Where alerts are delivered: Slack incoming webhooks and signed HTTPS webhooks. | GET /client/v1/alerts/channels |
resolve_alertResolve Alert | alerts:write | Mark an open alert resolved by hand. | PATCH /client/v1/alerts/events/:id |
create_alert_ruleCreate Alert Rule | alerts:write | Route alerts to channels. | POST /client/v1/alerts/rules |
update_alert_ruleUpdate Alert Rule | alerts:write | Change any field of a rule. | PATCH /client/v1/alerts/rules/:id |
delete_alert_ruleDelete Alert Rule | alerts:write | Delete a rule. | DELETE /client/v1/alerts/rules/:id |
create_alert_channelCreate Alert Channel | alerts:write | Add a delivery target. | POST /client/v1/alerts/channels |
update_alert_channelUpdate Alert Channel | alerts:write | Rename a channel or turn it on/off. | PATCH /client/v1/alerts/channels/:id |
delete_alert_channelDelete Alert Channel | alerts:write | Delete a channel. | DELETE /client/v1/alerts/channels/:id |
test_alert_channelTest Alert Channel | alerts:write | Send a test message to one channel now and report whether it was accepted (HTTP status or error). | POST /client/v1/alerts/channels/:id/test |
Agency
The client roster, cross-location stats, usage, quota, destination health and contract summaries, and agency settings such as OAuth return origins.
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_destination_qualityGet Agency Destination Quality | agency:read | Meta dataset quality for every client with a Meta CAPI destination, worst first — the answer to 'which of my clients has bad Meta tracking'. | GET /client/v1/agency/destinations/quality |
get_agency_destination_quality_trendGet Agency Destination Quality Trend | agency:read | How every client's Meta match quality MOVED, day by day — one row per (day, location) with that day's worst scored event, its match quality, and the critical/warning counts. | GET /client/v1/agency/destinations/quality/trend |
get_agency_last_eventGet Agency Last Event | agency:read | Tracking heartbeat for every client in one call: events received and the latest event time per client over hours_back (default 24). | GET /client/v1/agency/last-event |
list_agency_eventsList Agency Events | agency:read | The newest raw events across every client in one call, newest first: event name, client (location_id, location_name), person ids, session position, page URL, UTM, device, country and the full properties JSON. | GET /client/v1/agency/events |
get_agency_event_typesGet Agency Event Types | agency:read | Every event name seen across the roster in hours_back, with its total count summed over all clients, largest first. | GET /client/v1/agency/events/summary |
get_agency_error_summaryGet Agency Error Summary | agency:read | JavaScript error tracking for every client in one call, most exceptions first: exceptions in [date_from, date_to] and the equal window before it, sessions with an exception, all sessions, crash-free session… | GET /client/v1/agency/exceptions/summary |
get_agency_link_uptimeGet Agency Link Uptime | agency:read | Short link uptime for every client in one call: each link checked in the last 24 hours with its client, title, destination, whether the latest check was up, status code or error, response time, 24h uptime, a… | GET /client/v1/agency/links/uptime |
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, whether an agency alert rule routes contract alerts for it (alert_rule_routed), and when the last… | GET /client/v1/agency/contracts/summary |
get_agency_contract_statusGet Agency Contract Status | agency:read | Yesterday's (UTC) event contract result for every client in one call: status ('ok', 'violations', 'no_data', 'no_contracts', 'not_in_plan' or 'error'), contracts checked, how many events violated or had no d… | GET /client/v1/agency/contracts/status |
get_agency_usageGet Agency API Usage | agency:read | The agency's own API + MCP usage, daily per location/surface/route (or per surface/route with group_by 'route', which fits 30 days at any volume): request counts, auth failures, rate-limited and error counts… | 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 |
get_agency_oauth_return_originsGet OAuth Return Origins | agency:read | The origins (scheme://host[:port]) a browser may be sent back to after a GoHighLevel install or a Google destination consent, via their return_url. | GET /client/v1/agency/oauth-return-origins |
refresh_agency_destination_qualityRefresh Agency Destination Quality | agency:write | Re-read Meta's match quality now for every client in the agency (or only location_ids) and overwrite today's snapshot, so get_agency_destination_quality matches Events Manager instead of the 07:00 UTC capture. | POST /client/v1/agency/destinations/quality/refresh |
set_agency_oauth_return_originsSet OAuth Return Origins | agency:write | Replace the agency's OAuth return-origin list (the whole list, not an append). | PUT /client/v1/agency/oauth-return-origins |
Ads Manager extension
Read-only bootstrap for the Mythic browser extension: agency roster with ad-platform flags and ad-account to client resolution.
Agency-wide keys only — a key bound to one client cannot hold this scope.
| Tool | Scope | What it does | Proxies |
|---|---|---|---|
resolve_ad_accountResolve Ad Account to Client | extension:read | Which of the agency's clients syncs a given Meta or Google ad account, from the clients' Airbyte ad-platform connections. | GET /client/v1/extension/resolve |