An independent program checks our published API against the chains and venues themselves, every few hours. Findings are published whole, including our own errors.Note 11
A check that could not run is counted separately and never as a pass. An API nobody could reach must not look like an API that answered correctly.
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-ctdeltaweeth-2393da · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · concrete-ctdeltaweeth-2393da
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · base-gauntlet-usdc-prime-eE8F4e · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · gauntlet-x-lista-bnb-vault-57134a · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · base-spark-usdc-vault-7BfA7C · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-adpend-usdc-555558 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · base-steakhouse-usdc-beeF01 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · gauntlet-x-lista-usd1-vault-fa27f1 · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-ctwsteth-e3b2b3 · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · concrete-ctwsteth-e3b2b3
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-1337-usdc-94643e · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-steakhouse-usdt-bEef04 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · base-grove-x-steakhouse-usdc-high-yield-BeEf2d · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-steakhouse-usdc-BEEF01 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-pyusd-ba98fc · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-usdc-ab2726 · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-vusd-d8ec5b · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-vusd-d8ec5b
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-rlusd-af5372 · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-usdc-9bd52f · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · gauntlet-x-lista-u-vault-9a17fd · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-weth-502e4a · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-weth-502e4a
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-pt-ausd-8oct2026-70023e · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-pt-ausd-8oct2026-70023e
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-wsteth-617888 · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-wsteth-617888
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-ausd-0f9ba9 · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-ausd-0f9ba9
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · hyperevm-felix-usdc-frontier-808F72 · expected 0.5449999999999999, got 0.872
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-steakhouse-eth-BEEf05 · expected 0.5449999999999999, got 0.872
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-ctdefiusdt-9ffcea · expected 0.25, got 0.4000000000000001
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-vault-bridge-wbtc-812B2C · expected 0.5449999999999999, got 0.872
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · lisusd-vault-e03d86 · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-gauntlet-usdc-prime-dd0f28 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · base-froge-s-usdc-2C6D16 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-gausd-e04dc2 · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-gausd-e04dc2
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-smokehouse-usdt-A08043 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · lagoon-rock-reth-b22108 · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · lagoon-rock-reth-b22108
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-ctwbtc-26cd1d · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · concrete-ctwbtc-26cd1d
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · base-steakhouse-prime-usdc-BEEFE9 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-thusd-usdc-eth-c77c9b · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · concrete-thusd-usdc-eth-c77c9b
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-weth-a5b409 · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-weth-a5b409
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · hyperevm-felix-hype-2900AB · expected 0.5449999999999999, got 0.872
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-weeth-b4f2bc · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-weeth-b4f2bc
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-hakutora-usdc-974c8F · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-usd0-d001f0 · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-usdt-a44693 · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · base-pangolins-usdc-1401d1 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-smokehouse-usdc-BEeFFF · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-metronome-msusd-vault-6859B3 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-usdc-01864a · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-ctusde-622d3d · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · concrete-ctusde-622d3d
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-vault-bridge-weth-31A568 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-scusd-b38d43 · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-vault-bridge-usdc-BEefb9 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-wstrcx-61332f · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-gauntlet-usdt-frontier-79FD64 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-gauntlet-usdc-rwa-A8875a · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · hyperevm-felix-usdc-8A862f · expected 0.5449999999999999, got 0.872
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-srroyusdc-7081d7 · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · concrete-srroyusdc-7081d7
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · world-re7-usdc-b1E803 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-ausd-9e3500 · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-ausd-9e3500
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · katana-steakhouse-prime-usdc-61D4F9 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-swissborg-morpho-usdc-4Ff418 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-ctcolbusd1-a892f0 · expected 0.25, got 0.4000000000000001
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-ctzigusd1-83e4e0 · expected 0.25, got 0.4000000000000001
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-weth-dc4efb · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · lagoon-t9cbbtc-117051 · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · lagoon-t9cbbtc-117051
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-yearn-og-usdc-F9bdDd · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-cbeth-60c61a · expected 0.505, got 0.8080000000000002
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · lagoon-tulipausdc-c1cc3c · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · lagoon-tulipausdc-c1cc3c
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · lagoon-gamiusdc-b49e91 · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · lagoon-gamiusdc-b49e91
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · euler-ausd-4a798e · expected 0.425, got 0.68
score published on only 43% measurable, below the floor
GET /v1/vaults/:slug (risk) · euler-ausd-4a798e
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · base-moonwell-flagship-usdc-c1256A · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · world-re7-wld-348831 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-gauntlet-weth-prime-2371e1 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-thusd-usdc-arb-2f7db4 · expected 0.25, got 0.4000000000000001
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · ethereum-yearn-usdc-68Aea7 · expected 0.6249999999999999, got 1
measured share is not the weight of the measurable components
GET /v1/vaults/:slug (risk) · concrete-ctberalbtc-bbc190 · expected 0.33, got 0.5280000000000001
score published on only 33% measurable, below the floor
GET /v1/vaults/:slug (risk) · concrete-ctberalbtc-bbc190
capital disagrees with Morpho by 99.1%
GET /v1/vaults?platform=morpho · katana-gauntlet-weth-C5e7AB · expected 26680, got 2834655.114717464
utilisation disagrees with Lista on a reading 5.4h old
GET /v1/vaults?platform=lista-lending · statera-vault-usdt-3bd8bd · expected 0.30243177248120645, got 0.6235853516540885
we make the last 30 days 11.58% a year and the venue makes it 4.29% — 0.58% of share price apart across the window. Both are derived from the same share price by different routes, so a gap this size means one of the two pipelines is wrong.
GET /v1/vaults · lagoon-722c-e-8df840 (722Capital-ETH) · expected 4.289, got 11.576
| Check | Reaches | Examined | Result |
|---|---|---|---|
| every documented route answers | shape | 24 | clean |
| no NaN, Infinity or unparseable timestamp in any payload | shape | 11 | clean |
| pagination arithmetic holds and pages do not overlap | shape | 3 | clean |
| nonsense parameters are refused, not crashed on or silently ignored | shape | 10 | clean |
| risk score is the weighted average of its own published components | identity | 100 |
| 94 findings |
| supplied equals lent out plus left, and none of the three is a zero standing in for unknown | identity | 40 | clean |
| every flag carries an observation and its innocent reading, and never a verdict | identity | 100 | clean |
| counts and capital agree between the list, the detail and /v1/meta | identity | 4 | clean |
| an absent measurement is null, never a zero that reads as a value | identity | 100 | clean |
| every figure says when it was read, and nothing is stale without saying so | identity | 20 | clean |
| an identifier a consumer would look up on a chain is either an address or is labelled as not one | identity | 100 | clean |
| capital the API reports matches the vault contract read directly | source | 14 | clean |
| Morpho vaults match what Morpho publishes about them | source | 25 | 1 finding |
| Lista vaults match what Lista publishes about them | source | 24 | 1 finding |
| platform capital is the right order of magnitude against DefiLlama | source | 2 | clean |
| the block rate behind every historical window still matches the chain | source | 6 | clean |
| the alerting is still running, and nothing is stuck in the delivery queue | source | 2 | clean |
| the data consumer is still reporting, so its quiet is real quiet | source | 1 | clean |
| an endpoint asked about a block before a contract existed refuses, rather than answering | source | 4 | clean |
| log history reaches as far back as the readers assume it does | source | 4 | clean |
| our realised return agrees with the venue that computes the same figure | source | 41 | 1 finding |
| the same quantity asked for two ways answers the same both times | identity | 240 | clean |
| a key that holds a capability actually receives the field it pays for | identity | 12 | clean |
| a capability the key lacks is refused with a 402 that names it | shape | 7 | clean |
| POST /v1/risk names the holdings its shock ladder cannot speak for | identity | 3 | clean |
| a redemption that cannot be paid says so rather than that nothing must be sold | identity | 8 | clean |
| the CSV export carries what the JSON carries | identity | 9 | clean |
| a vault reported closed says so, and a dead one is not still counted as live | identity | 102 | clean |