Wire Proof into your app
Written for your agent as much as for you. Keys are per workspace and early access is invite-gated; everything below works the moment you hold one.
The tag
<script src="https://proof.dorsr.com/p.js" data-key="YOUR_WRITE_KEY" defer></script>
One tag. Pageviews, sessions, clicks, Core Web Vitals, JS errors, outbound clicks, and marked 404s flow immediately, single-page-app route changes included, each under a governed contract. Dev hosts (localhost, private ranges) are ignored unless the tag carries data-dev.
Hand it to your agent
One line, to Claude Code, Cursor, or any agent with shell access:
Fetch https://proof.dorsr.com/wire.md and follow it. My write key is pk_... and my agent key is ak_...
wire.md is the full procedure, written to be executed: add the tag, mark the 404, instrument the moments that actually matter in your app, propose a contract for each one, and then verify its own work by reading the numbers back with a receipt. That last step is the one every other installer skips, and it is the difference between “instrumentation added” and a number you can trust.
Or paste the short form directly:
Wire Proof analytics into this app.
1. Add this tag to the root layout, once, in <head> or at the end of <body>:
<script src="https://proof.dorsr.com/p.js" data-key="YOUR_WRITE_KEY" defer></script>
2. Mark the 404 page so missing paths are measured:
<meta name="proof-not-found" content="1">
3. Deploy, load one page in a browser, then read the number back:
curl -s -X POST https://proof.dorsr.com/api/ask \
-H "x-proof-key: YOUR_AGENT_KEY" -H "content-type: application/json" \
-d '{"question":"pageviews today"}'
4. For product events, call:
window.proof.track("myapp.thing_happened", { plan: "pro" })
then propose a contract for each event name through the propose door,
so the owner can certify it.The agent door
Four verbs over plain HTTP; an MCP server wraps the same four for Claude Code and Cursor and ships with early access. Ask in plain English:
curl -s -X POST https://proof.dorsr.com/api/ask \
-H "x-proof-key: YOUR_AGENT_KEY" -H "content-type: application/json" \
-d '{"question":"did yesterday's deploy hurt checkout?"}'Emit actions (deploys are the canonical case; retries dedupe on the id):
curl -s -X POST https://proof.dorsr.com/api/collect \
-H "content-type: application/json" \
-d '{"write_key":"YOUR_WRITE_KEY","events":[{
"name":"agent.action.deploy","source":"agent",
"external_id":"deploy-9b1f04d","event_time":"2026-07-22T13:00:00Z",
"properties":{"target":"myapp.com","commit":"9b1f04d","outcome":"success","actor":"agent:ci"}
}]}'Propose a contract for a new event; only certified metrics answer with high confidence:
curl -s -X POST https://proof.dorsr.com/api/propose \
-H "x-proof-key: YOUR_AGENT_KEY" -H "content-type: application/json" \
-d '{"kind":"event_definition","name":"myapp.thing_happened","version":1,
"humanMeaning":"A user did the thing that matters.",
"properties":{"plan":{"type":"string","required":false,"pii":false}}}'Agents propose and never silently certify. Certification is a signature by the workspace owner, or by their agent under a named standing grant; either way the stamp records who signed.
MCP, hosted
The same four verbs speak MCP over HTTP, so Claude Code, Cursor, or anything else that speaks it can read your certified truth with nothing installed. Drop this in .mcp.json:
{
"mcpServers": {
"proof": {
"type": "http",
"url": "https://proof.dorsr.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_AGENT_KEY" }
}
}
}list_metrics to see what is answerable, ask for a plain-English answer with its receipt, emit_eventto log your agent's own deploys onto the same timeline, and propose_event to put a contract for a new event into the certification queue. There is no certify tool and no free-form SQL: an agent proposes, it never signs.
What the tag costs
One script, no dependencies, and a hard budget: under 12 KB gzipped over the wire. That is not a claim from a build log. A probe re-fetches the tag from every instrumented site four times a day with accept-encoding: gzip, counts the bytes that actually crossed the wire, and fails the check when a build crosses the budget. Ask Proof "how heavy is the tag"for today's measured figure and its receipt.
Privacy defaults
First-party only, no third-party requests, no fingerprinting (a random id in your own cookie), id-looking path segments scrubbed before storage, click text masked under data-proof-mask, coarse country only. One switch silences the tag entirely:
window.proofConsent = false // or set cookie: proof-consent=denied
- Your events are never used to train a model. Not ours, not anyone else's.
- There is no opt-in by default, and no exception by region, plan, or account age.
- Your workspace is never pooled with another workspace to build anything.
- Changing any line above requires a new version and a new date, in public git history.
Your data
The data is yours. Raw events are kept until you remove them (there is no silent auto-purge; certified definitions and stamps are your schema and stay). From your account you can export the whole workspace as JSON at any time, or erase every event in one action. Deletion removes the rows; it is not a soft flag.
Access
Proof is in invite-gated early access while it hardens on the founder's production apps. Follow the build to catch the open.