Provenance — ratings for the agentic economy
Deterministic risk dossiers for tokenized assets. Scored by a published rubric, anchored on Mantle, readable by any agent.
ScrollAgents are about to manage real-world-asset portfolios. An agent cannot read a prospectus PDF — and it should not trust a language model to invent a number.
Every PROVENANCE score is produced by a deterministic rubric: published weights, quantifiable inputs, reproducible output. Same inputs, same score — verifiable by anyone, forever.
When data cannot be sourced, the engine refuses to guess. The dimension is flagged unknown, its weight redistributed, the gap printed on the dossier itself.
The language model writes prose, nothing else. And every number in that prose is checked against the computed record — or the prose is rejected.
Four assets. Four different risk profiles.
Live composites from rubric v1.0.0.
* Spread: 16.5 points across two grade bands — the rubric discriminates. Open the full viewer ↗
Five dimensions · published weights · sum = 100
Unknown ≠ default. A dimension without sourced data scores nothing — its weight is redistributed and the flag is printed on the dossier.
DossierRegistry · Mantle Sepolia
Every dossier is published on-chain — score, grade, content hash, and the methodology hash that pins the exact rubric version. A scoring change is a new version. There are no silent edits.
verify the contract ↗assetId keccak("USDY")
version 1
score 602 // composite ×10
grade "B"
dossierHash 0x9f2c…a7e1
methodology 0x44d0…b3c9 // rubric pinned
atBlock 39781898
✓ Sourcify verified — exact match
The anti-hallucination pass
USDY receives a composite score of 60.2 and a grade of B. Collateral quality scores 90 at an effective weight of 38.5%, backed by short-duration US Treasuries with daily attestations. Liquidity is the critical weakness — the rating would be 84.5 regenerated ↻ scoring 10 against on-chain depth of roughly $5,254.
Generated prose is parsed; each numeral must match a value in the computed record. Mismatches reject the narrative — three failures fail the build, loudly.
$ curl provenance/rating/USDY
{ "composite": 60.2, "grade": "B",
"flags": ["concentration UNKNOWN"] }
tool PROVENANCE_GET_RATING
args { asset: "USDe" }
→ 72.6 · A · 1 flag
REST·MCP·ON-CHAIN