MCP server for managing ControlD devices, profiles, and DNS filtering configurations
controldctl exposes 11 tools with consistent naming (verb_noun pattern: devices list, profiles create, etc.) and complete input schemas. However, descriptions are minimal (10-30 chars), parameter descriptions lack detail on constraints/formats, and output schemas are not documented. Tool names follow action-verb convention well, but descriptions fail to explain WHEN to use each tool or what the LLM should expect in responses. No error handling guidance, no pagination info for list operations, and no documentation of which fields are returned.
Create a device
Delete a device
List all devices
List available device types and icons
Update a device
Create a profile
Delete a profile
List a profile's filters
Descriptions are critically short (10-30 chars). 'List all devices', 'Create a device', 'Update a device' lack context on WHEN to use each tool, what data is returned, or prerequisites. Rubric baseline: 194 chars average, 10-1024 range.
Parameter descriptions lack constraint details. E.g., 'device name (required)' does not specify length limits, character restrictions, or format. 'profile PK' does not explain what PK means or how to obtain it. Rubric requires: 'The project key (2-10 uppercase letters, e.g. PROJ)' level of detail.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Enable or disable a filter on a profile
List all profiles
Update a profile
Output schemas not documented. Code shows devicePayload, devicesListPayload, deviceDeletePayload structs, but tool descriptions do not specify what fields are returned or their types. LLMs cannot plan downstream calls without knowing response structure.
No error handling guidance. Tools do not document what errors can occur (e.g., 'device not found', 'invalid profile ID') or how LLMs should recover. Rubric requires: 'User not found. Try search_users() with a partial name.'
List operations lack pagination info. 'devices list' and 'profiles list' have no limit/offset/page parameters or documentation of result count limits. Rubric: 'Tools returning lists should accept page/offset and limit parameters and return a total count or next_cursor.'