unlob Docs
Browse documentation

evidence_changes

What changed in the evidence for an objective since an instant — new evidence, origins gained, an official or primary source appearing, contradictions gained — and what became of the URLs you relied on before.

Behaviour

Deterministic: the evidence set is built twice, once over everything and once over only what had been crawled by `since`, and the two are diffed. `known_urls` are answered like why_not: present, removed with the reason (and the passage that superseded it), or unknown.

What it cannot know is stated in `provenance.limitations`: passages removed after `since` are not reconstructable, so before-counts are lower bounds, and 'as of' means crawled by then, not published by then.

Costs 10 credits; a call that runs and fails costs 1.

Arguments

inputSchema

NameTypeDescription
claimstringExperimental: also report evidence that newly contradicts this claim
known_urlsarray | stringURLs you relied on before; each comes back present, removed (with the reason) or unknown
langstring
mode"keyword" | "semantic" | "hybrid"
objectiverequiredstringWhat you need evidence for
safeboolean
sincerequiredstringAn absolute unix timestamp, a bare number of seconds ago, or a duration ago: 1d, 12h, 2w
token_budgetinteger
verticalstring

Argument shapes

1 arguments take either a JSON array or a comma-separated string: known_urls. That is the one place the two transports differ in shape. A URL query string cannot carry an array, so the REST form of these is always the comma-separated one; an argument object can carry either.

Returns

A JSON payload in the text content block, and the same payload as structuredContent for clients that support it.

outputSchema

NameTypeDescription
budgetrequiredobject
contradictions_gainedstring[]
coveragerequiredobjectThe coverage receipt
coverage_beforerequiredobjectThe coverage receipt
independent_originsrequiredobject
known_urlsobject[]
new_evidencerequiredobject[]Evidence items that did not exist as of since
next_actionsrequiredobject[]
objectiverequiredstring
origins_gainedrequiredobject[]
provenancerequiredobject
roles_gainedrequiredstring[]Source roles present now that were missing as of since
sincerequiredintegerThe instant diffed against, as unix seconds
statusrequired"changed" | "unchanged" | "partial"

Calling it

Over Streamable HTTP, with the required arguments filled in:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "evidence_changes",
    "arguments": {
      "objective": "<objective>",
      "since": "<since>"
    }
  }
}

Most clients do this for you — see Connect a client. To drive it by hand, complete the startup lifecycle first.

The same call over REST

If your client does not speak MCP, this capability is GET /changes, taking the same parameters and returning the same body.

curl -H "x-api-key: $UNLOB_API_KEY" \
  "https://api.unlob.com/changes?objective=<objective>&since=<since>"