Behavioral intelligence for AI coding agents

Analytics, designed
for AI agents.

Drop-in behavioral tracking that AI coding agents can read, query, and fix — in one conversation.

Fig. 0 — Install
<script
  src="https://useractivity.ai/tracker.js"
  data-site="YOUR_SITE_ID"
  defer
></script>
One tag. Zero config. Every behavioral signal, captured — no event taxonomy to design, no SDK to wire up.
§ 01

The problem

Millions of apps ship from AI coding tools every month — fast, and blind.

Shipped in hours. Shipped blind.

AI tools never add analytics

Prompt “build a signup flow” and you get the flow — not tracking for drop-offs, rage clicks, or abandonment. Observability is never on the happy path.

Built for dashboards, not agents

PostHog, Mixpanel, Amplitude output charts for humans. Not a knock — a different job. Your agent needs structured data and prose it can reason about.

The loop stays open

You can’t say “users drop off at step 3 — fix it” and have your agent act on real behavioral data. Behavior and code never meet.

§ 02

The moat

record_change → get_change_impact. The step every other tool skips.

The loop other tools leave open

the loop closes — record_change → get_change_impactObservetracker.jscaptures behaviorReadagent queriesstructured dataFixagent shipsthe changeConfirmdid it work?get_change_impact
Collecting behavior is table stakes. Closing the loop is the product.

Fig. 1 — The closed loop. Every analytics tool stops at “here’s the data.” UserActivity adds the return arc: your agent records a change, then get_change_impact measures whether it actually worked. Watch the whole loop close, with sample data →

§ 03

How it works

Three steps, one conversation

1 — One script tag

Paste a single line into your HTML. Works anywhere — React, Vue, Svelte, vanilla, Lovable, Vercel.

<script src="https://useractivity.ai/tracker.js" data-site="YOUR_SITE_ID" defer></script>

2 — Connect your agent

Add the hosted MCP server to your project. Nothing to install — your agent connects directly.

// .mcp.json (Claude Code, Cursor, etc.)
{
  "mcpServers": {
    "useractivity": {
      "type": "http",
      "url": "https://useractivity.ai/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

3 — Close the loop

Ask about real user behavior. Your agent queries the data, finds the problem, fixes it, and confirms the fix — all in one thread.

You:   “Users aren’t converting on signup. What’s wrong?”

Agent: [calls get_frustration_signals for /signup]

Agent: “The signup page scores 34/100. 67% never scroll past
       the first fold and 11% u-turn. Move the CTA above the
       fold? I can ship it and check whether it worked.”
§ 04

The output

Same data over MCP, CLI, or a context file committed to your repo.

What your agent sees

Not a dashboard. Structured payloads and natural-language summaries, designed to be read by a model and acted on in the same turn.

Fig. 2 — API response · /api/v1/frustration
{
  "command": "frustration",
  "site_id": "abc-123",
  "score": 72,
  "narratives": [
    { "severity": "warning",  "summary": "Dead clicks on /pricing",
      "detail": "12% of sessions click non-interactive elements" },
    { "severity": "critical", "summary": "Rage clicks on checkout submit",
      "detail": "8% of sessions show 3+ rapid clicks on .btn-submit" }
  ]
}
Fig. 3 — MCP tool response · get_change_impact
// get_change_impact({ change: "moved CTA above the fold" })
{
  "verdict": "improved",
  "frustration":  { "before": 34, "after": 71 },
  "scroll_reach": { "before": "33%", "after": "78%" },
  "summary": "The fix worked. Fold drop-off fell 45 pts;
             rage-clicks on .btn-submit are gone."
}
The verdict line is the whole point — and the only green in the payload.
§ 05

Honest by default

Source-available so you can verify exactly what is collected.

Built in the open, by one person

Privacy by default

No PII, no cookies, no session replay, no fingerprinting. Anonymous behavioral patterns only, truncated at every boundary. DNT respected.

Source-available

The tracker is MIT — audit exactly what runs in your users’ browsers. Read the source →

Development Preview

UA.ai is in Beta and tracks its own usage with itself. What works today →

Built independently

One person, in public, by Roarke.

§ 06

Pricing

Free while you find the loop

Usage-based, not access-gated. Every feature is free through 500K events/month; paid plans kick in only when you scale. Founder pricing for early teams on the waitlist.

See the loop close — no signup.

A populated dashboard and the full agent walkthrough — your agent finds a problem, fixes it, and confirms the fix worked — on sample data you can explore right now.