Patterns, not people

Web analytics that tells your coding agent what to fix next.

Trace watches how people use your site, in aggregate. Your coding agent reads that over MCP with its own model, finds what to fix and makes the change, and Trace measures whether it worked.

$ trace insights --site yourproject

#2  Fix GET /api/reviews/:id → 500 on /products/:id
    31.6% of product views · Sessions with errors
#6  Fix the unresponsive "Pay now" on /checkout
    18.2% rage-click it · Checkout conversion

$ trace prompt 6 | claude

Implementing: show progress on Pay now, disable double submit…

$ trace status 6 released

Checkout conversion 36% → 56% improved, p < 0.01

Trace measures, your agent improves, Trace checks

  1. Your websitePeople use itClicks, scrolls, forms and errors.
  2. TraceCollectAggregates only, and only after visitors allow it.
  3. Your coding agentAnalyseOver MCP, it reads Trace's aggregated summary and your KPIs, and saves an insight with its evidence.
  4. Your coding agentImplementIt makes the change in your repo.
  5. Your websiteThe fix shipsYou mark the insight released in Trace.
  6. TraceEvaluateThe KPI before and after the release, with a significance test.

Patterns, not people. Only aggregates leave the browser, and only after visitors allow it. Your agent analyses with its own model, over MCP, and sees the same summaries you do.

Worry one: privacy

I'm not interested in your users. Only in patterns.

No session replay, no screenshots of your pages, no typed text. Trace sees that 18% of visitors tapped a product image and nothing happened, never who they were or what they typed.

How privacy works, in detail

Never collected

Input values, page titles, query strings, page content, recordings.

Scrubbed twice

Emails, cards, IBANs, tokens and phone numbers removed in the browser, then again on the server.

Your own rules

Admins mask elements, ignore pages and drop fields per website.

Tested with planted secrets

A leak page full of fake cards and passwords stores none of them.
Worry two: your website

Your visitors will never notice it.

The collector only takes notes while the page is busy, and does its work when the browser is idle. If anything inside it ever fails, the failure stays inside it.

How the collector stays out of the way
on the wire, compressed and cached
6.5 KB
of work per click
~3 µs
layout reads on the hot path
0

Built for teams that ship with agents

KPIs as code

Define goals and events in trace.json, validate with trace check, publish with trace push. The dashboard only shows results.
"checkout_conversion": {
  "from": { "pageview": "/checkout" },
  "to": { "pageview": "/checkout/success" },
  "goal": "increase", "target": "55%"
}

An MCP server, built in

Your agent reads the aggregated summary and KPIs, saves what it finds as insights, implements one and marks it released. Trace measures the impact. Aggregates only, scoped to one website.
claude mcp add --transport http trace \
  https://app.tracetells.com/mcp

Errors you would otherwise miss

Exceptions, unhandled rejections, framework-caught console errors, failed requests and missing files, grouped into one insight per cause.
  • GET /api/reviews/:id → 500226 sessions
  • TypeError on /pricing107 sessions
  • Rage clicks on Pay now60 sessions

Works on any site

Multi-page sites, single-page apps (History and Navigation API, hash routers), tag managers and bundlers. Dynamic URLs group themselves into routes like /products/:id.

For one person or a company

Several websites per account, owner, admin and user roles, authenticator-app two-step that admins can require, and personal API tokens for every agent.

Open source at the core.

Run the community edition yourself with no limits, or let me host it for you. Same product either way.