Skip to main content
Glama

emem, the verifiable memory protocol for the physical world

Scan for multi-attester disagreement

emem_memory_contradictions
Read-onlyIdempotent

Find where the corpus DISAGREES with itself (algebra: competing evidence). Two or more independent sources can sign different values for the same place, band and time. This tool returns that disagreement with a severity from 0 to 1 and a citation for each disputed fact. It does not pick one value and hide the conflict. It tells you when not to trust a single answer. Read the SCOPE before you quote a zero. By default the tool counts only disagreement between two DIFFERENT attesters. One responder that answers from two upstreams counts only with include_same_attester_sources: true.

When to use: Call this before you rely on a number: 'do the sources agree on X', 'audit this claim'. Use cell_prefix for a region and band for one band family. min_severity removes small differences. Severity depends on the band kind: for a scalar, the spread over the band's range. For a vector, 1 minus the mean cosine. For a category, 1 minus the share of the mode. On a single-responder node, add include_same_attester_sources: true. There, the most likely disagreement is one signer that answers from two providers. Each record names its disagreement_scope. The receipt cites every disputed cid. To measure a pair, use emem_diff. To read the disagrees_with edge, use emem_edges_recall.

Example arguments: {"cell_prefix":"damO","band":"indices.ndvi","min_severity":0.2}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bandNoBand key filter (e.g. `indices.ndvi`). Omit to include all bands.
cellNoAlias for `cell_prefix`, and the spelling the rest of the surface uses for a cell64. Send a cell64 you already hold and the scan narrows to that place instead of running over the corpus.
limitNoMax contradictions to return.
cell64NoAlias for `cell_prefix`.
cell_prefixNoA cell64 to scan, or a bytewise prefix of one (e.g. `defi.zb5f9`). Omit to scan the whole corpus up to the scan cap. A full cell64 is a prefix of itself, so passing one narrows the scan to exactly that place.
min_severityNoSeverity floor in [0, 1]. 0 = report every disagreement, 1 = only flagrant. Severity scoring is per band kind: scalar (max-min over band range), vector (1 - mean cosine), categorical (1 - mode share).
window_unix_sNo[lo, hi] inclusive Unix-seconds filter on attestations' signed_at, all disagreeing attestations must fall in the window.
include_same_attester_sourcesNoAlso report keys where ONE attester answered the same address from two different upstreams. Default false, which scans only for disagreement between two or more DISTINCT attesters — so on a single-responder corpus a zero here means the narrower question was answered, not that nothing disagrees. Set true and a key qualifies when the facts differ in `derivation.fn_key` or in their `sources[].scheme` set; the same provider re-signed is a refresh, not a disagreement, and stays excluded. Each record carries `disagreement_scope` and a `providers[]` list naming what changed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / cell / description
      Previous value: -"Alias for `cell_prefix`, and the name the other six tools that take a cell64 use. Send a cell64 you already hold and the scan narrows to that place instead of running over the corpus."New value: +"Alias for `cell_prefix`, and the spelling the rest of the surface uses for a cell64. Send a cell64 you already hold and the scan narrows to that place instead of running over the corpus."
  2. Changed3 schema fields changed
    • addedInput schema / properties / cell
      Added value: +{
      +  "description": "Alias for `cell_prefix`, and the name the other six tools that take a cell64 use. Send a cell64 you already hold and the scan narrows to that place instead of running over the corpus.",
      +  "type": "string"
      +}
    • addedInput schema / properties / cell64
      Added value: +{
      +  "description": "Alias for `cell_prefix`.",
      +  "type": "string"
      +}
    • changedInput schema / properties / cell_prefix / description
      Previous value: -"Bytewise prefix on cell64 (e.g. `defi.zb5f9`). Omit to scan the whole corpus up to the scan cap."New value: +"A cell64 to scan, or a bytewise prefix of one (e.g. `defi.zb5f9`). Omit to scan the whole corpus up to the scan cap. A full cell64 is a prefix of itself, so passing one narrows the scan to exactly that place."
  3. Changed1 schema field changed
    • addedInput schema / properties / include_same_attester_sources
      Added value: +{
      +  "default": false,
      +  "description": "Also report keys where ONE attester answered the same address from two different upstreams. Default false, which scans only for disagreement between two or more DISTINCT attesters — so on a single-responder corpus a zero here means the narrower question was answered, not that nothing disagrees. Set true and a key qualifies when the facts differ in `derivation.fn_key` or in their `sources[].scheme` set; the same provider re-signed is a refresh, not a disagreement, and stays excluded. Each record carries `disagreement_scope` and a `providers[]` list naming what changed.",
      +  "type": "boolean"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / window_unix_s / description
      Previous value: -"[lo, hi] inclusive Unix-seconds filter on attestations' signed_at — all disagreeing attestations must fall in the window."New value: +"[lo, hi] inclusive Unix-seconds filter on attestations' signed_at, all disagreeing attestations must fall in the window."
  5. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.