# propose_fact

Proposes a change. Propose an owner-declared fact for Answer Accuracy to check AI answers against (e.g. a price, a founding year, a service area). QUEUES A REQUEST FOR HUMAN APPROVAL. A fact nobody with authority confirmed is not a fact.

## When to use it

- Use it when: The user stated a fact about their business that AI answers should be checked against.
- Not when: You inferred the fact yourself; a fact nobody with authority confirmed is not a fact.

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| assetId | string | yes | The Visibility Asset UUID this concerns. |
| claim | string | yes | The claim, as the owner would state it. |
| source | string | no | Where it can be verified, ideally a URL on the owner's site. |

## What comes back

| Field | Meaning |
| --- | --- |
| dataStatus | Always queued. A person decides; nothing has changed. |
| status | Always pending_human_approval. Nothing has happened yet. |
| applied | Always false. This is the field an agent would have to lie about to misreport the call. |
| changeRequestId | The queued request, which get_measurement_status lists under pendingChangeRequests until a person decides. |
| hostname | The site the request concerns. |
| proposed | What was proposed, in one phrase. |
| message | Where a person approves it. Repeat this to the user rather than saying the change was made. |

## This does not change anything

It queues a change request for a human on the account to approve. Nothing is added, removed or measured until someone says yes, and the request records which credential asked. An agent cannot act on your account by itself.

## Example request

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

Every result carries `dataStatus: queued`: a person decides, nothing has changed.

## Example prompt

> Propose the founding year the user just confirmed as a fact for Answer Accuracy to check.

## 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_measurement_status](https://seoaio.ai/docs/tools/get_measurement_status/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/propose_fact
