MCP server for Uniswap token swapping, quoting, and wallet management on Optimism
Server has 5 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly short) and Zod-based input schemas with type definitions. However, descriptions lack depth, they state WHAT but not WHEN or WHY to use each tool. Parameter descriptions are present but minimal (e.g., 'Token symbol (e.g., OP, USDC)' lacks format constraints). Output schemas are not documented, responses are free-text strings, not structured objects. Error handling is generic ('Failed to retrieve X. Please try again.') with no recovery guidance. The swap-tokens tool is marked IRREVERSIBLE but has no confirmation/dry-run pattern. No tool annotations (readOnlyHint/destructiveHint) despite clear risk distinctions. Token info uses mock fallback data, reducing reliability. Overall: functional but below production baseline.
Get a quote for buying tokens with USDC
Get token information by symbol
Get wallet information including all token balances
Get a quote for selling tokens for USDC
Swap tokens on Uniswap
Output schemas not documented. All tools return free-text strings in content[].text, not structured objects. LLMs cannot extract typed fields for downstream tool chaining or data validation.
Irreversible operation (swap-tokens) lacks confirmation/dry-run pattern. No way for agents to preview impact before executing a trade that cannot be undone.
Error handling is generic and non-actionable. All errors return 'Failed to retrieve X. Please try again.' with no recovery guidance, error classification, or invalid-value details.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Parameter descriptions lack format constraints and ranges. E.g., 'slippage' accepts 0.5 as default but no min/max bounds stated. 'amountIn' is positive() but no upper limit. LLMs may pass invalid values.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). swap-tokens is clearly destructive; get-* tools are read-only. Annotations help agents reason about safety and retry logic.