A sandbox. Payments are simulated with Stripe's test cards and nothing is ever charged.
Little Frictions

Small parts of the world, kept current, and told to your agent when they change.

Each friction watches one thing: a changelog, a price list, a grid forecast, the packages you depend on. It keeps yesterday's copy, works out what's different, and puts that in an inbox your agent reads at the start of the next prompt, or the moment it happens.

You could build any one of these in an afternoon. You'd also have to fix it every third Tuesday.

Get a token   See how it arrives

Changed recentlylive, from the default sources
  1. 52 min agogrid-carbonwindow
    South Scotland grid stays clean for the next day (under 40 gCO2/kWh); no need to wait

Five to start with

Every friction is its own MCP server with its own tools, and they all feed one inbox at /mcp. Lookups work without signing in.

FrictionWhat changes arriveChecks everyEndpoint
Claude Code releases
npm registry, CHANGELOG.md on GitHub
New Claude Code versions, what each one changed, and when stable moves.30 min/mcp/claude-code
npm packages you depend on
npm registry, OSV.dev
New versions, the day each clears your min-release-age guard, and advisories on the current release.60 min/mcp/npm-watch
Model prices and launches
OpenRouter model list (OpenRouter prices)
New models, price changes and withdrawals from the providers you use, per million tokens.60 min/mcp/model-prices
Cleanest time to run things
Carbon Intensity API, National Grid ESO (CC BY 4.0)
The cleanest window in the next day for a job of N hours on your bit of the GB grid, and when it goes dirty.30 min/mcp/grid-carbon
Weather warnings
Met Office warnings RSS (Crown copyright)
Met Office severe weather warnings for your region: issued, changed, lifted.15 min/mcp/met-warnings

How it arrives

The hard part of keeping an agent informed isn't fetching. It's that nobody, model or person, remembers to check. So there are four ways in, from "ask" to "be told".

Ask

Any MCP client. The agent calls whats_new when it thinks to.

claude mcp add --transport http little-frictions https://littlefrictions.smallmill.app/mcp \
  --header "Authorization: Bearer lf_your_token"

At every prompt

Claude Code hooks. New events are slipped into context before the model sees your message; nothing new means nothing added.

curl -fsSo ~/.local/bin/lf https://littlefrictions.smallmill.app/lf.mjs && chmod +x ~/.local/bin/lf
lf login lf_your_token
lf snippet hook   # prints the settings.json block

While it's working

Claude Code channels (research preview). Events land in a running session as they happen.

claude mcp add lf-channel -- lf channel
claude --dangerously-load-development-channels server:lf-channel

Anywhere else

Supporters. A signed POST to your URL: an OpenClaw hook, a routine trigger, your own relay.

Set a URL on the account page. Each delivery carries X-LF-Signature: sha256=…, an HMAC of timestamp.body with your secret, and can send your own Authorization header.

Pricing

Free

£0
  • 2 frictions
  • The inbox, all the MCP tools, the hook and the channel

Supporter

£3 a month or £30 a year
  • Up to 25 frictions
  • Webhooks
  • The quiet satisfaction of paying for something you could have built

Become a supporter

Of each £3, card fees take 25p. Payments here are simulated; see the test cards at checkout.

What it won't do

Everything in an event is fetched from someone else's site, so it's cleaned to plain single-line text and labelled as data, not instructions. It never acts for you, never sees your code, and the inbox keeps 90 days.