sigil_verify_supply_path
The core Sigil pre-bid call. Submit a supply path; Sigil composes its
individual checks into one trust verdict and returns a signed
sigil_token the agent can attach to its bid as proof of verification.
Checks composed:
ads_txt— exchange authorized in the publisher's ads.txt.datacenter_ip— is the IP a datacenter posing as a real user.fraud_signals— is the IP in Scry's attacker-intelligence corpus.bundle_verified— does the app bundle exist in its store.domain_authenticity/entity_reputation— reserved, not evaluated in v1.
Each evaluated check yields pass/warn/fail; trust_score is their
weighted mean (override weights per request); verdict is
pass/warn/fail/unknown (override thresholds).
PRIVACY: ip_address is used for lookup only — never logged, never
stored, never placed in the sigil_token. geo is accepted but unused.
Returns: trust_score (0-1 or null), verdict, checks,
recommendations, sigil_token (signed, 5-minute lifetime). Overriding
weights or thresholds still returns the score and verdict, but no
token: sigil_token is null and token_withheld is custom_scoring.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ait | No | Optional ATAP AIT id (`AIT-<uuidv7>`). When present, the `sigil_token` is bound to the AIT and a witness-tier `supply:verified` / `supply:rejected` event is chained onto it (when publisher_domain, exchange and seller_id are all given). Requires `Authorization: Bearer <holder_secret>` (issued once at AIT registration); nothing is appended without it. With an AIT, a present publisher_domain / exchange must be a bare domain and seller_id 1-128 characters, else 400. Because the bearer carries the holder secret, a `tm_live_` API key cannot be sent in the same call (it is checked as the holder secret and fails 403), and the call is rate-limited and audited as anonymous tier. | |
| buyer | No | Optional. When present and the verdict is not `fail`, Sigil opportunistically records a `buys_through` edge linking the buyer entity to the resolved DSP. Side-effect persistence only — never affects the verdict or response shape, silent on every failure path. Requires `entity_slug` plus one of `dsp_domain` / `dsp_id`. | |
| receipt | No | When true, attach a signed Receipt v1.0 committed to the transparency log. Additive — the response shape is otherwise unchanged, and a signing failure never costs you the verdict (ADR-014). | |
| weights | No | Per-check weight overrides | |
| thresholds | No | { pass, fail } verdict cutoffs | |
| supply_path | Yes |