MCP server providing access to Zyfai DeFi APIs for portfolio management, yield opportunities, and earnings analytics
This MCP server demonstrates solid definition quality with consistent naming patterns, comprehensive parameter schemas, and clear descriptions across all 15 tools. All tools follow the verb_noun naming convention (get_tvl, get-volume, etc.) and have non-empty descriptions. Input schemas are well-structured using Zod validation with type constraints and enums for constrained parameters. However, there are notable gaps: no output schemas are documented (critical for LLM reasoning about downstream tool composition), error handling is generic without recovery guidance, and several parameters lack inline format constraints. The server lacks tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only operations. Description lengths average ~100 chars (within the 10-1024 range), meeting the baseline expectation. Parameter descriptions are present and descriptive (baseline 72 chars avg), though some could be more specific about format/constraints. No security issues detected (no secrets exposed as parameters). Tool composition is solid, each tool has a single responsibility, and output fields (wallet addresses, chain IDs) are named consistently with input parameters, supporting tool chaining.
Get active wallets for a specific chain on Zyfai
Get degen (high-risk, high-reward) yield strategies for aggressive investors
Get APY per strategy for a specific chain
Get available DeFi protocols and pools for a specific chain on Zyfai
Get safe (low risk) DeFi opportunities suitable for conservative investors
Get daily APY history for a wallet including total, current, and lifetime earnings
No output schemas documented for any tool. LLMs cannot plan downstream tool composition or know what fields to extract without explicit response schema documentation. Baseline requires 100% of A+ tools to have documented return types.
Generic error handling without recovery guidance. All tools catch errors and return 'Error fetching X: {error.message}' but do not classify errors as retryable/user-fixable/fatal or suggest next steps. Per pattern:recovery-guide, errors should tell LLMs what to do next.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | 2024-11-05+ | v1 |
Get daily earnings for a wallet within a date range
Get the first topup (deposit) information for a wallet
Get transaction history for a wallet
Get onchain earnings for a wallet including total, current, and lifetime earnings
Get all active DeFi positions and portfolio for a user's wallet address
Get rebalance frequency/tier for a wallet (determines how often wallet can be rebalanced)
Get smart wallets associated with an EOA address
Get total value locked (TVL) across all Zyfai accounts
Get total volume across all Zyfai accounts
No tool annotations present. All 15 tools are read-only operations but lack readOnlyHint annotation. Per current spec (2026-07-28), tool annotations (readOnlyHint, destructiveHint, idempotentHint) enable LLMs to reason about safety and retry logic.
get-tvl and get-volume have empty input schemas ({}). While appropriate for parameter-less tools, descriptions lack context about WHEN to call them or WHAT data they fetch. Descriptions should answer: What does it return? Who is included? What time period?
No pagination support documented or visible. Tools like get-history accept optional limit/offset but responses are not documented as paginated. Per pattern:paginated-result, list tools should accept page/offset/limit and return total_count or next_cursor.
Date format constraints not explicitly stated in descriptions. Tools accept startDate/endDate and days parameters in multiple formats (YYYY-MM-DD, 7D/14D/30D) but descriptions lack precision.