Page friction, in your editor

Find the pages quietly frustrating real users.

Rage clicks, dead clicks, quickback and scroll death. Per page, tracked over time, with a verdict on what to fix, right where you write the code.

Reads your own Microsoft Clarity data, over an API token you control and can revoke.

your code editor
> what's broken on my site?
FrictionScope · 14 days of stored history
/pricing Broken but busy rage 12.4% /signup Disappointed quickback 31% /guides/setup Bounce off the top scroll 18% /blog/old-post Insufficient data 6 sessions
Fix first: /pricing. 12.4% of sessions rage-click there, and it is your third-busiest page.

Example output. Illustrative figures, showing the shape of a response.

One line. That's the whole setup.

Paste it into your editor, sign in, then add your Clarity API token.

paste this
claude mcp add --transport http frictionscope https://frictionscope.dev/mcp/frictionscope

Works in Claude Code, Cursor, Cline, Windsurf, or any editor that speaks MCP.

The difference

Clarity has the data. Getting it out, per page, over time, is the hard part.

Clarity keeps your recordings for 30 days and your heatmaps for nine months, and its dashboard is genuinely good. But the Data Export API, which is the only programmatic way in, is confined to the previous one to three days, allows ten requests per project per day, and returns at most 1,000 rows with no pagination.

So the numbers exist, but any answer that needs them lined up per page across weeks does not: no trend, no ranking that survives a refresh, and no honest answer to "did the change I shipped last Tuesday actually help?" That takes a store of your own, filled one day at a time.

The export API, and the official MCP

  • × Fetches live, keeps nothing
  • × Previous 1 to 3 days only
  • × 10 calls a day, 1,000 rows, no pagination
  • × Raw metrics, no verdict, no before and after

FrictionScope

  • Snapshots every night, and stores it
  • History that outlives the API window
  • One archetype verdict per page
  • Compare a page before and after a date

A missed night cannot be recovered, which is exactly why the snapshot runs on a schedule rather than on demand.

The verdict

Every page gets one answer, not twelve numbers.

Raw counts say nothing on their own: three rage clicks across five sessions is a disaster, three across five thousand is noise. Every signal is judged as a per-session rate, and then the page is classified.

Broken but busy
High traffic, high rage or dead clicks
Top priority. Real users are hitting a wall.
Disappointed
High quickback rate
The page did not deliver what the link promised.
Bounce off the top
Low scroll depth, low engagement time
A hero or above-the-fold problem.
Actually broken
Error clicks or script errors
A literal bug, not a UX issue.
Fine
Clean signals
Leave it alone.
Insufficient data
Too few sessions to judge
Says so plainly, rather than guessing.

The raw rate is shown next to every verdict, so a badly calibrated threshold is obvious instead of hidden.

In the editor

Four read-only tools, where you already work.

The web app and the editor read the same store, so the browser and your agent cannot disagree. Nothing ever writes back to Clarity.

pages_overview

Every page ranked by how much attention it needs, each tagged with its archetype.

whats_broken

Only the error-click and script-error pages. The "is anything on fire" glance.

page_detail

One URL: every signal, its verdict, and the trend across stored history.

page_compare

One URL before and after a date. This is how you prove a fix worked.

Where this is right now

FrictionScope is early, and not yet open to the public. The daily snapshot, the classifier and the four MCP tools are built and running against a real site: ours. The thresholds are still being calibrated against real data, which is exactly why every verdict shows its raw rate beside it.

There is no pricing page yet, because there is nothing to sell yet. When that changes, it will say so plainly.

Stop guessing which page is the problem.

Connect a site, add your Clarity token, and the first snapshot lands tonight. History starts accumulating from that moment, because it cannot be backfilled later.