FinTech Hodl Base DeFi risk intel
Server Details
Risk scores, dependencies and risk events for Base DeFi yields. Pay per call in USDC via x402.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 13 tools
Most tools target clearly distinct resource/action pairs: opportunity scoring, history, dependency graph, protocol risk, stablecoin risk, and incident/event monitoring. A few boundaries are softer, especially get_incidents vs get_risk_events and get_opportunity_card vs get_opportunity_score, and get_closure vs get_dependency_graph both return dependency graphs for different starting points.
Tool names follow a consistent snake_case convention, almost all using get_<resource> with list_prices and search_opportunities as appropriate discovery verbs. The pattern is predictable and readable across the entire set.
Thirteen tools is well within a reasonable scope for a DeFi risk-intelligence server, and each tool maps to a meaningful analysis surface. The set is broad enough to cover discovery, scoring, dependencies, and risk events without feeling padded.
The surface covers the core lifecycle well: search opportunities, inspect cards/scores/history, analyze yield premiums, trace dependencies and dependents, and review protocol, stablecoin, incident, and risk-event data. Minor gaps remain around dedicated risk views for non-protocol/non-stablecoin entities such as oracles, bridges, and curators, even though they appear in dependency graphs.
Available Tools
13 toolsget_closureAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | Entity id: protocol:<slug>, stablecoin:<id>, oracle:<name>, curator:<name> or issuer:<name>, as found in dependency graphs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well by disclosing 404 for unknown ids, 400 for invalid arguments, 503 during refresh, and that billing only occurs on a 200. It could still say more about output shape or graph size limits, but the error and payment behavior are unusually transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the core behavior before adding examples, status codes, and pricing. The pricing sentence is slightly redundant with the 'charged only for a 200' clause but remains useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, it covers purpose, a representative use case, entity id format, error behavior, and payment terms. It is nearly complete, though it could clarify the returned graph's shape or whether pagination/truncation applies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, including entity pattern, examples, and allowed prefixes, so the schema already fully documents the single parameter. The description's example (protocol:morpho-blue) and entity-type note mostly repeat schema information rather than adding new semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: returning everything an entity depends on transitively as a graph. The word 'transitively' distinguishes it somewhat from dependency-graph siblings, but it does not explicitly name get_dependency_graph or get_dependents as the direct or reverse alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a use case ('tracing what a protocol or stablecoin ultimately relies on'), which implies when to use it. However, it offers no explicit when-not guidance or comparison to sibling tools like get_dependency_graph or get_dependents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dependency_graphAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opportunity id, as returned by the free /api/v1/opportunities route. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the paid x402 model ($0.01 USDC on Base), that billing only occurs on a 200, and the error semantics (404 unknown id, 400 invalid args, 503 during data refresh). That is exactly the compensation needed for a bare schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and use case, then operational detail; nearly every sentence earns its place. The billing caveat is stated twice ("charged only for a 200" and "charged only for a successful answer"), which is minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers purpose, id sourcing, pricing and failure modes. It stops short of describing the graph payload itself (node/edge shape, size, ordering), which is the one thing left for an agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds real value by naming the provenance of the id both externally (/api/v1/opportunities) and within this server (search_opportunities). It does not discuss the id pattern or format beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"What one opportunity depends on: protocols, stablecoins and their issuers, oracles, bridges and vault curators, as a graph" names a specific resource, direction (outbound dependencies) and node types. That implicitly separates it from the reverse-direction sibling get_dependents, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Useful for finding hidden shared exposure before combining positions" gives a concrete scenario for reaching for this tool rather than a plain score lookup. It also tells the agent where to source the required id (search_opportunities inside this MCP server, or the free /api/v1/opportunities route), but it never names an alternative tool or states an exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dependentsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | Entity id: protocol:<slug>, stablecoin:<id>, oracle:<name>, curator:<name> or issuer:<name>, as found in dependency graphs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: 404 for unknown ids, 400 for invalid arguments, 503 while data refreshes, and all errors resolve before payment. It also discloses the billing model (x402, $0.01 USDC on Base, charged only for a 200), which is exactly the kind of cost/irreversibility context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then use case, then id format, then error/pricing behavior. Every sentence carries distinct information. It is dense but not padded; the pricing sentence is a little long relative to the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers purpose, id provenance, failure modes and cost — which is most of what an agent needs. It partially describes the response ('with their total TVL') but says nothing about result shape, ordering, or size limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the entity id format with examples, so the baseline is 3. The description adds real value by naming dependency graphs as the source of valid ids and repeating the id syntax (e.g. protocol:morpho-blue), reducing the chance of a malformed call. No further syntax or edge-case detail is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns tracked Base opportunities that depend on a named entity, plus their aggregate TVL. It also enumerates the entity kinds (protocol, stablecoin, oracle, curator), which pins down scope. It does not explicitly contrast with the reverse-direction sibling get_dependency_graph, so the boundary is left slightly implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete decision context — 'sizing the impact of an exploit, depeg or oracle failure' — which tells the agent when this tool is the right one. It also notes where entity ids come from ('appear in dependency graphs'), which is effectively a prerequisite. No explicit when-not or named alternative is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historyAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opportunity id, as returned by the free /api/v1/opportunities route. | |
| days | No | Look-back in days (default 30). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the x402 payment model ($0.01 USDC on Base), that charging only occurs on a 200, and the failure semantics (404 unknown id, 400 invalid args, 503 during refresh). These are exactly the operational facts an agent needs before invoking a paid endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The important facts are front-loaded and the description is short, but it repeats itself: id provenance is stated twice ('comes from the free /api/v1/opportunities' and 'ids come from search_opportunities'), as is the 'charged only for a 200 / successful answer' point. Two sentences could be merged or dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no annotations and no output schema, the description covers purpose, price, error codes, and id provenance. The remaining gap is the return shape (array length, whether points are sorted or sparse), which the agent must infer from 'daily history'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds provenance semantics for id (it must come from search_opportunities within this MCP server, and invalid ids cost nothing because they 404 before payment). The days parameter is left entirely to the schema, which documents it adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and shape: daily history of one opportunity's APY, TVL and risk scores, keyed by a single id. It distinguishes itself from siblings like get_opportunity_score and get_opportunity_card by being a time series rather than a point-in-time view, and it names the sibling that produces the id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for checking whether a yield is stable or newly inflated, and for trend charts' gives concrete usage contexts, and it explicitly routes the agent to search_opportunities for the id. It stops short of saying when NOT to use it (e.g., for a single current snapshot, use get_opportunity_score instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incidentsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | At most this many incidents (default 100). | |
| entity | No | Only incidents for this entity (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses 404 for unknown ids, 400 for invalid arguments before payment, 503 during refreshes, and that charging occurs only on a 200. It omits return shape or pagination behavior, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core purpose and is mostly waste-free. The payment point is repeated ('charged only for a 200' and 'charged only for a successful answer'), which is minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description supplies strong operational context: error semantics, payment conditions, price, and incident categories. It stops short of explaining what an incident record contains, which leaves a small gap for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the formal parameter docs are complete. The description adds real semantic context for the 'entity' parameter by noting that entity ids appear in dependency graphs, helping the agent know where to source valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Labelled incidents') with concrete categories (exploits, oracle failures, depegs, TVL collapses) and domain scope (Base protocols and stablecoins). It does not explicitly differentiate itself from siblings like get_risk_events or get_protocol_risk, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: 'Useful for a protocol or stablecoin track record before trusting it with funds.' That tells the agent when it is valuable, though it names no alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_opportunity_cardAInspect
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 successful answer. In this MCP server, ids come from search_opportunities.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opportunity id, as returned by the free /api/v1/opportunities route. | |
| capital | No | Capital in USD for the expected-return figures (default 10000). | |
| duration | No | Holding period in days for the expected-return figures (default 365). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the x402 price ($0.01 USDC on Base), that billing occurs only on a 200, and the failure modes (404 unknown id, 400 invalid args, 503 during data refresh) with the guarantee that 404/400 fire before payment. That is exactly the behavioral context an agent needs before calling a paid endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the card contains, then usage, then error/pricing semantics. Minor redundancy: the pay-only-on-success rule appears twice ('charged only for a 200' and 'charged only for a successful answer'), and the price sentence partly repeats itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, and the description compensates fully: it enumerates return contents, the id provenance, error codes, and payment semantics. An agent has everything needed to decide, prepare arguments, and interpret failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value beyond the schema by naming the MCP-side source for the required id (search_opportunities), which the schema only describes in terms of the raw HTTP route. Capital and duration are left entirely to the schema, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Full risk card for one Base yield opportunity') and enumerates the payload: risk score, yield sources, sustainable APY, liquidity, dependencies, recent risk events. It does not explicitly contrast with the closest sibling, get_opportunity_score, so an agent must infer which returns the full card versus the score alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful before depositing into, recommending or comparing a Base yield' gives clear call contexts, and 'In this MCP server, ids come from search_opportunities' routes the agent to the correct upstream tool for the required id. No explicit when-not-use or exclusions against score/graph siblings, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_opportunity_scoreAInspect
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 search_opportunities.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Opportunity id, as returned by the free /api/v1/opportunities route. | |
| capital | No | Capital in USD for the expected-return figures (default 10000). | |
| duration | No | Holding period in days for the expected-return figures (default 365). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description carries the full burden well: it discloses the billing model ($0.01 USDC on Base via x402), that the charge applies only to a successful answer, and the distinct failure behaviors (404 for unknown ids, 400 for invalid arguments before any payment, 503 while data refreshes). That is exactly the kind of operational context an agent needs to decide whether and how to call it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded, with the purpose and the response contents first, followed by usage and the id provenance. There is minor redundancy: the price is stated twice ("charged only for a 200" and "charged only for a successful answer"), and the id source appears in two places, which makes the brief feel slightly padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe the return shape, and it does so concretely by naming each section of the breakdown. Combined with the disclosed error codes, billing rules, and id provenance, an agent has everything needed to call this correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter carries its own description with default and range, so the schema does the heavy lifting. The description adds little for the inputs: the connection between `capital` and the "position size" figure is only implied, and `duration` is never addressed. Baseline 3 applies per the >80% coverage rule.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely and enumerates what the response contains: total risk, eight risk dimensions with every factor and its input, sustainability, liquidity, slippage, position size, and confidence. That enumeration distinguishes it from the thin summary offered by get_opportunity_card and from get_protocol_risk, without requiring an agent to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the use case explicitly ("Useful for auditing or explaining a risk score") and it names the prerequisite source: ids come from search_opportunities in this MCP server, or from the free /api/v1/opportunities route. It stops short of stating when NOT to use it, such as a pointer to get_opportunity_card for lightweight lookups, and it leaves the choice between this tool and get_protocol_risk to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_protocol_riskAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | DeFiLlama protocol slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses HTTP error semantics (404 for unknown ids, 400 for invalid args, 503 during refresh) and payments charged only on a 200 at $0.02 USDC via x402. It stops short of describing return structure or freshness beyond the 503 note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and returned dimensions before error and payment details. Dense but nearly every clause (error codes, payment terms) is decision-relevant for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param tool with no output schema, the description adequately enumerates returned fields and covers cost and failure modes. Only a richer sense of the response shape or data freshness cadence is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the slug property is documented with examples, so the schema does the heavy lifting. The description adds only that unknown ids yield a 404, which is marginal value beyond what is already provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('risk profile of one protocol on Base') and enumerates the dimensions returned (age, TVL, audits, governance, opportunity risk). This clearly distinguishes it from siblings like get_stablecoin_risk and get_opportunity_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for due diligence on a protocol' implies a usage context, but there is no explicit when-to-use vs. alternatives guidance. It never points to sibling tools such as get_stablecoin_risk or get_opportunity_card for related questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_risk_eventsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back in days (default 7). | |
| limit | No | At most this many events (default 100). | |
| entity | No | Only events for this entity (optional). | |
| severity | No | Lowest severity to include (default low). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key behavioral traits: error codes (404, 400, 503), refresh behavior, payment model ($0.02 USDC via x402), and charging only on successful 200 responses. It does not explicitly state that the tool is read-only, though the 'get' prefix implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage, then covers errors and payment. It is mostly efficient, but contains redundancy: the charging condition ('charged only for a 200' and 'charged only for a successful answer') is repeated, slightly reducing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately conveys what is returned: recent risk events with severity, covering several event types. It also covers error handling and payment, but lacks detail on the exact response structure (e.g., field names, pagination), which an agent might need for full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds only a hint about 'entity ids appear in dependency graphs' and mentions 'severity' in passing; it does not supplement parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get') and resource ('risk events') and lists concrete event types (TVL drops, depegs, exploits, APY moves, Morpho vault setting changes) with severity. It does not explicitly differentiate itself from siblings like get_incidents or get_protocol_risk, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage context: 'Useful for monitoring positions or screening protocols for recent trouble.' It does not name alternatives or when not to use this tool, but the context is sufficiently informative for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stablecoin_riskAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Stablecoin symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses 404 for unknown ids, 400 for invalid arguments before any payment, 503 during data refresh, and that billing occurs only on a 200. Payment mechanics ($0.02 USDC on Base via x402) are stated up front, which is exactly the kind of trait structured fields cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The payload contents lead, then usage context, then operational guarantees — good front-loading. The billing point is stated twice ('charged only for a 200' and 'charged only for a successful answer'), a small redundancy that keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers what data comes back, when to reach for it, and how errors and payment behave. It does not describe the shape of the returned payload (e.g. time ranges for price history, units for supply change), which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a regex pattern and examples for `symbol`, so the schema already does the heavy lifting. The description only adds indirectly that unknown ids yield a 404, hinting that lookups must match real symbols, but gives no further constraint beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource (peg and supply risk of a single stablecoin on Base) and enumerates the payload contents: price history, supply change, mechanism, and holding opportunities. It is clearly distinct from siblings such as get_protocol_risk or get_opportunity_score, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete triggering situations — before holding or lending a stablecoin, or when a depeg is suspected — which is more than most tools provide. It stops short of naming alternatives (e.g. use get_protocol_risk for the underlying protocol) or stating when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pricesCInspect
The list of paid routes with their prices. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The one hint — 'Free.' — may indicate the call is free of charge, but the description says nothing about return format, ordering, pagination, or freshness of prices, which an agent needs before calling a data-retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is only two fragments long with no waste, but the brevity comes from under-specification rather than economy — the key noun ('routes') is never grounded, leaving the agent to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the only place to explain what a price entry contains (currency, unit, route identity). It supplies none of that, so an agent cannot predict the response shape or judge relevance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with additionalProperties false, so there is nothing for the description to disambiguate. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name with a fragment: 'The list of paid routes with their prices.' It never defines what a 'route' is or what 'prices' represent, and the trailing 'Free.' is ambiguous — it could describe the routes or the cost of the call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of any of the twelve sibling tools (e.g. search_opportunities, get_yield_premium). An agent has no signal for whether this complements or overlaps with those tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_opportunitiesAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search words over protocol, market and asset names (letters, digits, spaces, dots, dashes, underscores; at most 60). | |
| type | No | Opportunity type. | |
| asset | No | Token symbol the opportunity holds. | |
| limit | No | At most this many results (default 20). | |
| capital | No | Capital in USD for the expected-return figures (default 10000). | |
| min_apy | No | Lowest APY to include, in percent. | |
| duration | No | Holding period in days for the expected-return figures (default 365). | |
| risk_max | No | Highest total risk score to include (0-100, lower is lower modelled risk). | |
| management | No | Passive (hold), active (needs rebalancing) or any (default). | |
| stable_only | No | Only opportunities whose principal is a stablecoin. | |
| include_direct | No | Also list plain token holdings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the cost/quota profile ('Free, at most 60 calls an hour per client') and that results include risk and score fields, but says nothing about ordering, pagination beyond 'limit', or result completeness/caching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is well front-loaded and the tool-chain hint is valuable, but the rate-limit sentence is duplicated verbatim ('Free, at most 60 calls an hour per client.' appears twice), which is pure waste in a four-sentence description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-parameter search tool with 11 filters, no annotations and no output schema, the description covers the resource scope, the result payload hint (risk and scores), and the quota. It is nearly complete; only default ordering and how the 20-result default interacts with pagination are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 11 parameters is already documented in the schema, which sets the baseline at 3. The description adds no filter semantics beyond mentioning that scores and expected-return figures exist; it does not explain how capital/duration interact with the returned figures.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search and filter every tracked Base yield opportunity') plus what the results carry ('total risk and opportunity scores'). The follow-on sentence indirectly names the sibling tools (card, score, history, dependency graph), so an agent can tell this is the entry-point discovery tool rather than a detail-fetch tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for finding candidates and their ids before buying a card, score, history or dependency graph' gives a clear trigger: use this first to resolve opportunities into ids for the get_* siblings. It does not state any when-not condition or fallback, so it stops short of explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
- First observed
get_closure - First observed
get_dependency_graph - First observed
get_dependents - First observed
get_history - First observed
get_incidents - First observed
get_opportunity_card - First observed
get_opportunity_score - First observed
get_protocol_risk - First observed
get_risk_events - First observed
get_stablecoin_risk - First observed
get_yield_premium - First observed
list_prices - First observed
search_opportunities
Related MCP Connectors
0-100 risk score for stablecoin yield venues (Aave, Morpho, Ondo, Ethena). Pay per call via x402.
DeFi pool yield+security intelligence & token/contract risk scanner. USDC on Base via x402.
Live Base Mainnet on-chain data (gas, DEX, Aave, token risk, prices). Pay per call in USDC via x402.
Paid DeFi data for agents via x402 on Base: yields, APY moves, stablecoin pegs, token risk.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides onchain intelligence tools for Base, including token risk checks, wallet PnL, and leaderboard data, with paid calls settled per-request in USDC via x402.2 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to check DeFi liquidation risk levels for lending protocols like Aave, Compound, and Morpho, including at-risk positions, liquidation prices, current prices, and aggregate exposure. Access is pay-per-call via x402 micropayments with USDC on Base, requiring no API key or signup.MIT
- AlicenseNot gradedqualityAmaintenanceProvides risk-weighted yield signals and MOVE/HOLD decisions for ETH staking and USDC/WETH lending, accessed via x402 payment protocol with verifiable signed responses.MIT

hyperd-mcpofficial
AlicenseAqualityDmaintenancePre-trade DeFi intelligence for AI agents. 20 paid x402 endpoints, USDC on Base.2329 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.