Install
Terminal · npx$
npx skills add https://github.com/franalgaba/grimoire --skill grimoire-morpho-blueWorks with Paperclip
How Grimoire Morpho Blue fits into a Paperclip company.
Grimoire Morpho Blue drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.
S
SaaS FactoryPaired
Pre-configured AI company — 18 agents, 18 skills, one-time purchase.
$27$59
Explore packSource file
SKILL.md200 linesExpandCollapse
---name: grimoire-morpho-bluedescription: Fetches Morpho Blue public deployment metadata using the Grimoire venue CLI. Use when you need contract addresses or adapter info.--- # 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_apy` are decimal rates (for example `0.0408` = `4.08%`).- When reporting, include both decimal and percent display when possible. ## Commands - `grimoire venue morpho-blue info` — adapter metadata- `grimoire venue morpho-blue addresses [--chain <id>]` — contract addresses per chain- `grimoire 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 vaults- `grimoire 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 spell `params:` block for vaults (agent-only) ## Examples ```bashgrimoire venue morpho-blue info --format tablegrimoire venue morpho-blue addresses --chain 1grimoire venue morpho-blue addresses --chain 8453grimoire venue morpho-blue vaults --chain 8453 --asset USDC --min-tvl 5000000 --format tablegrimoire venue morpho-blue vaults --chain 8453 --asset USDC --min-tvl 5000000 --format spellgrimoire 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_at`- `snapshot_source`- `units` (for example `net_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: ```spellmorpho_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")``` Use `apy(morpho, asset[, selector])` for Morpho Blue market APY comparisons.Use `metric("vault_apy", morpho, asset, selector)` or `metric("vault_net_apy", morpho, asset, selector)` for MetaMorpho vault comparisons. Selector behavior: - market no selector (`apy`): resolves by `asset` on 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_apy` require 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`. ```spellmorpho_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: ```spellmorpho_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_withdraw` require explicit vault address and do not use `market_id`.- `lend`, `withdraw`, `borrow`, `repay`, `supply_collateral`, `withdraw_collateral` require explicit `market_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: - `lend` targets lender yield on loan asset.- `supply_collateral` is collateral management for borrowing capacity. APY expectations: - `lend` accrues market supply APY (plus possible incentives).- `supply_collateral` does 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: ```spellmorpho_blue.vault_deposit(USDC, params.amount, "0xVaultAddress")``` If vault is not provided, run discovery first and ask user to pick: ```bashgrimoire 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): ```spellmorpho_blue.supply_collateral(WETH, params.collateral_amount, "weth-usdc-86")morpho_blue.borrow(USDC, params.borrow_amount, WETH, "weth-usdc-86")``` Unwind borrow workflow: ```spellmorpho_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): ```spellmorpho_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; `vaults` also supports `--format spell`.- Uses the SDK's chain address registry.- Prefer `--format json` in automation and `--format table` for quick triage.