Test suite for LI.FI cross-chain swap REST API using Playwright and Postman/Newman, with AI-assisted test scenario generation
This MCP server has severe definition quality gaps. Tool descriptions are present but generic (averaging ~80 chars, below the 194-char baseline). Input schemas exist but lack proper type definitions for most parameters, many are declared as strings without format constraints, enums, or validation guidance. The 'getRoutes' tool accepts a bare 'body' object with no schema documentation. Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. The 'generateJSON' tool is concerning: it returns raw LLM text without parsing/validation, placing burden on the caller. No tool has output schemas documented. Parameter descriptions are minimal (e.g., 'Chain identifier' for 'chain' param). No tool demonstrates idempotency markers, permission gates, or audit trail patterns. This is a test suite wrapper, not a production-grade agent tool.
Send a prompt to the LLM and return the raw text response. The caller is responsible for parsing and validating the result.
GET /chains - Cached for the duration of the test run.
GET /connections - Not cached — depends on filter params
GET /quote - Never cached — real-time routing data.
POST /advanced/routes - Never cached — real-time routing data.
GET /status - Query transaction status for cross-chain swaps
GET /token - Single token lookup — not cached (low payload, used for targeted checks)
GET /tokens - Cached for the duration of the test run. Filtered to specific chains to avoid fetching the entire token universe.
getRoutes tool has no input schema, 'body' parameter is documented as a bare object with no field definitions, types, or constraints. This violates the constrained-input pattern and makes it impossible for LLMs to construct valid requests.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., does getQuote return route_id for use in getRoutes?). This breaks tool composition.
generateJSON returns raw LLM text without parsing or validation. Description states 'caller is responsible for parsing', this violates response-shaper pattern and forces error-prone unstructured parsing on the agent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | 2026-07-28+ | v2 |
GET /tools - Cached for the duration of the test run.
Parameter descriptions are minimal (10-30 chars, well below 72-char baseline). E.g., 'Chain identifier' for 'chain' param lacks format, example, or validation rules. LLMs cannot infer whether to pass chain name, ID, or symbol.
No error handling guidance. Tools return HTTP status codes but no recovery hints (e.g., 'If token not found, try search_tokens()' or 'Retryable: rate limit'). Agents cannot self-correct on failures.