{"serverId":"mcp-registry/io.philidor/defi-vaults","tools":[{"name":"check_loop_venue","fixed":{"name":"check_loop_venue","description":"Underwrite a collateral/debt loop on ONE lending market: score, tier, utilization, borrow APR, deposit status, and recent incidents for both reserves. Does not compute health factor and does not prepare txs. Call this before a protocol MCP preview_action / prepare_action. If you do not have a market id, call list_markets first (Aave V4: protocol=aave, version=v4). Examples: aave-v4-1-main, aave-v4-10-etherfi-cash, aave-v4-1-hub-global-dollar.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["marketId","collateral","debt"],"properties":{"debt":{"type":"string","description":"Debt asset symbol you will borrow (e.g. USDC, USDT, GHO)."},"marketId":{"type":"string","description":"Market id from list_markets. Spoke example: aave-v4-1-main. Hub example: aave-v4-1-hub-global-dollar."},"collateral":{"type":"string","description":"Collateral asset symbol you will post (e.g. weETH, WETH, cbBTC)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":284,"tokensAfter":284},{"name":"check_policy","fixed":{"name":"check_policy","description":"State whether the positions you supply conform to the limits and constraints you supply. Calls POST /v1/graph/check and returns the API compliance attestation (attestation de conformité): compliance (compliant or non_compliant), violations, policy_hash, findings, and snapshotId. When issue is true and the API issues an attestation, the result also includes attestation_id, signerAddress, and the verification URL GET /v1/graph/attestation/{id}/verify. This states conformity with your policy. It do","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["positions","limits"],"properties":{"issue":{"type":"boolean","description":"When true, ask the API to issue a compliance attestation. Does not prepare a transaction."},"limits":{"type":"object","properties":{"maxSharePerAsset":{"$ref":"#/properties/limits/properties/maxSharePerCurator"},"maxSharePerChain":{"$ref":"#/properties/limits/properties/maxSharePerCurator"},"maxSharePerBridge":{"$ref":"#/properties/limits/properties/maxSharePerCurator"},"maxSharePerOracle":{"$ref":"#/properties/limits/properties/maxSharePerCurator"},"maxSharePerCluster":{"$ref":"#/properties/limits/properties/maxSharePerCurator"},"maxSharePerCurator":{"type":"number","maximum":1,"exclusiveMinimum":0},"maxSharePerProtocol":{"$ref":"#/properties/limits/properties/maxSharePerCurator"},"maxSharePerSignerSet":{"$ref":"#/properties/limits/properties/maxSharePerCurator"},"maxSharePerOracleVendor":{"$ref":"#/properties/limits/properties/maxSharePerCurator"}},"description":"Exposure caps as fractions in (0, 1]. Pass {} to set none. Omit a field to leave that dimension unconstrained. No Philidor cap is preselected.","additionalProperties":false},"agentId":{"type":"string","maxLength":200,"minLength":1,"description":"Optional caller reference forwarded to the API. Not a wallet and not a key."},"positions":{"type":"array","items":{"type":"object","required":["vaultKey","amountUsd"],"properties":{"vaultKey":{"type":"string","pattern":"^\\d+:0x[0-9a-f]{40}$","description":"Vault key '{chainId}:{lowercase 0x address}', for example 1:0xabc... with 40 hex digits."},"amountUsd":{"type":"number","description":"Position size in USD. Greater than 0.","exclusiveMinimum":0}},"additionalProperties":false},"maxItems":100,"minItems":1,"description":"Positions to check. 1 to 100. This is not a wallet."},"constraints":{"type":"object","properties":{"minTier":{"enum":["Prime","Core","Edge"],"type":"string"},"allowlist":{"type":"array","items":{"type":"string","pattern":"^\\d+:0x[0-9a-f]{40}$"},"maxItems":1000},"blacklist":{"type":"array","items":{"$ref":"#/properties/constraints/properties/allowlist/items"},"maxItems":1000},"maxFreshnessSeconds":{"type":"integer","maximum":31622400,"minimum":0},"requireDepositStatus":{"type":"string","const":"open"},"requireWithdrawStatus":{"type":"string","const":"open"}},"description":"Optional rules you set: minTier (Prime, Core, or Edge), allowlist and blacklist (max 1000 vault keys each; a key on both lists is not conforming because the blacklist wins), requireDepositStatus and requireWithdrawStatus (open only), maxFreshnessSeconds (integer 0 to 31622400). Omit the object to add none.","additionalProperties":false}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":921,"tokensAfter":921},{"name":"compare_vaults","fixed":{"name":"compare_vaults","description":"Compare 2-3 DeFi vaults side-by-side on TVL, APR, risk score, risk tier, audited status, and more.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["vaults"],"properties":{"vaults":{"type":"array","items":{"type":"object","required":["network","address"],"properties":{"address":{"type":"string","description":"Vault address in the chain's namespace: 0x-hex on EVM chains, base58 (case-sensitive) on Solana"},"network":{"type":"string","description":"Network slug from the chain registry (e.g. ethereum, base, arbitrum, solana). /v1/chains lists slugs for chains with active vaults."}},"additionalProperties":false},"maxItems":3,"minItems":2,"description":"Array of 2-3 vaults to compare"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"explain_risk_score","fixed":{"name":"explain_risk_score","description":"Explain what a Philidor risk score means, including the tier (Prime/Core/Edge), how it is calculated, and what the thresholds are.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["score"],"properties":{"score":{"type":"number","maximum":10,"minimum":0,"description":"Risk score (0-10) to explain"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"find_safest_vaults","fixed":{"name":"find_safest_vaults","description":"Find the highest risk-scored DeFi vaults, optionally filtered by asset, chain, or minimum TVL. Returns the top 10 audited vaults sorted by Philidor risk score (higher = lower assessed risk; scores are not a safety guarantee).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"asset":{"type":"string","description":"Filter by asset symbol (e.g. USDC, WETH)"},"chain":{"type":"string","description":"Filter by chain name or slug (e.g. Ethereum, Base, Arbitrum, Solana)"},"minTvl":{"type":"number","description":"Minimum TVL in USD"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":182,"tokensAfter":182},{"name":"get_curator_info","fixed":{"name":"get_curator_info","description":"Get detailed information about a vault curator including their managed vaults, TVL, chain distribution, and performance.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["curatorId"],"properties":{"curatorId":{"type":"string","description":"Curator ID"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"get_market","fixed":{"name":"get_market","description":"Get one lending market with every reserve it contains: supplied, supply APR, borrowed, borrow APR, utilization and risk tier per reserve. Spoke ids look like aave-v4-10-etherfi-cash. Aave V4 hub parents (aave-v4-1-hub-global-dollar) are composed from the spokes that share that hub; /v1/markets does not serve those ids.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["marketId"],"properties":{"marketId":{"type":"string","description":"Market id from list_markets. Spoke example: aave-v4-10-etherfi-cash. Hub example: aave-v4-1-hub-global-dollar."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"get_market_events","fixed":{"name":"get_market_events","description":"Published risk events for ONE lending market: incidents, bad debt, liquidation cascades (e.g. mass liquidations on a Morpho Blue market). Market ids look like morpho-v1-1-pt-reusd-10dec2026-usdc-91-5. Aave V4 hub ids (aave-v4-1-hub-global-dollar) union the spoke feeds. Not platform stats (get_market_overview) and not the market data itself (get_market).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["marketId"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"Max events (default 20)"},"marketId":{"type":"string","description":"Market id from list_markets. Spoke or composed hub parent (aave-v4-1-hub-global-dollar)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":217,"tokensAfter":217},{"name":"get_market_overview","fixed":{"name":"get_market_overview","description":"Get a high-level overview of the DeFi vault market: total TVL, vault count, risk distribution, and TVL by protocol.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":73,"tokensAfter":73},{"name":"get_oracles","fixed":{"name":"get_oracles","description":"Returns the structured access refusal for the oracles family. Does not return freshness.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":64,"tokensAfter":64},{"name":"get_protocol_info","fixed":{"name":"get_protocol_info","description":"Get detailed information about a DeFi protocol including TVL, vault count, versions, auditors, and security incidents.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["protocolId"],"properties":{"protocolId":{"type":"string","description":"Protocol ID: aave, morpho, spark, compound, yearn, beefy, uniswap, nest, maple, kamino. Aave V4 is listed under aave (aave-v4 is accepted as an alias)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"get_vault","fixed":{"name":"get_vault","description":"Get detailed information about a specific DeFi vault including risk breakdown, recent events, and historical snapshots. Lookup by ID or by network + address.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"id":{"type":"string","description":"Vault ID (e.g. morpho-1-0x...)"},"address":{"type":"string","description":"Vault address in the chain's namespace: 0x-hex on EVM chains, base58 (case-sensitive) on Solana"},"network":{"type":"string","description":"Network slug from the chain registry (e.g. ethereum, base, arbitrum, solana). /v1/chains lists slugs for chains with active vaults."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":197,"tokensAfter":197},{"name":"get_vault_risk_breakdown","fixed":{"name":"get_vault_risk_breakdown","description":"Get a detailed breakdown of a vault's risk vectors: Asset Composition, Platform and Strategy, Control and Governance, and History scores with sub-metrics.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["network","address"],"properties":{"address":{"type":"string","description":"Vault address in the chain's namespace: 0x-hex on EVM chains, base58 (case-sensitive) on Solana"},"network":{"type":"string","description":"Network slug from the chain registry (e.g. ethereum, base, arbitrum, solana). /v1/chains lists slugs for chains with active vaults."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":190,"tokensAfter":190},{"name":"list_baskets","fixed":{"name":"list_baskets","description":"Returns the structured access refusal for the baskets family. Does not return constituents or weights.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":68,"tokensAfter":68},{"name":"list_markets","fixed":{"name":"list_markets","description":"List lending markets: the market a depositor actually picks (Aave/Spark pool, Aave V4 spoke, Compound Comet, Morpho Blue pair, or Kamino K-Lend market). Aave V4 spokes that share a liquidity hub are grouped under a composed parent (aave-v4-1-hub-global-dollar). The API still keys each market on the spoke. NOTE: this is not `get_market_overview`, which returns platform-wide totals across all vaults.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"chain":{"type":["number","string"],"description":"Filter by chain: integer chain id (e.g. 1, 8453) or slug (e.g. ethereum, solana)"},"limit":{"type":"number","description":"Results per page (1-100, default 20)"},"sortBy":{"enum":["total_supplied_usd","total_borrowed_usd","reserve_count","name"],"type":"string","description":"Sort field (default total_supplied_usd)"},"version":{"type":"string","description":"Filter by protocol version: v3, v4, or klend. Use version=v4 with protocol=aave."},"protocol":{"type":"string","description":"Filter by protocol id: aave, spark, compound, morpho, kamino. Aave V4 is protocol=aave plus version=v4 (aave-v4 is accepted as an alias)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":347,"tokensAfter":347},{"name":"list_rwa","fixed":{"name":"list_rwa","description":"Returns the structured access refusal for the rwa family. Does not return coverage.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":61,"tokensAfter":61},{"name":"list_vaults_with_incidents","fixed":{"name":"list_vaults_with_incidents","description":"List all vaults that had a recent critical incident (last 365 days). Critical = severity Critical or incident_severity major. Results are sorted by TVL descending, then by time since event ascending (most recent first).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"search_vaults","fixed":{"name":"search_vaults","description":"Search and filter DeFi vaults by chain, protocol, asset, risk tier, TVL, and more. Returns a paginated list with risk scores and APR.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"asset":{"type":"string","description":"Filter by asset symbol (e.g. USDC, WETH)"},"chain":{"type":"string","description":"Filter by chain name or slug (e.g. Ethereum, Base, Arbitrum, Solana)"},"limit":{"type":"number","description":"Max results (default 10, max 50)"},"query":{"type":"string","description":"Search by vault name, symbol, asset, protocol, or curator"},"minTvl":{"type":"number","description":"Minimum TVL in USD"},"sortBy":{"type":"string","description":"Sort field: tvl_usd, apr_net, name, last_synced_at"},"protocol":{"type":"string","description":"Filter by protocol ID: aave, morpho, spark, compound, yearn, beefy, uniswap, nest, maple, kamino. Aave V4 is protocol=aave plus protocolVersion=v4 (aave-v4 is accepted as an alias)."},"riskTier":{"type":"string","description":"Filter by risk tier: Prime, Core, or Edge"},"sortOrder":{"type":"string","description":"Sort order: asc or desc"},"depositable":{"type":"boolean","description":"Filter by current ability to accept new deposits. When true, vaults whose depositability is not yet indexed are still included; when false, only vaults whose maxDeposit on-chain is zero (caps reached, paused, or supply queue saturated) are returned."},"protocolVersion":{"type":"string","description":"Filter by protocol generation: v3, v4, v3-lido, v3-horizon, klend, kvault. Required to isolate Aave V4 (protocol=aave, protocolVersion=v4). Vaults list this as protocol_version."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":484,"tokensAfter":484}],"toolsChanged":18,"tokensSaved":0,"todo":[{"tool":"get_native_asset_assessment","params":["network"]},{"tool":"get_native_asset_financials","params":["network"]},{"tool":"get_ondo_asset_data","params":["range","interval"]},{"tool":"list_ondo_assets","params":["page","limit","search"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}