Domains
Manage domains, verification, DNS status, setup keys, and domain workspaces. The examples use A2A code mode. MCP exposes the same code mode through itsexecute tool.
Functions
domains.delete
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.delete | Auth required | yes |
| Execution mode | sync | Capability | domain.delete |
| Resource type | account | Resource ID field | account_id |
| Public API route | DELETE /v1/public/accounts/{account_id}/domains/{domain} |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
domain | str | yes | Domain name or UUID from the route path |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
result | {} | yes |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response:
domains.get
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.view | Auth required | yes |
| Execution mode | sync | Capability | domain.view |
| Resource type | account | Resource ID field | account_id |
| Public API route | GET /v1/public/accounts/{account_id}/domains/{domain} |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
domain | str | yes | Domain name or UUID from the route path |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
id | str | yes | Domain UUID |
name | str | yes | Domain name |
outbound_routing_ready | bool | yes | Whether outbound routing is ready |
status | str | yes | Domain lifecycle status |
workspace_id | str | yes | Workspace UUID that contains the domain |
auto_renew | bool | no | Whether domain auto-renewal is enabled |
created_at | str | null | no | Domain creation timestamp |
dedicated_ip_id | str | null | no | Assigned dedicated IP UUID, if any |
dns_records | [{"id": int, "name": str, "ttl": int, "type": str, "value": str, "is_system_managed"?: bool, "priority"?: int | null}] | no | DNS records for the domain |
inbound_tenant_external_id | str | null | no | Provider external ID for the inbound tenant |
inbound_tenant_id | str | null | no | Inbound tenant UUID, if assigned |
inbound_tenant_name | str | null | no | Inbound tenant display name, if assigned |
inbound_tenant_type | str | null | no | Inbound tenant type, if assigned |
mailboxes | [{"active": bool, "email": str, "first_name": str, "id": str, "last_name": str}] | no | Mailboxes on the domain |
redirect_mode | "301" | "302" | "iframe" | null | no | Configured redirect mode, if any |
redirect_url | str | null | no | Configured redirect URL, if any |
tags | [{"id": str, "name": str}] | no | Tags attached to the domain |
updated_at | str | null | no | Domain last update timestamp |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response:
domains.health
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.view | Auth required | yes |
| Execution mode | sync | Capability | domain.view |
| Resource type | account | Resource ID field | account_id |
| Public API route | GET /v1/public/accounts/{account_id}/domains/{domain}/health |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
domain | str | yes | Domain name or UUID from the route path |
refresh | bool | no | Bypass cache and force refresh |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
cache_ttl_seconds | int | yes | |
cached | bool | yes | |
checked_at | str | yes | |
checks | {"dns": {"status": "healthy" | "warning" | "critical" | "unknown", "a"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "dkim"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "dmarc"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "error"?: str | null, "mx"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "ns"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "spf"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null}, "ports": {"status": "healthy" | "warning" | "critical" | "unknown", "error"?: str | null, "imap_143"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "imaps_993"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "smtp_25"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "submission_587"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null}, "ssl": {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null}, "web": {"status": "healthy" | "warning" | "critical" | "unknown", "error"?: str | null, "http_root"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "http_www"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "https_root"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null, "https_www"?: {"status": "healthy" | "warning" | "critical" | "unknown", "actual"?: [str] | null, "code"?: str | null, "days_remaining"?: int | null, "error"?: str | null, "expected"?: [str] | null, "expires_at"?: str | null, "issuer"?: str | null, "record"?: str | null, "records"?: [str] | null, "status_code"?: int | null} | null}} | yes | |
domain_id | str | yes | |
domain_name | str | yes | |
summary_status | "healthy" | "warning" | "critical" | "unknown" | yes | |
timings_ms | {} | yes |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response:
domains.list
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.view | Auth required | yes |
| Execution mode | sync | Capability | domain.view |
| Resource type | account | Resource ID field | account_id |
| Public API route | GET /v1/public/accounts/{account_id}/domains |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
page | int | no | One-based domain page number |
page_size | int | no | Maximum domains per page |
search | str | null | no | Search by domain name |
workspace_id | str | null | no | Filter domains by workspace UUID |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
items | [{"id": str, "name": str, "outbound_routing_ready": bool, "status": str, "workspace_id": str, "auto_renew"?: bool, "created_at"?: str | null, "dedicated_ip_id"?: str | null, "inbound_tenant_external_id"?: str | null, "inbound_tenant_id"?: str | null, "inbound_tenant_name"?: str | null, "inbound_tenant_type"?: str | null, "redirect_mode"?: "301" | "302" | "iframe" | null, "redirect_url"?: str | null, "tags"?: [{"id": str, "name": str}], "updated_at"?: str | null}] | yes | Domains on this page |
page | int | yes | Current one-based page number |
page_size | int | yes | Maximum items per page |
total | int | yes | Total matching domains |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response:
domains.move
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.move | Auth required | yes |
| Execution mode | sync | Capability | domain.move |
| Resource type | workspace | Resource ID field | target_workspace_id |
| Public API route | POST /v1/public/accounts/{account_id}/domains/{domain}/move |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
domain | str | yes | Domain name or UUID from the route path |
target_workspace_id | str | yes |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | |
domain_id | str | yes | |
domain_name | str | yes | |
from_workspace_id | str | yes | |
reconciled | {"linked_records_changed"?: int} | yes | |
to_workspace_id | str | yes | |
status | str | no |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response:
domains.purchase
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.purchase | Auth required | yes |
| Execution mode | sync | Capability | domain.purchase |
| Resource type | account | Resource ID field | account_id |
| Public API route | POST /v1/public/accounts/{account_id}/domains/purchase |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
contact_info | {"address_1": str, "city": str, "country": str, "email": str, "first_name": str, "last_name": str, "organization": str, "phone": str, "state": str, "zip": str} | yes | |
domains | [str] | yes | |
workspace_id | str | yes |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
results | [{"domain_name": str, "status": str, "error"?: str | null, "error_code"?: str | null, "id"?: str | null}] | yes | |
currency | str | null | no | |
estimated_total | str | null | no | |
failed_count | int | no | |
payment_url | str | null | no | |
purchase_batch_id | str | null | no | |
successful_count | int | no |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response:
domains.search
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.create | Auth required | yes |
| Execution mode | sync | Capability | domain.create |
| Resource type | account | Resource ID field | account_id |
| Public API route | GET /v1/public/accounts/{account_id}/domains/search |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
domains | [str] | yes | Domain names to check |
workspace_id | str | yes | Workspace UUID |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
available | bool | yes | |
domain | str | yes | |
price | str | yes | |
alternatives | [{"domain": str, "price": str, "available"?: bool, "currency"?: str, "is_premium"?: bool, "is_suggestion"?: bool}] | no | |
currency | str | no | |
is_premium | bool | no | |
is_suggestion | bool | no | |
unavailable_reason | str | null | no |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response:
domains.update
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.update | Auth required | yes |
| Execution mode | sync | Capability | domain.update |
| Resource type | account | Resource ID field | account_id |
| Public API route | PATCH /v1/public/accounts/{account_id}/domains/{domain} |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
domain | str | yes | Domain name or UUID from the route path |
auto_renew | bool | null | no | |
redirect_mode | "301" | "302" | "iframe" | null | no | Redirect mode to use when creating or updating a redirect |
redirect_url | str | null | no | HTTPS redirect URL, or null to clear |
workspace_id | str | null | no |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
auto_renew | bool | yes | |
id | str | yes | |
workspace_id | str | yes | |
redirect_mode | "301" | "302" | "iframe" | null | no | |
redirect_url | str | null | no |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response:
domains.verify
| Property | Value | Property | Value |
|---|---|---|---|
| Requires permission | domain.verify | Auth required | yes |
| Execution mode | sync | Capability | domain.verify |
| Resource type | account | Resource ID field | account_id |
| Public API route | POST /v1/public/accounts/{account_id}/domains/{domain}/verify |
Arguments
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
account_id | str | yes | Account UUID from the route path |
domain | str | yes | Domain name or UUID from the route path |
Returns
Returns
| Field | Type | Required | Description |
|---|---|---|---|
actual_nameservers | [str] | yes | |
domain_id | str | yes | |
expected_nameservers | [str] | yes | |
message | str | yes | |
status | str | yes | |
verified | bool | yes | |
missing_nameservers | [str] | no | |
unexpected_nameservers | [str] | no |
A2A example
A2A example
Request:Response:
MCP example
MCP example
Request:Response: