{"ok":true,"version":"agent-domains.v1","generatedAt":"2026-05-30T05:19:58.133Z","artistId":"laurel","principal":{"source":"guest","role":"guest","signedIn":false,"canManageDomains":false,"email":null},"domains":null,"registrations":null,"stateModel":{"quoteFreshness":{"ttlMinutes":15,"expiredCheckoutBlockedReason":"This quote expired. Check the domain again.","guidance":"Agents must present registrar pricing as time-limited and re-check before checkout or final registration."},"intentStates":[{"status":"checkout_ready","meaning":"Fresh registrable quote that can start Stripe checkout after explicit artist/admin confirmation.","nextSafeOperation":"start_domain_checkout","confirmationRequired":true},{"status":"payment_pending","meaning":"Checkout started but payment has not been confirmed by the Stripe webhook.","nextSafeOperation":"inspect_domain_purchase_status","confirmationRequired":false},{"status":"ready_for_registration","meaning":"Payment is confirmed; final registration may be requested only after exact-domain confirmation.","nextSafeOperation":"finalize_domain_registration","confirmationRequired":true},{"status":"registration_requested","meaning":"Fanful submitted or accepted a registrar registration request; agents should poll status, not resubmit.","nextSafeOperation":"inspect_domain_purchase_status","confirmationRequired":false},{"status":"registered","meaning":"Cloudflare Registrar reports the domain active and Fanful-managed DNS records are attached.","nextSafeOperation":"inspect_domain_purchase_status","confirmationRequired":false},{"status":"manual_review","meaning":"Premium, unavailable, stale, failed, or price-changed registration state that needs a human operator.","nextSafeOperation":"park_for_human_review","confirmationRequired":false},{"status":"expired","meaning":"Stripe checkout expired or quote/payment state is no longer usable for checkout.","nextSafeOperation":"check_registrar_domain","confirmationRequired":false},{"status":"failed","meaning":"Checkout or registrar flow failed; inspect the reason before attempting any new action.","nextSafeOperation":"inspect_domain_purchase_status","confirmationRequired":false}],"irreversibleBoundary":{"operationId":"finalize_domain_registration","requirements":["paid ready_for_registration intent","exact domainName repeated by the artist/admin","fresh Cloudflare Check immediately before submission","DOMAIN_REGISTRATION_LIVE_ENABLED=1 for live non-mock registration"],"refusalGuidance":"Refuse ambiguous final-registration requests, stale quotes, domain-name corrections, higher live prices, and missing registrar configuration."},"redactions":["registrar tokens","Stripe checkout session and payment identifiers","Cloudflare raw order diagnostics","private DNS/provider metadata"]},"operations":[{"id":"reserve_fanful_subdomain","toolName":"reserveFanfulSubdomain","enabled":false,"endpoint":{"href":"https://fanful.net/api/admin/domains","method":"POST","auth":"artist-admin","description":"Reserve a Fanful subdomain or create BYO-domain DNS instructions after explicit artist/admin confirmation."},"input":{"action":"reserve_subdomain","subdomain":"artist-slug"},"confirmation":{"required":true,"reason":"Changing the canonical public hostname is externally visible."},"boundaries":["Only reserve fanful.net subdomains for verified artist-admin or automation principals.","Do not promise a hostname is available until the API succeeds."]},{"id":"connect_byo_domain","toolName":"connectByoDomain","enabled":false,"endpoint":{"href":"https://fanful.net/api/admin/domains","method":"POST","auth":"artist-admin","description":"Reserve a Fanful subdomain or create BYO-domain DNS instructions after explicit artist/admin confirmation."},"input":{"action":"connect_byo_domain","hostname":"www.example.com"},"confirmation":{"required":true,"reason":"The artist must confirm the exact hostname before DNS instructions are generated."},"boundaries":["This operation only creates Fanful-side setup instructions; it does not edit the artist's registrar.","Keep account, checkout, and admin flows on fanful.net until cross-host auth tests are explicit."]},{"id":"check_registrar_domain","toolName":"checkRegistrarDomain","enabled":false,"endpoint":{"href":"https://fanful.net/api/admin/domain-purchases","method":"POST","auth":"artist-admin","description":"Search Cloudflare Registrar quotes, start Stripe checkout, and finalize registration after exact-domain confirmation."},"input":{"action":"check_domains","query":"artistdomain.com"},"confirmation":{"required":false,"reason":"Checking availability is read-only, but agents must label registrar pricing as time-limited."},"boundaries":["Use Cloudflare Check results as time-limited quotes; do not treat old prices as current.","If Registrar is unconfigured or returns a premium/manual result, park the request for human review."]},{"id":"start_domain_checkout","toolName":"startDomainCheckout","enabled":false,"endpoint":{"href":"https://fanful.net/api/admin/domain-purchases","method":"POST","auth":"artist-admin","description":"Search Cloudflare Registrar quotes, start Stripe checkout, and finalize registration after exact-domain confirmation."},"input":{"action":"start_checkout","intentId":"domain-registration-artistdomain-com"},"confirmation":{"required":true,"reason":"Checkout commits the artist to paying the annual platform fee and any registrar cost above the included allowance."},"boundaries":["Only start checkout from a fresh authoritative quote returned by Fanful.","Do not register the domain automatically after checkout; final registration requires a fresh Cloudflare check and an explicit paid-state operation."]},{"id":"finalize_domain_registration","toolName":"finalizeDomainRegistration","enabled":false,"endpoint":{"href":"https://fanful.net/api/admin/domain-purchases","method":"POST","auth":"artist-admin","description":"Search Cloudflare Registrar quotes, start Stripe checkout, and finalize registration after exact-domain confirmation."},"input":{"action":"finalize_registration","intentId":"domain-registration-artistdomain-com","domainName":"artistdomain.com"},"confirmation":{"required":true,"reason":"Final registration is billable, non-refundable after success, and requires the exact paid domain to be repeated."},"boundaries":["Only submit this after Fanful shows a paid ready-for-registration intent.","Repeat the exact domain in domainName; never infer or autocorrect it.","Fanful re-runs Cloudflare Check immediately before registration and refuses higher live prices until the difference is paid."]}],"endpoints":{"agentDomains":{"href":"https://fanful.net/api/agent/domains","method":"GET","auth":"guest","description":"Read the agent domain setup contract."},"adminDomains":{"href":"https://fanful.net/api/admin/domains","method":"GET","auth":"artist-admin","description":"Read artist domain status and DNS records."},"adminDomainPurchases":{"href":"https://fanful.net/api/admin/domain-purchases","method":"GET","auth":"artist-admin","description":"Read domain purchase quote, checkout, and final registration status."}}}