MetaVault MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mv_get_calibrationA | Calibration oracle: what does "normal" look like for a market, pool, or IBT? Produces statistical baselines from historical data — percentiles, anomaly thresholds, peer comparison, and assertion-ready language. This is the bridge between perception (monitoring tools) and specification (security assertions like Phylax Credible Layer). The tool answers "what should the threshold be?" from observation, not theory. For each metric (borrow APY, utilization, TVL, implied APY, etc.), returns:
Supports Morpho markets (by market key), Pendle markets (by market address), and Spectra pools (by pool/PT address). Auto-detects target type from address format (64-char hex = Morpho, 40-char hex = Pendle/Spectra). Use morpho_get_history or pendle_get_market_history for raw time-series. Use mv_check_ibt_health for single-point health snapshots. Use this tool when you need to CALIBRATE — set thresholds, compare to peers, or export knowledge about what normal looks like. |
| spectra_get_pool_capacityA | Analyze a pool's capacity by quoting PT trades at increasing capital sizes. Shows how price impact and effective APY degrade as capital grows, helping curators and large deployers find the sweet spot (max capital with acceptable impact) and the exhaustion point (where APY collapses). Two modes: "pt_buy" (default): Measures PT swap impact via Curve get_dy(). Shows how much capital can be deployed as a directional PT buyer before slippage degrades APY. "lp_add": Measures LP deposit impact. LP deposits add liquidity to BOTH sides of the pool, deepening it rather than consuming it. Impact is near-zero for balanced deposits. Shows pool share concentration and post-deposit pool depth. USE THIS MODE for MetaVault curator capacity analysis — curators deploy as LP. Each tier is quoted independently (not cumulative). Real execution across multiple txns would face additional impact from pool state changes. Output surfaces a capacity framing note: pt_buy mode measures directional swap impact, but MetaVault curators deploy as LP where entry impact is near-zero and the constraint is pool share concentration. Use lp_add mode for curator capacity analysis. On-chain quotes use the actual Curve StableSwap-NG amplification parameter. Set use_on_chain=false for math-only estimates (faster, more conservative). Use spectra_quote_trade for a single exact quote at a specific amount. Use spectra_scan_opportunities for capital-aware ranking across all pools. Use mv_check_ibt_health to verify the underlying IBT before deploying. |
| mv_get_protocol_contextA | Get essential protocol mechanics for Spectra, Pendle, and Morpho — needed for correct reasoning. This server covers 3 protocols with 55 tools. This context tool teaches how they all work. Use topic "pendle_morpho" first if you're unfamiliar with the multi-protocol scope — it explains all three protocols, their tools (spectra_, pendle_, morpho_, mv_), and when to use cross-protocol tools vs protocol-specific ones. IMPORTANT: MetaVaults (spectra_list_metavaults, spectra_model_metavault, spectra_get_curator_dashboard, spectra_stress_test_vault) are Spectra-specific curated vaults — don't miss them. Use topic "workflow_routing" to learn which tools to call for a given goal (yield optimization, wallet analysis, YT arbitrage, curator strategies, etc.) and how they feed into each other. Recommended starting point for agents new to the tool set. Use topic "pt_yt_mechanics" for how PT/YT splitting works on Spectra. Use topic "router_batching" for how Spectra Router affects pool activity interpretation. Use topic "deposit_path" for step-by-step entry mechanics (how to buy PT, mint YT, LP, loop). Use topic "glossary" for key term definitions (IBT, sw-prefix, LLTV, gauge, maturity value, APR vs APY, underlying, LP, ERC-4626, Curve StableSwap-NG, boost formula). Use topic "fees_and_costs" for protocol YT fees (Spectra 3%, Pendle 5%), reward basis (held vs notional), Merkl campaign types, and external points programs. Use topic "external_protocols" for the registry of non-Spectra protocols a MetaVault can hold via externalPositions[] (e.g. Avant one-week cooldown, Pendle instant LP exit): settlement windows, observation boundaries, mitigations. Call this before reasoning about withdraw speed or exit cost on positions that aren't in Spectra LP. Use topic "protocol_pulse" for LIVE cross-protocol vital signs (TVL, emissions, pool counts, expiring pools). Fetches real-time data — takes 5-15 seconds. Available topics: pt_yt_mechanics, router_batching, position_analysis, looping, networks, deposit_path, glossary, fees_and_costs, pendle_morpho, workflow_routing, external_protocols, protocol_pulse Omit the topic parameter to get all topics at once. |
| mv_get_curator_portfolioA | Aggregate multiple MetaVaults managed by a single curator into one portfolio view. Three input modes (priority: explicit > label > address):
Returns:
Use spectra_get_curator_dashboard for deep-dive into a specific vault. Use morpho_monitor_risk for Morpho position health across the curator's address. Use spectra_stress_test_vault for withdrawal simulation on a specific vault. |
| mv_scan_curator_opportunitiesA | Scan all Spectra AND Pendle chains for the best yield opportunities, sized to your capital. Cross-protocol scanner designed for MetaVault curators who can allocate to either protocol. Unlike spectra_scan_opportunities (Spectra-only), this tool includes Pendle markets with:
Unlike spectra_get_best_fixed_yields or pendle_list_markets, this tool computes effective APY at YOUR capital size — a high-APY pool with thin liquidity may be useless at your scale. The ranking can disagree with spectra_scan_opportunities because it includes a different opportunity set (Pendle markets). This disagreement is intentional — both tools measure different things. Use mv_compare_yield for detailed head-to-head on a specific chain. Use spectra_model_metavault to model blended Spectra+Pendle MetaVault allocation. Use spectra_get_curator_dashboard for operational monitoring of an existing MetaVault. |
| spectra_list_expiring_poolsA | Scan all Spectra chains for pools approaching maturity. Returns pools expiring within the specified threshold (default 21 days / 3 weeks), grouped by urgency level. Designed for operators who need lead time to:
Each result includes the PT address, IBT address, chain ID, underlying asset, TVL, and current implied APY — everything needed to plan the successor pool. Automatically cross-references each expiring pool's IBT against all active pools to flag whether a successor pool (same IBT, later maturity) already exists or needs to be created. Gauge status is fetched from the governance voting-incentives API. A pool address present in that endpoint has a gauge (even if it currently has 0 votes / 0 emissions). Gauge API failure is best-effort — gauge status shows as unknown, does not block results. Per-pool readiness assessment combines successor status, gauge status, and timing: OK: Successor deployed with gauge and seeded CAUTION: Successor exists but missing gauge or low TVL; or no successor but >7d runway WARNING: No successor and ≤7d; or successor without gauge and ≤14d Urgency (time-based) and readiness (action-based) are independent dimensions. A pool can be ALERT urgency (21d runway) but WARNING readiness (no successor at all). The Operator Checklist section groups required actions by type:
Urgency levels: CRITICAL (≤7 days): Immediate action required WARNING (≤14 days): Start preparations now ALERT (≤21+ days): Plan ahead Set include_expired=true to also show recently matured pools (if the API returns them). By default only active (non-expired) pools are shown. Use mv_plan_rollover on a specific MetaVault for automated rollover candidate discovery. Use spectra_get_yield_curve to see what maturities already exist for the same underlying. Use spectra_list_pools to check if a successor pool has already been created. |
| spectra_get_gauge_votesA | Full veSPECTRA governance dashboard: gauge vote distribution, voting APRs, bribe incentives, SPECTRA emissions per pool, and Merkl campaign health. Shows where veSPECTRA holders direct their votes, what rewards they earn for voting, and how SPECTRA emissions are distributed across pools. Essential for:
Each gauge is cross-referenced against live Merkl campaigns: ✅ = Merkl campaign active at the gauge's pool address (emissions flowing) ⚠ = Merkl campaign exists but targets a different pool address (likely stale — gauge rolled to a successor pool but the campaign wasn't updated) ❌ = No campaign found (emissions allocated by governance but not distributed) The ⚠ stale detection uses fuzzy symbol matching: if the gauge symbol (e.g., "yvvbUSDC") appears in a Merkl campaign name containing "Spectra" but the campaign targets a different address, the campaign likely belongs to a matured predecessor pool. This catches the common failure mode where pools roll to new maturities but Merkl campaigns lag behind. The voting APR is what veSPECTRA holders earn by directing votes to a gauge: voting APR = (voting rewards + swap fees) / vote value Bribe efficiency = total voting rewards / total votes (in $). Higher efficiency = more reward per unit of voting power directed. Use spectra_get_ve_info for your personal boost calculation. Use spectra_list_pools to see the pools behind these gauges. Use spectra_list_expiring_pools to check gauge status for expiring pools. |
| mv_check_ibt_healthA | Perform a multi-signal health assessment of the IBT underlying a PT pool. Checks conversion rate (on-chain ERC-4626), APR composition (organic vs incentive), pool balance ratio, APR magnitude, protocol recognition, and liquidity level. Returns HEALTHY / CAUTION / WARNING verdict with per-check details. A CAUTION flag means "proceed with awareness." A WARNING flag means "investigate before deploying." Output includes observation boundaries declaring what the snapshot cannot detect (rate trajectory, underlying governance, whether imbalance is transient). Pool imbalance checks surface competing explanations (demand vs withdrawal vs maturity). Two modes:
If both are provided, pt_address takes priority (richer data from Spectra API). Use spectra_get_pool_capacity to assess how much capital the pool can absorb. Use spectra_compare_yield for fixed-vs-variable rate analysis on the same PT. |
| spectra_get_looping_strategyA | Calculate a leveraged fixed-yield strategy using Spectra PT + Morpho looping. Strategy: Deposit asset -> mint PT on Spectra -> use PT as collateral on Morpho -> borrow underlying -> deposit again -> repeat. Each loop multiplies yield exposure. Returns projected yields at different leverage levels (1x to max safe leverage), effective APY, and risk parameters. Automatically fetches the live Morpho borrow rate and LLTV when a matching market exists. You can still override morpho_ltv and borrow_rate manually if needed. NOTE: Looping requires a Morpho market that accepts the specific PT as collateral. Risk context:
Use morpho_list_markets to find available Morpho markets. Use spectra_scan_opportunities to discover the best looping opportunities across all chains with capital-aware sizing. |
| merkl_list_campaignsA | Discover live Merkl incentive campaigns on a given chain. Returns all active Merkl campaigns with APR, reward tokens, daily rewards, TVL, and campaign type. Essential for understanding subsidized rates:
Use this to verify whether a borrow rate is subsidized, find new incentive opportunities, or understand the full yield stack of any position. Campaign types: CLAMM (concentrated LP), ERC20LOGPROCESSOR (Morpho/lending), MORPHOVAULT, etc. Action types: POOL (LP only), HOLD (token holders), BORROW, LEND. Data completeness: the underlying Merkl API is fully paginated (all campaigns fetched, not truncated) and cached 15min in-memory + 30min on disk. Chains like Ethereum mainnet have 1,800+ campaigns — all are indexed. When asset_filter is provided, it also applies server-side filtering for targeted lookups. When an agent says "no subsidy exists" — check here first. The subsidy layer is invisible to protocol-native tools unless explicitly integrated. |
| spectra_list_metavaultsA | List live MetaVaults from the Spectra API. MetaVaults are ERC-7540 curated vaults that automate LP rollover and compound YT yield back into LP positions. They are managed by curators who earn performance fees on depositor yield. Returns all MetaVaults with:
Use this tool to discover which MetaVaults are live, then pass the address to spectra_model_metavault for detailed strategy modeling or spectra_get_curator_dashboard for the full operational view with action items. To investigate curator activity (LP adds/removes, rebalancing), use spectra_get_address_activity on the curator's EOA address — MetaVault operations go through the Spectra Router, so the vault contract address won't appear in pool activity data. When verify_onchain=true (off by default), each MetaVault gets a compact chain-truth summary line probed via the same engine that powers spectra_get_curator_dashboard. Useful for cross-chain triage when the dashboard isn't pre-rendered. Chain-read failures degrade to a [chain-truth ✗] line per MV — they NEVER abort the rest of the list. Concurrency is capped at 6 simultaneous reads to avoid RPC rate limits. |
| spectra_model_metavaultA | Model a MetaVault "double loop" strategy for curators. MetaVaults are ERC-7540 curated vaults that automate LP rollover and compound YT yield back into LP positions. This tool models the economics of leveraging MetaVault shares as collateral on Morpho (or similar lending markets). Two modes:
The "double loop": Layer 1 (inside vault): YT yield → LP tokens (compounding loop, managed by curator) Layer 2 (on top): MV shares → Morpho collateral → borrow → deposit back (leverage loop) Because YT compounding raises the base yield, leverage multiplies a higher base — creating a "double loop premium" over raw PT looping. Dual Morpho Market Strategy: Curators should create TWO Morpho markets for maximum flywheel effect: Market A (PT / underlying): For external users to loop PT. Drives pool volume & LP fees. Market B (MV shares / underlying): For the curator to loop vault shares. Amplifies own capital. These markets reinforce each other — PT demand deepens the pool, deeper pool attracts more loopers, and the curator earns fees on all external deposits flowing through the vault. Curator economics: The curator EARNS the performance fee on external deposits — this is revenue for managing the vault (rolling positions, compounding YT, maintaining allocations). Blended allocation: Supports modeling MetaVaults that allocate across both Spectra and Pendle LP positions via pendle_allocation_pct and pendle_lp_apy parameters. Computes blended base APY and warns about manual Pendle rollover requirements. |
| spectra_get_curator_dashboardA | Operational dashboard for MetaVault curators. Aggregates vault health, position status, depositor flows, fee revenue estimates, and actionable alerts into a single view. Designed for curators managing live MetaVaults who need a quick operational overview. Returns:
Pool allocations show each position as a % of total vault TVL (e.g., "37.1% | $236K"), sorted by size, with protocol tags ([Spectra]/[Pendle]/[Unknown]) on each position. Unallocated liquidity is shown separately (and excludes capital deployed in external positions — labeled as "unallocated" to distinguish from "idle"). When the API doesn't provide LP balance data for a position, it shows "?%". Cross-chain positions: MetaVault positions may live on a different chain than the MetaVault itself (e.g., Base MetaVault → Avalanche pools via CCTP bridge). Pool addresses in positions are on the position's chain, not the MetaVault's home chain. Epoch flows: Derived from asset snapshots and rate changes. Yield accrual is estimated from share rate deltas — actual yield may differ. Use share price trend to corroborate. Requires chain + metavault_address. Use spectra_list_metavaults to discover addresses. Use spectra_model_metavault for leverage modeling after reviewing the dashboard. Use spectra_get_pool_activity on specific pool addresses for trading pattern analysis. Use spectra_get_address_activity on the curator's EOA for cross-pool curator activity. When verify_externals=true (off by default), each avant external position is probed on Avalanche's RequestsManager — confirms state (CREATED/COMPLETED/CANCELLED), provider attribution, on-chain amount (with PPM tolerance for API rounding), global counter, and pause flag. A [chain-truth ✓/⚠/✗] line is appended under each avant position. Per-order failures degrade gracefully and never poison sibling positions or block the dashboard. Pendle externals are NOT yet probed in this slice. |
| morpho_list_marketsA | Find Morpho Blue lending markets by collateral type. Two search modes:
When both filters are provided, collateral_filter takes precedence (broader search). Enriched with Merkl campaign data: shows subsidized borrow/supply rates when Merkl campaigns are active on the market's collateral or loan assets. Subsidized borrow rates can be NEGATIVE (Merkl pays borrowers), dramatically improving looping economics. Protocol context:
Use spectra_get_looping_strategy for leveraged yield calculation. Use morpho_get_rate for live borrow APY on a specific market key. Use spectra_scan_opportunities for automated cross-chain looping discovery. |
| morpho_get_rateA | Get the current borrow rate and market state for a specific Morpho market. Provide the market's unique key (hex ID) and chain. Returns live borrow APY, supply APY, utilization, and liquidity — the data needed to calculate looping profitability. Use morpho_list_markets to discover market keys first. Important: Rates are live as-of-query and change continuously based on utilization. When planning a looping strategy, verify rates are still favorable before executing. A profitable spread (fixed yield > borrow rate) can turn negative if borrow rates spike. Use spectra_get_looping_strategy with these rates to calculate leveraged yield projections. |
| morpho_get_market_suppliersA | Show who supplies lending liquidity to a specific Morpho market. Returns top suppliers ranked by supply size, identifies Morpho vaults vs EOAs vs loopers, and provides concentration analysis. A market's supply side determines looping viability. A high-APY market with $10K supply from a single vault has different risk/capacity than $10M from diverse sources. Protocol context:
Use morpho_list_markets to find market keys first. Use morpho_list_vaults to discover all vaults on a chain and their allocations. Use morpho_get_rate for borrow-side rate and PT spread analysis. |
| morpho_list_vaultsA | List Morpho vaults on a chain — discover where supply-side liquidity lives. Returns vault details including AUM, APY, fees, curator info, and market allocations. Morpho vaults are curated lending strategies managed by curators who allocate deposits across lending markets. They are often (but not always) the primary source of supply-side liquidity for PT looping markets. EOA suppliers also exist. Protocol context:
Use morpho_get_market_suppliers to see who supplies a specific market. Use morpho_list_markets to find available PT lending markets. Use spectra_get_looping_strategy to model leveraged yield after identifying supply liquidity. |
| morpho_get_positionsA | Query a user's Morpho positions across all markets and vaults on a chain. Returns collateral, borrows, supply (with USD values), vault deposits, health factors, and position signals (looper detection, low health warnings). Useful for understanding what a wallet holds on Morpho: is it a looper? A supplier? A vault depositor? The position shape reveals the strategy. Protocol context:
Scans all Morpho chains by default (mainnet, base, arbitrum). Specify chain to narrow. Use morpho_list_markets to find available PT markets. Use morpho_get_rate for live borrow rate on a specific market. Use spectra_get_portfolio for Spectra protocol positions (PT, YT, LP). |
| morpho_get_historyA | Historical rates and growth for a specific Morpho market. Shows borrow APY, supply APY, utilization, and TVL trends over time with min/avg/max/current stats and directional signals. Useful for assessing rate stability before entering a looping position. A market with stable, predictable borrow rates is safer for leveraged strategies than one with frequent spikes. Output includes signals: rate spikes, stability assessments, utilization warnings, TVL decline alerts, and supply/demand squeeze detection. Parameters:
Use morpho_get_rate for current live rates. Use morpho_list_markets to discover market keys. Use spectra_get_looping_strategy to model leveraged yield after confirming rate stability. |
| spectra_get_onchain_activityA | Fetch historical on-chain activity directly from event logs via eth_getLogs. Use this when the API-based spectra_get_pool_activity returns empty or incomplete data (the API only stores a limited time window of recent transactions). Supports TWO contract types:
Provide pool_address, pt_address, or both. When both are provided, events from both contracts are fetched in parallel, merged, and sorted by block number. Returns raw token amounts (not USD values — USD conversion is not available from on-chain data alone). The rpc_url parameter lets you supply an RPC endpoint for any chain, including chains without hardcoded RPCs (e.g., Katana, Monad). If omitted, falls back to the server's default public RPC for the chain (if available). Block range strategy:
Limitations:
Use spectra_get_pool_activity for recent data with USD values and rich analysis. Use this tool for historical data beyond the API's retention window. |
| pendle_list_marketsA | List active Pendle markets on a given chain, or scan all Pendle-supported chains. Returns: market name, implied APY (fixed rate), LP APY, TVL (underlying deposited), liquidity (AMM depth), maturity, and token addresses. Pendle is a competing/complementary yield tokenization protocol. Like Spectra, it splits yield-bearing tokens into PT (principal) and YT (yield). Key differences:
This data is essential for curators building cross-protocol MetaVaults. A MetaVault can integrate Pendle PTs alongside Spectra PTs, allocating to whichever protocol offers better rates for a given underlying + maturity. Pendle-supported chains: Ethereum (mainnet), Optimism (optimism), BSC (bsc), Sonic (sonic), Base (base), Arbitrum (arbitrum), Mantle (mantle), Berachain (berachain), HyperEVM (hyperevm), Corn (corn) Chains with Spectra overlap: mainnet, optimism, bsc, sonic, base, arbitrum, hyperevm Pendle-only chains (Spectra not deployed): mantle, berachain, corn Includes external Merkl campaign APR when available (LP, YT, and SY incentive programs). Merkl campaigns are fetched best-effort per chain and shown alongside native PENDLE incentives. Use mv_compare_yield to do a head-to-head comparison on a specific underlying. Use mv_scan_curator_opportunities for unified cross-protocol ranking with capital-aware sizing. Use spectra_scan_opportunities for Spectra-native opportunity ranking. |
| mv_compare_yieldA | Compare Pendle and Spectra yield opportunities side-by-side on the same chain. Auto-matches markets by underlying asset AND maturity proximity for head-to-head comparison. Essential for MetaVault curators who can allocate to either protocol. Shows:
Only works on chains where both Spectra and Pendle are deployed: Ethereum, Optimism, BSC, Sonic, Base, Arbitrum, HyperEVM Includes external Merkl campaign APR for both protocols when available. Use pendle_list_markets for Pendle-only chain data. Use mv_scan_curator_opportunities for unified cross-protocol ranking with capital-aware sizing. Use spectra_scan_opportunities for Spectra-native capital-aware ranking. |
| pendle_get_market_capacityA | Analyze a Pendle market's capacity by computing price impact at increasing capital sizes. Shows how price impact and effective APY degrade as capital grows, helping curators find the sweet spot (max capital with acceptable impact) and the exhaustion point (where APY collapses). Uses Pendle's logit AMM model (conservative scalarRoot=50) which accounts for time-decay pricing. Near maturity, the AMM becomes more capital-efficient, so impact is lower than constant-product estimates. This is the Pendle equivalent of spectra_get_pool_capacity. Use pendle_get_market_details for full market information. Use pendle_scan_opportunities for capital-aware ranking across all markets. |
| pendle_get_market_detailsA | Get detailed information about a specific Pendle market by address. Returns: market name, PT/YT/SY/underlying addresses, implied APY (fixed rate), LP APY breakdown (swap fees + PENDLE incentives + boost), underlying variable APY, TVL, pool liquidity, 24h volume, pool reserves, maturity, and external Merkl campaigns. This is the Pendle equivalent of spectra_get_pt_details. Use it to drill into a specific Pendle market after finding it via pendle_list_markets, mv_compare_yield, or mv_scan_curator_opportunities. Use mv_check_ibt_health(ibt_address=SY_ADDRESS) to assess the underlying vault's health. Use mv_compare_yield to compare this market with Spectra equivalents. |
| pendle_list_expiring_marketsA | Scan Pendle chains for markets approaching maturity. Groups results by urgency:
This is the Pendle equivalent of spectra_list_expiring_pools. Useful for:
Use pendle_get_market_details for full market info on an expiring market. Use mv_plan_rollover to plan rollovers for MetaVault positions. Use pendle_get_yield_curve to find replacement maturities. |
| pendle_get_market_historyA | Historical time-series data for a Pendle market. Shows how implied APY, TVL, volume, PT/YT prices, and other metrics have moved over time. The first tool that answers "what happened?" not just "what is it now?" Enables: trend analysis, yield stability assessment, anomaly detection, conviction building before entry. A flat APY with low stddev means predictable yield. A volatile APY with high stddev means the rate you see today may not persist. Available fields: impliedApy, tvl, tradingVolume, ptPrice, ytPrice, baseApy, lpPrice, lpRewardApy, maxApy, pendleApy, swapFeeApy, syPrice, totalPt, totalSupply, totalSy, totalTvl, underlyingApy, underlyingInterestApy, underlyingRewardApy, voterApr, ytFloatingApy, lastEpochVotes Use pendle_get_market_details for current market snapshot. Use pendle_list_markets to find market addresses. |
| pendle_get_looping_strategyA | Calculate a leveraged fixed-yield strategy using Pendle PT + Morpho looping. Strategy: Buy Pendle PT → use as Morpho collateral → borrow underlying → buy more PT → repeat. Each loop multiplies yield exposure. Returns projected yields at different leverage levels (1x to max safe leverage), effective APY, risk parameters, borrow rate sensitivity, and break-even analysis. Automatically fetches the live Morpho borrow rate and LLTV when a matching market exists. NOTE: Looping requires a Morpho market that accepts the specific Pendle PT as collateral. Morpho markets for Pendle PTs exist primarily on Ethereum mainnet and some on Arbitrum. The Pendle equivalent of spectra_get_looping_strategy. Use pendle_get_market_details for full market info. Use pendle_scan_opportunities(include_looping=true) for cross-market looping rankings. Use morpho_list_markets to find available Morpho markets. |
| pendle_get_portfolioA | View a wallet's Pendle positions across all chains (or a specific chain). Shows PT, YT, and LP token balances with USD valuations for each Pendle market the wallet has positions in. Includes maturity dates, implied APY, LP APY, strategy inference, and expiry warnings. This is the Pendle equivalent of spectra_get_portfolio. Use pendle_get_market_details to drill into a specific market. Use mv_plan_rollover to plan rollovers for expiring positions. Use spectra_get_portfolio for Spectra positions. |
| pendle_quote_tradeA | Estimate expected output, price impact, and effective APY for a Pendle PT trade. Uses the Pendle logit AMM model to estimate trade outcomes. Shows:
Side:
The Pendle equivalent of spectra_quote_trade. Use pendle_get_market_capacity for a multi-size impact curve. Use pendle_get_market_details for full market information. |
| pendle_scan_opportunitiesA | Scan all Pendle chains for the best yield opportunities, sized to your capital. This is the Pendle equivalent of spectra_scan_opportunities. Unlike pendle_get_best_fixed_yields (raw APY ranking), this tool computes:
The ranking reflects what you can actually EARN, not just what the protocol advertises. For cross-protocol scanning (Spectra + Pendle together), use mv_scan_curator_opportunities. For Spectra-only scanning, use spectra_scan_opportunities. |
| pendle_simulate_tradeA | Simulate how a Pendle PT trade would change a wallet's portfolio. Shows before/after comparison:
Does NOT execute any transaction — purely informational. The Pendle equivalent of spectra_simulate_trade. Use pendle_quote_trade for a detailed trade quote first. Use pendle_get_portfolio to see full current portfolio. |
| pendle_get_protocol_statsA | Get Pendle protocol-wide statistics: total TVL, market count, liquidity, and volume across all Pendle-supported chains. Shows per-chain breakdown and aggregate metrics. Includes:
The Pendle equivalent of spectra_get_protocol_stats. Use pendle_list_markets for detailed market-level data. Use mv_scan_curator_opportunities for cross-protocol ranking. |
| pendle_get_yield_curveA | Show the yield curve (term structure) for a given underlying asset across Pendle chains. Fetches all active Pendle markets matching the underlying (e.g., "USDC", "ETH", "stETH"), sorts by maturity, and displays implied APY at each point on the curve. This is the fixed-income view: "What rate can I lock for 30 days vs 90 days vs 180 days?" Helps curators spot term premium anomalies, compare cross-chain rates, and choose maturities. The Pendle equivalent of spectra_get_yield_curve. Use pendle_get_market_details to drill into a specific maturity. Use pendle_get_market_capacity to check depth at your capital size. Use mv_compare_yield for Spectra vs Pendle comparison on the same underlying. |
| pendle_get_best_fixed_yieldsA | Find the best fixed-rate (implied APY) opportunities across all Pendle chains. Scans all Pendle-supported chains and ranks markets by their implied APY — the fixed rate you lock in when buying PT at a discount. This is the Pendle equivalent of spectra_get_best_fixed_yields. Unlike pendle_list_markets (which shows a single chain), this scans all chains at once and focuses on the PT buyer's perspective: which markets offer the highest fixed rate? Unlike pendle_scan_opportunities (capital-aware), this is a quick raw-APY ranking without price impact analysis. Use it for initial screening, then drill into specific markets with pendle_get_market_details or size with pendle_scan_opportunities. Pendle chains: Ethereum, Optimism, BSC, Sonic, Base, Arbitrum, Mantle, Berachain, HyperEVM, Corn |
| pendle_scan_yt_arbitrageA | Scan Pendle markets for YT (Yield Token) mispricing opportunities. Compares the underlying's variable APY against the implied rate from the PT/YT market price. When these diverge, a spread exists:
Unlike Spectra (where YT trades indirectly via Router flash-mint/redeem), Pendle YT trades directly on the Pendle AMM, making execution simpler:
This is the Pendle equivalent of spectra_scan_yt_arbitrage. Use pendle_get_market_details for detailed info on a specific opportunity. Use mv_compare_yield for cross-protocol comparison on the same underlying. |
| spectra_get_pool_volumeA | Get historical trading volume for a specific Spectra pool. Returns timestamped buy/sell volume in USD. Use spectra_list_pools first to find pool addresses. Useful for assessing pool activity and liquidity depth before entering a position. Context: Volume alone doesn't indicate capital efficiency — $1M volume in a $5M liquidity pool is very different from $1M in a $500K pool. Combine volume data with pool liquidity (from spectra_list_pools or spectra_get_pt_details) to assess real trading conditions. Output includes volume/liquidity ratio analysis when pool data is available. For individual transaction details and whale activity, use spectra_get_pool_activity instead. Use spectra_quote_trade to estimate price impact for a specific trade size. |
| spectra_get_pool_activityA | Get recent trade and liquidity activity for a specific Spectra pool. Returns individual transactions: buys, sells, and liquidity adds/removes with USD values, timestamps, and tx hashes. Pool activity shows only the Curve pool's perspective (IBT ↔ PT swaps and LP events). The Spectra Router batches operations atomically, so any single pool event may be one step of a multi-step strategy. There is no BUY_YT or SELL_YT event type — the pool never touches YT directly. Use mv_get_protocol_context for the full mechanics of how Router batching maps to pool activity types. Protocol mechanics that affect how activity appears:
Key principle: any pool event type can be one step of a multi-step Router operation. Do not assume SELL_PT means "user is bearish on PT" or AMM_ADD_LIQUIDITY means "user is providing liquidity for yield." Always cross-reference with spectra_get_portfolio to see what the address actually holds (PT, YT, LP balances) — the holdings reveal the true strategy better than the activity log alone. Analysis tips — IMPORTANT: each observation below has multiple valid interpretations. The tool output now presents these as competing branches. Do not collapse to one interpretation without cross-referencing spectra_get_portfolio and other data sources.
Output includes an Address Concentration section with full addresses and per-address type breakdowns. Use spectra_get_portfolio on those addresses to see their PT, YT, and LP balances. Most analysis can be done without a block explorer — use spectra_get_portfolio on addresses from Address Concentration, and spectra_compare_yield or spectra_get_pt_details for rate context. Address isolation mode: When you provide an 'address' parameter, the tool filters to that address only, sorts chronologically (oldest first), and adds:
For multi-pool activity scanning, use spectra_get_address_activity to find all pools an address has interacted with in a single call. |
| spectra_get_address_activityA | Scan all pools on a chain (or all chains) for a given address's activity. Returns per-pool breakdown and cross-pool aggregates. Useful for discovering multi-pool strategies without making N manual spectra_get_pool_activity calls. When investigating a wallet that operates across multiple pools (e.g., a curator or yield farmer diversifying across maturities), this tool reveals the full scope of their on-chain activity in one call. Each pool's activity is summarized with type breakdown and total volume. Cross-pool totals show the address's aggregate engagement with Spectra. For deep per-pool analysis (cycle detection, flow accounting, contract detection), use spectra_get_pool_activity with the address parameter on the specific pool of interest. Use spectra_get_portfolio to see current holdings across all pools. Includes an Observation Coverage section that quantifies blind spots: which pools were scanned, what event types are visible vs invisible (standalone mints, yield claims, and non-Spectra operations are never visible here), and whether activity is concentrated on one chain. Position sizing should assume this scan is incomplete, not comprehensive. |
| spectra_get_portfolioA | Get wallet positions on Spectra for a specific address. Returns PT, YT, and LP balances with USD values, claimable yield, and current rates. Queries a single chain or all chains. Use this to understand what a wallet currently holds on Spectra. Also fetches unclaimed Merkl rewards (SPECTRA gauge emissions and other incentive programs) per position. Merkl rewards are best-effort — if the Merkl API is unavailable, the portfolio still displays without reward data. Protocol context:
|
| mv_get_position_mapA | Cross-protocol position map — see the whole wallet across Spectra, Pendle, Morpho, and governance. Each protocol tool sees its own silo. This tool sees the contradictions BETWEEN silos. Calls all portfolio sources in parallel and composes a unified view with:
Does NOT replace per-protocol tools — use spectra_get_portfolio, pendle_get_portfolio, morpho_get_positions for deeper per-protocol analysis. Use this as the FIRST call when analyzing a wallet. It answers "where am I?" before "what should I do?" |
| spectra_get_protocol_statsA | Get Spectra protocol-wide statistics: SPECTRA token supply, circulating supply, current weekly emissions, rebase formula, and general protocol info. Use this for questions about SPECTRA tokenomics or protocol health. Protocol context:
Use spectra_get_ve_info for live veSPECTRA data and boost calculations. |
| spectra_list_chainsB | List all blockchain networks supported by Spectra Finance. Use this as a starting point to discover what's available. Not all chains have identical feature coverage. Morpho looping markets currently exist on mainnet, base, arbitrum, and katana. veSPECTRA governance lives on Base. |
| spectra_get_pt_detailsA | Get detailed information about a specific Spectra Principal Token (PT). Returns: maturity date, TVL, implied APY, PT/YT prices, pool liquidity, LP APY breakdown, underlying asset info, IBT protocol, yield leverage, pool reserves (IBT/PT amounts), maturity redemption value, points program multipliers, asset tags, and base IBT info. Protocol context:
Includes external Merkl campaign APR when available. Output surfaces conditional competing interpretations when data is ambiguous — e.g., PT above par, skewed reserves, high APY with thin liquidity, or incentive-dominated APR. These appear only when triggered by the specific data returned. Use spectra_compare_yield to compare fixed vs. variable rates. Use spectra_get_looping_strategy to calculate leveraged fixed yield via Morpho. Use spectra_get_portfolio to check wallet holdings. Use spectra_get_pool_activity to see trading patterns on this pool. |
| spectra_list_poolsA | List all active Spectra pools on a given chain. Returns a summary of each pool including: asset name, maturity, TVL, implied APY, LP APY, pool liquidity, pool reserves (IBT/PT amounts with ratio), IBT APR breakdown (organic vs incentive yield), maturity redemption value, points multipliers, and asset tags. Metric definitions used across all Spectra tools:
Each pool is a Curve StableSwap-NG AMM pair of IBT and PT. LP APY is the yield from providing liquidity to the pool (fees + gauge emissions). Set include_expired=true to also show recently matured pools (if the API returns them). By default only active (non-expired) pools are shown. Includes external Merkl campaign APR when available. Output surfaces conditional competing interpretations when data is ambiguous (e.g., high APY with thin liquidity). For multi-chain discovery, use spectra_get_best_fixed_yields (raw APY ranking) or spectra_scan_opportunities (capital-aware with price impact and looping analysis). Use spectra_get_pool_activity on a specific pool to see recent trading patterns. |
| spectra_get_best_fixed_yieldsA | Find the best fixed-rate yield opportunities across all Spectra chains. Scans all supported networks and returns the top opportunities ranked by implied APY. Filters by asset type if specified. Important: This ranks by raw implied APY without considering your capital size or pool liquidity. These rankings will often disagree with spectra_scan_opportunities (which ranks by effective APY after entry cost). That disagreement is intentional -- raw APY reflects the pool's headline rate while effective APY reflects what you actually capture at your capital size. Neither ranking is "correct" -- they measure different things. Use both to develop conviction about which pools genuinely serve your strategy. |
| spectra_compare_yieldA | Compare Spectra's fixed yield (via PT) against the variable yield of the underlying interest-bearing token. Helps users decide if locking in a fixed rate is worthwhile versus staying in the variable-rate position. Protocol context:
Output surfaces competing interpretations when the data is ambiguous — e.g., positive raw spread but negative effective spread after entry cost, or incentive-dominated variable rate. Use spectra_get_looping_strategy to lever up the fixed yield via Morpho. Use spectra_get_portfolio to check your current positions. Use spectra_scan_opportunities for multi-chain comparison. |
| spectra_quote_tradeA | Estimate expected output, price impact, and minimum output for a PT trade. Automatically uses on-chain Curve get_dy() for exact quotes when a public RPC is available for the chain. Falls back to a conservative constant-product math estimate if on-chain quoting fails. Side: "buy" = spend underlying/IBT to buy PT (e.g. spend USDC-worth to get PT) "sell" = sell PT to receive underlying/IBT This tool only quotes PT trades on the Curve AMM pool. YT does not trade on the pool directly — YT is acquired by minting (deposit IBT to get PT+YT) or sold via flash-redeem. To estimate YT value: YT price = 1 - PT price in underlying terms. Returns: expected output amount, spot & effective rates, price impact, and minOut at the specified slippage tolerance. Also includes pool context: IBT/PT reserves with ratio, and IBT APR composition (organic vs incentive yield). The output indicates whether the quote came from on-chain (exact) or math estimate. On-chain quotes reflect the actual Curve StableSwap-NG amplification parameter and current pool state — significantly more accurate than the math estimate, especially for large trades. Use spectra_simulate_trade to preview your full portfolio state after this trade (BEFORE / TRADE / AFTER with deltas). Use spectra_compare_yield to evaluate whether the trade makes sense relative to variable rates. |
| morpho_monitor_riskA | Monitor liquidation risk across a curator's Morpho positions. Computes health factor, liquidation price, distance-to-liquidation, and borrow rate for every borrowing position. Flags positions approaching danger zones. Morpho has NO close factor — when health factor reaches 1.0, the ENTIRE position can be liquidated in one transaction. This makes distance-to-liquidation critical: a 14% distance means a 14% collateral price drop wipes the position completely. Alert levels scaffold attention, not action — multiple signals may disagree:
Use morpho_get_positions for raw position data without risk analysis. Use morpho_get_history to assess borrow rate stability over time. Use spectra_get_looping_strategy to model deleverage scenarios. |
| mv_plan_rolloverA | Plan position rollovers for expiring MetaVault positions. When a MetaVault position approaches maturity, the curator must: (1) identify the next pool, (2) estimate transition costs, (3) time the entry, (4) execute the rollover. This tool automates steps 1-3 by scanning Spectra and Pendle for rollover candidates matching the expiring position's underlying asset, computing entry impact at the position's capital size, and ranking by effective APY. Returns per expiring position: ranked list of rollover candidates with entry impact, yield gap (days of zero yield during transition), overlap window (if entering before old matures), and net effective APY after transition costs. Use spectra_get_curator_dashboard to see which positions are approaching maturity. Use mv_scan_curator_opportunities for broader cross-protocol opportunity discovery. Use spectra_get_pool_capacity to assess depth at your capital size for specific candidates. |
| mv_load_scarsA | Load the system's accumulated scars (corrective lessons), weighted by recency × reinforcement. Use this in audit lenses to ground reasoning in what the system has been re-taught. Most useful for the Diverger lens: "what would consensus kill?" sharpens significantly when read against the system's own history of contradictions. Weighting formula: weight = exp(-ageDays/30) × (1 + log2(1 + reinforceCount))
Scar source: feedback_*.md files in the memory directory. Each file's frontmatter:name: description: type: feedback reinforces: # optional; absent = independent date: # optional; absent = falls back to file mtimeDefault directory: ${HOME}/.claude/projects/${encoded-cwd}/memory Override via SCAR_DIR env var or scar_dir param. |
| spectra_simulate_tradeA | Preview what a wallet's Spectra portfolio would look like after a PT trade. Fetches the wallet's current position (if any) and the PT pool data, computes a trade quote, then shows BEFORE / TRADE / AFTER with deltas. Works even if the wallet has no existing position (simulates a new entry). Side: "buy" = acquire PT, "sell" = dispose PT. Note: This simulates PT trades only, not YT. YT is acquired by minting (deposit IBT to get PT+YT) and sold via the Router's flash-redeem mechanism, not through the Curve pool directly. The wallet's YT balance is shown but not modified by this simulation. Use spectra_get_portfolio to see current full positions. Use spectra_quote_trade for a standalone price quote without portfolio context. |
| spectra_scan_opportunitiesA | Scan all Spectra chains for the best risk-adjusted yield opportunities, sized to your capital. Unlike spectra_get_best_fixed_yields (which ranks by raw APY), this tool computes:
Returns opportunities ranked by effective APY (or looping net APY where available). Ranking logic: when a profitable Morpho looping market exists, ranks by looping net APY with cumulative entry cost amortized; otherwise ranks by effective APY (base APY minus annualized entry cost). MetaVaults are shown in a separate section (not interleaved with PT rankings) because they have different risk profiles: variable APY, curator-managed, auto-rolling positions. Set include_metavaults=false to skip MetaVault scanning. NOTE: This scans Spectra pools only. For broader coverage including Pendle markets, use mv_scan_curator_opportunities — it includes both protocols and may surface significantly more opportunities, especially at smaller capital sizes. Effective APY is a conservative lower bound (constant-product impact model). Real Curve StableSwap-NG pools are more capital-efficient. Verify top picks with spectra_quote_trade(). Output includes conditional competing interpretations when rankings are ambiguous — e.g., thin-liquidity pools dominating the ranking, or MetaVaults with high idle ratios. Use spectra_get_looping_strategy to drill into a specific opportunity's leverage details. Use spectra_get_pool_activity and spectra_get_portfolio to investigate trading patterns and positions. Use spectra_model_metavault to model MetaVault looping economics. |
| spectra_stress_test_vaultA | Simulate a large redemption on a MetaVault to assess withdrawal liquidity. Builds a liquidity waterfall — sources of cash ordered by cost: Tier 1: Unallocated Cash (undeployed, no external — instant, no cost) Tier 1b: Avant Redemption Queue (avUSDx → avUSD burn, ~1 week cooldown per Avant docs, no price impact — emitted only when avant external positions exist; EXCLUDED from within-epoch max-safe calculation due to the delay, INCLUDED in the separate within-1-week metric) Tier 2: Naturally maturing Spectra LP positions (no cost, time-dependent) Tier 3: LP removal from Curve/Pendle pools (low-medium impact) Tier 4: PT sale on Curve pool (higher impact) Note: "Unallocated" replaces the old "Idle" label. External positions (avant burn, pendle LP) are NOT counted in Tier 1 — they surface as Tier 1b (avant) or are excluded from all tiers (pendle external, conservative error mode). Computes total coverage, cost to remaining depositors, and maximum safe redemption size (< 1% loss to remaining holders). ERC-7540 constraint: once redemption is requested, the vault MUST fulfill it. There is no cancelRequest. This makes withdrawal liquidity critical. Use spectra_get_curator_dashboard for operational overview before stress testing. Use spectra_get_pool_capacity to assess individual pool depth. Use morpho_monitor_risk for Morpho position risk. |
| spectra_get_ve_infoA | Get live veSPECTRA governance token information and compute boost scenarios. Reads the current veSPECTRA total supply from Base chain on-chain, and given your balance + a specific pool, computes your exact boost multiplier. The Spectra boost formula: B = min(2.5, 1.5 * (v/V) * (D/d) + 1) v = your veSPECTRA balance V = total veSPECTRA supply (read live from Base) D = pool TVL d = your deposit size Full 2.5x boost when: v/V >= d/D (your share of votes >= your share of pool) Useful for understanding how much veSPECTRA you need for max boost in a given pool at a given deposit size. |
| spectra_get_yield_curveA | Show the yield curve (term structure) for a given underlying asset across all chains. Fetches all active Spectra PTs matching the underlying (e.g., "USDC", "ETH"), sorts by maturity, and displays implied APY at each point on the curve. This is the fixed-income view: "What rate can I lock for 30 days vs 90 days vs 180 days?" Helps curators spot term premium anomalies, compare cross-chain rates at similar maturities, and choose optimal maturity targets. Handles symbol variants automatically (USDC.e, WETH, wstETH → normalized). Use spectra_get_pt_details or mv_check_ibt_health to drill into a specific maturity. Use spectra_get_pool_capacity to check depth at your capital size. Use spectra_compare_yield for fixed-vs-variable analysis on a specific PT. |
| spectra_scan_yt_arbitrageA | Scan all Spectra chains for YT (Yield Token) arbitrage opportunities. Compares the IBT's actual current variable APR against the rate implied by the YT's market price. When these diverge significantly, an arbitrage opportunity may exist:
Returns opportunities sorted by absolute spread, with capital-aware entry sizing, break-even analysis, IBT APR composition (organic base yield vs external incentive programs — critical for assessing whether the spread is driven by sustainable yield), and external Merkl campaign APR when available. Execution mechanics:
Use spectra_compare_yield for a detailed fixed-vs-variable breakdown on a specific pool. Use spectra_get_pool_activity to monitor recent trading patterns in the target pool. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| metavault-overview | |
| curator-strategy-guide |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Finanzgoblin/spectra-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server