No customer-supplied URLs at v1
Sources are seeded by Axiru. You cannot point Evidence Agent at an arbitrary URL. This eliminates the SSRF, malicious-redirect, and supply-chain attack surfaces of a generic fetcher.
The Evidence Agent fetches carrier-tracking, Stripe disputes, and merchant ToS at decision time, classifies what comes back, and writes an EVIDENCE_FETCH entry into the ledger. Policies stop guessing. Auditors stop reconstructing.
v1 ships three sources we run end-to-end ourselves. No customer-defined fetchers, no PDF/OCR, no logged-in extraction.
FedEx, UPS, USPS, DHL. Did the package actually deliver? When? Where? Cached 60s, parsed via carrier APIs with a Claude Haiku fallback when carrier responses are unstructured.
Active dispute? Evidence due date? Reason code? Pulled directly from the Stripe API with a 5s cache so refund-on-disputed-charge policies decide on current state, not stale data.
Headless Playwright fetch + Claude Haiku parse of the merchant's posted Terms of Service. Cached 24h. Lets policies cite the actual posted refund window — not what someone remembered six months ago.
Evidence Agent slots into the existing Axiru flow. No new repo for you, no new buyer, no new dashboard.
A policy rule references a seeded source. Example: deny refund if carrier shows delivered AND merchant ToS refund window has expired.
Runs on dedicated Fly.io machines with Playwright. p50 ≤ 8s, p95 ≤ 15s. 50 fetches per minute per machine, with hard $0.10/fetch cost ceiling.
Microsoft Presidio classifies returned content as NONE, INDIRECT, DIRECT, or SENSITIVE. SENSITIVE auto-blocks at v1. Confidence below 0.85 routes to the existing approval router.
Every fetch lands as an EVIDENCE_FETCH ledger entry, linked to the originating decisionId. Auditors trace the decision back through the policy, the evidence, and the source — without leaving Axiru.
Evidence Agent is a Growth-tier add-on. Enterprise contracts include it by default.
The same controls that govern money also govern evidence.
Sources are seeded by Axiru. You cannot point Evidence Agent at an arbitrary URL. This eliminates the SSRF, malicious-redirect, and supply-chain attack surfaces of a generic fetcher.
Every fetched output is classified NONE, INDIRECT, DIRECT, or SENSITIVE. SENSITIVE auto-blocks at v1 — the policy never sees the underlying content; the decision falls through to approval routing.
NONE retains 7 years. INDIRECT and DIRECT retain 1 year. SENSITIVE retains 30 days, opt-in only. All retention windows enforced automatically; no manual purge.
Every fetch writes an EVIDENCE_FETCH entry into the same tamper-evident ledger that holds your decisions. Auditors verify the SHA-256 chain without trusting a separate evidence store.
Plain answers about scope, retention, and where it runs.
No. v1 ships with three seeded sources only — carrier tracking, Stripe disputes, ToS pages. Customer-defined sources, PDF/OCR, real-time streaming, and logged-in extraction are explicitly out of scope at v1.
Microsoft Presidio classifies every fetch. SENSITIVE outputs auto-block at v1; the underlying artifact is retained 30 days only and only if you opt in. INDIRECT and DIRECT artifacts retain 1 year; NONE retains 7 years.
Confidence threshold is 0.85. Below that, the decision routes through Axiru's existing approval router with the evidence attached, and a reviewer can Accept, Override, or Reject.
Dedicated Fly.io machines so headless browser load is isolated from the policy engine. Throughput is 50 fetches per minute per machine. Cost-capped at $500/month at v1.
Every fetch writes an EVIDENCE_FETCH entry linked to the originating decisionId. The decision view shows the evidence inline; auditors can re-derive the chain without leaving Axiru.
REST: POST /v1/evidence/fetch, GET /v1/evidence/:id, GET /v1/evidence?decisionId=. Webhooks: evidence.fetched, evidence.review_required. MCP tools: axiru.evidence.fetch / get / list_for_decision.
Wire Evidence Agent in once. Every refund decision carries its own proof — fetched at decision time, sealed in the ledger.
Start in shadow mode first. Move to live enforcement later.