A collection of DeFi-focused MCP servers for DAO voting simulation, DeFi risk intelligence, and stablecoin APY estimation
All three tools have basic descriptions and parameter schemas, but quality is significantly below production standards. Descriptions are generic and lack actionable context (avg ~80 chars, well below the 194-char baseline). Parameter descriptions are minimal. No output schemas documented. Tools lack error handling guidance, validation rules, and recovery paths. No tool annotations (readOnlyHint, etc.). The server exposes simulation/mock behavior without clear disclaimers about non-determinism (random voting, random risk multipliers).
Computes a DeFi risk score based on input metrics. This is a simplified risk model.
Calculates a stablecoin APY based on the provided parameters.
Simulates a DAO voting process and returns a result based on voting weights.
Descriptions lack actionable context. 'Simulates a DAO voting process and returns a result based on voting weights' (80 chars) does not explain WHEN to use this tool, what the result means, or that voting is randomized. Baseline: 194 chars avg for A+ tools.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. All three tools return JSON objects but schema is not declared in tool metadata.
Non-deterministic behavior not disclosed. get_vote_result uses random.random() to assign votes; get_defi_risk multiplies by random.uniform(0.5, 1.5). Repeated calls with identical inputs return different results, violating idempotency. No warning in descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Parameter descriptions are minimal (10-30 chars). 'The ID of the proposal being voted on' lacks format/range constraints. 'A dictionary of voter addresses and their corresponding voting weights' does not specify address format, weight range, or required keys.
No error handling or recovery guidance. Tools do not validate inputs (e.g., negative collateral_ratio, invalid stablecoin_name). No error responses documented. LLMs cannot self-correct on invalid input.