# get_measurement_status

Read only. How fresh an asset's data is and whether anything is in flight: the age of the latest analysis and citation snapshots, the last real answer per engine, jobs queued or running now, and the change requests already waiting for a human. Call it before quoting a number as current, and before proposing anything, so you do not propose the same thing twice. A null snapshot means not measured, never zero.

## When to use it

- Use it when: Before quoting any number as current, and before proposing anything.
- Not when: You need the numbers themselves; they live on the tools that measure them.

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| assetId | string | yes | The Visibility Asset UUID to query. |

## What comes back

| Field | Meaning |
| --- | --- |
| assetId | The asset asked about, echoed back. |
| dataStatus | One of ok, not_measured or empty_filter. not_measured means no measurement of this kind exists yet, which is not zero; empty_filter means data exists and your filter matched none of it. |
| href | The dashboard page that holds the evidence behind this result, for the right site. A signed-in person can open it; quote it beside the numbers. |
| available | False when the asset is not in your organization; only a note follows then. |
| note | What null means here: not measured, never zero. |
| asOf | When this status was read. |
| analysis | collectedAt and ageHours of the latest analysis snapshot, or null when none exists. |
| citations | collectedAt and ageHours of the latest citation sweep, or null when none exists. |
| engines | Per engine: lastAnswerAt and answers, counting only calls that returned an answer. An engine missing here has never answered. |
| inFlight | count, and the jobs queued or running now. |
| pendingChangeRequests | Proposals already waiting for a person: changeRequestId, kind, summary, source, createdAt. Do not propose them again. |

## What comes back with the number

Shares arrive with the sample size behind them and a 95% Wilson interval. Values carry a provenance of measured, estimated or derived. A pillar that was not measured reports as not measured rather than as zero, and the composite Visibility Score is held until at least 5 of its 7 pillars are measured.

## Example request

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_measurement_status",
    "arguments": {
      "assetId": "<assetId from list_assets>"
    }
  }
}
```

## dataStatus

- `ok`: There is at least one result, or a measured zero.
- `not_measured`: No measurement of this kind exists yet for the asset. Not zero, and not a broken connection.
- `empty_filter`: Data exists, and the filter you passed matched none of it. Retry without the filter.

## Example prompt

> Call get_measurement_status for my site. Is anything running, how old is the latest measurement, and is anything waiting for my approval?

## Calling it

Connect the MCP server at `https://app.seoaio.ai/api/mcp` over the Streamable HTTP transport. Per-customer
authentication is required, so nothing is exposed without it. Call `list_assets` first:
every other tool needs an `assetId` from it. A proposal is approved or rejected by a
person at `https://app.seoaio.ai/dashboard/requests`.

## Next

- [get_visibility_score](https://seoaio.ai/docs/tools/get_visibility_score/md)
- [get_answer_share](https://seoaio.ai/docs/tools/get_answer_share/md)
- [list_findings](https://seoaio.ai/docs/tools/list_findings/md)

## More

- The skill, which carries the call order and the rules for quoting a number: https://seoaio.ai/SKILL.md
- Troubleshooting: https://seoaio.ai/docs/troubleshooting
- This page as HTML: https://seoaio.ai/docs/tools/get_measurement_status
