Domain & DNS Tools
MCP tools for managing custom domains, DNS zones, and DNS records
These tools give your agent full programmatic control over domains and DNS. Your agent can assign custom domains to services, manage DNS zones, and create any record type — enabling custom service routing, email configuration, domain verification, and more.
domain_add
Attach a custom domain to a deployed service. Creates a DNS record and configures TLS automatically.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | one of name or service_id | — | Name of the service to attach a custom domain to |
service_id | string | one of name or service_id | — | Service ID |
domain | string | yes | — | Custom domain (e.g. api.apps.example.com). Must be under a delegated zone |
workspace | string | no | default | Workspace slug |
project | string | no | default | Project name |
Returns: service_id, domain, status, message
The domain must be within an active delegated zone. Ink creates the DNS record and provisions a TLS certificate automatically.
domain_remove
Remove a custom domain from a service. Reverts to the default *.deployink.com URL.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | one of name or service_id | — | Name of the service to remove custom domain from |
service_id | string | one of name or service_id | — | Service ID |
workspace | string | no | default | Workspace slug |
project | string | no | default | Project name |
Returns: service_id, message
dns_list_zones
List all delegated DNS zones with their status. Zone delegation can be set up at deployink.com/dns.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
workspace | string | no | default | Workspace slug |
Returns: Array of zones with zone_id, zone, status, error, created_at
Zone status values: pending_verification, pending_delegation, provisioning, active, failed
dns_list_records
List all DNS records within a delegated zone. Shows both user-created and managed (system) records.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
zone | string | yes | — | The hosted zone (e.g. example.com) |
workspace | string | no | default | Workspace slug |
Returns: Array of records with id, name, type, content, ttl, managed, created_at
dns_add_record
Add a DNS record to a hosted zone. Managed records (created by the system) cannot be overwritten.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
zone | string | yes | — | The hosted zone (e.g. example.com) |
name | string | yes | — | Record name (e.g. www or mail.sub) |
type | string | yes | — | Record type. Values: A, AAAA, CNAME, MX, TXT, CAA |
content | string | yes | — | Record value (e.g. IP address, hostname, or text) |
ttl | integer | no | 300 | TTL in seconds |
workspace | string | no | default | Workspace slug |
Returns: record object with id, name, type, content, ttl, managed, created_at
Examples by record type
A record — Point a subdomain to an IP address:
dns_add_record(
"zone": "apps.example.com",
"name": "api",
"type": "A",
"content": "1.2.3.4"
)MX record — Route email to a mail provider:
dns_add_record(
"zone": "apps.example.com",
"name": "@",
"type": "MX",
"content": "10 mail.example.com"
)TXT record — Email authentication (SPF, DKIM, DMARC) or domain verification:
dns_add_record(
"zone": "apps.example.com",
"name": "@",
"type": "TXT",
"content": "v=spf1 include:_spf.google.com ~all"
)CNAME record — Alias to another domain:
dns_add_record(
"zone": "apps.example.com",
"name": "docs",
"type": "CNAME",
"content": "docs.example.com"
)CAA record — Restrict which CAs can issue certificates:
dns_add_record(
"zone": "apps.example.com",
"name": "@",
"type": "CAA",
"content": "0 issue letsencrypt.org"
)dns_delete_record
Delete a DNS record from a delegated zone. Managed records (auto-created by Ink for custom domains) cannot be deleted.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
zone | string | yes | — | The hosted zone (e.g. example.com) |
record_id | string | yes | — | ID of the DNS record to delete (from dns_list_records) |
workspace | string | no | default | Workspace slug |
Returns: message