MCP server exposing the Domeneshop API — manage domains, DNS records, HTTP forwards, dynamic DNS and invoices from an AI assistant.
Strong schema definitions with proper enums and type constraints. All 7 tools have clear descriptions (avg 95 chars) and complete input schemas. Tool names follow verb_noun pattern (list_, get_, create_, update_, delete_). DNS record creation/update parameters are well-documented with conditional requirements (e.g., 'required for MX and SRV'). Main gaps: output schemas not documented in source; no pagination support for list_domains/list_dns_records despite potentially large result sets; error handling guidance minimal.
Create a new DNS record for a domain. Returns the new record's ID.
Delete a DNS record.
Get a single DNS record by ID.
Get details for a single domain by its Domeneshop domain ID.
List DNS records for a domain, optionally filtered by host and/or record type.
List all domains on the Domeneshop account, optionally filtered by domain name.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Returns the new record's ID') but formal response schemas are absent from source. LLMs cannot plan downstream tool calls without knowing response structure.
No pagination support on list_domains and list_dns_records. Large result sets will blow context window. Baseline pattern requires limit/offset and total count.
create_dns_record and update_dns_record have complex conditional parameter requirements (priority/weight/port for SRV, usage/selector/dtype for TLSA, etc.) documented in descriptions but not enforced by schema. LLMs may omit required fields for specific record types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Replace an existing DNS record. This overwrites the whole record, so send every field it should keep: any omitted field is dropped, and leaving out ttl resets it to the default 3600 seconds. Read the record with get_dns_record first if you are changing only part of it.
Error handling lacks recovery guidance. toolHandler catches errors and converts to errorResult, but no actionable error messages visible in source (e.g., 'Invalid TTL: must be 60-604800 and a multiple of 60').
update_dns_record description warns 'any omitted field is dropped' but schema does not mark fields as conditionally required. LLMs may accidentally reset TTL to default 3600 by omitting it.