Philidor DeFi Vault Risk Analytics

Search 700+ DeFi vaults, compare risk scores, analyze protocols. No API key needed.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
81%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'list_baskets' description lacks action verbin list_baskets
  • LOWTool 'list_rwa' description lacks action verbin list_rwa
  • LOWTool 'get_oracles' description lacks action verbin get_oracles

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,935Tokens (tool definitions)
~1.4 KBTypical response size
Significant attention impact (3.86% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "defi-vaults": {
      "url": "https://mcp.philidor.io/api/mcp"
    }
  }
}

Remote endpoints

https://mcp.philidor.io/api/mcpstreamable-http

What it can do

Tool inventory

Tools (24)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒search_vaults(query, chain, protocol, protocolVersion, asset, ...)

Search and filter DeFi vaults by chain, protocol, asset, risk tier, TVL, and more. Returns a paginated list with risk scores and APR.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search by vault name, symbol, asset, protocol, or curator"
    },
    "chain": {
      "type": "string",
      "description": "Filter by chain name or slug (e.g. Ethereum, Base, Arbitrum, Solana)"
    },
    "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)."
    },
    "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."
    },
    "asset": {
      "type": "string",
      "description": "Filter by asset symbol (e.g. USDC, WETH)"
    },
    "riskTier": {
      "type": "string",
      "description": "Filter by risk tier: Prime, Core, or Edge"
    },
    "minTvl": {
      "type": "number",
      "description": "Minimum TVL in USD"
    },
    "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."
    },
    "sortBy": {
      "type": "string",
      "description": "Sort field: tvl_usd, apr_net, name, last_synced_at"
    },
    "sortOrder": {
      "type": "string",
      "description": "Sort order: asc or desc"
    },
    "limit": {
      "type": "number",
      "description": "Max results (default 10, max 50)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_vault(id, network, address)

Get detailed information about a specific DeFi vault including risk breakdown, recent events, and historical snapshots. Lookup by ID or by network + address.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Vault ID (e.g. morpho-1-0x...)"
    },
    "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."
    },
    "address": {
      "type": "string",
      "description": "Vault address in the chain's namespace: 0x-hex on EVM chains, base58 (case-sensitive) on Solana"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_vault_risk_breakdown(network, address)

Get a detailed breakdown of a vault's risk vectors: Asset Composition, Platform and Strategy, Control and Governance, and History scores with sub-metrics.

Input Schema

{
  "type": "object",
  "properties": {
    "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."
    },
    "address": {
      "type": "string",
      "description": "Vault address in the chain's namespace: 0x-hex on EVM chains, base58 (case-sensitive) on Solana"
    }
  },
  "required": [
    "network",
    "address"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒list_markets(protocol, version, chain, limit, sortBy)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "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)."
    },
    "version": {
      "type": "string",
      "description": "Filter by protocol version: v3, v4, or klend. Use version=v4 with protocol=aave."
    },
    "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": {
      "type": "string",
      "enum": [
        "total_supplied_usd",
        "total_borrowed_usd",
        "reserve_count",
        "name"
      ],
      "description": "Sort field (default total_supplied_usd)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_market(marketId)

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.

Input Schema

{
  "type": "object",
  "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."
    }
  },
  "required": [
    "marketId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_market_events(marketId, limit)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "marketId": {
      "type": "string",
      "description": "Market id from list_markets. Spoke or composed hub parent (aave-v4-1-hub-global-dollar)."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max events (default 20)"
    }
  },
  "required": [
    "marketId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒check_loop_venue(marketId, collateral, debt)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "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)."
    },
    "debt": {
      "type": "string",
      "description": "Debt asset symbol you will borrow (e.g. USDC, USDT, GHO)."
    }
  },
  "required": [
    "marketId",
    "collateral",
    "debt"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒list_ondo_assets(search, page, limit)

Search the paginated Ondo Global Markets catalog: tokenized securities, portfolios and exact issuer-reported deployments. Includes API-only and CSV-only entries, freshness and identity conflicts. This is not a list of verified risk scores.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "maxLength": 100
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991,
      "default": 1
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_ondo_asset(symbol)

Get an exact Ondo token: issuer market observations, portfolio constituents, source freshness and chain/address assessment links. Prices are display-only; constituents have no inferred weights or inherited ratings.

Input Schema

{
  "type": "object",
  "properties": {
    "symbol": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._-]{1,32}$",
      "description": "Exact case-sensitive Ondo token symbol, for example SPYon; obtain it from list_ondo_assets."
    }
  },
  "required": [
    "symbol"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_ondo_asset_stream(symbol)

Get latest retained Ondo display prices and minute OHLC. Preserve source/receipt ages, evaluatedAt, conflicts and collector gaps; fresh is a 120-second policy at evaluatedAt, not an execution guarantee. Missing values are not zero. This does not open an issuer subscription or supply history.

Input Schema

{
  "type": "object",
  "properties": {
    "symbol": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._-]{1,32}$",
      "description": "Exact case-sensitive Ondo token symbol, for example SPYon; obtain it from list_ondo_assets."
    }
  },
  "required": [
    "symbol"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_ondo_asset_data(symbol, interval, range)

Get Ondo OHLC, dividends, shares-multiplier history and per-chain token supply. Family availability and source clocks are explicit. Valid windows: 1min/1day, 5min/1day, 15min/1day, 1hour/1month, 4hour/1month, 12hour/3month, or 1day with 3month, 6month, 1year, all. Defaults to 1hour/1month. Underlying dividend yield is a decimal, not token distribution yield. Supply is in token units, not USD.

Input Schema

{
  "type": "object",
  "properties": {
    "symbol": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._-]{1,32}$",
      "description": "Exact case-sensitive Ondo token symbol, for example SPYon; obtain it from list_ondo_assets."
    },
    "interval": {
      "type": "string",
      "enum": [
        "1min",
        "5min",
        "15min",
        "1hour",
        "4hour",
        "12hour",
        "1day"
      ],
      "default": "1hour"
    },
    "range": {
      "type": "string",
      "enum": [
        "1day",
        "1month",
        "3month",
        "6month",
        "1year",
        "all"
      ],
      "default": "1month"
    }
  },
  "required": [
    "symbol"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_native_asset_assessment(network, identifier)

Get the current effective score and signed reviewed base score for an exact Aptos, Sui, Noble, Stellar or XRP Ledger token. Preserve identifier case. A missing assessment is not a zero score. Evidence and signatures require the caller’s own entitled Philidor API key. verified is the API assertion, not independent verification against a reviewer trust root.

Input Schema

{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "aptos:1",
        "sui:mainnet",
        "cosmos:noble-1",
        "stellar:pubnet",
        "xrpl:0"
      ]
    },
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "description": "Complete native token identifier, preserving case"
    }
  },
  "required": [
    "network",
    "identifier"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_native_asset_financials(network, identifier)

Get public issuer financials for an exact Aptos, Sui, Noble, Stellar or XRP Ledger token. Preserve identifier case. Each metric states its unit, fund/global/deployment scope, source and freshness; null means unavailable, not zero. Fund AUM and NAV do not establish token supply, redemption capacity or reserves. Requery by refreshBy; this tool does not return a risk score or private account data.

Input Schema

{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "aptos:1",
        "sui:mainnet",
        "cosmos:noble-1",
        "stellar:pubnet",
        "xrpl:0"
      ]
    },
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "description": "Complete native token identifier, preserving case"
    }
  },
  "required": [
    "network",
    "identifier"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
βšͺcompare_vaults(vaults)

Compare 2-3 DeFi vaults side-by-side on TVL, APR, risk score, risk tier, audited status, and more.

Input Schema

{
  "type": "object",
  "properties": {
    "vaults": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "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."
          },
          "address": {
            "type": "string",
            "description": "Vault address in the chain's namespace: 0x-hex on EVM chains, base58 (case-sensitive) on Solana"
          }
        },
        "required": [
          "network",
          "address"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 3,
      "description": "Array of 2-3 vaults to compare"
    }
  },
  "required": [
    "vaults"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒find_safest_vaults(asset, chain, minTvl)

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).

Input Schema

{
  "type": "object",
  "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,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_protocol_info(protocolId)

Get detailed information about a DeFi protocol including TVL, vault count, versions, auditors, and security incidents.

Input Schema

{
  "type": "object",
  "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)."
    }
  },
  "required": [
    "protocolId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_curator_info(curatorId)

Get detailed information about a vault curator including their managed vaults, TVL, chain distribution, and performance.

Input Schema

{
  "type": "object",
  "properties": {
    "curatorId": {
      "type": "string",
      "description": "Curator ID"
    }
  },
  "required": [
    "curatorId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_market_overview

Get a high-level overview of the DeFi vault market: total TVL, vault count, risk distribution, and TVL by protocol.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒explain_risk_score(score)

Explain what a Philidor risk score means, including the tier (Prime/Core/Edge), how it is calculated, and what the thresholds are.

Input Schema

{
  "type": "object",
  "properties": {
    "score": {
      "type": "number",
      "minimum": 0,
      "maximum": 10,
      "description": "Risk score (0-10) to explain"
    }
  },
  "required": [
    "score"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒list_vaults_with_incidents

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).

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟑check_policy(positions, limits, constraints, issue, agentId)

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 does not recommend a vault. The same inputs produce the same result for every wallet. No Philidor policy is preselected. A missing or unknown API field is an error, never compliant. A caller without an eligible plan gets a structured refusal (required plan, x402 price, upgrade link), never an empty result. Philidor does not prepare transactions.

Input Schema

{
  "type": "object",
  "properties": {
    "positions": {
      "type": "array",
      "items": {
        "type": "object",
        "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",
            "exclusiveMinimum": 0,
            "description": "Position size in USD. Greater than 0."
          }
        },
        "required": [
          "vaultKey",
          "amountUsd"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 100,
      "description": "Positions to check. 1 to 100. This is not a wallet."
    },
    "limits": {
      "type": "object",
      "properties": {
        "maxSharePerCurator": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1
        },
        "maxSharePerProtocol": {
          "$ref": "#/properties/limits/properties/maxSharePerCurator"
        },
        "maxSharePerChain": {
          "$ref": "#/properties/limits/properties/maxSharePerCurator"
        },
        "maxSharePerAsset": {
          "$ref": "#/properties/limits/properties/maxSharePerCurator"
        },
        "maxSharePerOracle": {
          "$ref": "#/properties/limits/properties/maxSharePerCurator"
        },
        "maxSharePerOracleVendor": {
          "$ref": "#/properties/limits/properties/maxSharePerCurator"
        },
        "maxSharePerCluster": {
          "$ref": "#/properties/limits/properties/maxSharePerCurator"
        },
        "maxSharePerBridge": {
          "$ref": "#/properties/limits/properties/maxSharePerCurator"
        },
        "maxSharePerSignerSet": {
          "$ref": "#/properties/limits/properties/maxSharePerCurator"
        }
      },
      "additionalProperties": false,
      "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."
    },
    "constraints": {
      "type": "object",
      "properties": {
        "minTier": {
          "type": "string",
          "enum": [
            "Prime",
            "Core",
            "Edge"
          ]
        },
        "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
        },
        "requireDepositStatus": {
          "type": "string",
          "const": "open"
        },
        "requireWithdrawStatus": {
          "type": "string",
          "const": "open"
        },
        "maxFreshnessSeconds": {
          "type": "integer",
          "minimum": 0,
          "maximum": 31622400
        }
      },
      "additionalProperties": false,
      "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."
    },
    "issue": {
      "type": "boolean",
      "description": "When true, ask the API to issue a compliance attestation. Does not prepare a transaction."
    },
    "agentId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Optional caller reference forwarded to the API. Not a wallet and not a key."
    }
  },
  "required": [
    "positions",
    "limits"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒list_baskets

Returns the structured access refusal for the baskets family. Does not return constituents or weights.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒list_rwa

Returns the structured access refusal for the rwa family. Does not return coverage.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_oracles

Returns the structured access refusal for the oracles family. Does not return freshness.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Recommended Prompts

search_research
Search for information about [topic] using Philidor DeFi Vault Risk Analytics
Expected tools: search_vaults
find_specific
Find [specific item] using Philidor DeFi Vault Risk Analytics
Expected tools: search_vaults
retrieve_data
Get details about [item] from Philidor DeFi Vault Risk Analytics
Expected tools: get_vault
fetch_info
Fetch [information type] using Philidor DeFi Vault Risk Analytics
Expected tools: get_vault
list_items
List all [items] available in Philidor DeFi Vault Risk Analytics
Expected tools: list_markets

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded24 tools
verifiedversion not recorded14 tools
verifiedversion not recorded14 tools
verifiedversion not recorded14 tools
verifiedversion not recorded14 tools
verifiedversion not recorded14 tools