SAP CC DNS (Designate)
Manage DNS zones and recordsets: list zones, inspect zone details, query recordsets by type.
MCP Tools
Read Tools
| Tool | Purpose | Key Parameters |
|---|---|---|
designate_list_zones |
List DNS zones with optional filters | name, status (ACTIVE/PENDING/ERROR), type (PRIMARY/SECONDARY) |
designate_get_zone |
Full zone detail by UUID | zone_id (required) |
designate_list_recordsets |
List recordsets within a zone | zone_id (required), name, type (A/AAAA/CNAME/MX/TXT/SRV/NS), status, data |
designate_list_zone_transfer_requests |
List outgoing zone transfer requests | zone_id, status |
designate_list_zone_transfer_accepts |
List accepted zone transfers | (none) |
Write Tools (requires MCP_READ_ONLY=false)
| Tool | Purpose | Key Parameters |
|---|---|---|
designate_create_recordset* |
Create a DNS recordset in a zone | zone_id (required), name (required, FQDN with trailing dot), type (required), records (required, comma-separated), ttl, description, confirmed |
designate_delete_recordset* |
Delete a DNS recordset | zone_id (required), recordset_id (required), confirmed |
Guardrails
- FQDN validation:
namemust end with.(e.g.,app.example.com.) - CNAME single-value: CNAME records must have exactly one value in
records - UUID validation: All
*_idparameters validated before API call - Confirmation required: Write tools return preview unless
confirmed=true
Gotchas
Zone names are FQDN with trailing dot. Designate stores zone names like
example.com.(note the trailing dot). When filtering byname, include the trailing dot or you will get zero results.zone_id is required for recordsets. You cannot list recordsets globally — you must first identify the zone UUID, then query recordsets within it. Always call
designate_list_zonesfirst if you only know the domain name.Status PENDING means propagation in progress. A zone or recordset in PENDING status has been accepted but is not yet live on nameservers. Do not treat PENDING as an error — wait and re-check.
Recordset type must be uppercase. The
typefilter expects uppercase values likeA,CNAME,MX. Lowercase values will return no results without an error.Multiple records per recordset. A single recordset (e.g., type A) can contain multiple IP addresses in the
recordsarray. This is normal for round-robin DNS.SOA and NS recordsets are auto-managed. Every zone has system-created SOA and NS recordsets. These cannot be modified and should be ignored when auditing user-created records.
Serial number increments on every change. The zone
serialfield is useful for verifying whether a recent change has been applied — compare before and after values.
Common Workflows
Find All Records for a Domain
designate_list_zoneswithname=example.com.— get the zone UUID.designate_list_recordsetswithzone_id=<uuid>— retrieve all recordsets.- Filter results by
typeif you only need specific record types (A, CNAME, etc.).
Diagnose DNS Resolution Failure
designate_list_zoneswithname=<domain.>— confirm the zone exists and status is ACTIVE.designate_list_recordsetswithzone_id=<uuid>andname=<fqdn.>— check if the expected recordset exists.- If status is ERROR or PENDING, the issue is on the Designate side. If ACTIVE but resolution fails, the issue is downstream (caching, client config).
Audit Zone Health
designate_list_zoneswithstatus=ERROR— find zones in error state.- For each error zone,
designate_get_zoneto inspect details and timestamps. - Cross-reference with
hermes_list_eventsfor the triggering action.
Cross-Service References
| Need | Service | Tool |
|---|---|---|
| Who modified a zone/recordset | Hermes | hermes_list_events(target_type=zone) |
| DNS quota for the project | Limes | limes_get_project_quota(service=dns) |
| Floating IP that should have a DNS record | Neutron | neutron_list_floating_ips |
| Server associated with an A record IP | Nova | nova_list_servers + filter by IP |