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

# Coverage & Gaps

> Alterscope publishes a machine-readable inventory of what it has complete data for — and where the gaps are. The honesty is the product.

Most data vendors tell you what they cover. Alterscope also tells you where it *doesn't* — as a live, machine-readable feed you can query before you build on a number. The **data coverage manifest** is that inventory: which markets, oracle feeds, vaults, and protocols have complete data, and exactly where the known gaps are. You can stake a risk decision on the answer because the answer names its own gaps.

## Two endpoints, two depths

| Endpoint                         | What it returns                                                                                           | Access                   |
| -------------------------------- | --------------------------------------------------------------------------------------------------------- | ------------------------ |
| `GET /v2/data-manifest`          | Top-level summary across every scope: market, feed, vault, and per-protocol counts broken down by status. | Open — no key required.  |
| `GET /v2/data-manifest/coverage` | Per-row coverage with completeness percentages and named gaps, sorted worst-covered first.                | **Team plan or higher.** |

The summary is open on purpose: anyone evaluating Alterscope can see the shape of coverage before signing up. The per-row gap inventory — the artifact that tells you *which specific feed* is missing history — is the institutional differentiator and sits behind the Team tier.

<Note>
  Both endpoints are cached for **5 minutes**. The actual cache age is reported on every response at `meta._agentic.freshness.age_seconds`, so a non-zero age means the snapshot is genuinely that old — never "fresh because we said so."
</Note>

## How to read a coverage row

Each row in `/v2/data-manifest/coverage` describes one unit of coverage — an oracle feed, a market, a vault, or a protocol — and carries:

* **`history_completeness_pct`** — how complete the data is for that row, `0`–`100`.
* **`classified` / `has_metadata`** — whether the row has been processed and whether it carries registry metadata.
* **`last_update_at`** — when the *underlying data* last changed (most recent oracle price, governance event, or registry write) — not when the manifest was computed.
* **`gaps`** — an explicit list of what's missing, if anything.

Rows are returned **worst-covered first**. If you are asking "where is the gap," you should not have to scroll past the healthy rows to find it.

### What a gap means

| Gap kind           | Meaning                                                                                                                                                  |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `missing_metadata` | The row has no metadata in its registry yet.                                                                                                             |
| `missing_history`  | The row has metadata but no time-series history yet.                                                                                                     |
| `stale`            | The row has data, but its latest update is older than its expected heartbeat.                                                                            |
| `unverifiable`     | The row's freshness semantics are not modeled yet (e.g. an oracle architecture outside the classified set). It is surfaced honestly rather than guessed. |

### How completeness is measured

Completeness is `rows_present / rows_expected_if_full`, and what counts as "present" and "expected" depends on the scope:

| Scope           | Present                                         | Expected if full                                            |
| --------------- | ----------------------------------------------- | ----------------------------------------------------------- |
| `oracle_feed`   | observed price points in history                | elapsed time ÷ expected heartbeat                           |
| `morpho_market` | `1` if classified with a known staleness status | `1`                                                         |
| `morpho_vault`  | distinct governance event types observed        | `7` (timelock, guardian, allocator, cap, fee, owner, queue) |
| `protocol`      | sum of its markets' completeness                | total markets in the protocol                               |

You can filter by `scope`, `scope_id`, and `min_completeness_pct`, and page with an opaque `cursor`. The full parameter and field reference is on the [Data coverage manifest](/api-reference/data-manifest) page in the API reference.

## Why this is the trust mechanism

A vendor that only reports its wins is selling you confidence, not data. By publishing the gaps as a queryable feed, Alterscope lets you:

* **Verify before you buy** — check coverage for the exact markets you care about, on the open summary endpoint, before committing.
* **Gate your own automation** — skip or down-weight a row your pipeline knows is incompletely covered, instead of acting on a partial number.
* **Audit after the fact** — the manifest's `last_update_at` and the per-response [freshness metadata](/trust/data/freshness-and-quality) together reconstruct exactly how complete the data was at decision time.

For the customer-facing list of which chains and protocols are covered, see the [Coverage matrix](/coverage). For where the data originates, see [Data provenance](/trust/data/provenance).
