@continuumdao/ctm-mpc-defi 0.2.42 → 0.2.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/catalog.cjs +352 -36
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +1542 -236
- package/dist/agent/catalog.js +343 -37
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/aave-v4/SKILL.md +9 -1
- package/dist/agent/skills/aerodrome/SKILL.md +1 -1
- package/dist/agent/skills/arcus/SKILL.md +1 -1
- package/dist/agent/skills/euler-v2/SKILL.md +9 -0
- package/dist/agent/skills/morpho/SKILL.md +39 -6
- package/dist/agent/skills/yield-compare/SKILL.md +6 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/merklDistributor-CdqtZC9N.d.ts +65 -0
- package/dist/multisign-Dr0j9fHm.d.ts +489 -0
- package/dist/protocols/evm/aave-v4/index.cjs +207 -2
- package/dist/protocols/evm/aave-v4/index.cjs.map +1 -1
- package/dist/protocols/evm/aave-v4/index.d.ts +12 -467
- package/dist/protocols/evm/aave-v4/index.js +192 -3
- package/dist/protocols/evm/aave-v4/index.js.map +1 -1
- package/dist/protocols/evm/aerodrome/index.cjs +67 -48
- package/dist/protocols/evm/aerodrome/index.cjs.map +1 -1
- package/dist/protocols/evm/aerodrome/index.d.ts +8 -8
- package/dist/protocols/evm/aerodrome/index.js +82 -63
- package/dist/protocols/evm/aerodrome/index.js.map +1 -1
- package/dist/protocols/evm/euler-v2/index.cjs +209 -1
- package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
- package/dist/protocols/evm/euler-v2/index.d.ts +9 -1
- package/dist/protocols/evm/euler-v2/index.js +208 -2
- package/dist/protocols/evm/euler-v2/index.js.map +1 -1
- package/dist/protocols/evm/morpho/index.cjs +610 -56
- package/dist/protocols/evm/morpho/index.cjs.map +1 -1
- package/dist/protocols/evm/morpho/index.d.ts +131 -2
- package/dist/protocols/evm/morpho/index.js +573 -58
- package/dist/protocols/evm/morpho/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -38,6 +38,8 @@ Do **not** web-search Aave APRs, APYs, or reserves. Load the protocol and use th
|
|
|
38
38
|
| Withdraw supplied balance | `ctm_aave_v4_build_withdraw_multisign` |
|
|
39
39
|
| Borrow against collateral | `ctm_aave_v4_build_borrow_multisign` |
|
|
40
40
|
| Repay debt | `ctm_aave_v4_build_repay_multisign` |
|
|
41
|
+
| List wallet-wide Merkl claimables | `ctm_aave_v4_fetch_merkl_rewards` |
|
|
42
|
+
| Claim Merkl rewards | `ctm_aave_v4_build_merkl_claim_multisign` |
|
|
41
43
|
|
|
42
44
|
## Common write inputs
|
|
43
45
|
|
|
@@ -103,6 +105,12 @@ Example: “How do Aave lending APRs compare to Compound on Ethereum?”
|
|
|
103
105
|
2. **Borrow debt asset:** `ctm_aave_v4_build_borrow_multisign` with `underlying` = debt token (USDC), `amountHuman`, optional `collateralUnderlying` = collateral address.
|
|
104
106
|
3. Explain: health factor must stay above liquidation thresholds; server may refuse or ask for risk acknowledgment.
|
|
105
107
|
|
|
108
|
+
### Claim Merkl rewards
|
|
109
|
+
|
|
110
|
+
1. Activate `defi:aave-v4:rewards` (or alias `aave:rewards`) after `load_defi_protocol aave-v4`.
|
|
111
|
+
2. `ctm_aave_v4_fetch_merkl_rewards({ keyGenId, chainId })`.
|
|
112
|
+
3. If `firstRootClaimableCount` > 0: `ctm_aave_v4_build_merkl_claim_multisign({ keyGenId, chainId })`. Repeat when `additionalRoots` > 0.
|
|
113
|
+
|
|
106
114
|
### Repay and withdraw
|
|
107
115
|
|
|
108
116
|
1. **Repay:** reduce debt with repay tool (`underlying` = debt token).
|
|
@@ -154,4 +162,4 @@ After stETH is supplied:
|
|
|
154
162
|
|
|
155
163
|
- Native supply uses wrapped native from `get_defi_protocol_supported_tokens` (`nativeWrapped`).
|
|
156
164
|
- Token filter: `api_underlyings` — only API-listed underlyings are valid per chain.
|
|
157
|
-
- Merkl
|
|
165
|
+
- Wallet-wide Merkl: `ctm_aave_v4_fetch_merkl_rewards` then `ctm_aave_v4_build_merkl_claim_multisign({ keyGenId, chainId })`. Not Aave-only — other venues’ campaigns on the same distributor can appear. Server fetches proofs; do not invent `claimData`. Call again if `additionalRoots` > 0. rEUL is omitted (Euler unlock). Advanced Aave position actions besides this claim stay in the node app UI.
|
|
@@ -86,7 +86,7 @@ Skip emissions when `claimEmissions` is `null` (no gauge). Slipstream unstaked f
|
|
|
86
86
|
|
|
87
87
|
Loaded from official GitHub (`velodrome-finance/sugar` `deployments/base.env` and `aerodrome-finance/docs` security.mdx) with baked fallbacks. Do not invent addresses.
|
|
88
88
|
|
|
89
|
-
Coinbase B20 stocks (AAPLc, NVDAc, METAc, GOOGLc, SPCXc, …) trade on **Slipstream 3** (`clFactory3`) vs USDC. New official names are picked up from the [Base tokenized-stocks docs](https://docs.base.org/base-chain/asset-issuance/tokenized-stocks-on-base) and from Sugar tokens whose address uses the B20 ASSET prefix `0xb200…`. The docs fetch is optional: if that page is gone or unusable, discovery continues from the seed list + Sugar. `issued` is live `totalSupply() > 0` — do not hard-code unissued tickers. Quotes use factory `getPool` discovery + MixedRouteQuoterV3 (path bitmasks). Sugar `forSwaps` alone misses these pools. Native ETH → stock is typically WETH → USDC → stock.
|
|
89
|
+
Coinbase B20 stocks (AAPLc, NVDAc, METAc, GOOGLc, SPCXc, …) trade on **Slipstream 3** (`clFactory3`) vs USDC. Stock-backed **loans** (lend/borrow USDC against B20 collateral) are Morpho — `load_defi_protocol morpho` and `ctm_morpho_fetch_stock_markets`, not Aerodrome LP. New official names are picked up from the [Base tokenized-stocks docs](https://docs.base.org/base-chain/asset-issuance/tokenized-stocks-on-base) and from Sugar tokens whose address uses the B20 ASSET prefix `0xb200…`. The docs fetch is optional: if that page is gone or unusable, discovery continues from the seed list + Sugar. `issued` is live `totalSupply() > 0` — do not hard-code unissued tickers. Quotes use factory `getPool` discovery + MixedRouteQuoterV3 (path bitmasks). Sugar `forSwaps` alone misses these pools. Native ETH → stock is typically WETH → USDC → stock.
|
|
90
90
|
|
|
91
91
|
## Out of scope
|
|
92
92
|
|
|
@@ -33,7 +33,7 @@ Withdraw: `ctm_arcus_build_withdraw_multisign` with `product: perp|spot` (EIP-71
|
|
|
33
33
|
|
|
34
34
|
## USDG yield (Robinhood Earn — not Arcus)
|
|
35
35
|
|
|
36
|
-
**Arcus deposit does not earn yield** — it moves USDG into perp/spot trading collateral. For **Robinhood Earn** (~variable APY on USDG via Morpho on chain 4663), use **`load_defi_protocol morpho`** and `ctm_morpho_build_vault_deposit_multisign` with `robinhoodEarn: true` or fetch `query: "robinhood earn"`. See morpho SKILL § Robinhood Earn.
|
|
36
|
+
**Arcus deposit does not earn yield** — it moves USDG into perp/spot trading collateral. For **Robinhood Earn** (~variable APY on USDG via Morpho on chain 4663), use **`load_defi_protocol morpho`** and `ctm_morpho_build_vault_deposit_multisign` with `robinhoodEarn: true` or fetch `query: "robinhood earn"`. See morpho SKILL § Robinhood Earn. Coinbase B20 **stock-backed loans** (USDC against AAPLc on Base) are also Morpho (`ctm_morpho_fetch_stock_markets`), not Arcus trading.
|
|
37
37
|
|
|
38
38
|
## Perp leverage
|
|
39
39
|
|
|
@@ -8,3 +8,12 @@ description: Euler v2 isolated lend/borrow, vault withdraw, and collateral opera
|
|
|
8
8
|
Supported chains from `get_defi_protocol_supported_chains` (Euler V3 API, Goldsky `euler-simple-*` fallback). Underlyings from `get_defi_protocol_supported_tokens` (V3 EVK / Earn vaults). Isolated lend: `ctm_euler_v2_fetch_lend_vaults`. Earn vaults (curated APY): `ctm_euler_v2_fetch_earn_vaults`. Do **not** web-search Euler APYs. Copy `evaultAddress` onto build tools.
|
|
9
9
|
|
|
10
10
|
Tools include isolated lend/borrow, collateral deposit/withdraw, vault withdraw, borrow repay. All `ctm_euler_v2_build_*_multisign` tools return `{ requestId }` on success (shared gas/submit section appended by the server).
|
|
11
|
+
|
|
12
|
+
## Merkl rewards
|
|
13
|
+
|
|
14
|
+
Activate **`defi:euler-v2:rewards`** (alias `euler:rewards` / `euler-v2:rewards`) after `load_defi_protocol euler-v2`.
|
|
15
|
+
|
|
16
|
+
1. `ctm_euler_v2_fetch_merkl_rewards({ keyGenId, chainId })` — wallet-wide on that chain, not Euler-only.
|
|
17
|
+
2. If `firstRootClaimableCount` > 0: `ctm_euler_v2_build_merkl_claim_multisign({ keyGenId, chainId })`. Server fetches proofs. Do not invent `claimData`. Repeat when `additionalRoots` > 0.
|
|
18
|
+
|
|
19
|
+
rEUL is omitted (`skippedReulCount`). Unlock vested EUL in the node app Euler Rewards tab — there is no MCP unlock tool.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Morpho
|
|
2
2
|
|
|
3
|
-
Morpho integration: **listed earn vaults** (V1 + V2, unified), **
|
|
3
|
+
Morpho integration: **listed earn vaults** (V1 + V2, unified), **Lend** (Blue USDC supply + Midnight lend/offers + stock-backed books), **Blue borrow** (collateral/borrow/repay), **Midnight borrow**, **Coinbase B20 stock-backed loans** on Base, and **Merkl** rewards.
|
|
4
|
+
|
|
5
|
+
Tool families after `load_defi_protocol morpho` (then `activate_tool_group` / search): `defi:morpho:vault` (Earn), `defi:morpho:lend` (lend USDC / stock-backed supply), `defi:morpho:blue` (borrow against collateral), `defi:morpho:midnight` (fixed-rate borrow), `defi:morpho:rewards`. Alias `morpho:lend` → `defi:morpho:lend`.
|
|
4
6
|
|
|
5
7
|
## Data
|
|
6
8
|
|
|
@@ -23,7 +25,7 @@ Morpho integration: **listed earn vaults** (V1 + V2, unified), **Blue** variable
|
|
|
23
25
|
`underlying` accepts **symbol** (e.g. `USDC`, `WETH`) or **ERC-20 address**.
|
|
24
26
|
`query` is **case-insensitive** on vault name, symbol, address, and underlying symbol.
|
|
25
27
|
|
|
26
|
-
Use returned `vaultAddress` and `underlyingAddress` for deposit multisign. Each row includes `totalDepositsUsd`, `liquidityUsd`, `netApy` / `netApy7d` / `netApy30d` / `netApy90d`, `performanceFee`, `rewards[]` (extra incentive APR from Morpho `allRewards`), and `exposure[]` (allocated markets/strategies with % of TVL). Blue rows
|
|
28
|
+
Use returned `vaultAddress` and `underlyingAddress` for deposit multisign. Each row includes `totalDepositsUsd`, `liquidityUsd`, `netApy` / `netApy7d` / `netApy30d` / `netApy90d`, `performanceFee`, `rewards[]` (extra incentive APR from Morpho `allRewards`), and `exposure[]` (allocated markets/strategies with % of TVL). Blue rows include `netSupplyApyLabel`, `lltvLabel`, TVL, `utilizationLabel`, and `rewards[]`. Incentive APR is extra and variable — do not add `rewards[]` on top of `netApy` / `netSupplyApy` a second time.
|
|
27
29
|
|
|
28
30
|
## Arc (Circle, USDC-native gas)
|
|
29
31
|
|
|
@@ -75,6 +77,30 @@ Aliases `robinhood earn`, `robinhood`, and `steakhouse usdg` resolve to the Stea
|
|
|
75
77
|
|
|
76
78
|
Do **not** use `ctm_arcus_build_deposit_multisign` for yield — that funds perp/spot margin, not Morpho lending.
|
|
77
79
|
|
|
80
|
+
## Stock-backed loans (Base)
|
|
81
|
+
|
|
82
|
+
Activate **`defi:morpho:lend`** (alias `morpho:lend`) for stock-market reads plus Blue supply and Midnight lend. Borrow against stock stays on `defi:morpho:blue` / `defi:morpho:midnight`.
|
|
83
|
+
|
|
84
|
+
Curators deployed isolated **Blue** (variable) and **Midnight** (fixed) markets on **Base (8453)** that take **Coinbase B20 tokenized stocks** as collateral and lend **USDC**. Morpho is the credit layer — not Aerodrome swap/LP, not Hyperliquid/Arcus trading, not Robinhood Earn (USDG on 4663).
|
|
85
|
+
|
|
86
|
+
| Goal | Tool |
|
|
87
|
+
|------|------|
|
|
88
|
+
| List stock-collateral books | `ctm_morpho_fetch_stock_markets({ chainId: 8453 })` or omit chainId (defaults to Base) |
|
|
89
|
+
| One ticker | `ctm_morpho_fetch_stock_markets({ collateral: "AAPLc" })` |
|
|
90
|
+
| Variable only / fixed only | `rate: "variable"` or `rate: "fixed"` |
|
|
91
|
+
| Blue by ticker | `ctm_morpho_fetch_blue_markets({ chainId: 8453, collateral: "AAPLc" })` |
|
|
92
|
+
| Blue USDC loan books | `ctm_morpho_fetch_blue_markets({ chainId: 8453, loan: "USDC" })` |
|
|
93
|
+
| All B20 Blue | `ctm_morpho_fetch_blue_markets({ chainId: 8453, query: "stock" })` |
|
|
94
|
+
|
|
95
|
+
Tickers (`AAPLc`, `NVDAc`, `METAc`, `GOOGLc`, `SPCXc`, …) are enough — do **not** ask the user for a 0x address. Pick a `marketId` and `lltvLabel` (same stock can have 62.5% and 77% markets). Then:
|
|
96
|
+
|
|
97
|
+
- **Borrow USDC against stock:** `ctm_morpho_build_blue_collateral_deposit_multisign` then `ctm_morpho_build_blue_borrow_multisign` (or Midnight borrow).
|
|
98
|
+
- **Lend USDC (variable):** `ctm_morpho_build_blue_supply_multisign` — withdraw with `ctm_morpho_build_blue_withdraw_multisign`.
|
|
99
|
+
- **Lend/borrow fixed:** Midnight tools with `marketId` from the stock fetch `books[]`.
|
|
100
|
+
- **Positions:** `ctm_morpho_fetch_positions` (vault + Blue supply/borrow/collateral). Midnight stays on `ctm_morpho_fetch_midnight_positions`.
|
|
101
|
+
|
|
102
|
+
Compliance (notes only — no KYC in these tools): Coinbase B20 is Regulation S / **not for U.S. persons**. Chainlink equity feeds are **24/5** and hold last close off cash hours — do not treat a weekend `updatedAt` as a live mark. Liquidity is still thin.
|
|
103
|
+
|
|
78
104
|
## Morpho Midnight (fixed rate / fixed term)
|
|
79
105
|
|
|
80
106
|
Midnight is a separate order-book primitive (not Blue). Users can **take** existing offers via MidnightBundles, or **post a lend offer** that parks the loan token in Morpho Blue (variable yield) until a borrower fills it. Launch liquidity is strongest on **Base (8453)** (e.g. cbBTC/USDC maturities).
|
|
@@ -108,14 +134,19 @@ Server re-quotes at build time and fills `taker` / `maker` / `onBehalf` from the
|
|
|
108
134
|
| Tool | Action |
|
|
109
135
|
|------|--------|
|
|
110
136
|
| `ctm_morpho_fetch_earn_vaults` | List/search Morpho-listed earn vaults |
|
|
111
|
-
| `ctm_morpho_fetch_blue_markets` | List Blue markets |
|
|
137
|
+
| `ctm_morpho_fetch_blue_markets` | List Blue markets (tickers OK; `query: "stock"` = B20 collateral) |
|
|
138
|
+
| `ctm_morpho_fetch_stock_markets` | Base B20 stock-backed Blue + Midnight |
|
|
139
|
+
| `ctm_morpho_fetch_positions` | Vault + Blue supply/borrow/collateral positions |
|
|
112
140
|
| `ctm_morpho_fetch_midnight_books` | List Midnight books |
|
|
113
141
|
| `ctm_morpho_fetch_midnight_quote` | Quote Midnight fill |
|
|
114
142
|
| `ctm_morpho_fetch_midnight_positions` | Midnight positions |
|
|
115
143
|
| `ctm_morpho_fetch_midnight_offers` | Open Midnight lend offers |
|
|
144
|
+
| `ctm_morpho_fetch_merkl_rewards` | Wallet-wide Merkl claimables (`keyGenId` or `user` + `chainId`) |
|
|
116
145
|
| `ctm_morpho_build_vault_deposit_multisign` | Vault deposit (listed V1 or V2) |
|
|
117
146
|
| `ctm_morpho_build_vault_withdraw_multisign` | Vault withdraw |
|
|
118
147
|
| `ctm_morpho_build_blue_collateral_deposit_multisign` | Blue supplyCollateral |
|
|
148
|
+
| `ctm_morpho_build_blue_supply_multisign` | Blue supply (lend loan token) |
|
|
149
|
+
| `ctm_morpho_build_blue_withdraw_multisign` | Blue withdraw supplied loan token |
|
|
119
150
|
| `ctm_morpho_build_blue_borrow_multisign` | Blue borrow |
|
|
120
151
|
| `ctm_morpho_build_blue_repay_multisign` | Blue repay |
|
|
121
152
|
| `ctm_morpho_build_blue_collateral_withdraw_multisign` | Blue withdrawCollateral |
|
|
@@ -124,7 +155,7 @@ Server re-quotes at build time and fills `taker` / `maker` / `onBehalf` from the
|
|
|
124
155
|
| `ctm_morpho_build_midnight_cancel_lend_offer_multisign` | Cancel Midnight lend offer |
|
|
125
156
|
| `ctm_morpho_build_midnight_borrow_multisign` | Midnight borrow |
|
|
126
157
|
| `ctm_morpho_build_midnight_repay_multisign` | Midnight repay + withdraw |
|
|
127
|
-
| `ctm_morpho_build_merkl_claim_multisign` | Merkl claim |
|
|
158
|
+
| `ctm_morpho_build_merkl_claim_multisign` | Wallet-wide Merkl claim (`keyGenId` + `chainId`; server fetches proofs) |
|
|
128
159
|
|
|
129
160
|
Pass `marketId` from Morpho API for Blue/Midnight tools (not recomputed on-chain).
|
|
130
161
|
**Deposits** require a **Morpho-listed** vault (`ctm_morpho_fetch_earn_vaults`). Unlisted/test vaults are rejected.
|
|
@@ -134,8 +165,10 @@ Pass `marketId` from Morpho API for Blue/Midnight tools (not recomputed on-chain
|
|
|
134
165
|
1. `get_preferred_key_gen` → note `keyGenId` (or use the conversation KeyGen id).
|
|
135
166
|
2. `ctm_morpho_fetch_earn_vaults` — pick `vaultAddress` and `underlyingAddress` by asset and/or name.
|
|
136
167
|
3. `ctm_morpho_build_vault_deposit_multisign` — use each tool’s **input schema** (`keyGenId`, fetch output addresses, `amountHuman`, etc.). Server resolves `keyGen`, `executorAddress`, `rpcUrl`, `chainDetail`; agents must not pass those.
|
|
137
|
-
4. Blue
|
|
138
|
-
5.
|
|
168
|
+
4. Blue: `marketId` from fetch; server resolves `marketParams`. Collateral + borrow, or supply/withdraw loan token (USDC).
|
|
169
|
+
5. Stock-backed on Base: `ctm_morpho_fetch_stock_markets` then the same Blue/Midnight build tools.
|
|
170
|
+
6. Midnight: books → quote → lend now, lend offer (earn until filled), borrow, or cancel/repay as above.
|
|
171
|
+
7. Merkl: `ctm_morpho_fetch_merkl_rewards` then `ctm_morpho_build_merkl_claim_multisign({ keyGenId, chainId })`. Wallet-wide on that chain — not Morpho-only. Do not invent `claimData`. Call again if `additionalRoots` > 0.
|
|
139
172
|
|
|
140
173
|
## Troubleshooting
|
|
141
174
|
|
|
@@ -13,7 +13,9 @@ Do **not** web-search rates. Do **not** use DefiLlama. HIP-3 / Arcus stock tradi
|
|
|
13
13
|
|
|
14
14
|
If the operator started **Best yield** / plan mode `yield`: this thread **authors the plan file**. Ask for the asset first. Then `get_defi_protocol_skill({ protocolId: "yield-compare" })` **once** and write workstreams — do **not** `load_defi_protocol`, search Continuum tools, or spawn specialists on the parent. Execute runs one specialist per listed protocol. Research-only — no `ctm_*_build_*_multisign`. Table categories: `idle` / `lp` / `vault` / `perp_funding`. GMX and Hyperliquid only if they asked. Catalog MCP is context only.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
For **USDC / USDT**, the authored plan notes **must** mention Morpho stock-backed USDC loans as an **optional extra** (isolated Blue/Midnight books against Coinbase B20 collateral such as AAPLc/NVDAc; thin liquidity; 24/5 oracles; Regulation S / non-US). Do **not** add a Morpho stock Execute workstream or call `ctm_morpho_fetch_stock_markets` unless the operator says yes or already asked about stocks / tokenized stocks / stock-backed loans.
|
|
17
|
+
|
|
18
|
+
Each Execute protocol leaf must list `toolGroups: ["defi_discovery", "defi:<protocol>:market-data", "keygen", "keygen_messaging"]` (canonical ids: `aave-v4`, `compound-v3`, `euler-v2`, `morpho`, `maple-syrup`, `curve-dao`, `aerodrome`, `pendle`) and `budget: { maxRounds: 16, maxWallClockMs: 240000 }`. Slim leaves cannot search/activate packs — without `defi_discovery` they never see `load_defi_protocol` or official `ctm_*` fetch tools. Do **not** use `agent_bash` / `agent_read_file` / `agent_grep` on a yield leaf — call the official fetch (`ctm_aave_v4_fetch_markets`, `ctm_compound_v3_fetch_markets`, `ctm_morpho_fetch_earn_vaults`, `ctm_morpho_fetch_blue_markets` with `loan: "USDC"` / `"USDT"`, `ctm_aerodrome_fetch_lp_yields` on Base `8453`, `ctm_pendle_fetch_markets` / `ctm_pendle_search_assets`, …) then post `mpc-task-result`. Ticker filters (`underlying: "USDT"`, Morpho `loan: "USDC"`) are valid on Aave/Maple/Morpho fetches — do not invent ERC-20 addresses. Morpho leaf: report vault `netApy` and Blue `netSupplyApyLabel`; footnote `rewards[]` as variable extras — do not add them on top of net APY a second time. Skip empty Blue books (no supply TVL). `ctm_morpho_fetch_stock_markets` only after the operator says yes. Aave v4 is Ethereum-first (`1`; also 10 / 43114). Maple is Ethereum (`1`). Aerodrome is Base (`8453`) only. Pendle is any Core `chainId` ∩ node registry — research-only fetch, no build.
|
|
17
19
|
|
|
18
20
|
## Units and caveats
|
|
19
21
|
|
|
@@ -45,10 +47,11 @@ Call `get_defi_protocol_skill({ protocolId: "yield-compare" })` for this map, th
|
|
|
45
47
|
|
|
46
48
|
### USDC / USDT
|
|
47
49
|
|
|
48
|
-
1. Aave / Compound / Euler lend / Morpho earn / Maple (`ctm_maple_fetch_markets`)
|
|
50
|
+
1. Aave / Compound / Euler lend / Morpho earn (`ctm_morpho_fetch_earn_vaults`) / Morpho Blue loan markets (`ctm_morpho_fetch_blue_markets({ loan: "USDC" })`) / Maple (`ctm_maple_fetch_markets`). Morpho: rank on `netApy` / `netSupplyApyLabel`; footnote `rewards[]` as variable extras.
|
|
49
51
|
2. `ctm_aerodrome_fetch_lp_yields` (Base) and `ctm_curve_dao_fetch_lp_yields` if they want DEX LP
|
|
50
52
|
3. `ctm_pendle_fetch_markets` — optional PT / YT / LP implied APY if they asked about Pendle (research-only)
|
|
51
53
|
4. `ctm_gmx_fetch_gm_apy` / `ctm_hyperliquid_fetch_vault_apys` / perp funding — **only if they asked** about GMX, HL vaults, or funding
|
|
54
|
+
5. Morpho stock-backed USDC loans — **optional extra in plan notes only**. Call `ctm_morpho_fetch_stock_markets` only if they say yes.
|
|
52
55
|
|
|
53
56
|
### USDS
|
|
54
57
|
|
|
@@ -73,6 +76,7 @@ Aave / Morpho / Euler / `ctm_curve_dao_fetch_lp_yields`
|
|
|
73
76
|
|
|
74
77
|
- Main-pair LP only: Aerodrome `fetch_lp_yields`, Curve `fetch_lp_yields` (~100 each). Optional Pendle LP implied APY via `ctm_pendle_fetch_markets` (research-only).
|
|
75
78
|
- Stock LP: `ctm_aerodrome_fetch_stock_lp_yields` (B20) **only if the user asked about stocks**.
|
|
79
|
+
- Morpho stock-backed loans: `ctm_morpho_fetch_stock_markets` **only after they say yes** (or already asked about stocks / stock-backed loans). Isolated equity credit, not idle stables. Always mention as an optional extra in USDC/USDT Best Yield plan notes.
|
|
76
80
|
- Hyperliquid HIP-3: `ctm_hyperliquid_fetch_stock_markets` is **trading**, not idle savings. Include HIP-3 **funding** only if they asked about stocks.
|
|
77
81
|
|
|
78
82
|
## Euler earn vs isolated lend
|