Engineering & Science, Abridged (2026 AD) · analytics tag
This site runs Bread's standalone behavioral + WebMCP tag. This page is the honest disclosure: exactly how to add it, exactly what it does, and why it is built the way it is.
Paste one line before </head>. Nothing else is required.
<script src="https://files.bread.net.ai/standalone/webmcp.js"
data-bread-standalone
data-account-id="your-account-id"
defer></script>
That is the version live on every page here (with data-account-id="aman-holdings"). To send the data to your own endpoint instead of Bread's default, add data-ingest-url="https://your-endpoint". To pin behavior, keep serving a known copy of the script rather than tracking the moving file.
| Attribute | Effect |
|---|---|
data-bread-standalone | Marks the script tag so the tag can find its own configuration. Present it once. |
data-account-id | Your account label; rides along in every batch as siteInfo.accountId. Optional but recommended so your data is attributable. |
data-ingest-url | Where batches are POSTed. Unset → Bread's default ingest.bread.net.ai. Also settable via ?ingest= on the script URL or window.__BREAD_INGEST_URL__. |
defer | Standard HTML: run after the document parses, so the tag never blocks the page. |
On the roadmap A future build is planned to expose one flag per capability — session replay, the WebMCP tool surface, and the more aggressive experimental lanes — each an explicit opt-in, off by default. Until that ships, this build carries the two capabilities described below and no per-feature switches.
Interaction telemetry, batched and flushed on a timer, a size threshold, or when you leave the page: mousemove, click / mousedown / mouseup, scroll, keydown / keyup (the key, for shortcut analysis), page visibility, and unload. Each carries a millisecond timestamp.
On the first batch only, a roughly 3 KB init object: browser identity (user-agent, platform, languages), hardware hints (CPU/memory/screen), WebGL and canvas renderer strings with small hashes, and automation-detection probes (is this a bot, a headless browser, a WebDriver session). It is a session-start snapshot, not a live stream; values that change later are not re-sent.
The tag also exposes WebMCP primitives — a way for an AI agent (or DevTools) to invoke registered tools on the page. When a tool is called, one webmcp_tool_call event is appended to the same batch. This is the experimental, forward-looking half: it makes a page legible and operable to agents, not just to humans.
What it does not do This build does not record full-DOM session replay (no rrweb — the script says so itself). It captures event coordinates and the environment snapshot, not a pixel recording of your screen. It sets no advertising identifiers and calls no third-party ad networks.
One file, no build step. The whole tag is a single self-contained script. It finds its own <script> element (by the data-bread-standalone marker or its own filename), reads the data-* config off it, and resolves the ingest URL in a fixed precedence: window.__BREAD_INGEST_URL__ → data-ingest-url → ?ingest= → the built-in default. Predictable resolution means a page can always tell where its data is going.
Beacons over fetch. Batches prefer navigator.sendBeacon, which is designed to survive page unload — the moment a lot of behavioral signal (the final scroll, the exit) actually happens. It falls back to fetch where beacons are unavailable.
Batched, not chatty. Events accumulate and flush on a timer, a size threshold, or unload, rather than one request per mouse-twitch. The heavy environment snapshot is sent once and never repeated. That keeps it light on the network and on the page's main thread.
Forward-compatible schema. The ingest contract (SCHEMA.md, version 0003) tells receivers to ignore unknown fields, so the tag can gain capabilities without breaking anyone who already consumes its batches.
The tag is on all 24 pages, injected once before </head> with data-account-id="aman-holdings" and the default Bread ingest endpoint. The Project Theatre runs a strict same-origin Content-Security-Policy; it was widened by exactly two entries to admit the tag — files.bread.net.ai for the script and ingest.bread.net.ai for the beacon — and nothing else. This is a personal archive, so the point of running the tag here is honest instrumentation and a live testbed for the WebMCP work, not audience monetization; hence this page existing at all.