PoolWithMeta
Enriched pool returned by /pools/latest. Extends LendingMarket with chain context, computed APR, price data, and exposure info.
Protocol identifier
AAVE_V3Pool/vault address or protocol-specific ID
Deposit APR (percent)
Variable borrow APR (percent)
Stable borrow APR (percent)
Intrinsic yield APR from underlying asset (e.g. stETH staking)
Total deposits in token units
Total stable debt in token units
Total variable debt in token units
Available liquidity (totalDeposits - totalDebt) in token units
Total deposits in USD
Total stable debt in USD
Total variable debt in USD
Available liquidity in USD
Utilization ratio (totalDebt / totalDeposits)
Token decimals — divide raw amounts by 10 ** decimals.
underlyingInfo object
Nested asset metadata, oracle prices, and market prices for a lending market.
asset object
Token metadata for an underlying asset.
EVM chain id, as a decimal string. See the ChainId schema.
1Token contract address (lowercase)
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48Token symbol, e.g. WETH.
USDCHuman-readable display name.
USD CoinToken decimals — divide raw amounts by 10 ** decimals.
6URL of the logo image.
Canonical asset group (e.g. "USDC", "ETH", "BTC")
USDCprops objectnullable
Protocol-specific asset properties
Protocol-specific asset properties
oraclePrice object
On-chain oracle price data.
Raw on-chain oracle price
Oracle price denominated in USD
prices object
Market prices for an asset with 24h comparison.
Current price in USD
Timestamp of current price
Price 24 hours ago in USD
Timestamp of 24h-ago price
Percentage price change over 24h
oracleInfo objectnullable
Oracle feed-correctness classification for the market's price oracle(s). null when the market has no oracle classification.
This is feed correctness — does the oracle price the right asset in the right unit — and is distinct from the price-staleness signal carried in risk.breakdown[oracle] (a 1–5 score). A market can have several feeds (Compound comets price each collateral asset; Fluid prices each vault side), so feeds is an array and worstScore/worstBand summarize the riskiest one.
Scoring (per feed, additive): score = provider base + flag penalties, clamped 0–100.
Provider base (oracle mechanism; first match wins):
| Provider | Base |
|---|---|
chainlink, price-cap | 10 |
redstone/pyth/chronicle/… and unrecognized | 18 |
composite / cross-feed | 22 |
exchange-rate / pendle-pt / LST rate adapters | 28 |
twap/uniswap/DEX | 30 |
fixed-rate / constant | 55 |
Flag penalties (added on top): wrong-asset +45 · correlated-proxy +18 · cross-numeraire +18 · undecoded-source +8.
Bands: LOW < 25 · MEDIUM 25–49 · HIGH 50–74 · CRITICAL ≥ 75.
feeds object[]required
Per-feed classifications, ordered worst-first.
Priced asset symbol (the reported numerator).
Oracle / feed / adapter address (lowercased).
Oracle mechanism: chainlink, redstone, pyth, chronicle, composite, price-cap (Aave PriceCapAdapter), exchange-rate (correlated/LST, e.g. Venus OneJumpOracle), pendle-pt, constant, or a lender-specific stub (compound-v2-oracle, dolomite-oracle, fluid-oracle).
Decoded reported pair, e.g. "WBTC / USD"; "UNKNOWN" when the source could not be decoded.
What the feed should report: "<asset> / <numeraire>".
Does the feed price the intended asset (numerator match)? null = unverifiable.
Is the feed denominated in the right numeraire (e.g. the loan token / market unit)? null = unknown.
Hardcoded/constant price feed.
Feed risk score 0–100. See OracleInfo for the model.
Risk band for score.
Possible values: [LOW, MEDIUM, HIGH, CRITICAL]
Risk flags: wrong-asset, correlated-proxy, cross-numeraire, undecoded-source, fixed-rate, unrecognized-provider.
Highest (worst) score across feeds.
Band of the worst feed.
Possible values: [LOW, MEDIUM, HIGH, CRITICAL]
caps object
Supply, borrow, and debt ceiling caps for a lending market.
Maximum borrowable amount (token units)
Maximum depositable amount (token units)
Isolation-mode debt ceiling
flags object
Boolean flags describing the operational status of a lending market. Values may be null if unavailable from the protocol.
Whether the market is active
Whether the market is frozen (no new deposits/borrows)
Whether stable-rate borrowing is available
Whether borrowing is enabled
Whether deposits are enabled
Whether the asset can be used as collateral
Whether variable-rate borrowing is unavailable through 1delta for this market. true for Lista DAO fixed-term (brokered) markets, where borrows must go through the broker and pick a fixed term from terms[]. Together with a non-empty terms[] this is the canonical "brokered market" signal — such markets report variableBorrowRate = 0 but cannot be borrowed variably.
rewards object[]
Active reward programs. Defaults to [] when none.
Reward token address, lowercased. For a points program (kind: "points") there is no token and this is a synthetic points:<sourceId> key.
Reward token symbol. Denormalized deliberately — reward tokens are routinely absent from the asset table (aMonUSDe, WMON, aHorRwaRLUSD are live examples), so a join would leave them unnamed.
Token decimals — divide raw amounts by 10 ** decimals.
URL of the logo image.
Reward APR on deposits
Reward APR on variable borrows
Reward APR on stable borrows
token | points. Points are NOT priceable and must be shown separately from any headline APR.
How the reward is realized, i.e. whether the APR is bankable. accrual — claimable from the protocol on-chain; merkl — off-chain merkle distribution; manual.
LEGACY mechanism tag (merkle, onchain-incentives, native) — it cannot distinguish two programs on the same platform. Prefer sourceId.
Stable program identifier, safe to key on: merkl:aave, merkl:euler, merkl:morpho, dtrinity:rebate.
Display string for the program, e.g. Merkl · Aave.
Deep link to THIS program — the exact Merkl opportunity page, not a protocol homepage.
Unix seconds the program stops paying. An APR with two weeks left is not the same product as a standing rate, so render it.
Program-wide payout rate in USD/day, as the source reports it.
refs objectnullable
Platform identifiers verbatim — Merkl campaign ids and opportunity type, or the incentives-controller address for an on-chain program. For support and deduplication, not display.
Platform identifiers verbatim — Merkl campaign ids and opportunity type, or the incentives-controller address for an on-chain program. For support and deduplication, not display.
config object
Risk config keyed by mode/category ID (e.g. "0" for default, "1" for e-mode)
property name* MarketConfigEntry
Risk parameters for a specific e-mode or collateral category.
E-mode category identifier
1Human-readable label for this config category
ETH correlatedLTV for borrowing (0-1)
0.8Liquidation threshold (0-1)
0.85Borrow factor (typically 1)
1Liquidation penalty for this mode, as a fraction of repaid debt the liquidator receives on top of par (e.g. 0.05 = 5%). Mode-specific where supported (Aave e-modes, Dolomite categories, Euler vaults).
0.05Max fraction of debt repayable per liquidation (0-1). Mirrors the pool-level closeFactor; not e-mode-specific in any supported protocol, so the same value across every mode of a market.
0.5Liquidation target health factor (e.g. 1.05). Set only by protocols that liquidate to a target HF instead of a fixed close factor (Aave V4, spoke-level); omitted otherwise.
1.05terms object[]nullable
Fixed-term rate card for Lista DAO brokered markets. Non-empty ⇒ the market is brokered (borrow via the broker, pick a termId); null ⇒ a regular variable-rate market. Together with flags.variableBorrowDisabled this is the canonical brokered-market signal.
Term identifier — MEANING IS LENDER-SPECIFIC. Exactly and TermMax: the pool/market unix MATURITY timestamp. Lista: the broker-defined product id. Teller: the duration in seconds (rolling term). Midnight and Term Finance: 0, a placeholder (single maturity per market, so the id carries no information). Pass to /v1/actions/lending/borrow?termId=…. Numeric on-chain; some upstream feeds serialize it as a string — coerce with Number() when comparing.
2Annualised fixed LEND rate at this maturity, in percent (Exactly only — its fixed pools quote both sides).
Borrowable liquidity at this maturity in loan-token human units (Exactly only).
How long the position is locked at the fixed rate, in days (e.g. 7, 14, 30).
7Term duration in seconds (raw on-chain value).
604800Annualised borrow APR for this term, in percent (e.g. 3.85 = 3.85%). Same unit as variableBorrowRate / stableBorrowRate. For order-book markets (Midnight) this is the 0-notional top-of-book (cheapest) rate — see aprAtAmount for the size-weighted rate.
3.85Size-weighted (VWAP) borrow APR % at the supplied debt notional, for order-book fixed-term markets (Morpho Midnight): the borrow book filled cheapest-first, (Σ filledᵢ·aprᵢ)/amount. Present only when an amount is supplied AND the term carries an order-book ladder; broker rate cards (Lista, single flat rate) omit it and apr already applies at any size.
Total loan-token depth in this term's order book — the maximum borrow openable at this maturity. Present only for order-book terms with an amount supplied.
True when the supplied debt notional exceeds fillable — the book can't fully fund the borrow at this maturity (aprAtAmount is then the drain-the-book VWAP).
ladder object[]nullable
Order-book borrow ladder (best-borrow first) for order-book fixed-term markets (Midnight). Only serialized when depth=true (bulky). aprAtAmount is the pre-computed size-weighted rate; use this to re-derive it at any amount.
Annualised borrow rate at this tier (%).
Credit/debt units at this tier (raw).
Loan-token size available at this tier.
Lista DAO LendingBroker contract address — the mandatory gateway for the debt side (borrow/repay) of a brokered market. Present (non-zero) only for brokered markets. The borrow/repay calldata routes through this contract (the SDK and worker resolve it automatically).
0x1fa26015286d1270343d7526c60bd57ab6be8b54Lista DAO collateral-provider contract for this market. When set (non-zero), Moolah gates supplyCollateral/withdrawCollateral behind it, so collateral deposits/withdrawals must route through this provider rather than calling Moolah directly (the SDK/worker handle this). Set for markets whose collateral is a Lista-managed token (e.g. slisBNB); null for plain ERC-20 collateral.
0x33f7a980a246f9b8fea2254e3065576e127d4d5fLista DAO loan-token provider contract for this market (e.g. the native-WBNB wrapper provider). When set, loan-token operations are gated behind it; for brokered markets the broker handles the debt side. Informational — consumers do not pass it; the SDK/worker resolve routing automatically.
0x367384c54756a25340c63057d87ea22d47fd5701Max fraction of a borrower's debt repayable in a single liquidation (0-1). Aave ~0.5 (rises to 1 below the close-factor health threshold), Compound V2 closeFactorMantissa; 1 (full liquidation) for isolated / credit-account protocols (Compound V3, Morpho, Euler, Fluid, Gearbox, Dolomite, Silo).
0.5Liquidation target health factor (e.g. 1.05). Set only by protocols that liquidate to a target HF rather than a fixed close factor (Aave V4, spoke-level); omitted otherwise.
1.05lenderInfo object
Protocol/lender metadata (name, logo).
Lender key identifier
AAVE_V3Human-readable lender name
Aave V3Lender logo URL
https://raw.githubusercontent.com/1delta-DAO/protocol-icons/main/lender/aave_v3.webptermSheet objectnullable
Structured description of this market’s lend and borrow offer. Shape depends on the terms query param: digest (default) or full. Absent when terms=none.
- TermSheetDigest
- TermSheet
Market identifier, formatted lender:chainId:address.
supply object
borrow object
oracle object
governance object
Market utilization, as a fraction between 0 and 1.
1Unix seconds — everything here is a snapshot.
exactly.fixed@v1Market identifier, formatted lender:chainId:address.
Protocol identifier. See the LenderId schema.
EVM chain id, as a decimal string. See the ChainId schema.
asset objectnullable
The market’s own underlying — needed to render minSize / cap / minDebt, which are RAW base units.
The market’s own underlying — needed to render minSize / cap / minDebt, which are RAW base units.
supply object
yield | collateral | both
rate objectrequired
All rates are NOMINAL APR in PERCENT (3.85 = 3.85 %/yr) — never a fraction, never an APY.
variable-curve | variable-managed | user-set | fixed-term | zero-interest | prepaid | nav-accrual | none. A zero-interest market is NOT a free borrow — the cost is a one-off fee.
Base rate only.
components objectrequired
PRICEABLE rewards only.
base + priceable rewards + intrinsic. Deliberately EXCLUDES points programs, which have no priceable value — see rewards[].indicative.
Possible values: [apr-nominal]
userSet objectnullable
Present when the BORROWER sets the rate (Liquity family). A borrow UI must render an input: the rate decides your place in the redemption queue, so the cheapest is also the first redeemed. Omit the rate on the action and the protocol applies default (the branch average).
rewards object[]nullable
asset objectnullable
token | points | unknown
Possible values: [supply, borrow]
accrual | merkl | manual | none
Points — not priceable, and excluded from aprTotal.
menu object[]nullable
Term identifier — MEANING IS LENDER-SPECIFIC. Exactly and TermMax: the pool/market unix MATURITY timestamp. Lista: the broker-defined product id. Teller: the duration in seconds (rolling term). Midnight and Term Finance: 0, a placeholder (single maturity per market, so the id carries no information). Pass to /v1/actions/lending/borrow?termId=…. Numeric on-chain; some upstream feeds serialize it as a string — coerce with Number() when comparing.
2Annualised fixed LEND rate at this maturity, in percent (Exactly only — its fixed pools quote both sides).
Borrowable liquidity at this maturity in loan-token human units (Exactly only).
How long the position is locked at the fixed rate, in days (e.g. 7, 14, 30).
7Term duration in seconds (raw on-chain value).
604800Annualised borrow APR for this term, in percent (e.g. 3.85 = 3.85%). Same unit as variableBorrowRate / stableBorrowRate. For order-book markets (Midnight) this is the 0-notional top-of-book (cheapest) rate — see aprAtAmount for the size-weighted rate.
3.85Size-weighted (VWAP) borrow APR % at the supplied debt notional, for order-book fixed-term markets (Morpho Midnight): the borrow book filled cheapest-first, (Σ filledᵢ·aprᵢ)/amount. Present only when an amount is supplied AND the term carries an order-book ladder; broker rate cards (Lista, single flat rate) omit it and apr already applies at any size.
Total loan-token depth in this term's order book — the maximum borrow openable at this maturity. Present only for order-book terms with an amount supplied.
True when the supplied debt notional exceeds fillable — the book can't fully fund the borrow at this maturity (aprAtAmount is then the drain-the-book VWAP).
ladder object[]nullable
Order-book borrow ladder (best-borrow first) for order-book fixed-term markets (Midnight). Only serialized when depth=true (bulky). aprAtAmount is the pre-computed size-weighted rate; use this to re-derive it at any amount.
Annualised borrow rate at this tier (%).
Credit/debt units at this tier (raw).
Loan-token size available at this tier.
maturity objectrequired
perpetual | fixed-date | rolling-duration
Unix seconds.
What happens if NOBODY acts — the field that most surprises users. stops-earning | penalty-accrues | liquidatable | default-seizure | physical-delivery | refinanced | auto-roll | none.
Window before atMaturity bites. Observed as low as 300 s (Teller).
exit objectrequired
sync | async
How long YOUR money is locked.
liquidity objectnullable
none | haircut-formula | market-price | may-be-impossible
fees object[]
Stable slug: origination, late-penalty, early-repay-discount, reserve-contribution, instant-exit, performance, reserve-factor, …
Self-describing, so an id a client does not recognise still renders correctly.
entry | ongoing | exit | late | liquidation | performance
apr-percent | percent | bps | absolute
principal | face-value | yield | collateral | shares | debt-repaid
Native-token value to send with the transaction, in wei.
Governance-mutable — a snapshot.
Only resolvable at action time (Exactly’s discount, TermMax’s curve price).
Human-readable label for this entry.
fees object[]required
Stable slug: origination, late-penalty, early-repay-discount, reserve-contribution, instant-exit, performance, reserve-factor, …
Self-describing, so an id a client does not recognise still renders correctly.
entry | ongoing | exit | late | liquidation | performance
apr-percent | percent | bps | absolute
principal | face-value | yield | collateral | shares | debt-repaid
Native-token value to send with the transaction, in wei.
Governance-mutable — a snapshot.
Only resolvable at action time (Exactly’s discount, TermMax’s curve price).
Human-readable label for this entry.
backedBy object
What backs a deposit (supply.backedBy) or what may be posted (borrow.acceptedCollateral).
Number of entries in items.
debt | allocation | unweighted. unweighted means the ACCEPTED SET, not a measured split — pooled lenders do not record on-chain which collateral backs which borrow, so weightPct is absent and a pie chart would be fabricated.
1 (best) … 5 (worst).
items object[]nullable
Omitted on terms=digest; each entry carries its own marketUid for resolution.
asset object
Market identifier, formatted lender:chainId:address.
Loan-to-value ratio, as a fraction between 0 and 1.
oracle objectnullable
The market’s price input. SINGULAR by construction at marketUid granularity — verified across the full classification, 0 markets carry more than one address.
price-feed | nav-attested | none. none is a FACT, not missing data (Teller liquidates on time and has no feed anywhere in its trigger; Frankencoin uses an owner-declared price).
Lowercased. The contract the protocol actually calls.
Normalized risk score — lower is safer.
Possible values: [LOW, MEDIUM, HIGH, CRITICAL]
mutability objectnullable
quality objectnullable
counterparty objectrequired
availability objectrequired
Gate the CTA on THIS and nothing else — it already folds in caps, freezes, auction windows and gating.
Minimum to OPEN, RAW base units of this side’s asset. On borrow a minimum DEBT (Comet baseBorrowMin, Liquity minDebt, Maker dust, Resupply minimumBorrowAmount); on supply a minimum COLLATERAL (Frankencoin). A smaller amount REVERTS — validate before building.
window objectnullable
principal objectrequired
info objectrequired
Ready-to-render one-liner, templated from this market’s live numbers. ALWAYS populated — it is the graceful-degradation path when a client meets an enum member it predates.
Fixed 4.12% until 3 Sep 2026 · repay any time at face valueHuman-readable label for this entry.
Consequences a rate alone hides, ordered MOST SEVERE FIRST. Present only on terms=full.
Machine tags derived from the structured fields (never hand-written), e.g. time-liquidation, full-collateral-seizure, redeemable, exit-cooldown. Present in BOTH the digest and the full sheet, which is why severity can be computed from either.
borrow object
rate objectrequired
All rates are NOMINAL APR in PERCENT (3.85 = 3.85 %/yr) — never a fraction, never an APY.
variable-curve | variable-managed | user-set | fixed-term | zero-interest | prepaid | nav-accrual | none. A zero-interest market is NOT a free borrow — the cost is a one-off fee.
Base rate only.
components objectrequired
PRICEABLE rewards only.
base + priceable rewards + intrinsic. Deliberately EXCLUDES points programs, which have no priceable value — see rewards[].indicative.
Possible values: [apr-nominal]
userSet objectnullable
Present when the BORROWER sets the rate (Liquity family). A borrow UI must render an input: the rate decides your place in the redemption queue, so the cheapest is also the first redeemed. Omit the rate on the action and the protocol applies default (the branch average).
rewards object[]nullable
asset objectnullable
token | points | unknown
Possible values: [supply, borrow]
accrual | merkl | manual | none
Points — not priceable, and excluded from aprTotal.
menu object[]nullable
Term identifier — MEANING IS LENDER-SPECIFIC. Exactly and TermMax: the pool/market unix MATURITY timestamp. Lista: the broker-defined product id. Teller: the duration in seconds (rolling term). Midnight and Term Finance: 0, a placeholder (single maturity per market, so the id carries no information). Pass to /v1/actions/lending/borrow?termId=…. Numeric on-chain; some upstream feeds serialize it as a string — coerce with Number() when comparing.
2Annualised fixed LEND rate at this maturity, in percent (Exactly only — its fixed pools quote both sides).
Borrowable liquidity at this maturity in loan-token human units (Exactly only).
How long the position is locked at the fixed rate, in days (e.g. 7, 14, 30).
7Term duration in seconds (raw on-chain value).
604800Annualised borrow APR for this term, in percent (e.g. 3.85 = 3.85%). Same unit as variableBorrowRate / stableBorrowRate. For order-book markets (Midnight) this is the 0-notional top-of-book (cheapest) rate — see aprAtAmount for the size-weighted rate.
3.85Size-weighted (VWAP) borrow APR % at the supplied debt notional, for order-book fixed-term markets (Morpho Midnight): the borrow book filled cheapest-first, (Σ filledᵢ·aprᵢ)/amount. Present only when an amount is supplied AND the term carries an order-book ladder; broker rate cards (Lista, single flat rate) omit it and apr already applies at any size.
Total loan-token depth in this term's order book — the maximum borrow openable at this maturity. Present only for order-book terms with an amount supplied.
True when the supplied debt notional exceeds fillable — the book can't fully fund the borrow at this maturity (aprAtAmount is then the drain-the-book VWAP).
ladder object[]nullable
Order-book borrow ladder (best-borrow first) for order-book fixed-term markets (Midnight). Only serialized when depth=true (bulky). aprAtAmount is the pre-computed size-weighted rate; use this to re-derive it at any amount.
Annualised borrow rate at this tier (%).
Credit/debt units at this tier (raw).
Loan-token size available at this tier.
maturity objectrequired
perpetual | fixed-date | rolling-duration
Unix seconds.
What happens if NOBODY acts — the field that most surprises users. stops-earning | penalty-accrues | liquidatable | default-seizure | physical-delivery | refinanced | auto-roll | none.
Window before atMaturity bites. Observed as low as 300 s (Teller).
accruing | static-face | prepaid. The biggest departure from variable-rate intuition: most fixed-term debt is a static face value fixed at trade time, so repaying early does not reduce it.
exit objectrequired
free | discount | penalty | market-price | not-allowed. Note discount is a REBATE (Exactly) — assuming "early = penalty" is wrong in both directions.
Dust floor, RAW base units — bounds partial repayment too.
Midnight: over-repay REVERTS; size exactly.
fees object[]
Stable slug: origination, late-penalty, early-repay-discount, reserve-contribution, instant-exit, performance, reserve-factor, …
Self-describing, so an id a client does not recognise still renders correctly.
entry | ongoing | exit | late | liquidation | performance
apr-percent | percent | bps | absolute
principal | face-value | yield | collateral | shares | debt-repaid
Native-token value to send with the transaction, in wei.
Governance-mutable — a snapshot.
Only resolvable at action time (Exactly’s discount, TermMax’s curve price).
Human-readable label for this entry.
liquidation objectrequired
HOW it happens, distinct from what triggers it. repay-seize | soft-band (LlamaLend: gradual, reversible, penalty-free conversion inside the AMM — there is no single liquidation price) | stability-pool | auction (Frankencoin: no oracle, an owner-DECLARED price policed by a Dutch auction) | default-seizure | delivery | none.
soft-band only — being "in liquidation" is not terminal and unwinds if price recovers.
price | time | price-and-time | redemption | none. A time trigger liquidates a perfectly over-collateralised position; a health factor does NOT protect you.
FRACTION (0.8 = 80 %).
FRACTION.
FRACTION of repaid debt.
penalties object[]nullable
Named penalties where one number cannot express the model — Liquity charges differently depending on whether the Stability Pool absorbs the debt or it is redistributed.
Native-token value to send with the transaction, in wei.
Human-readable label for this entry.
proportional | full-collateral. The latter (Teller) means a liquidator takes the ENTIRE escrow, not the amount owed — roughly 2x the borrowed value at 50 % LTV.
redemption object
Collateral taken from a HEALTHY position. On every lender we serve this is a PERMISSIONLESS ARBITRAGE that defends the stablecoin’s peg — not a liquidation, and not a governance decision. Rendering only the effect ("your collateral can be taken") misleads.
permissionless-arbitrage — any holder of the debt token, any time. (governance / protocol are reserved and unused.)
below-peg — it only pays them while the token trades under its target.
lowest-rate-first (Liquity family — your rate IS your queue position) | pro-rata (Resupply — every borrower is skimmed, nothing to out-run) | lowest-collateral-ratio.
usd-neutral — the fee stays in the position as extra collateral, so the borrower loses EXPOSURE, not value. Do not render this as "you lose your collateral".
What the borrower can do. ABSENT when order: pro-rata — there is nothing.
bandLtv objectnullable
soft-band only: collateral factor as a function of the band count chosen at open (0.991 at N=4 vs 0.886 at N=50). ltv reports the default N.
acceptedCollateral object
What backs a deposit (supply.backedBy) or what may be posted (borrow.acceptedCollateral).
Number of entries in items.
debt | allocation | unweighted. unweighted means the ACCEPTED SET, not a measured split — pooled lenders do not record on-chain which collateral backs which borrow, so weightPct is absent and a pie chart would be fabricated.
1 (best) … 5 (worst).
items object[]nullable
Omitted on terms=digest; each entry carries its own marketUid for resolution.
asset object
Market identifier, formatted lender:chainId:address.
Loan-to-value ratio, as a fraction between 0 and 1.
oracle objectnullable
The market’s price input. SINGULAR by construction at marketUid granularity — verified across the full classification, 0 markets carry more than one address.
price-feed | nav-attested | none. none is a FACT, not missing data (Teller liquidates on time and has no feed anywhere in its trigger; Frankencoin uses an owner-declared price).
Lowercased. The contract the protocol actually calls.
Normalized risk score — lower is safer.
Possible values: [LOW, MEDIUM, HIGH, CRITICAL]
mutability objectnullable
quality objectnullable
Non-default risk categories as DELTAS (Aave e-modes, Dolomite categories, Euler configs). liquidation above is the fully-resolved DEFAULT.
fees object[]required
Stable slug: origination, late-penalty, early-repay-discount, reserve-contribution, instant-exit, performance, reserve-factor, …
Self-describing, so an id a client does not recognise still renders correctly.
entry | ongoing | exit | late | liquidation | performance
apr-percent | percent | bps | absolute
principal | face-value | yield | collateral | shares | debt-repaid
Native-token value to send with the transaction, in wei.
Governance-mutable — a snapshot.
Only resolvable at action time (Exactly’s discount, TermMax’s curve price).
Human-readable label for this entry.
counterparty objectrequired
availability objectrequired
Gate the CTA on THIS and nothing else — it already folds in caps, freezes, auction windows and gating.
Minimum to OPEN, RAW base units of this side’s asset. On borrow a minimum DEBT (Comet baseBorrowMin, Liquity minDebt, Maker dust, Resupply minimumBorrowAmount); on supply a minimum COLLATERAL (Frankencoin). A smaller amount REVERTS — validate before building.
window objectnullable
info objectrequired
Ready-to-render one-liner, templated from this market’s live numbers. ALWAYS populated — it is the graceful-degradation path when a client meets an enum member it predates.
Fixed 4.12% until 3 Sep 2026 · repay any time at face valueHuman-readable label for this entry.
Consequences a rate alone hides, ordered MOST SEVERE FIRST. Present only on terms=full.
Machine tags derived from the structured fields (never hand-written), e.g. time-liquidation, full-collateral-seizure, redeemable, exit-cooldown. Present in BOTH the digest and the full sheet, which is why severity can be computed from either.
governance object
immutable | governed | unknown
EOA | SAFE | TIMELOCK | GOVERNOR | GOVERNANCE | CUSTOM | UNKNOWN
safe objectnullable
The holder’s NOTICE PERIOD before a queued parameter change lands. NOT a withdrawal lock — that is supply.exit.cooldownSecs. Never merge or sum the two.
The controller IS a timelock but its delay could not be read. Distinct from "no delay" — reporting the latter would be a false alarm on the safest governance shape.
Normalized risk score — lower is safer.
roles objectnullable
Governance screens refresh far slower than rates.
oracle objectnullable
The market’s price input. SINGULAR by construction at marketUid granularity — verified across the full classification, 0 markets carry more than one address.
price-feed | nav-attested | none. none is a FACT, not missing data (Teller liquidates on time and has no feed anywhere in its trigger; Frankencoin uses an owner-declared price).
Lowercased. The contract the protocol actually calls.
Normalized risk score — lower is safer.
Possible values: [LOW, MEDIUM, HIGH, CRITICAL]
mutability objectnullable
utilization object
0..1 FRACTION.
market | hub | liquidity-layer | pool. NOT always this row: Fluid / Aave V4 / Gearbox set rates on a LARGER pool, and a rate simulation must shift irmTotal*, not the row totals.
constraints objectnullable
coverage objectnullable
Distinguishes "does not apply here" (notApplicable) from "not classified yet" (pending). A missing block is NEVER a claim of absence.
Distinguishes "does not apply here" (notApplicable) from "not classified yet" (pending). A missing block is NEVER a claim of absence.
Chain ID
Protocol identifier
Effective APR (depositRate + intrinsicYield)
Current asset price in USD
Asset price 24h ago in USD
exposure object[]
Cross-protocol exposure for the same underlying asset
EVM chain id, as a decimal string. See the ChainId schema.
Protocol identifier. See the LenderId schema.
{
"chainId": "string",
"lender": "string",
"apr": 0,
"price": 0,
"histPrice": 0,
"exposure": [
{
"chainId": "string",
"lender": "string",
"poolId": "string"
}
],
"lenderKey": "AAVE_V3",
"poolId": "string",
"depositRate": 0,
"variableBorrowRate": 0,
"stableBorrowRate": 0,
"intrinsicYield": 0,
"totalDeposits": 0,
"totalDebtStable": 0,
"totalDebt": 0,
"totalLiquidity": 0,
"totalDepositsUsd": 0,
"totalDebtStableUsd": 0,
"totalDebtUsd": 0,
"totalLiquidityUsd": 0,
"utilization": 0,
"decimals": 0,
"underlyingInfo": {
"asset": {
"chainId": "1",
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"logoURI": "string",
"assetGroup": "USDC",
"currencyId": "string",
"props": {}
},
"oraclePrice": {
"oraclePrice": 0,
"oraclePriceUsd": 0
},
"prices": {
"priceUsd": 0,
"priceTs": "2024-07-29T15:51:28.071Z",
"priceUsd24h": 0,
"priceTs24h": "2024-07-29T15:51:28.071Z",
"priceChange24h": 0
}
},
"oracleInfo": {
"feeds": [
{
"asset": "string",
"oracle": "string",
"provider": "string",
"priceDescription": "string",
"intendedPair": "string",
"correctOracle": true,
"denominatorMatch": true,
"fixedRate": true,
"score": 0,
"band": "LOW",
"flags": [
"string"
]
}
],
"worstScore": 0,
"worstBand": "LOW"
},
"caps": {
"borrowCap": 0,
"supplyCap": 0,
"debtCeiling": "string"
},
"flags": {
"isActive": true,
"isFrozen": true,
"hasStable": true,
"borrowingEnabled": true,
"depositsEnabled": true,
"collateralActive": true,
"variableBorrowDisabled": true
},
"rewards": [
{
"asset": "string",
"symbol": "string",
"decimals": 0,
"logoURI": "string",
"depositRate": 0,
"variableBorrowRate": 0,
"stableBorrowRate": 0,
"kind": "string",
"claim": "string",
"source": "string",
"sourceId": "string",
"sourceLabel": "string",
"link": "string",
"endsAt": 0,
"startsAt": 0,
"dailyRewardsUsd": 0,
"refs": {}
}
],
"config": {},
"terms": [
{
"termId": 2,
"depositApr": 0,
"available": 0,
"durationDays": 7,
"durationSecs": 604800,
"apr": 3.85,
"aprAtAmount": 0,
"fillable": 0,
"capped": true,
"ladder": [
{
"apr": 0,
"units": "string",
"assets": 0
}
]
}
],
"broker": "0x1fa26015286d1270343d7526c60bd57ab6be8b54",
"collateralProvider": "0x33f7a980a246f9b8fea2254e3065576e127d4d5f",
"loanProvider": "0x367384c54756a25340c63057d87ea22d47fd5701",
"closeFactor": 0.5,
"targetHealthFactor": 1.05,
"lenderInfo": {
"key": "AAVE_V3",
"name": "Aave V3",
"logoURI": "https://raw.githubusercontent.com/1delta-DAO/protocol-icons/main/lender/aave_v3.webp"
},
"termSheet": {
"schemaVersion": 0,
"profileId": "string",
"marketUid": "string",
"supply": {},
"borrow": {},
"oracle": {},
"governance": {},
"utilization": 0
}
}