grimoire-morpho-blue▌
franalgaba/grimoire · updated Apr 8, 2026
Query Morpho Blue deployment metadata and vault snapshots via the Grimoire CLI.
- ›Three command categories: info (general metadata), addresses (contract addresses by chain), and vaults (filterable vault data with APY and TVL)
- ›Supports --format spell output to emit snapshot blocks with provenance fields ( snapshot_at , snapshot_source ) and APY data for spell parameters
- ›APY values are decimal rates (e.g., 0.0408 for 4.08%); include both decimal and percent display when reporting
- ›Ship
Grimoire Morpho Blue Skill
Use this skill to query Morpho Blue deployment metadata and vault snapshots for spell params.
Preferred invocations:
grimoire venue morpho-blue ...npx -y @grimoirelabs/cli venue morpho-blue ...(no-install)bun run packages/cli/src/index.ts venue morpho-blue ...(repo-local)grimoire-morpho-blue ...(direct binary from@grimoirelabs/venues)
Recommended preflight:
grimoire venue doctor --adapter morpho-blue --chain 8453 --rpc-url <rpc> --json
Use --format spell to emit a params: snapshot block.
The snapshot includes provenance fields (snapshot_at, snapshot_source) and APY data.
APY semantics:
apy/net_apyare decimal rates (for example0.0408=4.08%).- When reporting, include both decimal and percent display when possible.
Commands
grimoire venue morpho-blue info— adapter metadatagrimoire venue morpho-blue addresses [--chain <id>]— contract addresses per chaingrimoire venue morpho-blue vaults [--chain <id>] [--asset <symbol>] [--min-tvl <usd>] [--min-apy <decimal>] [--min-net-apy <decimal>] [--sort <netApy|apy|tvl|totalAssetsUsd|name>] [--order <asc|desc>] [--limit <n>]— list and filter vaultsgrimoire venue morpho-blue vaults-snapshot [--chain <id>] [--asset <symbol>] [--min-tvl <usd>] [--min-apy <decimal>] [--min-net-apy <decimal>] [--sort <netApy|apy|tvl|totalAssetsUsd|name>] [--order <asc|desc>] [--limit <n>]— generate spellparams:block for vaults (agent-only)
Examples
grimoire venue morpho-blue info --format table
grimoire venue morpho-blue addresses --chain 1
grimoire venue morpho-blue addresses --chain 8453
grimoire venue morpho-blue vaults --chain 8453 --asset USDC --min-tvl 5000000 --format table
grimoire venue morpho-blue vaults --chain 8453 --asset USDC --min-tvl 5000000 --format spell
grimoire venue morpho-blue vaults-snapshot --chain 8453 --asset USDC --min-tvl 5000000
Use vaults-snapshot to emit a params: block for spell inputs. This is an agent-only command (output suppressed in interactive mode).
Example provenance output fields to preserve:
snapshot_atsnapshot_sourceunits(for examplenet_apy=decimal,net_apy_pct=percent,tvl_usd=usd)
Metric Surface (Spell Comparisons)
Morpho exposes the apy metric surface and supports selector-based market targeting:
morpho_apy_default = apy(morpho, USDC)
morpho_apy_market = apy(morpho, USDC, "weth-usdc-86")
morpho_apy_market_id = apy(morpho, USDC, "0x...")
morpho_apy_generic = metric("apy", morpho, USDC, "wbtc-usdc-86")
vault_apy = metric("vault_apy", morpho, USDC, "vault=0xVaultAddress")
vault_net_apy = metric("vault_net_apy", morpho, USDC, "vault=0xVaultAddress")
Selector behavior:
- market no selector (
apy): resolves byasseton the active chain and picks the highest-TVL match - config market selector: use known market ids from adapter config (for example
weth-usdc-86) - onchain market id selector: use raw market id (
0x...) - vault selectors (
vault_apy/vault_net_apy):vault=<address|name|symbol>or bare vault address/name/symbol vault_apy/vault_net_apyrequire explicit selector (no implicit fallback)
When multiple vaults/markets exist for one asset, pass an explicit selector for deterministic comparisons.
Spell Constraints
Morpho Blue actions do not support runtime constraints (max_slippage, etc.). Value-moving actions require an explicit market_id.
morpho_blue.lend(USDC, params.amount, "cbbtc-usdc-86")
morpho_blue.withdraw(USDC, params.amount, "cbbtc-usdc-86")
morpho_blue.borrow(USDC, params.amount) with (
market_id="cbbtc-usdc-86",
)
morpho_blue.supply_collateral(cbBTC, params.amount, "cbbtc-usdc-86")
morpho_blue.withdraw_collateral(cbBTC, params.amount, "cbbtc-usdc-86")
Use with (market_id=...) when positional args are not convenient:
morpho_blue.lend(USDC, params.amount) with (
market_id="0x1234...abcd",
)
Use grimoire venue morpho-blue vaults to discover available market IDs.
Action Selection Guide
Choose actions by strategy intent:
- Supply-only strategy (no borrowing planned): prefer
vault_deposit/vault_withdraw. - Borrowing strategy (or future borrow/repay/collateral management): use market actions with explicit
market_id.
Hard rules:
vault_deposit/vault_withdrawrequire explicit vault address and do not usemarket_id.lend,withdraw,borrow,repay,supply_collateral,withdraw_collateralrequire explicitmarket_id.- If vault address is missing for a vault action, do not guess: list candidate vaults and require user selection before authoring/executing.
Action Semantics
lend(asset, amount, market_id): lend the market loan asset (lender side).withdraw(asset, amount, market_id): withdraw previously lent loan asset.supply_collateral(asset, amount, market_id): post collateral for borrowing (borrower side).withdraw_collateral(asset, amount, market_id): remove posted collateral.borrow(asset, amount, collateral?, market_id): borrow the market loan asset.repay(asset, amount, market_id): repay borrowed loan asset.vault_deposit(asset, amount, vault_address): deposit into MetaMorpho vault.vault_withdraw(asset, amount, vault_address): withdraw from MetaMorpho vault.
lend and supply_collateral are not interchangeable:
lendtargets lender yield on loan asset.supply_collateralis collateral management for borrowing capacity.
APY expectations:
lendaccrues market supply APY (plus possible incentives).supply_collateraldoes not earn market lender APY; it is risk buffer for borrow.- Collateral token may have its own native yield behavior (for example wstETH), separate from Morpho supply APY.
Workflow Patterns
Supply-only via vault:
morpho_blue.vault_deposit(USDC, params.amount, "0xVaultAddress")
If vault is not provided, run discovery first and ask user to pick:
grimoire venue morpho-blue vaults --chain <id> --asset <symbol> --sort netApy --order desc --limit 5 --format table
Then use the selected vault address in vault_deposit / vault_withdraw.
Borrow workflow (market):
morpho_blue.supply_collateral(WETH, params.collateral_amount, "weth-usdc-86")
morpho_blue.borrow(USDC, params.borrow_amount, WETH, "weth-usdc-86")
Unwind borrow workflow:
morpho_blue.repay(USDC, params.repay_amount, "weth-usdc-86")
morpho_blue.withdraw_collateral(WETH, params.collateral_out, "weth-usdc-86")
Lend-only via market (when explicit market control is desired):
morpho_blue.lend(USDC, params.amount, "cbbtc-usdc-86")
Default Markets
The adapter ships with pre-configured markets for Ethereum (chain 1) and Base (chain 8453):
Ethereum (chain 1)
| Market | Loan | Collateral | LLTV |
|---|---|---|---|
| cbbtc-usdc-1 | USDC | cbBTC | 86% |
| wbtc-usdc-1 | USDC | WBTC | 86% |
| wsteth-weth-1 | WETH | wstETH | 96.5% |
Base (chain 8453)
| Market | Loan | Collateral | LLTV |
|---|---|---|---|
| cbbtc-usdc-86 | USDC | cbBTC | 86% |
| weth-usdc-86 | USDC | WETH | 86% |
Notes
- Outputs JSON/table;
vaultsalso supports--format spell. - Uses the SDK's chain address registry.
- Prefer
--format jsonin automation and--format tablefor quick triage.