Skip to main content
Glama

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

NameRequiredDescriptionDefault
cityYes
emailYes
phoneYes
stateYes
domainYes
periodNo
countryNoCA
address1Yes
last_nameYes
first_nameYes
quote_onlyNo
usage_modeNosite
forward_urlNo
nameserversNo
postal_codeYes
quote_tokenNo
forward_typeNo301
ca_legal_typeNo
whois_privacyNo
forward_include_pathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / quote_only
      Added value: +{
      +  "default": true,
      +  "title": "Quote Only",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / quote_token
      Added value: +{
      +  "default": "",
      +  "title": "Quote Token",
      +  "type": "string"
      +}
    • addedInput schema / properties / whois_privacy
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Whois Privacy"
      +}
  2. Changed5 schema fields changed
    • addedInput schema / properties / forward_include_path
      Added value: +{
      +  "default": true,
      +  "title": "Forward Include Path",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / forward_type
      Added value: +{
      +  "default": "301",
      +  "title": "Forward Type",
      +  "type": "string"
      +}
    • addedInput schema / properties / forward_url
      Added value: +{
      +  "default": "",
      +  "title": "Forward Url",
      +  "type": "string"
      +}
    • addedInput schema / properties / nameservers
      Added value: +{
      +  "default": null,
      +  "items": {},
      +  "title": "Nameservers",
      +  "type": "array"
      +}
    • addedInput schema / properties / usage_mode
      Added value: +{
      +  "default": "site",
      +  "title": "Usage Mode",
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does so thoroughly. It discloses the pricing calculation, BoC rate handling, rounding behavior, quote expiry/refusal after four days, the quote/purchase flow, required write scope, and return/error shapes. This goes well beyond a simple mutation statement and gives the agent accurate expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-organized into purpose, workflow, pricing, args, returns, and errors. Every sentence adds operational value, and the most critical workflow guidance is placed near the top. The length is justified by the tool's 20 parameters and multi-step quote/purchase behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 20-parameter tool with no output schema and no annotations, the description is remarkably complete. It covers the full calling sequence, all parameter semantics, return payloads for both quote and purchase modes, error cases, and pricing edge cases. An agent has everything needed to invoke the tool correctly and respond to quote/purchase outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the JSON schema has no property descriptions, the description's Args section documents all 20 parameters with defaults, formats, examples, and conditional requirements (e.g., nameservers for external_ns, forward_url for forward, ca_legal_type for .ca). This is exactly the kind of semantic enrichment an agent needs beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Register a new domain with WHOIS contact info and Stripe billing.' This clearly distinguishes register_domain from read-only domain tools like search_domain, domain_detail, and list_domains. It also conveys the two-phase quote-then-purchase workflow, so an agent immediately understands what the tool accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit procedural guidance: first call with quote_only=True, present the quote details, obtain consent, then repeat with quote_only=False and quote_token. It also states the API key requirement and warns against automatically accepting replacement tokens. It does not explicitly name alternative tools for when not to use this one, but the usage context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.