register_domain
Register a new domain with WHOIS contact info and Stripe billing.
First request a quote (quote_only=True), present registration_cad, privacy_cad, total_cad, term and privacy choice, and obtain customer consent. Then repeat the same input with quote_only=False and the quote_token. Never automatically accept a replacement token after a price change. Included annual registration covers registration only; selected privacy uses the same BoC daily USD/CAD rate, rounded to CAD cents, no markup. Registration/renewal convert their actual operation-specific USD cost first, then apply 10% and round up to CAD .95. Rates older than four days refuse.
Requires: API key with write scope.
Args:
whois_privacy: Explicit privacy choice; defaults selected only for supported paid TLDs.
quote_only: True returns a quote without registration or payment.
quote_token: Signed five-minute quote accepted by the customer.
domain: Full domain name (e.g. "example.ca", "mybusiness.com")
first_name: Registrant first name
last_name: Registrant last name
email: Registrant email address
phone: Phone number in E.164 format: "+1.5145551234"
address1: Street address (e.g. "123 Rue Principale")
city: City (e.g. "Montreal")
state: Province/state code (e.g. "QC", "ON", "BC")
postal_code: Postal/ZIP code (e.g. "H2X 1Y4")
country: ISO 3166-1 alpha-2 country code (default: "CA")
period: Registration period in years (1–10, default: 1)
usage_mode: What the domain points at.
"site" (default) links it to the billing subscription's
site with automatic DNS + Nginx + SSL.
"external_ns" delegates it to nameservers — the domain is
registered here but hosted elsewhere; we manage no DNS.
"dns_only" keeps it on our DNS with no site behind it.
"forward" redirects visitors to forward_url.
nameservers: Ordered list of 2–6 nameserver hostnames. Required when
usage_mode="external_ns" (e.g. ["ns1.other.com", "ns2.other.com"])
forward_url: Redirect target, required when usage_mode="forward"
(e.g. "https://example.org")
forward_type: "301" permanent (default) or "302" temporary
forward_include_path: Append the visitor's path to the target (default: True)
ca_legal_type: Required for .ca domains. CIRA legal types:
"CCT" (Canadian citizen), "RES" (permanent resident),
"CCO" (corporation), "GOV" (government), "EDU" (education),
"ASS" (association), "HOP" (hospital), "PRT" (partnership),
"TDM" (trademark), "TRD" (trade union), "PLT" (political party),
"LAM" (library/archive/museum), "MAJ" (Her Majesty),
"INB" (Indian band), "ABO" (Aboriginal peoples),
"LGR" (legal representative)
Returns: Quote request: {"quote": {"registration_cad": "...", "privacy_cad": "...", "total_cad": "...", "currency": "CAD", "period": 1, "whois_privacy": false, "expires_at": "iso8601"}, "quote_token": "...", "privacy_explanation": "..."} Purchase: {"name": "example.ca", "status": "registered", "last_pricing_quote": {...}, ...}
Errors: VALIDATION_ERROR: Missing required fields, invalid phone format, missing ca_legal_type for .ca domains NOT_FOUND: Domain not available (already registered by someone else)
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"domain": "<domain>",
"first_name": "<first_name>",
"last_name": "<last_name>",
"email": "<email>",
"phone": "<phone>",
"address1": "<address1>",
"city": "<city>",
"state": "<state>",
"postal_code": "<postal_code>"
},
"name": "register_domain"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | ||
| Yes | |||
| phone | Yes | ||
| state | Yes | ||
| domain | Yes | ||
| period | No | ||
| country | No | CA | |
| address1 | Yes | ||
| last_name | Yes | ||
| first_name | Yes | ||
| quote_only | No | ||
| usage_mode | No | site | |
| forward_url | No | ||
| nameservers | No | ||
| postal_code | Yes | ||
| quote_token | No | ||
| forward_type | No | 301 | |
| ca_legal_type | No | ||
| whois_privacy | No | ||
| forward_include_path | No |