{"serverId":"mcp-registry/com.fintechhodl/intel","tools":[{"name":"get_closure","fixed":{"name":"get_closure","description":"Everything an entity (protocol, asset, stablecoin, curator) depends on, transitively, as a graph. Useful for tracing what a protocol or stablecoin ultimately relies on. Entity ids appear in dependency graphs, for example protocol:morpho-blue. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 USDC on Base (x402), charged only for a successful answer.","inputSchema":{"type":"object","required":["entity"],"properties":{"entity":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["protocol:morpho-blue","protocol:aave-v3"],"description":"Entity id: protocol:<slug>, stablecoin:<id>, oracle:<name>, curator:<name> or issuer:<name>, as found in dependency graphs."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":231,"tokensAfter":231},{"name":"get_dependency_graph","fixed":{"name":"get_dependency_graph","description":"What one opportunity depends on: protocols, stablecoins and their issuers, oracles, bridges and vault curators, as a graph. Useful for finding hidden shared exposure before combining positions. The id comes from the free /api/v1/opportunities. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 USDC on Base (x402), charged only for a successful answer. In this MCP server, ids come from search_opportunities.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["e0672197-9f3e-4414-bca5-e6b4c90aa469"],"description":"Opportunity id, as returned by the free /api/v1/opportunities route."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":231,"tokensAfter":231},{"name":"get_dependents","fixed":{"name":"get_dependents","description":"Which tracked Base opportunities depend on an entity (protocol, stablecoin, oracle, curator), with their total TVL. Useful for sizing the impact of an exploit, depeg or oracle failure. Entity ids appear in dependency graphs, for example protocol:morpho-blue. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 USDC on Base (x402), charged only for a successful answer.","inputSchema":{"type":"object","required":["entity"],"properties":{"entity":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["protocol:morpho-blue","protocol:aave-v3"],"description":"Entity id: protocol:<slug>, stablecoin:<id>, oracle:<name>, curator:<name> or issuer:<name>, as found in dependency graphs."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":237,"tokensAfter":237},{"name":"get_history","fixed":{"name":"get_history","description":"Daily history of one opportunity's APY, TVL and risk scores. Useful for checking whether a yield is stable or newly inflated, and for trend charts. The id comes from the free /api/v1/opportunities. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 USDC on Base (x402), charged only for a successful answer. In this MCP server, ids come from search_opportunities.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["e0672197-9f3e-4414-bca5-e6b4c90aa469"],"description":"Opportunity id, as returned by the free /api/v1/opportunities route."},"days":{"type":"integer","maximum":730,"minimum":1,"examples":[30],"description":"Look-back in days (default 30)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":248,"tokensAfter":248},{"name":"get_incidents","fixed":{"name":"get_incidents","description":"Labelled incidents (exploits, oracle failures, depegs, TVL collapses) affecting Base protocols and stablecoins. Useful for a protocol or stablecoin track record before trusting it with funds. Entity ids appear in dependency graphs. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.02 USDC on Base (x402), charged only for a successful answer.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","maximum":500,"minimum":1,"description":"At most this many incidents (default 100)."},"entity":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["protocol:morpho-blue","protocol:aave-v3"],"description":"Only incidents for this entity (optional)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":231,"tokensAfter":231},{"name":"get_lending_rates","fixed":{"name":"get_lending_rates","description":"Lending rates on Base: supply APY for every tracked money market and lending vault (Aave, Morpho, Compound, Moonwell and others), quoted next to the APY lenders actually earned over 7 and 30 days, read on-chain, with a risk score. Useful for choosing where to lend USDC, ETH or stablecoins. Ids work with every other route. 404 for unknown paths and 400 for invalid arguments, before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 USDC on Base (x402), charged only for a ","inputSchema":{"type":"object","properties":{"sort":{"enum":["risk_adjusted","realized_apy","quoted_apy","sustainable_apy","tvl"],"type":"string","description":"Order: risk_adjusted (default) ranks by opportunity score; realized_apy by the 30-day realized APY; sustainable_apy by the APY expected once incentives fade."},"asset":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,20}$","examples":["USDC"],"description":"Token symbol, e.g. USDC or WETH."},"limit":{"type":"integer","maximum":50,"minimum":1,"description":"How many items (default 20)."},"min_apy":{"type":"number","maximum":100000,"minimum":0,"description":"Minimum quoted APY, percent."},"risk_max":{"type":"number","maximum":100,"minimum":0,"description":"Maximum risk score (0-100, lower is lower modelled risk)."},"stable_only":{"type":"boolean","description":"Only stablecoin principal."},"realized_only":{"type":"boolean","description":"Only opportunities with a realized on-chain APY."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":426,"tokensAfter":426},{"name":"get_opportunity_card","fixed":{"name":"get_opportunity_card","description":"Full risk card for one Base yield opportunity: 0-100 risk score with the main risks and their evidence, yield sources, sustainable APY, expected return, liquidity, dependencies and recent risk events. Useful before depositing into, recommending or comparing a Base yield. The id comes from the free /api/v1/opportunities. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 USDC on Base (x402), charged only for a succes","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["e0672197-9f3e-4414-bca5-e6b4c90aa469"],"description":"Opportunity id, as returned by the free /api/v1/opportunities route."},"capital":{"type":"number","maximum":1000000000,"minimum":1,"examples":[10000],"description":"Capital in USD for the expected-return figures (default 10000)."},"duration":{"type":"integer","maximum":1825,"minimum":1,"examples":[365],"description":"Holding period in days for the expected-return figures (default 365)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":323,"tokensAfter":323},{"name":"get_opportunity_score","fixed":{"name":"get_opportunity_score","description":"Scoring breakdown for one opportunity: total risk, the eight risk dimensions with every factor and its input, sustainability, liquidity, slippage, position size and confidence. Useful for auditing or explaining a risk score. The id comes from the free /api/v1/opportunities. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 USDC on Base (x402), charged only for a successful answer. In this MCP server, ids come from ","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["e0672197-9f3e-4414-bca5-e6b4c90aa469"],"description":"Opportunity id, as returned by the free /api/v1/opportunities route."},"capital":{"type":"number","maximum":1000000000,"minimum":1,"examples":[10000],"description":"Capital in USD for the expected-return figures (default 10000)."},"duration":{"type":"integer","maximum":1825,"minimum":1,"examples":[365],"description":"Holding period in days for the expected-return figures (default 365)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":323,"tokensAfter":323},{"name":"get_protocol_risk","fixed":{"name":"get_protocol_risk","description":"Risk profile of one protocol on Base: age, TVL history, audits, exploit history, governance (admin, timelock, multisig, upgradeability, pause) and the risk of its opportunities. Useful for due diligence on a protocol. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.02 USDC on Base (x402), charged only for a successful answer.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["morpho-blue","aave-v3"],"description":"DeFiLlama protocol slug."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"get_risk_events","fixed":{"name":"get_risk_events","description":"Recent risk events on Base DeFi: TVL drops, depegs, exploits, APY moves and Morpho vault setting changes, with severity. Useful for monitoring positions or screening protocols for recent trouble. Entity ids appear in dependency graphs. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.02 USDC on Base (x402), charged only for a successful answer.","inputSchema":{"type":"object","properties":{"days":{"type":"integer","maximum":90,"minimum":1,"examples":[7],"description":"Look-back in days (default 7)."},"limit":{"type":"integer","maximum":500,"minimum":1,"description":"At most this many events (default 100)."},"entity":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["protocol:morpho-blue","protocol:aave-v3"],"description":"Only events for this entity (optional)."},"severity":{"enum":["low","medium","high","critical"],"type":"string","description":"Lowest severity to include (default low)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":299,"tokensAfter":299},{"name":"get_stablecoin_risk","fixed":{"name":"get_stablecoin_risk","description":"Peg and supply risk of one stablecoin on Base: price history, supply change, mechanism and the opportunities that hold it. Useful before holding or lending a stablecoin, or when a depeg is suspected. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.02 USDC on Base (x402), charged only for a successful answer.","inputSchema":{"type":"object","required":["symbol"],"properties":{"symbol":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,40}$","examples":["USDC","USDS"],"description":"Stablecoin symbol."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":184,"tokensAfter":184},{"name":"get_yield_farming","fixed":{"name":"get_yield_farming","description":"Yield farming opportunities on Base: liquidity pools, concentrated liquidity (Aerodrome Slipstream) and auto-compounding vaults, ranked risk-adjusted, with quoted APY split into fees and token rewards, the sustainable APY once incentives fade, TVL, a risk score, and realized APY where measured. Useful for picking farms worth their risk. Ids work with every other route. 404 for unknown paths and 400 for invalid arguments, before any payment; 503 while data refreshes; charged only for a 200. Price","inputSchema":{"type":"object","properties":{"sort":{"enum":["risk_adjusted","realized_apy","quoted_apy","sustainable_apy","tvl"],"type":"string","description":"Order: risk_adjusted (default) ranks by opportunity score; realized_apy by the 30-day realized APY; sustainable_apy by the APY expected once incentives fade."},"type":{"enum":["lp","stable_lp","concentrated","vault"],"type":"string","description":"lp, stable_lp (stablecoin pairs), concentrated (concentrated liquidity) or vault (auto-compounding vaults)."},"asset":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,20}$","examples":["USDC"],"description":"Token symbol, e.g. USDC or WETH."},"limit":{"type":"integer","maximum":50,"minimum":1,"description":"How many items (default 20)."},"min_apy":{"type":"number","maximum":100000,"minimum":0,"description":"Minimum quoted APY, percent."},"risk_max":{"type":"number","maximum":100,"minimum":0,"description":"Maximum risk score (0-100, lower is lower modelled risk)."},"stable_only":{"type":"boolean","description":"Only stablecoin principal."},"realized_only":{"type":"boolean","description":"Only opportunities with a realized on-chain APY."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":481,"tokensAfter":481},{"name":"get_yield_premium","fixed":{"name":"get_yield_premium","description":"Why one opportunity pays more than a reference: the APY gap in percentage points, explained by risk dimensions, incentives and extra dependencies. Useful for judging whether a higher yield is worth its extra risk. The id comes from the free /api/v1/opportunities. Unknown ids answer 404 and invalid arguments 400 before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 USDC on Base (x402), charged only for a successful answer. In this MCP server, ids come from search_oppo","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["e0672197-9f3e-4414-bca5-e6b4c90aa469"],"description":"Opportunity id, as returned by the free /api/v1/opportunities route."},"benchmark":{"type":"string","pattern":"^[A-Za-z0-9:._#+-]{1,120}$","examples":["e0672197-9f3e-4414-bca5-e6b4c90aa469"],"description":"Reference opportunity id (optional); by default a low-risk lending market on the same asset."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":297,"tokensAfter":297},{"name":"get_yields","fixed":{"name":"get_yields","description":"Realized APY for Base vaults and lending markets: the APY depositors actually earned over 7 and 30 days, read from on-chain share prices, next to the quoted APY, with a verdict (matches, overstated, understated) and a risk score. Useful for finding the best yields on Base and spotting advertised yields that are not being paid. Ids work with every other route. 404 for unknown paths and 400 for invalid arguments, before any payment; 503 while data refreshes; charged only for a 200. Price: $0.01 US","inputSchema":{"type":"object","properties":{"sort":{"enum":["risk_adjusted","realized_apy","quoted_apy","sustainable_apy","tvl"],"type":"string","description":"Order: risk_adjusted (default) ranks by opportunity score; realized_apy by the 30-day realized APY; sustainable_apy by the APY expected once incentives fade."},"type":{"enum":["lending","vault","staking","fixed_yield","lp","stable_lp","concentrated","rwa"],"type":"string","description":"Opportunity type."},"asset":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,20}$","examples":["USDC"],"description":"Token symbol, e.g. USDC or WETH."},"limit":{"type":"integer","maximum":50,"minimum":1,"description":"How many items (default 20)."},"min_apy":{"type":"number","maximum":100000,"minimum":0,"description":"Minimum quoted APY, percent."},"risk_max":{"type":"number","maximum":100,"minimum":0,"description":"Maximum risk score (0-100, lower is lower modelled risk)."},"stable_only":{"type":"boolean","description":"Only stablecoin principal."},"realized_only":{"type":"boolean","description":"Only opportunities with a realized on-chain APY."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":465,"tokensAfter":465},{"name":"list_prices","fixed":{"name":"list_prices","description":"The list of paid routes with their prices. Free.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":46,"tokensAfter":46},{"name":"search_opportunities","fixed":{"name":"search_opportunities","description":"Search and filter every tracked Base yield opportunity, with total risk and opportunity scores. Useful for finding candidates and their ids before buying a card, score, history or dependency graph. Free, at most 60 calls an hour per client. Free; at most 60 calls an hour per client.","inputSchema":{"type":"object","properties":{"q":{"type":"string","pattern":"^[A-Za-z0-9 ._-]{0,60}$","examples":["usdc morpho"],"description":"Search words over protocol, market and asset names (letters, digits, spaces, dots, dashes, underscores; at most 60)."},"type":{"enum":["lending","vault","staking","fixed_yield","lp","stable_lp","concentrated","rwa"],"type":"string","description":"Opportunity type."},"asset":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,20}$","examples":["USDC"],"description":"Token symbol the opportunity holds."},"limit":{"type":"integer","maximum":100,"minimum":1,"description":"At most this many results (default 20)."},"capital":{"type":"number","maximum":1000000000,"minimum":1,"examples":[10000],"description":"Capital in USD for the expected-return figures (default 10000)."},"min_apy":{"type":"number","maximum":100000,"minimum":0,"description":"Lowest APY to include, in percent."},"duration":{"type":"integer","maximum":1825,"minimum":1,"examples":[365],"description":"Holding period in days for the expected-return figures (default 365)."},"risk_max":{"type":"number","maximum":100,"minimum":0,"description":"Highest total risk score to include (0-100, lower is lower modelled risk)."},"management":{"enum":["passive","active","any"],"type":"string","description":"Passive (hold), active (needs rebalancing) or any (default)."},"stable_only":{"type":"boolean","description":"Only opportunities whose principal is a stablecoin."},"include_direct":{"type":"boolean","description":"Also list plain token holdings."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":533,"tokensAfter":533}],"toolsChanged":16,"tokensSaved":0,"todo":[],"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."}