> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lucidblock.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported protocols

> Every verified adapter, its categories and its limitations.

As of 2026-11-14, generated from local `/v1/solana/protocols` and `/v1/solana/coverage` (release status `alpha_partial`).

```bash theme={null}
BASE_URL="https://api.lucidblock.xyz"
```

## Protocols

26 verified protocol adapters serve positions today. The table is generated by `pnpm docs:supported` from `/v1/solana/protocols`, `/v1/solana/coverage` and the
hand-maintained `supported.notes.json`. A protocol shows as **verified** only once its adapter is published; others
show their real status (`awaiting_review`, `quarantined`, `disabled`).

| Protocol | Adapter id | Status | Categories | Position types | Leg roles | Rewards | Notable limitations | Programs |
| - | - | - | - | - | - | - | - | - |
| Hylo | `hylo` | verified | Vaults | `vault` | `supplied` | sHYUSD: earn-pool yield accrues in its rate. xSOL and hyUSD: none. | xSOL, hyUSD and sHYUSD held in the wallet only. xSOL is valued as max(0, SOL per xSOL × SOL/USD − hyUSD liability per xSOL), from Hylo's on-chain SOL backing; it shows exactly \$0 in a depeg (collateral ratio below 1); hyUSD has no unlimited 1:1 redemption: it is priced from a qualified market when one exists, otherwise assumed at 1 USDC and shown as indicative (not in the total); sHYUSD is valued as the earn pool's hyUSD per sHYUSD × the hyUSD price; the 0.1 % withdrawal fee is shown for reference only; Hylo's SOL backing cache is refreshed per epoch: more than 1 epoch old is flagged, 3 or more marks xSOL stale. hyloSOL itself is covered as a liquid staking token | [`HYEX…G4hn`](https://explorer.solana.com/address/HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn) [`HysT…DSQQ`](https://explorer.solana.com/address/HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ) |
| Jito Restaking | `jito_vaults` | verified | Liquid staking | `liquid_staking` | `staked` | Restaking rewards accrue in the VRT rate and in the underlying LST's rate (no separate reward leg). | Jito restaking vault tokens (VRTs such as kySOL, kyJTO, ezSOL) held in the wallet only; valued at the vault's deposited tokens per VRT × the supported token's price (for JitoSOL and other LSTs, their redemption rate × SOL/USD); All 35 Jito vaults are recognised from a committed list; a vault launched after the list was built is not shown until it is regenerated and approved; VRT queued for withdrawal (cool-down tickets) is not shown; it has left the wallet and is never double counted; The net amount after withdrawal and program fees is shown for reference only; the value uses the gross rate | [`Vau1…m9g8`](https://explorer.solana.com/address/Vau1t6sLNxnzB7ZDsef8TLbPLfyZMYXH8WTNqUdm9g8) |
| Jupiter Governance | `jup_staking` | verified | | `governance_staking` | `staked` | Active Staking Rewards are claimed through a separate distributor and are not shown yet. | One position per JUP locked-voter escrow; legs are split by status: active (max-locked), unstaking (cooling down) and inactive (withdrawable); Partial unstakes are shown by status; if they cannot be read, their total appears as one unstaking leg with a warning; Voting power is not computed; governance staking is outside the launch categories | [`voTp…mVSj`](https://explorer.solana.com/address/voTpe3tHQ7AjQHMapgSue2HJFAh2cGsdokqN3XqmVSj) |
| Jupiter Perps | `jupiter_jlp` | verified | Vaults | `vault`, `lending_borrow`, `lending_supply`, `unclassified` | `share`, `collateral`, `borrowed` | None: JLP fees accrue into the pool's AUM. | JLP is valued as the pool's AUM formula with our own component prices ÷ JLP supply; if any component (e.g. JupUSD) has no price, JLP has no value (never zero); The pool's stored AUM is shown for reference only (D-10); Perps borrow positions (borrowing against JLP) are decoded: JLP collateral plus the borrowed token with interest as of the custody's last rate update; a state that cannot be decoded is shown as unclassified (total null) | |
| Jupiter Lend | `jupiter_lend_borrow` | verified | Lending | `lending_borrow`, `lending_supply`, `unclassified` | `supplied`, `borrowed` | None (vault interest is in the exchange prices). | One position per vault position NFT held in the wallet; amounts as of the Liquidity reserve's last update (never projected, D-15), vault prices caught up with the program's own formula (verified against simulated get\_exchange\_prices); Owed debt is debt minus the position's dust debt (SDK and Fluid semantics); Smart (DEX) vaults are decoded (D-23): smart collateral or smart debt becomes two legs on the DEX's underlying tokens, pro rata of the DEX real reserves; unknown vault types are markers; health factor and liquidation price are not computed; At most 4 new NFT lookups per scan (cached 30 days); more NFTs resolve on the next scans | [`jupr…Bdzi`](https://explorer.solana.com/address/jupr81YtYssSyPt8jbnGuiWon5f6x9TcDEFxYe3Bdzi) [`jupo…6Ba3`](https://explorer.solana.com/address/jupo974WCqAUMD3RtpayTap1me7StQCWtEkBbDb6Ba3) [`jupG…Tqch`](https://explorer.solana.com/address/jupGzLGoLzW1xac45pxMa6fMBtDSyQu4DxLk9F7Tqch) [`jupZ…T9Vd`](https://explorer.solana.com/address/jupZ4m2GqUCJ5iueMfzQf8khFfH31d4XAQt3RzCT9Vd) |
| Jupiter Lend | `jupiter_lend_earn` | verified | Lending | `lending_supply` | `supplied` | Earn rewards compound into the jlToken exchange price (no separate reward leg). | jlTokens are receipts: the position shows the underlying token, valued as of the Liquidity reserve's last update (never projected, D-15); an old reserve sets interest\_stale; All three Jupiter Lend markets (main, ethena, galaxy); jlTokens held in the wallet only (a jlToken inside another protocol is not this wallet's Earn position); Rewards accrual uses the program's own rate (verified against simulated update\_rate on every Lending account) | [`jup3…ndc9`](https://explorer.solana.com/address/jup3YeL8QhtSx1e253b2FDvsMNC87fDrgQZivbrndc9) [`jup9…3PfQ`](https://explorer.solana.com/address/jup97Zx1NixM8UJMQFw8TtKzqTiRT3ETAJR7cVx3PfQ) [`jupG…jdQU`](https://explorer.solana.com/address/jupG2HgSoMonThDnmSc9kYjqkmD2ka54T2iZdNyjdQU) [`jupe…3wZC`](https://explorer.solana.com/address/jupeiUmn818Jg1ekPURTpr4mFo29p46vygyykFJ3wZC) [`jup6…BvNS`](https://explorer.solana.com/address/jup6QF1sNDGpkkcu6F4qaFHcRBmnSS1VgyB4uFbBvNS) [`jupG…1qH9`](https://explorer.solana.com/address/jupGn4jL7x9rxLh6CddPcckD3Sn3imXznJWJaT61qH9) [`jup7…UKar`](https://explorer.solana.com/address/jup7TthsMgcR9Y3L277b8Eo9uboVSmu1utkuXHNUKar) [`jupG…yQ7n`](https://explorer.solana.com/address/jupGBUJYXuzz2hVSoqjrxoEwJUB6uuHJsQqkzmYyQ7n) [`jupG…Le3Q`](https://explorer.solana.com/address/jupGeFNt34vdhJH2wjbJs2Dx9UXjYtDZFFmgoPsLe3Q) |
| Jupiter Perps | `jupiter_perps` | verified | Perpetuals | `perpetual` | `margin`, `unrealized_pnl`, `funding` | None. | Value is equity (margin ± PnL − funding); notional size is a detail, never the value; Pending position requests are not decoded yet; Perps borrow positions (BorrowPosition) are reported by the Jupiter JLP adapter (`jupiter_jlp`, D-21) | [`PERP…qQJu`](https://explorer.solana.com/address/PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu) |
| Kamino | `kamino_lend` | verified | Lending, Rewards | `lending_supply`, `lending_borrow` | `supplied`, `borrowed`, `reward` | Kamino Farms rewards delegated to the obligation: claimable legs, plus separate estimated legs that never count in totals (D-16). | Interest is valued as of each reserve's last refresh, never projected (D-15); an old reserve sets interest\_stale; One position per obligation, across every market | [`KLen…gmjD`](https://explorer.solana.com/address/KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD) |
| Kamino | `kamino_vaults` | verified | Vaults, Rewards | `vault`, `unclassified` | `underlying`, `reward` | Vault-farm rewards: claimable legs, plus separate estimated legs that never count in totals (D-16). | Value is NAV (shares × net assets per share, D-17); the after-penalty redeemable amount is not computed yet; Shares in the wallet and shares staked in the vault farm are combined into one position; Kamino Liquidity (kliquidity) and other farm stakes are shown as unclassified and excluded from totals; Interest is valued as of each reserve's last refresh, never projected (D-15) | [`Kvau…FLjd`](https://explorer.solana.com/address/KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd) [`Farm…91Hr`](https://explorer.solana.com/address/FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr) |
| Marinade | `marinade` | verified | Liquid staking | `liquid_staking` | `staked` | Accrue in the mSOL redemption rate (no separate reward leg). | mSOL held in the wallet only; delayed-unstake tickets are not decoded yet; Valued as the Marinade redemption rate × SOL/USD; the market price is shown for reference only (D-08) | [`MarB…q7aD`](https://explorer.solana.com/address/MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD) |
| Meteora DAMM v1 | `meteora_damm_v1` | verified | Fungible LP tokens | `liquidity_fungible`, `yield_reward` | `liquidity`, `fee` | Lock-escrow trading fees are claimable fee legs on a separate escrow position; wallet LP has no separate fee legs (fees accrue in the pool share). | Locked LP (lock escrows, the pool's total\_locked\_lp) is never counted as your principal; escrow positions carry fee legs only; Escrows are read only for pools whose LP your wallet also holds; stable-curve escrow fees are not computed yet (escrow\_fee\_unavailable); LP staked in Meteora farms is not included; at most 4 new LP mints are resolved per scan (the rest on later scans) | [`Eo7W…5UaB`](https://explorer.solana.com/address/Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB) |
| Meteora DAMM v2 | `meteora_damm_v2` | verified | Concentrated liquidity | `liquidity_concentrated` | `liquidity`, `fee`, `reward` | Unclaimed fees, plus pool rewards as a claimable leg and an estimated projection leg; counted only with include\_rewards\_in\_total=true (estimated legs never). | Permanently locked liquidity is never principal: its amounts are shown in details only, while its fees and rewards are counted; Time-vested liquidity is owned and counted, with the warning vesting\_locked; Position NFTs held in the wallet only; at most 100 per scan | [`cpam…1sGG`](https://explorer.solana.com/address/cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG) |
| Meteora DLMM | `meteora_dlmm` | verified | Bin liquidity (DLMM), Rewards | `liquidity_bins` | `liquidity`, `fee`, `reward` | Uncollected fees, plus pool rewards as a claimable leg and an estimated projection leg; counted only with include\_rewards\_in\_total=true (estimated legs never). | DLMM limit orders are detected and shown as unsupported positions, never as zero (D-13); Fees owned by a separate fee owner are shown but not counted; Very large position sets (over 300 bin arrays) are capped per scan and reported as partial coverage | [`LBUZ…Pwxo`](https://explorer.solana.com/address/LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo) |
| Meteora Vaults | `meteora_vaults` | verified | Vaults | `vault` | `supplied` | Lending yield accrues in the vault's LP rate (no separate reward leg). | Vault LP held in the wallet only; valued at the vault's withdrawable (unlocked) amount per LP × the token price, with recent profit released over Meteora's drip at chain time; Only vaults of major tokens and verified liquid staking tokens are recognised (a committed allowlist of about 60 vaults); LP of other vaults is not shown; LP held inside Meteora DAMM v1 pools belongs to the pool, not your wallet, and is not shown here; Interest earned in lending strategies is booked by Meteora's crank; a vault not reported for more than 7 days is flagged as stale | [`24Uq…pyTi`](https://explorer.solana.com/address/24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi) |
| Solana Stake | `native_stake` | verified | Native staking | `native_staking` | `staked` | Staking rewards are part of the stake balance (no separate reward leg). | Staker-only stake (wallet is only the stake authority) is shown but excluded from totals (D-09); Activation and deactivation amounts follow the Agave warmup/cooldown rules exactly | [`Stak…1111`](https://explorer.solana.com/address/Stake11111111111111111111111111111111111111) |
| OnRe | `onre` | verified | Vaults | `vault` | `supplied` | Accrue in the ONyc NAV (no separate reward leg). | ONyc held in the wallet only; valued at the main offer's scheduled NAV (USDC per ONyc, evaluated at chain time) × USDC; The NAV is set by the issuer and the backing is off chain, so the value is indicative: counted in known value, never in the total (D-07); A market price for ONyc, when one exists, is shown for reference only and never replaces the NAV | [`onre…Fcwe`](https://explorer.solana.com/address/onreuGhHHgVzMWSkj2oQDLDtvvGvoepBPkqyaubFcwe) |
| Project 0 | `project0_lending` | verified | Lending | `lending_supply`, `lending_borrow` | `supplied`, `borrowed` | None yet (bank emissions are not shown as reward legs). | One position per Project 0 (marginfi) account, across every group; at most 32 accounts per wallet; Interest is valued as of each bank's last update, never projected (D-15); an old bank sets interest\_stale; Kamino-backed banks are shown in the underlying token; staked-SOL banks are shown but not priced yet; Jupiter Lend banks are shown in the underlying token at the Jupiter Lend Earn rate; Drift and Solend integration banks (none today) would be shown without a value and excluded from totals | [`MFv2…VacA`](https://explorer.solana.com/address/MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA) |
| PumpSwap | `pumpswap_lp` | verified | Fungible LP tokens | `liquidity_fungible` | `liquidity` | None (fees accrue in the pool share). | PumpSwap LP tokens held in the wallet only; burned or program-held LP is never attributed to anyone; Your share is your LP divided by the pool's lp\_supply (not the LP mint supply); the quote side excludes the protocol and creator fee buckets | [`pAMM…fXEA`](https://explorer.solana.com/address/pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA) |
| Raydium AMM v4 | `raydium_amm_v4` | verified | Fungible LP tokens | `liquidity_fungible` | `liquidity` | None (fees accrue in the pool share). | LP tokens held in the wallet only; staked or locked LP tokens elsewhere are not included; Thin pools price indicatively | [`675k…1Mp8`](https://explorer.solana.com/address/675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8) |
| Raydium CLMM | `raydium_clmm` | verified | Concentrated liquidity, Rewards | `liquidity_concentrated` | `liquidity`, `fee`, `reward` | Uncollected fees and pool rewards as reward legs; counted only with include\_rewards\_in\_total=true. | A position outside its price range carries the out\_of\_range flag; Very large position sets are capped per scan and reported as partial coverage; Raydium LP-Lock fee keys are not supported | [`CAMM…rWqK`](https://explorer.solana.com/address/CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK) |
| Raydium CPMM | `raydium_cpmm` | verified | Fungible LP tokens | `liquidity_fungible` | `liquidity` | None (fees accrue in the pool share). | LP tokens held in the wallet only; staked or locked LP tokens elsewhere are not included; Thin pools price indicatively | [`CPMM…KP1C`](https://explorer.solana.com/address/CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C) [`Lock…ofwE`](https://explorer.solana.com/address/LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE) |
| Raydium Farms | `raydium_farms` | verified | Fungible LP tokens, Rewards | `liquidity_fungible` | `liquidity` | Not computed yet: positions carry the staked principal only, with the warning farm\_rewards\_not\_computed (never zero reward legs). | Only farms on the committed allowlist (staked LP worth at least \$1,000 at build, 128 farms) are scanned; long-tail farms are a known gap; Staked LP is valued with the same maths as wallet LP (Raydium CPMM / AMM v4) and never double counted: wallet LP stays a separate LP position; Legacy 88/96-byte ledgers (v3/v5) are not read | [`EhhT…jo5Q`](https://explorer.solana.com/address/EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q) [`9KEP…jP4z`](https://explorer.solana.com/address/9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z) [`Farm…rzhG`](https://explorer.solana.com/address/FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG) |
| Sanctum Infinity | `sanctum_infinity` | verified | Liquid staking | `liquid_staking` | `staked` | Accrue in the INF redemption rate (no separate reward leg). | INF held in the wallet only; valued as the pool's LST basket SOL value net of withheld yield and protocol fees, per INF, × SOL/USD (D-08); The basket's LSTs are never shown as separate legs, so INF is not double-counted against your own LST positions; The rate is as of the pool's last sync; more than 3 epochs of unreleased yield marks it stale | [`5ocn…x9kx`](https://explorer.solana.com/address/5ocnV1qiCgaQR8Jb8xWnVbApfaygJ8tNoZfgPwsgx9kx) |
| Save | `save_lending` | verified | Lending | `lending_supply`, `lending_borrow` | `supplied`, `borrowed` | None (Save liquidity-mining rewards are distributed off chain). | One position per obligation, across every Save market; a wallet may have several obligations per market; Interest is valued as of each reserve's last refresh, never projected (D-15); an old reserve sets interest\_stale; cTokens held directly in the wallet and Token-2022 wrapper reserves are not reported yet | [`So1e…CpAo`](https://explorer.solana.com/address/So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo) |
| Solstice | `solstice` | verified | Vaults | `vault` | `supplied` | eUSX: yield accrues in the eUSX rate as it vests (no separate reward leg). USX: none. | eUSX and USX held in the wallet only. eUSX is valued at (vault USX − still-vesting yield) / eUSX shares × the USX price; USX has no trustless 1:1 redemption: it is priced from a qualified market when one exists, otherwise assumed at 1 USDC and shown as indicative (not in the total); Solstice publishes no program source: account layouts were reverse-engineered, and if the vault balance and the program's counters disagree by more than 1 % the eUSX position is shown unvalued instead of guessed | [`USXy…H6bx`](https://explorer.solana.com/address/USXyiSTsPEWz55pSK7sZoUL79ntoVGQbaTDT57tH6bx) [`eUSX…tgG3`](https://explorer.solana.com/address/eUSXyKoZ6aGejYVbnp3wtWQ1E8zuokLAJPecPxxtgG3) |
| SPL Stake Pool | `spl_stake_pool` | verified | Liquid staking | `liquid_staking` | `staked` | Accrue in the redemption rate (no separate reward leg). | Only LSTs in the verified LST registry are recognised; Valued as redemption rate × SOL/USD; the market price is shown for reference only (D-08) | [`SPoo…kuHy`](https://explorer.solana.com/address/SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy) [`SP12…yvhY`](https://explorer.solana.com/address/SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY) [`SPMB…Jvbn`](https://explorer.solana.com/address/SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn) |

Every position type the API can return: `native_staking`, `liquid_staking`, `perpetual`, `lending_supply`,
`lending_borrow`, `liquidity_concentrated`, `liquidity_bins`, `liquidity_fungible`, `vault`, `yield_reward` and
`governance_staking` are all produced today; `unclassified` marks a detected position whose kind is not supported
(shown, never valued).

## Categories

| Category | Status | Verified adapters |
| - | - | - |
| Lending (`lending`) | covered | `kamino_lend`, `jupiter_lend_earn`, `jupiter_lend_borrow`, `save_lending`, `project0_lending` |
| Concentrated liquidity (`concentrated_lp`) | covered | `raydium_clmm`, `meteora_damm_v2` |
| Bin liquidity (DLMM) (`bin_lp`) | covered | `meteora_dlmm` |
| Fungible LP tokens (`fungible_lp`) | covered | `raydium_cpmm`, `raydium_amm_v4`, `pumpswap_lp`, `raydium_farms`, `meteora_damm_v1` |
| Vaults (`vault`) | covered | `kamino_vaults`, `jupiter_jlp`, `onre`, `solstice`, `hylo`, `meteora_vaults` |
| Native staking (`native_staking`) | covered | `native_stake` |
| Liquid staking (`liquid_staking`) | covered | `spl_stake_pool`, `marinade`, `sanctum_infinity`, `jito_vaults` |
| Perpetuals (`perpetual`) | covered | `jupiter_perps` |
| Rewards (`rewards`) | covered | `kamino_lend`, `raydium_clmm`, `kamino_vaults`, `meteora_dlmm`, `raydium_farms` |

## Detected but not supported

These exist on chain but are **not supported**; a wallet's positions in them do not appear, or appear as
`unclassified` with the `unsupported_position_kind` flag:

* Meteora DLMM limit orders (`unsupported_position_kind`, D-13).
* Raydium LP-Lock fee keys (03 T-P14).
* Kamino Liquidity (kliquidity) and other Kamino farm stakes (shown as `unclassified`, excluded from totals).
* Jupiter Lend vaults of an unknown type (markers, never valued); smart (DEX) vaults are supported (D-23).
* Jupiter Perps pending position requests.
* Meteora dynamic vaults outside the allowlist, and Raydium farms outside the committed allowlist.
* **Drift** (D-14): not supported.
* **Orca Whirlpools** (`orca_whirlpools`): pending licence clearance (D-11); not served until the owner records
  clearance.
* Protocols outside the D-20 groups A–I.

Jupiter Perps `BorrowPosition` (as part of `jupiter_jlp`, D-21), Project 0 / marginfi (`project0_lending`, D-20) and
Jupiter Lend smart vaults are supported today. Nothing else is scheduled yet; changes are listed in the
[changelog](https://docs.lucidblock.xyz/help/changelog.md).

## Check coverage programmatically

```bash theme={null}
curl -s -H "Authorization: Bearer $LUCIDBLOCK_TOKEN" "$BASE_URL/v1/solana/protocols"
curl -s -H "Authorization: Bearer $LUCIDBLOCK_TOKEN" "$BASE_URL/v1/solana/coverage"
```

In a wallet snapshot, `coverage.protocols[]` has one entry per supported protocol. `skipped` comes with an
`error_code`: `ADAPTER_NOT_APPROVED`, `ADAPTER_SHADOW`, `ADAPTER_QUARANTINED`, `ADAPTER_DISABLED` or a budget code
(`BUDGET_EXCEEDED`, `DEADLINE_EXCEEDED`). Only `complete` means a missing position is really absent.

> [accordion] Captured example
>
> `GET /v1/solana/protocols` → `200` (captured 2026-11-12 from local `protocols`)
>
> ```json theme={null}
> {
>   "universe": "supported_adapters_only",
>   "protocols": [
>     {
>       "id": "native_stake",
>       "name": "Solana Stake",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "Stake11111111111111111111111111111111111111"
>       ],
>       "categories": [
>         "native_staking"
>       ],
>       "capabilities": [
>         "native_staking",
>         "roles:withdraw_authority,stake_authority",
>         "activation:agave_exact",
>         "staker_only_excluded_from_totals"
>       ],
>       "artifact_hash": "sha256:b559846b5757941e404f7ba4ca0a207ad01a8854d68c50250704429e58cbe087",
>       "status_reason": null
>     },
>     {
>       "id": "spl_stake_pool",
>       "name": "SPL Stake Pool",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy",
>         "SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY",
>         "SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn"
>       ],
>       "categories": [
>         "liquid_staking"
>       ],
>       "capabilities": [
>         "liquid_staking",
>         "lst_redemption_rate",
>         "verified_lst_registry"
>       ],
>       "artifact_hash": "sha256:5373e711d5523b32ed14c4a368fa290bf64d8caa2b8e14fce3e6c31f91e2e4f0",
>       "status_reason": null
>     },
>     {
>       "id": "jupiter_perps",
>       "name": "Jupiter Perps",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu"
>       ],
>       "categories": [
>         "perpetual"
>       ],
>       "capabilities": [
>         "perpetual",
>         "gap:position_request",
>         "gap:borrow_position"
>       ],
>       "artifact_hash": "sha256:88045cae7f1712b4385bd1f2dce5f0747e4e7f0ceb59984b2ea820a835615818",
>       "status_reason": null
>     },
>     {
>       "id": "kamino_lend",
>       "name": "Kamino",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"
>       ],
>       "categories": [
>         "lending",
>         "rewards"
>       ],
>       "capabilities": [
>         "lending",
>         "rewards",
>         "gap:withdraw_ticket",
>         "gap:wallet_ctokens"
>       ],
>       "artifact_hash": "sha256:a2b7a81b8b2d5fc92bcac27efd4328c5d0e6ec410ad7cf0601d43ee69789f64c",
>       "status_reason": null
>     },
>     {
>       "id": "raydium_cpmm",
>       "name": "Raydium CPMM",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C",
>         "LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"
>       ],
>       "categories": [
>         "fungible_lp"
>       ],
>       "capabilities": [
>         "lp",
>         "fungible_lp"
>       ],
>       "artifact_hash": "sha256:6dbc379dc6d5f8b8a5cb006d4ca5fa489b9b807f6108bcafe5cef814d9c4ea65",
>       "status_reason": null
>     },
>     {
>       "id": "raydium_amm_v4",
>       "name": "Raydium AMM v4",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"
>       ],
>       "categories": [
>         "fungible_lp"
>       ],
>       "capabilities": [
>         "lp",
>         "fungible_lp"
>       ],
>       "artifact_hash": "sha256:9eac8382816cded23701d1bc74c92f2885c3ee82dcb8e9c26022f0738dd4e9a7",
>       "status_reason": null
>     },
>     {
>       "id": "raydium_clmm",
>       "name": "Raydium CLMM",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"
>       ],
>       "categories": [
>         "concentrated_lp",
>         "rewards"
>       ],
>       "capabilities": [
>         "lp",
>         "concentrated_lp",
>         "fees",
>         "rewards",
>         "gap:limit_orders"
>       ],
>       "artifact_hash": "sha256:a0bfff30aad8b1ce64ce06bcacb00ea200312032bdb7cb1a46cc48d3265395f7",
>       "status_reason": null
>     }
>   ],
>   "count": 7
> }
> ```

> [accordion] Captured example
>
> `GET /v1/solana/coverage` → `200` (captured 2026-11-12 from local `coverage`)
>
> ```json theme={null}
> {
>   "universe": "supported_adapters_only",
>   "release_status": "alpha_partial",
>   "full_scope_release_ready": false,
>   "adapters": [
>     {
>       "id": "native_stake",
>       "name": "Solana Stake",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "Stake11111111111111111111111111111111111111"
>       ],
>       "categories": [
>         "native_staking"
>       ],
>       "capabilities": [
>         "native_staking",
>         "roles:withdraw_authority,stake_authority",
>         "activation:agave_exact",
>         "staker_only_excluded_from_totals"
>       ],
>       "artifact_hash": "sha256:b559846b5757941e404f7ba4ca0a207ad01a8854d68c50250704429e58cbe087",
>       "status_reason": null
>     },
>     {
>       "id": "spl_stake_pool",
>       "name": "SPL Stake Pool",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy",
>         "SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY",
>         "SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn"
>       ],
>       "categories": [
>         "liquid_staking"
>       ],
>       "capabilities": [
>         "liquid_staking",
>         "lst_redemption_rate",
>         "verified_lst_registry"
>       ],
>       "artifact_hash": "sha256:5373e711d5523b32ed14c4a368fa290bf64d8caa2b8e14fce3e6c31f91e2e4f0",
>       "status_reason": null
>     },
>     {
>       "id": "jupiter_perps",
>       "name": "Jupiter Perps",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu"
>       ],
>       "categories": [
>         "perpetual"
>       ],
>       "capabilities": [
>         "perpetual",
>         "gap:position_request",
>         "gap:borrow_position"
>       ],
>       "artifact_hash": "sha256:88045cae7f1712b4385bd1f2dce5f0747e4e7f0ceb59984b2ea820a835615818",
>       "status_reason": null
>     },
>     {
>       "id": "kamino_lend",
>       "name": "Kamino",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"
>       ],
>       "categories": [
>         "lending",
>         "rewards"
>       ],
>       "capabilities": [
>         "lending",
>         "rewards",
>         "gap:withdraw_ticket",
>         "gap:wallet_ctokens"
>       ],
>       "artifact_hash": "sha256:a2b7a81b8b2d5fc92bcac27efd4328c5d0e6ec410ad7cf0601d43ee69789f64c",
>       "status_reason": null
>     },
>     {
>       "id": "raydium_cpmm",
>       "name": "Raydium CPMM",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C",
>         "LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"
>       ],
>       "categories": [
>         "fungible_lp"
>       ],
>       "capabilities": [
>         "lp",
>         "fungible_lp"
>       ],
>       "artifact_hash": "sha256:6dbc379dc6d5f8b8a5cb006d4ca5fa489b9b807f6108bcafe5cef814d9c4ea65",
>       "status_reason": null
>     },
>     {
>       "id": "raydium_amm_v4",
>       "name": "Raydium AMM v4",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"
>       ],
>       "categories": [
>         "fungible_lp"
>       ],
>       "capabilities": [
>         "lp",
>         "fungible_lp"
>       ],
>       "artifact_hash": "sha256:9eac8382816cded23701d1bc74c92f2885c3ee82dcb8e9c26022f0738dd4e9a7",
>       "status_reason": null
>     },
>     {
>       "id": "raydium_clmm",
>       "name": "Raydium CLMM",
>       "status": "verified",
>       "adapter_version": "1.0.0",
>       "program_ids": [
>         "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"
>       ],
>       "categories": [
>         "concentrated_lp",
>         "rewards"
>       ],
>       "capabilities": [
>         "lp",
>         "concentrated_lp",
>         "fees",
>         "rewards",
>         "gap:limit_orders"
>       ],
>       "artifact_hash": "sha256:a0bfff30aad8b1ce64ce06bcacb00ea200312032bdb7cb1a46cc48d3265395f7",
>       "status_reason": null
>     }
>   ],
>   "categories": [
>     {
>       "category": "lending",
>       "status": "covered",
>       "verified_adapters": [
>         "kamino_lend"
>       ]
>     },
>     {
>       "category": "concentrated_lp",
>       "status": "covered",
>       "verified_adapters": [
>         "raydium_clmm"
>       ]
>     },
>     {
>       "category": "bin_lp",
>       "status": "not_covered",
>       "verified_adapters": []
>     },
>     {
>       "category": "fungible_lp",
>       "status": "covered",
>       "verified_adapters": [
>         "raydium_cpmm",
>         "raydium_amm_v4"
>       ]
>     },
>     {
>       "category": "vault",
>       "status": "not_covered",
>       "verified_adapters": []
>     },
>     {
>       "category": "native_staking",
>       "status": "covered",
>       "verified_adapters": [
>         "native_stake"
>       ]
>     },
>     {
>       "category": "liquid_staking",
>       "status": "covered",
>       "verified_adapters": [
>         "spl_stake_pool"
>       ]
>     },
>     {
>       "category": "perpetual",
>       "status": "covered",
>       "verified_adapters": [
>         "jupiter_perps"
>       ]
>     },
>     {
>       "category": "rewards",
>       "status": "covered",
>       "verified_adapters": [
>         "kamino_lend",
>         "raydium_clmm"
>       ]
>     }
>   ],
>   "discovery": {
>     "wallet_transaction_scan": "not_enabled",
>     "deployment_monitoring": "not_enabled"
>   },
>   "price_sources": [],
>   "note": "Coverage is limited to verified adapters; absence of a position is trustworthy only for covered protocols."
> }
> ```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.