> ## Documentation Index
> Fetch the complete documentation index at: https://docs.attensira.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Proof: what the work has to show

> Where Attensira shows whether its work did anything: receipts for each change, Results, the Scoreboard, the weekly scorecard, and the win and rival alerts. One significance rule sits behind all of them.

Attensira ships changes to your site and beyond it. Proof is how you find out whether those changes did anything. Each surface below answers one question, and they all read the same checks and the same answers, so they cannot disagree.

| Question | Where it is answered |
| - | - |
| Did this one change work? | [Receipts](https://docs.attensira.com/measure/receipts.md), one per shipped change, with checks at +7, +14 and +30 days |
| What has the work shown so far? | [Results](https://docs.attensira.com/proof/results.md): every win and every receipt whose verdict is **Moved**, newest first |
| Which questions does each engine answer with us? | [Scoreboard](https://docs.attensira.com/tracking/scoreboard.md): green, amber, red and grey, per question and engine |
| What happened this week? | [Weekly scorecard](https://docs.attensira.com/proof/weekly-scorecard.md), every Monday at 07:00 in your time zone |
| Did an engine name us for the first time? | [Win alerts](https://docs.attensira.com/agent/wins.md#the-instant-win-alert) |
| Did a rival start being named where it was not? | [Rival alerts](https://docs.attensira.com/agent/rival-alerts.md) |

## The rules every proof surface follows

* **Inside the noise is not a change.** A difference the significance test cannot separate from sampling noise is never called a change, never drawn in green and never announced. See [When is a change real?](#when-is-a-change-real)
* **Every number carries its sample.** Counts read "named in 3 of 10 answers", never a percentage on its own. See [Reading the numbers](https://docs.attensira.com/measure/reading-the-numbers.md).
* **Not measured is not zero.** An engine or week we could not read says so in words. It is never shown as 0.
* **Observed, not caused.** **Moved** says the answers moved after a change shipped. It does not say the change caused it, and no proof surface says "we won" or puts a money figure on a result.
* **A first is "since we started reading".** A win is the first time an engine named you since Attensira started reading that question, not the first time ever.

## When is a change real?

Checks after a change, the Scoreboard's change per engine and the scorecard's verified receipts all use one rule:

* **Both windows have at least 30 observations:** the change must pass a two-proportion z-test at 95%.
* **Either window has fewer than 30:** the change must pass Fisher's exact test, two-sided, at p ≤ 0.05.

The z-test is an approximation that needs a large enough sample. Fisher's exact test computes the answer exactly, so it is valid at the small samples a week of readings often has. [How we collect data](https://docs.attensira.com/measure/how-we-collect-data.md#what-is-the-significance-gate) explains both tests and what an observation is on each surface.

## Over MCP and REST

Every proof surface is readable without the app.

| Surface | REST | MCP |
| - | - | - |
| Receipts | `GET /v1/receipts`, `GET /v1/receipts/{id}`; webhook `receipt.verified` | `list(type=receipt)`, `get(attensira://{workspace}/receipt/{id})` |
| Results | `GET /v1/results` | `list(type=result)` |
| Scoreboard | `GET /v1/scoreboard` | `analyze(view=scoreboard)` |
| Weekly scorecard | `GET /v1/scorecards`, `GET /v1/scorecards/{week}`; webhook `scorecard.ready` | `list(type=scorecard)`, `get(attensira://{workspace}/scorecard/{week})` |
| Rival alerts | webhook `rival.gained`; `POST /v1/alerts/{id}/counter` | `subscribe(rival.gained)` |
| Wins | webhook `win.detected` | `subscribe(win.detected)` |

A receipt or a scorecard can be shared with someone who has no account through [`POST /v1/shares`](https://docs.attensira.com/api/endpoints#post-/v1/shares) or the MCP `share` verb, and every item in [Results](https://docs.attensira.com/proof/results.md) already carries its own `share_url`. The receiver sees a read-only page with no ids.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.