For the complete documentation index, see llms.txt. This page is also available as Markdown.

Custom domains

Reserve and verify DNS, attach custom domains and choose the default address.

Reserve and verify DNS, attach custom domains and choose the default address.

These are action names. In default compact mode, call the indicated group tool with {"action":"<action-name>","params":{...}}; the arguments below go inside params. In ?mode=all, call the action name directly with those arguments. browse_github and read_docs are direct tools in both modes. Expand each schema for nested fields, enum values and validation constraints. Successful results are JSON in both text content and structuredContent; failures use isError and structuredContent.error.

manage_domain

Custom domains for an app (its organization's members who can edit it). action=reserve returns the DNS record the user must create at their DNS provider; action=add verifies that record, issues the certificate and attaches the domain (domain_not_verified with the record until DNS is in place: retry after the user created it); action=remove detaches it; action=set_default picks the domain the dashboard shows as the app's address (null for the Kinesis-issued one). get_app lists attached domains under config.domains.

Group: apps · Behavior: Write

Compact tool: apps_write · Action: manage_domain

MCP annotations: readOnlyHint: false · destructiveHint: true · idempotentHint: false · openWorldHint: true

Permissions and REST equivalents

Operation
REST
Required scopes

apps.domains.reserve

POST /projects/{projectId}/apps/{appId}/domains/reserve

apps:write

apps.domains.add

POST /projects/{projectId}/apps/{appId}/domains

apps:write

apps.domains.remove

DELETE /projects/{projectId}/apps/{appId}/domains/{domain}

apps:write

apps.domains.setDefault

POST /projects/{projectId}/apps/{appId}/domains/default

apps:write

Arguments

Argument
Type
Required
Description

action

"reserve" / "add" / "remove" / "set_default"

Yes

What to do

projectId

string

Yes

Project id

appId

string

Yes

App id

domain

string or null

Yes

Fully qualified domain name; null only with set_default

Complete input schema

Result

apps.domains.reserve

  • domain (string): See the complete response schema below.

  • ready (boolean): Verified with an unexpired certificate; add attaches it without further DNS steps

  • dnsRecord (object or null): The record to create; null once no delegation is needed

  • certificate (object or null): Validity of the issued certificate, when one exists

Response schema: apps.domains.reserve

**`apps.domains.add`**

  • domain (string): See the complete response schema below.

  • domains (array<string>): Custom domains attached to the app

  • defaultDomain (string or null): Domain the dashboard shows as the app's address; null for the Kinesis-issued one

Response schema: apps.domains.add

Operation-specific errors: 409 domain_not_verified, 400 grid_to_serverless, 400 no_suitable_machines, 429 grid_quota_exceeded. apps.domains.remove

  • domain (string): See the complete response schema below.

  • domains (array<string>): Custom domains attached to the app

  • defaultDomain (string or null): Domain the dashboard shows as the app's address; null for the Kinesis-issued one

  • deleted (true): See the complete response schema below.

Response schema: apps.domains.remove

Operation-specific errors: 400 grid_to_serverless, 400 no_suitable_machines, 429 grid_quota_exceeded. apps.domains.setDefault

  • domains (array<string>): Custom domains attached to the app

  • defaultDomain (string or null): Domain the dashboard shows as the app's address; null for the Kinesis-issued one

Response schema: apps.domains.setDefault

Was this helpful?