MCP server giving Claude, Cursor, and other LLMs direct access to the Rail402 paid-API marketplace on Base.
Rail402 MCP defines 4 tools with clear action verbs and reasonable descriptions (avg 156 chars). All tools have input schemas with required fields and type declarations. However, parameter descriptions lack specificity on constraints, formats, and error recovery guidance. Output schemas are not documented. Error handling returns generic fail() messages without actionable recovery steps. Missing tool annotations (readOnlyHint/destructiveHint). The call_service tool accepts an untyped 'input' object, forcing LLMs to infer structure from a separate discovery call.
Execute a paid Rail402 API call. Automatically settles the x402 USDC payment on Base using the configured agent wallet, then returns the provider's response. Requires RAIL402_PRIVATE_KEY to be configured.
Verify a USDC payment transaction on Base by its transaction hash. Returns success/reverted status and confirmation count.
Get full details for one service: input/output JSON Schema, price, HTTP method, example request/response, and documentation. Call this before call_service to learn the required input shape.
Browse the Rail402 marketplace of paid APIs. Optionally filter by category or a free-text query. Returns each service's id, name, description, and price.
call_service accepts untyped 'input' object with no schema constraints. LLMs cannot validate payload structure before calling; discovery requires separate get_service_details call.
No output schemas documented for any tool. LLMs cannot predict response structure or plan downstream chaining. E.g., does list_services return service.id or service.slug for use in get_service_details?
Error handling returns generic fail() messages ('Error: <message>') without recovery guidance. E.g., if call_service fails due to insufficient balance, LLM has no hint to check balance or retry later.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2025-06-18+ | v2 |
Parameter descriptions lack format/constraint details. E.g., 'limit' has no min/max bounds (default 20 stated but no range). 'txHash' description says '0x-prefixed 32-byte' but no regex pattern or validation hint.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. call_service is destructive (charges USDC) but unmarked; LLMs cannot distinguish it from read-only tools.