MCP server for managing dSIPRouter - a SIP trunking and endpoint management system. Provides tools for managing carrier groups, endpoint groups, inbound mappings, and Kamailio statistics.
The server defines 20 tools with consistent naming conventions (verb_noun pattern) and transport via FastMCP/HTTP. However, there are significant gaps in schema completeness, parameter documentation, output schema specification, and error handling guidance. Most tools have descriptions, but many are generic or missing critical context. Parameter schemas are present for most tools but lack detailed constraints (enums, ranges, patterns). No tool annotations (readOnlyHint, destructiveHint) are present despite clear risk levels in the metadata. Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance is provided. The server follows basic tool patterns but falls short of production-grade quality.
Create a new carrier group in dSIPRouter.
Create a new endpoint group in dSIPRouter.
Create a new inbound mapping rule in dSIPRouter to route DID numbers to endpoint groups.
Delete a carrier group from dSIPRouter.
Delete an endpoint group from dSIPRouter.
Delete an inbound mapping rule from dSIPRouter.
No output schemas documented. LLMs cannot predict response structure or chain downstream tool calls. Every tool returns 'str' (JSON-serialized response) without field documentation.
Tool annotations missing. Despite clear risk levels in metadata (WRITE, DESTRUCTIVE, READ_ONLY), no readOnlyHint, destructiveHint, or idempotentHint are used. LLMs cannot infer whether a tool is safe to retry.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 67 | - | v1 |
Get details of a specific carrier group.
Get Call Detail Records (CDRs) for a specific endpoint group.
Get details of a specific endpoint group.
Get a new endpoint lease from dSIPRouter.
Get details of a specific inbound mapping rule.
Get Kamailio SIP server statistics and metrics from dSIPRouter.
List all carrier groups configured in dSIPRouter. Carrier groups are SIP trunking providers used for outbound calls.
List all endpoint groups configured in dSIPRouter. Endpoint groups are PBX systems like FreePBX, FusionPBX, etc.
List all inbound mappings configured in dSIPRouter. Inbound mappings are rules that route DID numbers to endpoint groups.
Reload Kamailio configuration to apply changes. Call this after modifying carrier groups, endpoint groups, or inbound mappings.
Revoke an existing endpoint lease.
Update an existing carrier group in dSIPRouter. Only provided fields will be updated.
Update an existing endpoint group in dSIPRouter. Only provided fields will be updated.
Update an existing inbound mapping rule in dSIPRouter. Only provided fields will be updated.
No pagination or limits on list tools. list_carrier_groups, list_endpoint_groups, list_inbound_mappings may return unbounded result sets, risking context window exhaustion.
No error handling guidance. All tools return JSON responses with no documented error schema, recovery hints, or actionable error messages. LLMs have no guidance on when to retry vs ask user.
No input validation documentation. Parameters like 'ttl' (endpoint lease), 'port' (endpoint group), and 'strip' (carrier group) lack range constraints. LLMs can pass unbounded values (negative TTL, invalid ports).
Inconsistent parameter handling in update tools. update_carrier_group and update_endpoint_group use magic values (-1, empty strings) to indicate 'skip this field'. This is error-prone and undocumented for LLMs.
Descriptions lack specificity. Generic descriptions like 'Update an existing carrier group' do not explain WHEN to use this vs other tools or what fields are actually mutable.
No composition hints. The description for reload_kamailio says 'Call this after modifying carrier groups, endpoint groups, or inbound mappings' but no other tools mention they require a reload. Tool chaining is undocumented.