Back to knowledgebase
AIvikings Knowledgebase

AIvikings MCP tools reference

A complete reference for the 31 AIvikings MCP tools for domains, pricing, transfers, DNS, contacts, account data, and customer workflows.

mcp tools domain registration dns transfers contacts

AIvikings exposes 31 MCP tools for domain registration, domain management, pricing, transfers, managed DNS, contacts, account identity, and prepaid balance checks. These tools let an AI agent work with domains as callable actions instead of asking a human to click through a registrar dashboard.

This reference is the detailed companion to the compact tools list in the AIvikings docs. Use it when you want to understand what each tool does, what parameters it accepts, what it returns, and when an agent should call it.

MCP reference

Quick answer

The AIvikings MCP endpoint is:

MCP endpointhttps://mcp.aivikings.ai/mcp

MCP-compatible clients can discover the tools with tools/list. Calling protected tools requires OAuth authorization for the connected AIvikings account.

Tool groups

31 tools in six groups

Risk levels

How to read the risk pills

Read Reads data without changing it. Write Changes account, contact, domain, DNS, or configuration data. Spend or destructive Can spend account credit, start a paid lifecycle action, or delete a DNS record.

For production agents, a practical permission model is to allow low-risk read tools and require confirmation for registration, renewal, transfer, DNS deletion, and other write actions.

Account and identity

5 tools

Who you are, your balance, and account plumbing.

get_current_user Read

Return the account tied to the current token.

When to use

Confirm the connection is authenticated and see which customer the agent is acting as.

Parameters

No input parameters.

Returns

The authenticated flag plus the customer id, name, and email. api_key_id is null on an OAuth/bearer session.

Example
You ask

Which AIvikings account am I connected as?

The agent

The agent calls get_current_user and replies with the name and email on the account, confirming the connection is live.

Behind the scenes
{
  "tool": "get_current_user",
  "arguments": {}
}
get_customer Read

Fetch the customer record for the current token.

When to use

Read the stored profile for the account the token belongs to. A supplied customer id must match the token.

Parameters
ParameterRequiredTypeNotes
customer_idOptionalstring or integerOptional. Must match the token's own customer if provided.
Returns

The customer record linked to the bearer token.

Example
You ask

Show me my AIvikings account details.

The agent

The agent reads the customer record and summarises your profile, such as your email and preferred currency.

Behind the scenes
{
  "tool": "get_customer",
  "arguments": {
    "customer_id": "cus_XXXXXXXXXXXX"
  }
}
create_customer Write

Create a new customer, without issuing an API key.

When to use

Provision a downstream customer record. Does not return credentials.

Parameters
ParameterRequiredTypeNotes
emailRequiredstringCustomer email.
company_nameOptionalstringOptional company name.
display_nameOptionalstringOptional display name.
preferred_currencyOptionalstringDefaults to USD.
referral_codeOptionalstringOptional referral code.
referred_byOptionalstringOptional referrer.
Returns

The created customer record.

Example
You ask

Set up a new AIvikings customer for hello@customer.icu.

The agent

The agent creates the customer and confirms the new account, noting that no login credentials are issued by this step.

Behind the scenes
{
  "tool": "create_customer",
  "arguments": {
    "email": "hello@customer.icu",
    "preferred_currency": "USD"
  }
}
get_prepaid_balance Read

Return prepaid wallet balances for domain purchases.

When to use

Check funds before registering or renewing. Shows USD and EUR wallets.

Parameters
ParameterRequiredTypeNotes
currencyOptionalstringRequested currency. Defaults to USD.
Returns

Balance in the requested currency plus a per-wallet breakdown. When automatic conversion is on, a zero balance in one currency does not block a purchase if the other wallet has enough credit.

Example
You ask

How much credit do I have left for registering domains?

The agent

The agent checks your balance and tells you the available amount on the account.

Behind the scenes
{
  "tool": "get_prepaid_balance",
  "arguments": {
    "currency": "USD"
  }
}
reconcile_provider_client Write

Link or create the registrar client account for this customer.

When to use

One-time plumbing to prevent duplicate registrar client records. Rarely needed by hand.

Parameters
ParameterRequiredTypeNotes
customer_idOptionalstring or integerOptional. Must match the token if provided.
Returns

The linked or newly created provider client reference.

Example
You ask

My account seems out of sync with the registrar, can you fix the link?

The agent

The agent links or recreates your registrar client record and confirms the account is connected, avoiding duplicates.

Behind the scenes
{
  "tool": "reconcile_provider_client",
  "arguments": {}
}

Availability and pricing

3 tools

Check names and see prices before you buy.

check_single_domain_availability Read

Check availability and price for one domain.

When to use

Look up a single exact name and get its price in one call.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to check, e.g. exampledomain.icu.
currencyOptionalstringDefaults to USD.
Returns

A one-item domains array with availability, long_domain flag, domain_type, prices, premium flag, environment, and the provider code and description.

Example
You ask

Is myproject.icu available?

The agent

The agent checks the one name and tells you whether it is free and what it would cost to register, renew, and transfer.

Behind the scenes
{
  "tool": "check_single_domain_availability",
  "arguments": {
    "domain": "exampledomain.icu",
    "currency": "USD"
  }
}
check_domain_availability Read

Check availability for up to 200 domains at once.

When to use

Batch-check a list of candidate names. is_premium flags premium pricing; domain_type only reflects name length.

Parameters
ParameterRequiredTypeNotes
domainsRequiredstring[]Up to 200 domains to check.
currencyOptionalstringDefaults to USD.
Returns

A domains array, one entry per input name, in the same shape as the single check.

Example
You ask

Check whether myproject.icu, myproject.sbs, and myproject.cfd are free.

The agent

The agent batch-checks all three and lists which are available with their prices, and which are taken.

Behind the scenes
{
  "tool": "check_domain_availability",
  "arguments": {
    "domains": [
      "myproject.icu",
      "myproject.sbs",
      "myproject.cfd"
    ],
    "currency": "USD"
  }
}
get_domain_pricing Read

Get a full price schedule for one domain.

When to use

Show registration, renewal, and transfer prices, and the per-year registration schedule, before committing.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to price.
currencyOptionalstringOmit to use the returned currency. USD and EUR can be requested.
Returns

Customer-facing registration, renewal, and transfer prices, a registration_prices array by year, min and max registration years, and is_premium. Never exposes upstream cost prices.

Example
You ask

How much would it cost to register exampledomain.icu for three years?

The agent

The agent pulls the price schedule and gives you the one, two, and three year registration prices plus renewal and transfer costs.

Behind the scenes
{
  "tool": "get_domain_pricing",
  "arguments": {
    "domain": "exampledomain.icu"
  }
}

Registration and lifecycle

5 tools

Register, renew, inspect, and list domains.

register_domain Spend or destructive

Register a domain for a number of years. Spends credit.

When to use

Buy a name once you have confirmed availability and a registration-ready contact. Uses account default nameservers when none are given.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to register.
period_yearsRequiredintegerRegistration length in years.
contact_handleOptionalstringA complete reusable contact for all roles. Call list_domain_registration_contacts first.
nameserversOptionalstring[]Optional. Defaults to the account's configured nameservers.
currencyOptionalstringUSD or EUR. Match the currency used for the price quote.
allow_premiumOptionalbooleanSet true only after the user accepts a premium price shown via get_domain_pricing.
Returns

The created domain record, including status and expiry once provisioned.

Example
You ask

Register myproject.icu for one year for me.

The agent

The agent confirms availability and your default contact, then registers the domain and reports it as registered with an expiry date. Because this spends credit, a well-configured agent will confirm before buying.

Behind the scenes
{
  "tool": "register_domain",
  "arguments": {
    "domain": "myproject.icu",
    "period_years": 1,
    "contact_handle": "contact-2"
  }
}
renew_domain Spend or destructive

Renew a domain for a number of years. Spends credit.

When to use

Extend a domain you already own before it expires.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to renew.
period_yearsRequiredintegerAdditional years.
Returns

The updated domain record with the new expiry.

Example
You ask

Renew kaffe.icu for another year.

The agent

The agent renews the domain and confirms the new expiry date. This spends credit, so the agent typically confirms first.

Behind the scenes
{
  "tool": "renew_domain",
  "arguments": {
    "domain": "myproject.icu",
    "period_years": 1
  }
}
get_domain_status Read

Get registration status and nameservers for one domain.

When to use

Inspect a single domain: status, expiry, nameservers, registrant verification, and lock state.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to inspect.
Returns

Status, expiry, nameservers, long_domain, period, contact handle, registrant verification status and date, provider lock flag, and provider code and description.

Example
You ask

What's the status of kaffe.icu and when does it expire?

The agent

The agent reports the domain's status, expiry, nameservers, and whether the registrant is verified and the domain is locked.

Behind the scenes
{
  "tool": "get_domain_status",
  "arguments": {
    "domain": "kaffe.icu"
  }
}
list_domains Read

List domains in the local registrar datastore.

When to use

Enumerate everything on the account with status, nameservers, contact handle, and dates.

Parameters

No input parameters.

Returns

A domains array. Each entry has id, domain, status, long_domain, period_years, nameservers, contact_handle, customer_id, expires_at, created_at, and updated_at.

Example
You ask

List all the domains on my account.

The agent

The agent returns your domains with their status and expiry dates, so you can see everything you own at a glance.

Behind the scenes
{
  "tool": "list_domains",
  "arguments": {}
}
reconcile_domains Read

Compare local domain records with the configured registrar provider records.

When to use

Audit for drift between the local datastore and the configured registrar provider.

Parameters

No input parameters.

Returns

A reconciliation summary of matches and differences.

Example
You ask

Do my domain records match what the registrar has?

The agent

The agent compares local records with configured registrar provider records and tells you whether everything is in sync or flags any differences.

Behind the scenes
{
  "tool": "reconcile_domains",
  "arguments": {}
}

Transfers and locks

5 tools

Move domains in, and control transfer locks.

domain_transfer Spend or destructive

Transfer a domain in to AIvikings. Spends credit.

When to use

Bring an existing domain from another registrar, using its auth code.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to transfer in.
auth_codeRequiredstringThe EPP/auth code from the losing registrar.
period_yearsOptionalintegerDefaults to 1.
Returns

The transfer request record and its status.

Example
You ask

Transfer example.icu to AIvikings, the auth code is ABC-123.

The agent

The agent starts the inbound transfer using your auth code and reports that the transfer is pending. This spends credit.

Behind the scenes
{
  "tool": "domain_transfer",
  "arguments": {
    "domain": "example.icu",
    "auth_code": "AUTH-CODE-HERE",
    "period_years": 1
  }
}
get_transfer_auth_code Read

Return the EPP transfer auth code for a domain you own.

When to use

Retrieve the code needed to transfer a domain out to another registrar. Fetched on demand.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringA domain owned by the authenticated customer.
Returns

The current EPP auth code for the domain.

Example
You ask

I want to move kaffe.icu to another registrar, what's the auth code?

The agent

The agent retrieves and gives you the domain's EPP auth code to hand to the gaining registrar.

Behind the scenes
{
  "tool": "get_transfer_auth_code",
  "arguments": {
    "domain": "kaffe.icu"
  }
}
regenerate_transfer_auth_code Write

Generate a new auth code, invalidating the old one.

When to use

Rotate the transfer code, for example if the previous one may be compromised.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringA domain owned by the authenticated customer.
Returns

The new EPP auth code. The previous code stops working.

Example
You ask

Reset the transfer code for kaffe.icu, I think the old one leaked.

The agent

The agent generates a fresh auth code and gives it to you, and the previous code stops working.

Behind the scenes
{
  "tool": "regenerate_transfer_auth_code",
  "arguments": {
    "domain": "kaffe.icu"
  }
}
lock_domain Write

Enable the registrar transfer lock.

When to use

Protect a domain from being transferred away.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringA domain owned by the authenticated customer.
Returns

Confirmation that the transfer lock is on.

Example
You ask

Lock kaffe.icu so it can't be transferred away.

The agent

The agent enables the transfer lock and confirms the domain is protected.

Behind the scenes
{
  "tool": "lock_domain",
  "arguments": {
    "domain": "kaffe.icu"
  }
}
unlock_domain Write

Disable the registrar transfer lock.

When to use

Prepare a domain for transfer out by removing its lock.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringA domain owned by the authenticated customer.
Returns

Confirmation that the transfer lock is off.

Example
You ask

Unlock kaffe.icu, I'm about to transfer it out.

The agent

The agent removes the transfer lock and confirms the domain is ready to transfer.

Behind the scenes
{
  "tool": "unlock_domain",
  "arguments": {
    "domain": "kaffe.icu"
  }
}

Nameservers and DNS

6 tools

Point the domain and manage its zone records.

update_nameservers Write

Replace a domain's nameservers.

When to use

Delegate a domain to a different DNS provider or back to AIvikings.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to update.
nameserversRequiredstring[]The full replacement nameserver set.
Returns

The updated nameserver set for the domain.

Example
You ask

Point kaffe.icu at AIvikings nameservers.

The agent

The agent replaces the domain's nameservers with the ones you name and confirms the new delegation.

Behind the scenes
{
  "tool": "update_nameservers",
  "arguments": {
    "domain": "kaffe.icu",
    "nameservers": [
      "ns1.aivikings.net",
      "ns2.aivikings.net"
    ]
  }
}
list_dns_records Read

List the managed DNS records for a domain.

When to use

Read the current zone before editing. Use the returned id to update or delete a record.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringA domain owned by the authenticated customer.
Returns

A records array. Each record has recordName, recordType, recordContent, recordTTL, recordPriority, and dnszoneRecordID (the id to pass to update or delete). Note the provider spells one field recordWeieght.

Example
You ask

Show me the DNS records for kaffe.icu.

The agent

The agent lists the current zone, including record types, values, and TTLs, so you can see what is set before changing anything.

Behind the scenes
{
  "tool": "list_dns_records",
  "arguments": {
    "domain": "kaffe.icu"
  }
}
configure_dns_record Write

Set the A record for a domain or subdomain.

When to use

Quick path to point a name at an IP. Use @ or omit record_name for the root; pass a relative name like www or staging.api for a subdomain.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain, or a full hostname the server resolves to its parent.
record_valueRequiredstringThe IPv4 address for the A record.
record_nameOptionalstringRelative name, or @ for the apex. Defaults to @.
Returns

The A record that was set.

Example
You ask

Point kaffe.icu at 87.62.127.19.

The agent

The agent sets the root A record to that IP address and confirms the domain now points there.

Behind the scenes
{
  "tool": "configure_dns_record",
  "arguments": {
    "domain": "kaffe.icu",
    "record_name": "@",
    "record_value": "87.62.127.19"
  }
}
add_dns_record Write

Add a managed DNS record (A, AAAA, CNAME, MX, TXT, NS, SRV).

When to use

Create a new record. Relative names expand under the domain, including nested names; use @ for the apex. SRV needs port and weight.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to add the record to.
record_nameRequiredstringRelative name or @ for the apex.
record_typeRequiredstringA, AAAA, CNAME, MX, TXT, NS, or SRV.
record_valueRequiredstringThe record content.
record_ttlOptionalintegerTime to live in seconds. Defaults to 43200.
record_priorityOptionalintegerFor MX and SRV. Defaults to 0.
record_portOptionalintegerRequired for SRV.
record_weightOptionalintegerRequired for SRV.
Returns

The created record, including its dnszoneRecordID.

Example
You ask

Add a mail record for kaffe.icu pointing to mail.kaffe.icu.

The agent

The agent adds the MX record with the right priority and confirms it was created.

Behind the scenes
{
  "tool": "add_dns_record",
  "arguments": {
    "domain": "kaffe.icu",
    "record_name": "@",
    "record_type": "MX",
    "record_value": "mail.kaffe.icu",
    "record_priority": 10
  }
}
update_dns_record Write

Replace an existing managed DNS record.

When to use

Change a record in place. Call list_dns_records first to get its dnszoneRecordID. All fields describe the desired replacement.

Parameters
ParameterRequiredTypeNotes
dns_zone_record_idRequiredstringThe dnszoneRecordID from list_dns_records.
domainRequiredstringThe domain the record belongs to.
record_nameRequiredstringRelative name or @.
record_typeRequiredstringThe record type.
record_valueRequiredstringThe new content.
record_ttlOptionalintegerDefaults to 43200.
record_priorityOptionalintegerFor MX and SRV. Defaults to 0.
record_portOptionalintegerFor SRV.
record_weightOptionalintegerFor SRV.
Returns

The updated record.

Example
You ask

Change the A record on kaffe.icu to 203.0.113.10.

The agent

The agent looks up the existing record, replaces it with the new IP, and confirms the change.

Behind the scenes
{
  "tool": "update_dns_record",
  "arguments": {
    "dns_zone_record_id": "1113100947",
    "domain": "kaffe.icu",
    "record_name": "@",
    "record_type": "A",
    "record_value": "203.0.113.10"
  }
}
delete_dns_record Spend or destructive

Permanently delete a managed DNS record.

When to use

Remove a record. Call list_dns_records first and pass the exact dnszoneRecordID. This cannot be undone.

Parameters
ParameterRequiredTypeNotes
dns_zone_record_idRequiredstringThe dnszoneRecordID from list_dns_records.
domainRequiredstringThe domain the record belongs to.
Returns

Confirmation of deletion.

Example
You ask

Remove the MX record from kaffe.icu.

The agent

The agent finds the record and deletes it. Because deletion is permanent, a careful agent confirms which record before removing it.

Behind the scenes
{
  "tool": "delete_dns_record",
  "arguments": {
    "dns_zone_record_id": "1113104636",
    "domain": "kaffe.icu"
  }
}

Contacts and registrant

7 tools

Manage reusable contacts and registrant roles.

create_contact Write

Create a reusable contact for registrations.

When to use

Make a contact once and reuse its handle across many domains. Handle is generated if omitted.

Parameters
ParameterRequiredTypeNotes
nameRequiredstringContact full name.
emailRequiredstringContact email.
addressRequiredstringStreet address.
cityRequiredstringCity.
stateRequiredstringState or region.
postal_codeRequiredstringPostal code.
countryRequiredstringCountry.
phone_country_codeRequiredstringPhone country code, e.g. 45.
phone_numberRequiredstringPhone number.
organizationOptionalstringOptional organization.
address_line_2OptionalstringOptional second address line.
handleOptionalstringOptional. Generated from initials, digits, and country if omitted.
default_registrantOptionalbooleanSet as default registrant.
default_adminOptionalbooleanSet as default admin.
default_technicalOptionalbooleanSet as default technical.
default_billingOptionalbooleanSet as default billing.
Returns

The created contact, including its handle for use in register_domain.

Example
You ask

Save my details as a reusable contact for future registrations.

The agent

The agent creates a contact from your details and confirms its handle, which can then be reused across domains.

Behind the scenes
{
  "tool": "create_contact",
  "arguments": {
    "name": "Alex Customer",
    "email": "hello@customer.icu",
    "address": "Agent Street 1",
    "city": "Copenhagen",
    "state": "Copenhagen",
    "postal_code": "1000",
    "country": "Denmark",
    "phone_country_code": "45",
    "phone_number": "12345678"
  }
}
list_contacts Read

List reusable contacts for the account.

When to use

See existing contacts, their handles, default roles, and how many domains use each.

Parameters

No input parameters.

Returns

Contact records with handle, name, email, address fields, the default_* role flags, used_by_domain_count, and timestamps.

Example
You ask

What contacts do I have saved?

The agent

The agent lists your reusable contacts, their handles, default roles, and how many domains use each.

Behind the scenes
{
  "tool": "list_contacts",
  "arguments": {}
}
get_contact Read

Get one reusable contact by its handle.

When to use

Read a single contact's full details.

Parameters
ParameterRequiredTypeNotes
contact_handleRequiredstringThe contact handle.
Returns

The full contact record.

Example
You ask

Show me the details for my main contact.

The agent

The agent reads that contact by its handle and shows the full record.

Behind the scenes
{
  "tool": "get_contact",
  "arguments": {
    "contact_handle": "contact-2"
  }
}
list_domain_registration_contacts Read

List contacts usable for registration, with readiness.

When to use

Always call before register_domain. Shows which contacts are complete, what fields are missing, and their default roles.

Parameters

No input parameters.

Returns

Registration contact handles, each with a registration-ready flag, any missing required fields, and default role assignments.

Example
You ask

Am I ready to register a domain, contact-wise?

The agent

The agent checks your registration contacts and tells you which are complete and ready, or what fields are still missing.

Behind the scenes
{
  "tool": "list_domain_registration_contacts",
  "arguments": {}
}
assign_domain_registration_contact_roles Write

Assign default registration roles to one contact.

When to use

Make a contact the default for registrant, admin, technical, and/or billing. Replaces the prior default for each role set.

Parameters
ParameterRequiredTypeNotes
contact_handleRequiredstringThe contact to assign roles to.
assign_registrantOptionalbooleanSet as default registrant.
assign_adminOptionalbooleanSet as default admin.
assign_technicalOptionalbooleanSet as default technical.
assign_billingOptionalbooleanSet as default billing.
Returns

The updated default-role assignments.

Example
You ask

Make my main contact the default for all registration roles.

The agent

The agent assigns that contact as the default registrant, admin, technical, and billing contact and confirms.

Behind the scenes
{
  "tool": "assign_domain_registration_contact_roles",
  "arguments": {
    "contact_handle": "contact-2",
    "assign_registrant": true,
    "assign_admin": true
  }
}
remove_domain_registration_contact_roles Write

Remove default registration roles from one contact.

When to use

Clear a contact's default roles. Does not delete the contact. Removing a role without assigning it elsewhere can make registration validation fail unless register_domain is given an explicit contact.

Parameters
ParameterRequiredTypeNotes
contact_handleRequiredstringThe contact to remove roles from.
remove_registrantOptionalbooleanRemove default registrant.
remove_adminOptionalbooleanRemove default admin.
remove_technicalOptionalbooleanRemove default technical.
remove_billingOptionalbooleanRemove default billing.
Returns

The updated default-role assignments.

Example
You ask

Stop using that contact as my default billing contact.

The agent

The agent removes the billing role from that contact and confirms, leaving the contact itself intact.

Behind the scenes
{
  "tool": "remove_domain_registration_contact_roles",
  "arguments": {
    "contact_handle": "contact-2",
    "remove_billing": true
  }
}
update_registrant_contact Write

Update the registrant contact for a domain.

When to use

Change a domain's registrant. Name, organization, or email changes require acknowledge_transfer_lock=true and can impose a 60-day transfer lock while verification completes.

Parameters
ParameterRequiredTypeNotes
domainRequiredstringThe domain to update.
contact_handleOptionalstringApply an existing reusable contact by handle.
nameOptionalstringNew name. Triggers verification.
organizationOptionalstringNew organization. Triggers verification.
emailOptionalstringNew email. Triggers verification.
addressOptionalstringNew street address.
cityOptionalstringNew city.
stateOptionalstringNew state or region.
postal_codeOptionalstringNew postal code.
countryOptionalstringNew country.
phone_country_codeOptionalstringNew phone country code.
phone_numberOptionalstringNew phone number.
acknowledge_transfer_lockOptionalbooleanRequired for name, org, or email changes. Acknowledges the possible 60-day lock.
Returns

The updated registrant details. A provider-accepted change is reported as verification pending until the registrant completes verification.

Example
You ask

Change the registrant on kaffe.icu to my saved business contact.

The agent

The agent applies the contact to the domain. If the name, organisation, or email changes, it warns that verification is required and a 60-day transfer lock may apply.

Behind the scenes
{
  "tool": "update_registrant_contact",
  "arguments": {
    "domain": "kaffe.icu",
    "contact_handle": "contact-2"
  }
}

Workflow patterns

How agents usually chain the tools

  1. Call get_current_user to confirm the connected account.
  2. Call get_prepaid_balance before any action that spends credit.
  3. Call check_single_domain_availability or check_domain_availability to find available names.
  4. Call get_domain_pricing before asking the user to approve a registration, renewal, or transfer.
  5. Call list_domain_registration_contacts before register_domain.
  6. Call register_domain, renew_domain, or domain_transfer only after the user has approved the spend.
  7. Call get_domain_status, update_nameservers, or DNS record tools to complete routing and verification.

Related guides

Need more help?

Use the contact form if you need help with your AIvikings account, domains, DNS, or MCP setup.