register_domain_spt
Register a FRESH domain (an available domain that is NOT a curated Atom marketplace listing) by charging a Stripe Shared Payment Token (SPT) — for users with no Atom balance. This SPENDS REAL MONEY and requires the 'domains:register' scope. For already-listed marketplace domains paid from an Atom balance, use register_domain instead.
MANDATORY three-step flow — never skip a step:
Call with confirm=false to get a QUOTE: price and term_years, both entirely server-authoritative (term_years is derived from the TLD; there is no such input — never invent one).
Call again with confirm=true, the SAME idempotency_key, and NO payment_token: returns a structured payment_required challenge (amount, currency).
Once a Shared Payment Token is obtained for that exact amount, call a third time with confirm=true, the SAME idempotency_key, and payment_token set. Payment is captured FIRST; registration only starts after that succeeds.
PAYMENT PRIORITY for a fresh registration: this tool is priority 1 — try it first, using whatever payment method your own platform can already supply for the payment_token (no external tool needed). Only if you have no way to obtain a payment_token here, fall back to priority 2: get_domain_register_pay_link, paid via link-cli's tools (e.g. mpp_pay), if those are present in this session. There is no checkout-link fallback for a fresh registration — get_checkout_link only works for an already-listed marketplace domain.
Rules: never assume or pass a price or term_years. Reuse one idempotency_key across all calls for the same intent. If registration fails AFTER payment succeeds, the registrar submission itself attempts a real refund of the charge — the result reports whether that happened. If it reports error 'registrant_contact_required', ask the user for their name, phone, address, city, zip, and country, call create_registrant_contact with those, then retry from step 1 — this is expected and not a dead end.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain to register, including extension. | |
| confirm | No | false returns a quote; true attempts payment + registration. | |
| payment_token | No | Shared Payment Token authorizing the exact quoted amount. Omit to receive the payment_required challenge. | |
| idempotency_key | Yes | Client-generated unique key; identical across all calls for the same intended registration. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| price | No | ||
| stage | Yes | ||
| domain | Yes | ||
| success | Yes | ||
| currency | No | ||
| challenge | No | Present when stage=payment_required. | |
| term_years | No | ||
| idempotency_key | No | ||
| payment_intent_id | No | ||
| registrar_domain_id | No |