Check a value against the fact it cites, before you publish it
emem_echo_verifyGrade a value that you will emit against the signed fact that your citation cites. The tool returns matches. When the value does not match, it also returns the drift between your value and the value in emem. This step catches a transcription error that would otherwise be a silent wrong number. A model can resolve a fact correctly and still type 0.2411 for 0.241103. No other step in the loop sees this. Memory algebra: the verify operation (https://emem.dev/docs/model.html).
When to use: Call this immediately before you publish, log or pass on a value from an emem fact. Treat a false matches as a stop, not a warning. Use value_verbatim from resolve: quote that exact decimal string, then echo-verify the text you emitted. For a due-diligence or compliance record, this gives a signed check for each citation. Then you can state every cited value was echo-verified. The tool also accepts a bare cid, so a damaged citation still gets a grade.
Example arguments: {"token":"emem:fact:defi.zb572.xoso.zb1ec:4qj3l4mgh7ch5kvxmkqspjdl6y42oqhm42khh3gostccpixkbz5q","claimed_value":"-0.0522"}
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The citation you used. Any form resolve accepts, including a bare cid, which answers with `degraded: true`: a bare cid asserts no location, so the cell-binding check is skipped and the grade covers the value only. A cid that is not 52 characters is refused as a damaged citation rather than as a missing one, and must not be retried. | |
| strict | No | Require BYTE-IDENTICAL equality. Default false, which also accepts a numerically equal value spelled differently (0.50 for 0.5). It changes exactly one outcome: the numerically-equal-but-respelled case, which passes by default and becomes `drift: "reformatted"` here. `rounded` and `wrong` already fail either way, so `strict` never turns a pass into a pass. It is also inert when `claimed_value` came in as a JSON number, because the respelling then happened in the JSON parser, before this tool saw it. | |
| claimed_value | Yes | The value you are about to publish, as a string or a number. Send it as a STRING, character for character as you will emit it. A JSON number is stringified before the comparison, so `0.50` arrives as `0.5` and `0.2411000` as `0.2411` (measured against the live responder): the trailing digits this check exists to defend are gone before it runs. Quote `value_verbatim` from resolve as a string and echo the exact characters you will publish. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| drift | No | The difference between what you wrote and what emem holds, when they disagree. Explicit null on an exact match: the key is always present, so branch on its value rather than on whether it exists. Declaring this `string` alone was a live schema violation on every matching call, which is how it was found. | |
| token | Yes | The citation you passed, echoed back exactly as sent. | |
| matches | Yes | Whether what you were about to publish agrees with the signed fact. Treat false as a gate, not a warning. | |
| receipt | No | ||
| degraded | No | True when a bare cid was passed and the cell binding could not be checked. | |
| fact_cid | No | ||
| claimed_value | Yes | Echoed back, so a log line carries both sides of the comparison. | |
| canonical_token | No | The token in its canonical spelling, whatever form you passed. | |
| offline_verify_at | No | Where to re-run this check without trusting this responder. | |
| resolved_value_verbatim | No | The fact's value as the exact decimal string it was signed as. Quote this rather than reformatting it. |