MCP tools
27 tools. Each returns JSON as text and as structured content. Errors come back with isError and the same { error: { code, message, hint } } as the REST API.
| Tool | What it does |
|---|---|
search_domains | Search domains |
suggest_domains | Suggest available domains |
get_prices | Get prices |
register_domain | Register a domain |
get_order | Get order status |
list_domains | List domains |
get_domain | Get domain |
point_domain | Point domain at a website |
set_nameservers | Set nameservers |
list_dns_records | List DNS records |
add_dns_record | Add DNS record |
delete_dns_record | Delete DNS record |
renew_domain | Renew domain |
get_transfer_code | Get transfer code |
check_transfer | Check a transfer in |
transfer_domain | Transfer a domain in |
set_transfer_lock | Turn the transfer lock on or off |
list_email_forwards | List email forwards |
add_email_forward | Forward an email address |
delete_email_forward | Remove an email forward |
list_url_forwards | List redirects |
add_url_forward | Redirect the domain to a URL |
delete_url_forward | Remove a redirect |
list_contacts | List registrant contacts |
create_contact | Save a registrant contact |
get_account | Get account |
create_topup_link | Top up balance |
search_domains
Check if domains are available and what they cost. Pass an exact domain (acme.com) or a name/phrase (Acme Coffee), which is tried across popular extensions. Prices are AUD cents per year.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
query | string | A domain (acme.com) or a name/phrase (Acme Coffee). Phrases are checked across popular extensions. up to 200 chars |
domains | array of string | Exact domains to check, up to 50 |
tlds | array of string | Extensions to try for a phrase, e.g. ['com','io','com.au'] |
suggest_domains
Generate available domain ideas from keywords describing the project, cheapest first.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
keywordsrequired | string | What the site is about, e.g. 'dog grooming melbourne' up to 200 chars |
tlds | array of string | |
limit | integer | 1 to 30, default 10 |
get_prices
Registration and renewal prices per extension (AUD cents per year). Optionally filter to one extension.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
tld | string | e.g. com, io, com.au |
register_domain
Buy a domain. Spends money: only call after the user confirms the domain and price. Pays from the account balance, or returns a checkout_url for the user to pay. Always set max_price and idempotency_key.
Makes changes. Needs the domains:write scope. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | The domain to register, e.g. acme.com |
years | integer | 1 to 10, default 1 |
max_price | integer | Most you will pay, in AUD cents, for the whole order. Use total from search/quote. Order fails if the price is higher. |
contact_id | string | Saved registrant contact. Defaults to the account's default contact. |
contact | object | Registrant details, if there's no saved contact. Saved for next time. |
contact.first_namerequired | string | up to 60 chars |
contact.last_namerequired | string | up to 60 chars |
contact.organisation | string | up to 120 chars |
contact.emailrequired | email | |
contact.phonerequired | string | Mobile, e.g. 0412 345 678, +61 412 345 678 or +61.412345678 |
contact.address1required | string | up to 120 chars |
contact.address2 | string | up to 120 chars |
contact.cityrequired | string | up to 60 chars |
contact.staterequired | string | For Australia use the abbreviation: NSW, VIC, QLD, SA, WA, TAS, ACT, NT up to 60 chars |
contact.postcoderequired | string | up to 12 chars |
contact.countryrequired | string | ISO 3166-1 alpha-2, e.g. AU, US, GB up to 2 chars |
au_eligibility | object | Required for .com.au, .net.au, .org.au, .id.au and .au names (auDA rules) |
au_eligibility.registrant_namerequired | string | Legal name of the registrant (company or person) up to 255 chars |
au_eligibility.registrant_idrequired | string | ABN, ACN or other ID number, digits only up to 50 chars |
au_eligibility.registrant_id_typerequired | "ABN" | "ACN" | "OTHER" | OTHER covers state business registration numbers and incorporated associations |
au_eligibility.eligibility_typerequired | string (see list) | Entity type. Most businesses are 'Company' (Pty Ltd), 'Sole Trader' or 'Registered Business'. .id.au only allows 'Citizen/Resident'. |
au_eligibility.eligibility_name | string | Trading or business name the domain is based on, if different from registrant_name up to 255 chars |
au_eligibility.eligibility_id | string | ID that backs eligibility_name (e.g. a trademark number or state business number) up to 50 chars |
au_eligibility.eligibility_id_type | string (see list) | |
nameservers | array of string | Custom nameservers. Leave empty to use Plonki DNS (needed for the DNS tools). |
payment | "auto" | "balance" | "checkout" | auto: use balance, or return a pay link if it's short. checkout: always return a pay link. default "auto" |
idempotency_key | string | Same key returns the same order instead of buying twice up to 100 chars |
external_ref | string | Your own reference, e.g. your customer's ID up to 200 chars |
get_order
Status of a registration or renewal order. Poll this after register_domain until status is completed or failed.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
order_idrequired | string |
list_domains
Domains in this account. Filter by external_ref to find a specific end customer's domains.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
external_ref | string |
get_domain
Details for one domain: expiry, nameservers, whether Plonki manages its DNS.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
domainrequired | string | e.g. acme.com |
point_domain
Connect a domain to where the site is hosted, e.g. target 'myapp.vercel.app', 'myapp.netlify.app', 'myapp.pages.dev' or an IP address. Sets the right DNS records for the root and www and returns next steps for the host.
Makes changes. Needs the domains:write scope. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
targetrequired | string | Where the site is hosted: an IPv4 address (76.76.21.21) or a hostname (myapp.vercel.app, myapp.pages.dev, myapp.netlify.app) |
include_www | boolean | default true |
set_nameservers
Use another DNS provider's nameservers (Cloudflare, Vercel...). Pass an empty list to go back to Plonki DNS.
Makes changes. Needs the domains:write scope. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
nameserversrequired | array of string | Hostnames, e.g. ['ns1.vercel-dns.com','ns2.vercel-dns.com']. Send an empty array to switch back to Plonki DNS. |
list_dns_records
DNS records for a domain whose DNS is managed by Plonki.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
domainrequired | string | e.g. acme.com |
add_dns_record
Add a DNS record (A, AAAA, CNAME, MX, TXT, SRV, CAA, NS). Use name '@' for the root. Good for domain verification TXT records and email MX records.
Makes changes. Needs the domains:write scope.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
name | string | Host label: '@' for the root, 'www', 'api', etc. default "@" |
typerequired | "A" | "AAAA" | "CNAME" | "MX" | "TXT" | "SRV" | "CAA" | "NS" | |
contentrequired | string | up to 2048 chars |
ttl | integer | 300 to 86400, default 3600 |
priority | integer | MX and SRV only 0 to 65535 |
delete_dns_record
Delete a DNS record by id (from list_dns_records).
Makes changes. Needs the domains:write scope. Deletes data. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
record_idrequired | string |
renew_domain
Extend a domain's registration. Spends money: confirm with the user first.
Makes changes. Needs the domains:write scope. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
years | integer | 1 to 10, default 1 |
max_price | integer | |
payment | "auto" | "balance" | "checkout" | default "auto" |
idempotency_key | string | up to 100 chars |
get_transfer_code
The EPP/auth code needed to move the domain to another registrar.
Read only. Needs the domains:write scope.
| Field | Type | Description |
|---|---|---|
domainrequired | string | e.g. acme.com |
check_transfer
Check whether a domain the user already owns elsewhere can move to Plonki, and what it costs. Needs the transfer (EPP/auth) code from the current registrar. Doesn't buy anything.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
domainrequired | string | The domain to move to Plonki, e.g. acme.com |
auth_coderequired | string | Transfer (EPP/auth) code from the current registrar up to 100 chars |
transfer_domain
Move a domain from another registrar to Plonki. Spends money: call check_transfer first and confirm the price with the user. Transfers take 1 to 7 days; poll get_order.
Makes changes. Needs the domains:write scope. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | The domain to move to Plonki, e.g. acme.com |
auth_coderequired | string | Transfer (EPP/auth) code from the current registrar up to 100 chars |
max_price | integer | Most you will pay, in AUD cents. Use the price from check_transfer. |
contact_id | string | Saved owner contact. Defaults to the account's default contact. |
contact | object | Owner details, if there's no saved contact. Saved for next time. |
contact.first_namerequired | string | up to 60 chars |
contact.last_namerequired | string | up to 60 chars |
contact.organisation | string | up to 120 chars |
contact.emailrequired | email | |
contact.phonerequired | string | Mobile, e.g. 0412 345 678, +61 412 345 678 or +61.412345678 |
contact.address1required | string | up to 120 chars |
contact.address2 | string | up to 120 chars |
contact.cityrequired | string | up to 60 chars |
contact.staterequired | string | For Australia use the abbreviation: NSW, VIC, QLD, SA, WA, TAS, ACT, NT up to 60 chars |
contact.postcoderequired | string | up to 12 chars |
contact.countryrequired | string | ISO 3166-1 alpha-2, e.g. AU, US, GB up to 2 chars |
payment | "auto" | "balance" | "checkout" | default "auto" |
idempotency_key | string | Same key returns the same order instead of transferring twice up to 100 chars |
external_ref | string | Your own reference, e.g. your customer's ID up to 200 chars |
set_transfer_lock
Lock a domain so it can't be transferred away (locked: true), or turn the lock off before moving it to another registrar (locked: false). Not available for .au.
Makes changes. Needs the domains:write scope. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
lockedrequired | boolean | true stops the domain being transferred away; false allows a transfer out |
list_email_forwards
Email addresses on the domain that forward to another inbox.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
domainrequired | string | e.g. acme.com |
add_email_forward
Make an address like hello@yourdomain forward to an existing inbox (Gmail, Outlook...). Needs the domain on Plonki DNS.
Makes changes. Needs the domains:write scope.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
aliasrequired | string | The part before the @, e.g. hello for hello@yourdomain |
forward_torequired | email | Inbox that receives the mail, e.g. sam@gmail.com |
delete_email_forward
Stop forwarding an address (id from list_email_forwards).
Makes changes. Needs the domains:write scope. Deletes data. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
forward_idrequired | string |
list_url_forwards
Hostnames on the domain that redirect to another URL.
Read only. Needs domains:read.
| Field | Type | Description |
|---|---|---|
domainrequired | string | e.g. acme.com |
add_url_forward
Send visitors to another web address with a permanent (301) redirect, e.g. the root domain to an Instagram or Facebook page. Replaces any website on that hostname.
Makes changes. Needs the domains:write scope.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
host | string | @ for the domain itself, or a label like www default "@" |
destinationrequired | string | Full URL to send visitors to, e.g. https://instagram.com/acmecoffee |
delete_url_forward
Delete a redirect (id from list_url_forwards).
Makes changes. Needs the domains:write scope. Deletes data. Safe to retry.
| Field | Type | Description |
|---|---|---|
domainrequired | string | |
forward_idrequired | string |
list_contacts
Saved domain owner contacts. The default is used when register_domain gets no contact.
Read only. Needs domains:read.
No inputs.
create_contact
Save the domain owner's details for future registrations.
Makes changes. Needs the domains:write scope.
| Field | Type | Description |
|---|---|---|
first_namerequired | string | up to 60 chars |
last_namerequired | string | up to 60 chars |
organisation | string | up to 120 chars |
emailrequired | email | |
phonerequired | string | Mobile, e.g. 0412 345 678, +61 412 345 678 or +61.412345678 |
address1required | string | up to 120 chars |
address2 | string | up to 120 chars |
cityrequired | string | up to 60 chars |
staterequired | string | For Australia use the abbreviation: NSW, VIC, QLD, SA, WA, TAS, ACT, NT up to 60 chars |
postcoderequired | string | up to 12 chars |
countryrequired | string | ISO 3166-1 alpha-2, e.g. AU, US, GB up to 2 chars |
make_default | boolean | default false |
get_account
Account email, balance (AUD cents) and whether this is test mode.
Read only. Needs domains:read.
No inputs.
create_topup_link
Get a checkout link the user can open to add prepaid balance (AUD cents, $10 to $10,000).
Makes changes. Needs the billing scope.
| Field | Type | Description |
|---|---|---|
amountrequired | integer | AUD cents, $10 to $10,000 1000 to 1000000 |