BTCintel
nodeok
mempool70,446 tx
node next1.08 sat/vB
retarget40 blocks
chainmainnet

Docs

Disputes

A claim anyone can cite is a claim anyone can dispute. A dispute is opened through the API by any caller above the anonymous tier, resolved on the Curated side by a human operator, and its record sits next to the claim without naming who opened it. btcintel signs nothing on Nostr and never turns a dispute into a score.

Opening one

You need a key: a token minted with POST /v1/keys/anon, a btci_ key, or a signed-in npub (identity). Name the claim by its id, say why, and attach what you have.

POST /v1/claims/ann_9990/disputes
{"reason": "wrong_entity",              # wrong_subject · wrong_entity · outdated · source_misread · other
 "text": "the entity named is a namesake; see the registry entry",
 "evidence": [{"kind": "url", "value": "https://…"}],
 "public": true,                        # show your text, evidence and cited note in the record (your identity never appears)
 "event_id": "<note id>"}               # optional: the Community note that carries your dispute (shown only with public; it names you)

201 {"id": 12, "claim_id": "ann_9990", "claim_version": 1, "status": "open", …}

One open dispute per caller and claim (a second answers 409); two a day for a minted token, ten for a key or an npub, twenty on the extended tier. Agents use the MCP tool dispute_claim with the same body.

What a resolution can do

A human curator or admin resolves every dispute — an ops agent can only propose a resolution as a draft (P42). The outcome is upheld, rejected or partially_upheld, with a public note, and optionally one action on the claim, run under the operator's name and audited:

  • retract — the claim stays visible with retracted_at and the reason; it is never deleted (any claim kind).
  • expire — the claim's validity closes at a date (annotations, attributions and relations).
  • correct — a new version of the same annotation with a new content hash (label, category, abuse, concepts, role, evidence); the source, the subject and the confidence class never change, and the previous version stays citable by its hash.

Whatever happens, the claim's provenance is untouched: a dispute changes what btcintel says about the claim, not what the source said. A dispute nobody resolved in two weeks raises an alert for ops.

The public record

GET /v1/claims/ann_9990/disputes
{"claim_id": "ann_9990",
 "counts": {"open": 0, "resolved": 1},
 "items": [{"id": 12, "opened_at": "…", "reason": "wrong_entity", "claim_version": 1,
            "status": "resolved", "outcome": "upheld", "resolved_at": "…",
            "note": "the entity was a namesake; retracted",
            "text": "…"}]}                      # text, evidence and event_id only when the opener chose public

Every claim object carries disputes: {open, resolved} so a reader sees at a glance whether the row is contested. The opener's identity is never part of the record, and no notification goes to the opener beyond it: btcintel keeps no contact.

What this is not

Not a vote, not a reputation, not a score. Two claims that disagree stay two claims marked disputed (mining attribution explains the rule); a dispute is a request for a human to look again, with the outcome written down. Removal or correction requests about a person go through the takedown and correction process.