Lookup

Returns the verdict for one counterparty, with the observations it rests on. Free, no auth, no wallet connection required to read.

GET /v1/lookup/{address}?chain=base&memory=on

Confidence decays with recency, so this is a recorded run from 2026-09-08 rather than a live figure. The explorer reads the current number.

parametervaluesmeaning
chainbasewhich chain the counterparty is on
memoryon, offoff genuinely bypasses the memory layer, server side

Anything other than on or off is rejected with a 422 rather than falling through to the real store.

Request

curl -s localhost:8000/v1/lookup/0x01f90369170c917a2c0e9d26d54c6a3a400984d3

Response

Trimmed to one basis item and one claimant.

{
  "counterparty": "cp:base:0x01f90369170c917a2c0e9d26d54c6a3a400984d3",
  "memory": "on",
  "standing": "grounded",
  "confidence": 0.82,
  "basis": [
    {
      "observation_id": "7a6c63f5-03af-429a-b34e-347d1fd54921",
      "kind": "erc8004_feedback",
      "occurred_at": "2026-09-02T13:51:03.485Z",
      "content_hash": "sha256:9cc1136c08ae20550bf44898ae6f7f316a7ced0ad5b...",
      "source": "base:0x8004BAa17C55a88189AE136b182e5fdA19dE9b63",
      "reviewer": "0xa3279f744438f83bc75ce9f8a8282c448f97cc8a",
      "corroborated": true,
      "weight": 0.4974,
      "tx_hash": "0x48a0875f7f61b39015a5773bf620b0413234e0134cb335d5697..."
    }
  ],
  "contradictions": [],
  "reviewers": [
    { "address": "0x3aebb73a...", "claims": 1, "corroborated": 1,
      "weight": 0.5, "provisional": true }
  ],
  "sources_unavailable": [],
  "prior": { "standing": "grounded", "confidence": 0.82 },
  "no_basis": false,
  "evaluated_at": "2026-09-03T00:57:32.842Z"
}

The same call with memory off

curl -s "localhost:8000/v1/lookup/0x01f9...84d3?memory=off"

Returns standing: "thin", confidence: null, basis: [], no_basis: true. That empty state came from a server that genuinely had nothing to read.

Reading it correctly

no_basis: true means Firsthand has never watched this agent do anything. It does not mean the agent behaved badly. confidence: null and confidence: 0.0 are different answers.

This endpoint is read-only. It does not record the verdict it computes, because a read that writes is a read that can fail when a quota is full.