Behavioral intelligence for AI coding agents
Drop-in behavioral tracking your AI coding agent can read, query, and act on — in one conversation.
<script
src="https://useractivity.ai/tracker.js"
data-site="YOUR_SITE_ID"
defer
></script>The problem
Millions of apps ship from AI coding tools every month — fast, and blind.
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.
PostHog, Mixpanel, Amplitude output charts for humans. Not a knock — a different job. Your agent needs structured data and prose it can reason about.
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.
The moat
record_change → get_change_impact. The step every other tool skips.
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 →
How it works
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>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" }
}
}
}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.”The output
Same data over MCP, CLI, or a context file committed to your repo.
Not a dashboard. Structured payloads and natural-language summaries, designed to be read by a model and acted on in the same turn.
{
"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" }
]
}// 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."
}Honest by default
Source-available so you can verify exactly what is collected.
No PII, no session replay, no fingerprinting. Cookieless by default — one first-party cookie only under an explicit consent signal. Anonymous behavioral patterns, truncated at every boundary. DNT and GPC respected.
The tracker is MIT — audit exactly what runs in your users’ browsers. Read the source →
UA.ai is in Beta and tracks its own usage with itself. What works today →
One person, in public, by Roarke.
Pricing
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.
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.