set_landing_subdomain
Set the subdomain this account's generated landing pages are served from.
Destructive utilities
Deletes, archives, launches or moves budget. Do not give an agent this one without a human gate.
What it does
Set the subdomain this account's generated landing pages are served from. USE FOR: "set our landing page domain", "I want our pages on zoom.ad.live", "use acme as our landing subdomain", "our landing pages should be branded". SET ONCE: this claims a subdomain for an account that has NONE. It cannot change or release one that is already set, and it does not fail loudly when asked to; it returns status "locked" and changes nothing. A change is support's to make. WHEN TO OFFER IT UNPROMPTED: new accounts start with no subdomain, so their landing pages are served from a long shared service URL. If get_account_details shows `landingSubdomain` is null and the user is creating or about to create a landing page, offer to set one, since a branded URL is what goes into their ads. Suggest a label derived from their own company domain (acme.com -> "acme") and let them confirm or change it. Do NOT set one without the user agreeing to the specific name. ARGS: - subdomain (required): the label ONLY, never the full hostname. Pass "zoom", not "zoom.ad.live" and not "https://zoom.ad.live". Pass an empty string to release the account's current claim. RULES THE LABEL MUST MEET: 1-63 characters of a-z, 0-9 and hyphens; no leading or trailing hyphen; not all digits; not a reserved name (www, api, app, mail, cdn, admin and similar). The platform only trims and lowercases what you send; it does NOT rewrite an invalid label into a valid one, so build a valid label yourself before calling: "Zoom Events" is refused, "zoom-events" is accepted. Always report the value the tool returns rather than what you sent, because the two can differ. SCOPE: acts on the CALLER'S OWN account only. There is no account argument and it cannot be pointed at another account; to set one for a different account, an operator does it from the platform admin screen. RESPONSE `status` AND WHAT TO DO NEXT: - "set": claimed. Tell the user the stored subdomain. - "cleared": the claim was released; pages fall back to the default URL. - "unavailable": another account already holds that name. This is NOT an error. Tell the user it is taken, suggest a variant, and call again once they choose. - "invalid": the label breaks the rules above. Rewrite it, confirm with the user, call again. - "not_permitted": the caller is not an account admin, and nothing was changed. Tell them an admin on their account has to set it, under Settings then Configurations. Do not ask them for a name and do not retry. - "locked": the account already has a subdomain and nothing was changed. Tell the user it is already set, name it, and say support changes it. Do NOT retry and do NOT offer to pick a different name. IMPORTANT: the name is globally unique and first come first served, and once pages are live it is baked into ad URLs already in market, so changing it later breaks them. That is why it is set once and only support can move it.
Arguments
| Argument | Type | Notes | |
|---|---|---|---|
subdomain |
string | required | The subdomain label only, without any zone suffix or scheme ("zoom", not "zoom.ad.live"). Empty string releases the current claim. |
Request
curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
-H "Authorization: $METADATA_PAT" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"set_landing_subdomain","arguments":{"subdomain":"<subdomain>"}}}'
Response
No recorded response. This tool can delete, archive, launch or move budget, so it is never executed to build these docs.
The request above is still the exact shape to send. Nothing on this page is invented.
Related
Other utilities tools: