Domain Contacts on this page are the registrant, admin, and tech contacts
attached to a domain registration (WHOIS data). They are distinct from CRM
Contacts (people in your address book) — see Contact
Tools for those.
Domains
Tools for managing domain records used for DNS and email.searchDomainAvailability
Check whether one or more domains are available to register, with pricing. Provide a fully-qualifieddomain, or a query label paired with one or more
tlds. This is read-only — it does not register a domain or charge anything.
Permission: domains:read
Parameters:
*Provide
domain, or query (with optional tlds).
A single call checks at most 25 names (query × tlds counts one name per
TLD); larger fan-outs are rejected.
Returns: An array of results, one per requested name. Each entry has a
status:
ok— the name was checked. Includesavailable,premium, and prices (integer cents USD with the standard markup applied, ornullwhen the registry returns no price).rate_limited— the name could not be checked right now because the registrar rate limit was hit. The name was neither confirmed available nor taken — retry it shortly (retryAfterMs, when present, hints how long to wait) and do not treat it as registered. The rest of the batch is still returned, so retry only the affected names.
registerDomain
Purchase and register a domain for the organization. This is the real registration action — the same flow asPOST /v1/domain-registrations in the
REST API: it fetches a live quote, confirms availability with the registrar,
charges the account default payment method off-session, and queues domain
provisioning.
Permission: domain-registrations.purchase:write (default level Ask —
approval-gated in agent chat; over MCP, callable only at Allow)
Parameters:
Returns: The queued provisioning operation:
DOMAIN_UNAVAILABLE, PRICE_EXCEEDS_MAXIMUM,
PAYMENT_METHOD_REQUIRED, and PAYMENT_FAILED. If provisioning cannot be
queued after a successful charge, the charge is automatically refunded
(DOMAIN_REGISTRATION_ENQUEUE_FAILED) — retry with a new idempotencyKey.
verifyDomain
Start or check TXT ownership verification for an externally owned domain — the same flow asPOST /v1/domains/{id}/verification and
POST /v1/domains/{id}/verification/check in the REST API. If verification has
not started (or previously failed or expired), a new verification token is
issued, hourly background checking begins, and the TXT record to publish is
returned. If verification is already pending, one live DNS check runs
immediately instead. The tool is idempotent: a pending, unexpired token is never
rotated and no duplicate background checking is started, so it is safe to call
repeatedly to poll status.
Permission: domains:write (default level Ask — approval-gated in agent
chat; over MCP, callable only when the agent’s domains write permission
resolves to Allow)
Parameters:
Returns: The verification state plus the TXT record to publish:
status is verified, pending, or failed; initiated is true only when
this call issued a fresh token (publish recordName/expectedValue as a DNS
TXT record at the domain’s DNS host). Verification expires after 7 days —
calling the tool again after expiry issues a new token.
getDomainRenewalPrice
Preview the live renewal price for a registered domain, without charging anything — the same quote asGET /v1/domains/{id}/registration/renewal-price
in the REST API, and the exact amount renewDomain will enforce its
maxAmountCents ceiling against. This is read-only.
Permission: domains:read
Parameters:
Returns: The live renewal quote in integer USD cents (standard markup
applied):
DOMAIN_NOT_REGISTERED for verified-only domains and
DOMAIN_PRICE_UNAVAILABLE when the registrar cannot return a live price.
renewDomain
Renew a registered domain for the organization. This is the real renewal action — the same flow asPOST /v1/domains/{id}/registration/renew in the REST API:
it checks the live price against your ceiling, queues a renewal operation, and
the renewal workflow charges the account default payment method off-session,
renews the domain at the registrar, and extends the expiration date.
Permission: domain-registrations.renewal:write (default level Ask —
approval-gated in agent chat; over MCP, callable only at Allow)
Parameters:
Returns: The queued renewal operation, with the pre-flight quote
(
amountCents is null when the call replayed an existing operation):
DOMAIN_NOT_REGISTERED, PRICE_EXCEEDS_MAXIMUM, and
DOMAIN_RENEWAL_ENQUEUE_FAILED (nothing was charged — retry with a new
idempotencyKey).
createDomain
Create a new domain record for DNS and email management. Permission:domains:write
Parameters:
Verification, registrar, and Resend-related fields are managed by the
platform — do not pass them in here, as they are overwritten or ignored.
getDomain
Get a specific domain by ID. Permission:domains:read
Parameters:
Returns: Domain object, or
null if not found.
listDomains
List all domains for the organization with pagination. Permission:domains:read
Parameters:
Returns:
updateDomain
Update an existing domain record. Permission:domains:write
Parameters:
Lifecycle and registration fields —
status, source, zoneId, and
expiresAt — are not writable through this tool; they are managed by Bizzy
(expiry sweeps, renewals, registrar events, and zone provisioning).
Returns: The updated domain object.
deleteDomain
Delete a domain (soft delete). Verified (externally registered) domains can be deleted at any time; their DNS records at the external DNS host are left untouched. Registered (Bizzy-managed) domains can only be deleted once their registration has expired and their DNS zone holds no records beyond the zone’s built-in ones (the apex NS set and SOA) — disable email for the domain first so Bizzy removes the email records it manages, then delete any remaining records with the DNS record tools. A renewal that is already queued or running also blocks the deletion until it finishes. A blocked deletion fails withREGISTERED_DOMAIN_NOT_EXPIRED, REGISTERED_DOMAIN_RENEWAL_IN_FLIGHT, or
REGISTERED_DOMAIN_DNS_NOT_EMPTY; the last names the blocking records.
If the domain had email enabled, Bizzy also retires its email configuration —
revoking the sending credential and removing the domain from the email provider.
That cleanup is best-effort: if the provider is unreachable, the deletion still
goes through and any credential Bizzy could not revoke is recorded rather than
lost track of.
Permission: domains:delete
Parameters:
Returns: The deleted domain object.
Domain Contacts
Tools for managing the registration contacts used as the registrant on domains registered through Bizzy. These are WHOIS-style contacts held at the domain registrar — not CRM contacts. Contacts are organization-wide: the same contact can be the registrant for any number of domains. Writes go through to the registrar, so what these tools change is also what appears in the public WHOIS record.externalId and accountId identify the contact at the registrar and are
assigned when it is created. They are returned on the contact object and
cannot be supplied or changed by a caller.createDomainContact
Create a registration contact at the domain registrar and store it. Usable as the registrant when registering a domain. Permission:domain-contacts:write
Parameters:
The address fields are required even though they are nullable on the stored
record: the registry rejects an incomplete registrant.
Returns: The created domain contact object, carrying the registrar-assigned
externalId and accountId.
getDomainContact
Get a specific domain contact by ID. Permission:domain-contacts:read
Parameters:
Returns: Domain contact object, or
null if not found.
listDomainContacts
List all domain contacts for the organization with pagination. Permission:domain-contacts:read
Parameters:
Returns:
updateDomainContact
Update a registration contact at the domain registrar and in Bizzy. Permission:domain-contacts:write
Parameters:
A
label-only change is local and never reaches the registrar, so it is allowed
even on a contact whose registration details are fixed.
Some contacts cannot have their registration details changed after registration.
Attempting it fails with the text Error: This operation (registrant contact updates) is not available — create a new contact instead.
Returns: The updated domain contact object.
deleteDomainContact
Remove a registration contact from Bizzy and from the domain registrar. Permission:domain-contacts:delete
Parameters:
Refused while the contact is still the registrant of a live domain. The call
fails with the text
Error: This contact is the registrant for example.com and cannot be removed, naming every domain that is using it. Point those domains at
a different registrant first.
Returns: The deleted domain contact object.
Domain Registrations
Tools for managing domain registration records that track ownership, renewal, and registrar metadata.createDomainRegistration
Create a new domain registration record to track domain ownership and renewal. Permission:domain-registrations:write
Parameters:
Returns: The created domain registration object.
getDomainRegistration
Get a specific domain registration by ID. Permission:domain-registrations:read
Parameters:
Returns: Domain registration object, or
null if not found.
listDomainRegistrations
List all domain registrations for the organization with pagination. Permission:domain-registrations:read
Parameters:
Returns:
updateDomainRegistration
Update an existing domain registration record - all fields are optional except registrationId. Permission:domain-registrations:write
Parameters:
Returns: The updated domain registration object.
deleteDomainRegistration
Delete a domain registration (soft delete). Permission:domain-registrations:delete
Parameters:
Returns: The deleted domain registration object.
Domain DNS Records
Tools for managing a registered domain’s DNS records. DNS is backed by Cloudflare (the customer DNS account is the system of record — records are not stored in Bizzy). These tools only work for domains registered through Bizzy; the DNS zone is created automatically the first time a record is added.listDnsRecords
List the DNS records for a registered domain. Returns an empty list if the domain has no DNS zone yet. Permission:domains:read
Parameters:
Returns:
createDnsRecord
Create a DNS record for a registered domain. Permission:domains:write
Parameters:
Returns: The created DNS record object.
updateDnsRecord
Update a DNS record. This is a full replacement — provide all record fields. Permission:domains:write
Parameters:
Returns: The updated DNS record object.
deleteDnsRecord
Delete a DNS record from a registered domain. Permission:domains:write
Parameters:
Returns:
{ "success": true, "recordId": "..." }
Next Steps
Contact Tools
Manage CRM contacts, distinct from the WHOIS-style domain contacts above
Authentication
Learn how MCP clients authenticate to the server