Model Context Protocol (MCP) server for TelecomsXChange (TCXC) API providing tools for voice and SMS market operations, DID management, account management, and call/SMS analytics
11 tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (search_*, list_*, get_*, validate_*, test_*, purchase_*) which is good. However, most parameter descriptions are minimal (10-30 chars), and output schemas are not documented anywhere in the provided code. Input validation logic exists in tools.py but is not reflected in formal JSON Schema constraints. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Error handling is present but not integrated into tool definitions.
Retrieve the current account balance
Get country codes and prefixes for routing
Retrieve call detail records (CDR) for analysis
List recent invoices and billing activity
Retrieve SMS delivery records for analysis
Purchase a DID (virtual phone number) from the market
Search for available DIDs (virtual phone numbers) in a specific market
Output schemas not documented. No tool returns a documented response structure. LLMs cannot plan downstream calls or extract required fields (e.g., what fields does search_voice_market return? Is there a carrier_id for chaining to purchase_did?).
Missing tool annotations. purchase_did is marked WRITE risk but has no destructiveHint annotation. search_* tools are READ_ONLY but lack readOnlyHint. Agents cannot infer safety/idempotency from tool definitions alone.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
Search the SMS termination market for available carriers and pricing
Search the voice termination market for available carriers and routes
Test a voice route for connectivity and quality
Validate and sanitize a phone number for routing
Pagination parameters (pager) lack constraints. No min/max documented. No guidance on what 'pager' means (page number? page size? cursor?). Baseline: numeric params should specify range (e.g., 1 - 100).
Parameter descriptions are too brief (10 - 30 chars). Baseline: 72 chars average. E.g., 'pager' → 'Number of results to return per page' (40 chars) lacks min/max. 'cli_route' → 'Filter for CLI (Caller ID) routes' (34 chars) doesn't explain what CLI routing is or when to use it.
No error recovery guidance in tool descriptions. E.g., purchase_did has no mention of what happens on insufficient balance, invalid DID ID, or rate limits. Agents cannot self-correct without actionable error messages.