DeFiLlama CLI utility for protocol research - provides access to DeFi protocol data including TVL, yields, fees, funding rounds, security exploits, and treasury holdings
Web3-Claude exposes 7 DeFi research tools via STDIO. All tools have basic descriptions (50-150 chars) and single string parameters with descriptions. However, schemas lack type declarations, enums, and output documentation. No error handling guidance, no pagination support despite tools returning lists (search returns 15, yields returns 20, raises/hacks return 15). Parameter descriptions are minimal (10-30 chars). No tool annotations. Tools are read-only but lack explicit idempotent hints. Naming is verb-noun (protocol, search, yields, fees, raises, hacks, treasury) but generic, 'protocol' and 'treasury' don't clarify they are GET operations. No composition guidance or chaining IDs documented.
Fees & revenue data - retrieves 24h fees, 24h revenue, 30d fees, all-time fees, and recent daily fee chart for a protocol
Exploit & hack history - searches and returns security exploits and hacks with date, amount lost, technique, chain, and returned funds
Protocol overview - retrieves TVL, chains, raises, GitHub, audits, oracles, and TVL by chain for a given protocol slug
Funding round history - searches and returns funding rounds matching a query with date, round type, amount, and lead investors
Search protocols by name, slug, or symbol - returns up to 15 matching protocols with TVL, category, and chains
Treasury holdings - retrieves total treasury value, value excluding own tokens, and token breakdown by chain for a protocol
Yield pools for a project - returns top 20 yield pools sorted by TVL with APY, chain, IL risk, and reward tokens
No input schemas visible in source. All tools accept a single string parameter but lack JSON Schema type declarations, constraints, or format specifications. Parameter descriptions are 10-30 chars, insufficient for LLM disambiguation.
No output schemas documented. Tools return formatted text (markdown) via console.log, not structured JSON. LLMs cannot parse results reliably or extract IDs for downstream tool calls. E.g., search() returns protocol names but no slug field for chaining to protocol().
No pagination or limit parameters. search(), yields(), raises(), hacks() return fixed-size lists (15-20 items) with no offset, cursor, or total_count. If results exceed limit, agent cannot fetch more. No indication in descriptions that results are capped.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
No error handling guidance. fees() catches errors and logs to stderr, but error messages are generic ('Error fetching fees for X'). No recovery hints. If a protocol slug is invalid, agent receives no guidance on how to find the correct slug.
Tool names lack action clarity. 'protocol' and 'treasury' are nouns, not verbs. LLMs infer intent from names, 'get_protocol' or 'describe_protocol' would be clearer. 'fees' is ambiguous (get fees? calculate fees? list fees?).