UTM Audit API and MCP Access for Agencies and Agents

How the UTM audit API and MCP access work: submit an export programmatically on the Agency plan, then retrieve the A–F grade, clusters, and canonical taxonomy.

Updated Jun 30, 2026

You want UTM audits to run without anyone opening a browser — across a dozen client properties, on a schedule, or from inside an assistant your team already uses. The in-app upload at /audit is the fastest way to grade one export, but it is manual. Programmatic access on the Agency plan exists for the other case — when the audit should be a step in your own stack, not a page someone has to visit — with an MCP server on the roadmap for assistant-driven audits.

The canonical reference is in-app

Endpoint paths, request and response fields, rate limits, and the auth scheme can change as the API matures. The authoritative, current reference lives inside your account on the Agency plan — always check it there before you build against an example from this page.

What programmatic access is for#

Most teams never need the API — they paste one export, read the grade, and lock a taxonomy. You reach for programmatic access when the audit has to happen repeatedly or somewhere other than the app. The common cases:

  • Auditing many client properties from one agency workspace without uploading each CSV by hand.
  • Running an audit as a scheduled job so drift is caught early — the same idea as our automated UTM drift detection, but driven from your own scheduler.
  • Embedding the A–F grade in a client-facing dashboard you already maintain.
  • Letting an AI assistant grade an export inside a chat your team lives in, then hand the clusters back for review.

The reason to put this on a schedule is simple: drift comes back the moment a new person tags a link. Teams that standardize see a 29% improvement in attribution accuracy (Cometly, 2026), but only if the taxonomy stays enforced — which is what recurring audits are for.

How an audit flows programmatically#

Whichever path you use, the steps are the same ones the app runs for you. If you have read how the audit works, none of this will be new — the API just exposes the same engine.

  1. 1Submit exportsource / medium / campaign rows
  2. 2Audit runsClaude clusters the drift
  3. 3Grade returnedA–F + ranked clusters
  4. 4Retrieve resulttaxonomy suggested
  5. 5Approve taxonomyone click, human-reviewed
Submit rows, the engine clusters the drift, you retrieve a grade and a suggested taxonomy to approve.
  1. 1

    Authenticate

    Use the credential issued in your Agency workspace. The exact scheme is documented in-app — do not hard-code an example from this page.

  2. 2

    Submit the export

    Send your source/medium/campaign rows — the same data you would paste at /audit. The scan is synchronous for up to about 500 links.

  3. 3

    Let the audit run

    The Claude API clusters case variants, typos, and semantic duplicates into canonical tokens, then scores an A–F grade with a one-sentence reason.

  4. 4

    Retrieve the result

    Read back the grade, the issue clusters ranked by traffic impact, the dimension breakdown, and a suggested canonical taxonomy.

  5. 5

    Approve the taxonomy

    A human accepts the canonical set in one click. Nothing is written back to GA4 or your ad platforms.

An illustrative request#

Here is the *shape* of a programmatic audit so you can picture the integration. It is intentionally generic — the base URL, paths, and auth below are placeholders, not a contract.

Illustrative only — confirm the exact base URL, paths, and auth in the in-app API reference.
# 1. Submit an export for audit
curl -X POST "$UTM_API_BASE/audits" \
-H "Authorization: Bearer $UTM_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "rows": [
{ "source": "fb", "medium": "cpc", "campaign": "spring_sale" },
{ "source": "Facebook", "medium": "Paid-Social", "campaign": "spring-sale" }
] }'
# 2. Retrieve the result: grade + clusters + suggested taxonomy
curl "$UTM_API_BASE/audits/{id}" \
-H "Authorization: Bearer $UTM_API_TOKEN"

Do not build against this snippet

The names above ($UTM_API_BASE, the /audits path, the bearer header) are for illustration. Build against the in-app reference instead — it is the version that stays in sync with the live API.

API or MCP server?#

Both run the identical audit and return the identical result. The HTTP API is available on the Agency plan today; the MCP server is on the roadmap. The difference is who — or what — is calling it.

HTTP API

  • You call it from your backend, a script, or a scheduled job.
  • Best when the audit is a step in your own pipeline or dashboard.
  • You control retries, storage, and how the grade is shown.
  • Included with the Agency plan.

MCP server (on the roadmap)

  • A connected AI assistant or agent will invoke the audit as a tool.
  • Best for "audit this export and tell me the grade" in chat.
  • Planned for public MCP registries so clients can discover it.
  • Same bounded, human-approved result — no automatic write-back.
Same engine, two callers: your code on the left, a connected AI client on the right.
Three ways to run the same audit — choose by who or what is calling it.
Access pathBest forHow you call it
In-app uploadOne-off, manual auditsPaste or upload a CSV at /audit
HTTP APIYour own dashboards and scriptsAuthenticated requests from your backend
MCP server (roadmap)AI assistants and agentsPlanned: a connected MCP client calls the audit tool

What an audit returns#

The response carries the same four things you see in the app, so you can render or forward whichever parts you need:

  • An A–F health grade with a one-sentence reason.
  • Issue clusters ranked by traffic impact, so the costly drift surfaces first.
  • A dimension breakdown across source, medium, campaign, and Unassigned.
  • A suggested canonical taxonomy you can approve in one click.

Agency

plan that includes the API today, MCP server on the roadmap ($79/mo)

~500

links per synchronous audit, the same limit as the in-app scan

A–F

health grade returned by every audit, in about 60 seconds

Read-and-report, by design

The audit clusters and grades your data; it does not change it. Approving a taxonomy governs the links you build next — see taxonomy and canonicalization — but nothing is ever pushed back into GA4 or your ad accounts.

Does UTM Drift Guard have an API?

Yes. On the Agency plan you can submit a UTM audit programmatically and retrieve the result — the same A–F grade, ranked issue clusters, dimension breakdown, and suggested canonical taxonomy you get in the app. The exact endpoints and auth are documented in the in-app API reference, which is the authoritative source; treat any code on this page as illustrative.

What plan do I need for the UTM audit API and MCP access?

Programmatic access is part of the Agency plan ($79/mo), alongside per-client workspaces and white-label PDFs. The Free, Solo, and Team plans use the in-app upload at /audit. If you only need to grade one export by hand, the first public scan has no signup wall on any plan.

Can I run a UTM audit from an MCP client or AI agent?

Not yet — an MCP server is on our roadmap. When it ships, a connected assistant or agent will call the audit as a tool and read back the grade and clusters in conversation. Today, Agency-plan teams can reach the same audit programmatically over the HTTP API. Either way it is the same bounded audit: the Claude API clusters the drift, a human approves the taxonomy, and nothing is written back to GA4 automatically.

Where is the full UTM audit API reference?

Inside your account on the Agency plan. Endpoint paths, request and response fields, rate limits, and the auth scheme can change as the API matures, so the in-app reference is kept current and is the version you should build against rather than any example here.

Does the API change my GA4 or ad platform data?

No. Every path — in-app upload, the HTTP API, and the planned MCP server — is read-and-report. The audit clusters and grades your exported data and suggests a canonical taxonomy; approving that taxonomy governs the links you build next, but the tool never edits GA4 or your ad accounts.

Try the audit before you wire it up

Paste a GA4 export and get an A–F grade in about a minute — no signup wall for the first scan. When you are ready to run it on a schedule or from your own stack, the Agency plan adds the API, with an MCP server on the roadmap.

Run a free audit