{"openapi":"3.1.0","info":{"title":"Unstoppable Domains API","description":"Search, check availability, and purchase traditional DNS domains. This API enables AI assistants to help users find and buy domain names.","version":"1.0.0","contact":{"name":"Unstoppable Domains","url":"https://unstoppabledomains.com","email":"support@unstoppabledomains.com"},"x-logo":{"url":"https://unstoppabledomains.com/images/logos/ud-logo-icon.svg"}},"servers":[{"url":"https://api.unstoppabledomains.com","description":"Production server"}],"paths":{"/mcp/v1/actions/ud_domains_search":{"post":{"operationId":"domainsSearch","summary":"Search for available domains or check specific domain availability","description":"Search for domain availability and pricing. Can check a specific domain (e.g., \"example.com\") or search terms across multiple TLDs. Supports multiple queries in a single request for efficient batch lookups. Returns a list of matching domains with their availability status, prices, and other details. IMPORTANT: Not all ICANN TLDs are supported. Use ud_tld_list to verify TLD support before searching with specific TLDs.","tags":["Domain Search"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"oneOf":[{"type":"string","minLength":1},{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":10}],"description":"Domain name(s) to search - can be a full domain name like \"example.com\" (TLD is inferred) or a search term like \"mybusiness\" (searches across TLDs). Supports array of up to 10 terms for batch operations.","example":"example.com"},"tlds":{"type":"array","items":{"type":"string"},"description":"Optional list of up to 5 ICANN TLDs to search (e.g., [\"com\", \"org\", \"io\"]). Must be supported TLDs - use ud_tld_list to verify. Defaults to popular TLDs (com, net, org, ai, io) or inferred from query.","example":["com","org","io"]},"limit":{"type":"number","minimum":1,"maximum":100,"description":"Maximum number of results to return (1-100, default: 20)","example":20},"offset":{"type":"number","minimum":0,"description":"Number of results to skip for pagination (default: 0)","example":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"Search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchDomainsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_tld_list":{"post":{"operationId":"tldList","summary":"List available TLDs","description":"List all available ICANN TLDs (top-level domains) supported by our registrar.","tags":["Domain Search"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"List of available TLDs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TldListResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_knowledge_base_search":{"post":{"operationId":"knowledgeBaseSearch","summary":"Search the Knowledge Base for help articles","description":"Search Unstoppable Domains Knowledge Base articles by keyword. Returns matching articles ranked by relevance with titles, snippets, and direct links. Does not require authentication.","tags":["Knowledge Base"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":2,"maxLength":200,"description":"Search term to match against article titles and body text (case-insensitive).","example":"transfer domain"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Matching Knowledge Base articles","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KnowledgeBaseSearchResponse"}}}}}}},"/mcp/v1/actions/ud_developer_docs_search":{"post":{"operationId":"developerDocsSearch","summary":"Search developer documentation","description":"Search the public Unstoppable Domains developer documentation (rendered at https://docs.unstoppabledomains.com/) by keyword. Use for SDK, API, smart-contract, namehashing, registrar API, and web3 integration questions. Returns matching pages ranked by relevance with titles, snippets, and direct URLs. Does not require authentication.","tags":["Knowledge Base"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":2,"maxLength":200,"description":"Search term to match against developer documentation titles and body text (case-insensitive).","example":"resolve domain javascript"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Matching developer documentation pages","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeveloperDocsSearchResponse"}}}}}}},"/mcp/v1/actions/ud_api_specs_search":{"post":{"operationId":"apiSpecsSearch","summary":"Search MCP server public specifications","description":"Search across the three documents that describe Unstoppable Domains' MCP server: SKILL.md, the MCP documentation, and the OpenAPI 3.1 specification. Use for questions about UD's MCP server, available tools, OAuth scopes, or AI-agent integration. Returns matching specs ranked by relevance with titles, snippets, and direct URLs. Does not require authentication.","tags":["Knowledge Base"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":2,"maxLength":200,"description":"Search term to match against MCP server spec titles and body text (case-insensitive).","example":"oauth scopes"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Matching MCP server specifications","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSpecsSearchResponse"}}}}}}},"/mcp/v1/actions/ud_portfolio_list":{"post":{"operationId":"portfolioList","summary":"List portfolio domains","description":"List domains in the authenticated user's portfolio with filtering, sorting, and pagination. By default, only ICANN (DNS) domains are returned. Returns 50 domains per page by default. If hasMore is true in the pagination response, use nextOffset as the offset for the next request.","tags":["Portfolio"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"offset":{"type":"integer","minimum":0,"description":"Number of items to skip for pagination (default: 0)","example":0},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum number of domains to return, 1-500 (default: 50)","example":50},"searchTerm":{"type":"string","description":"Optional search term to filter domains by name"},"status":{"type":"string","enum":["all","for-sale","unlisted"],"description":"Filter by listing status: \"all\" (default), \"for-sale\", or \"unlisted\""},"registryType":{"type":"string","enum":["dns","web3"],"description":"Filter by registry type: \"dns\" (ICANN/Web2 domains, default) or \"web3\" (blockchain domains only)"},"expiringWithinDays":{"type":"number","minimum":1,"maximum":365,"description":"Filter domains expiring within the specified number of days (1-365)","example":30},"expired":{"type":"boolean","description":"Filter for domains that have already expired"},"minLength":{"type":"number","minimum":1,"description":"Filter domains with label length >= this value"},"maxLength":{"type":"number","minimum":1,"description":"Filter domains with label length <= this value"},"autoRenewal":{"type":"string","enum":["true","false"],"description":"Filter by auto-renewal status"},"tagFilters":{"type":"array","items":{"type":"string"},"description":"Filter domains by tag names (e.g., [\"personal\", \"business\"])"},"orderBy":{"type":"string","enum":["name","length","purchasedAt","expiresAt","listingPrice","offers","leads","watchlistCount"],"description":"Sort by: \"name\", \"length\", \"purchasedAt\", \"expiresAt\", \"listingPrice\", \"offers\", \"leads\", or \"watchlistCount\""},"orderDirection":{"type":"string","enum":["asc","desc"],"description":"Sort direction: \"asc\" (ascending, default) or \"desc\" (descending)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Portfolio domains list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDomainsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_get":{"post":{"operationId":"domainGet","summary":"Get comprehensive portfolio domain info","description":"Get comprehensive information for specific domains in your portfolio. Returns all data from ud_portfolio_list plus additional detail: renewal pricing, flags, DNS configuration (nameservers, hosting, DNSSEC), marketplace metrics, and pending operations. Supports bulk lookups for up to 50 domains.","tags":["Portfolio"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50,"description":"Array of domain names to get info for (e.g., [\"example.com\", \"mysite.io\"])","example":["example.com","mysite.io"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Portfolio domain details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPortfolioDomainsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_contacts_list":{"post":{"operationId":"contactsList","summary":"List ICANN contacts","description":"List ICANN contacts configured for the authenticated user's account. Required for DNS domain registration (.com, .org, etc.).","tags":["Contacts"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"includeDisabled":{"type":"boolean","description":"Include disabled contacts (default: false)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"List of ICANN contacts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactsListResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_contact_create":{"post":{"operationId":"contactCreate","summary":"Create ICANN contact","description":"Create a new ICANN contact for DNS domain registration. Required for .com, .org, .net, etc.","tags":["Contacts"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["firstName","lastName","email","phone","street","city","stateProvince","postalCode","countryCode"],"properties":{"firstName":{"type":"string","description":"Contact first name"},"lastName":{"type":"string","description":"Contact last name"},"email":{"type":"string","format":"email","description":"Contact email address"},"phone":{"type":"object","required":["dialingPrefix","number"],"properties":{"dialingPrefix":{"type":"string","description":"Phone country code, e.g. \"1\" or \"+1\" (leading \"+\" is accepted and normalized)"},"number":{"type":"string","description":"Phone number"}},"additionalProperties":false},"street":{"type":"string","description":"Street address"},"city":{"type":"string","description":"City"},"stateProvince":{"type":"string","description":"State/province code"},"postalCode":{"type":"string","description":"Postal/ZIP code"},"countryCode":{"type":"string","description":"Two-letter ISO country code"},"organization":{"type":"string","description":"Company name (optional)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Contact created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCreateResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_get":{"post":{"operationId":"cartGet","summary":"Get shopping cart with pricing","description":"Get the current shopping cart contents with comprehensive pricing breakdown including discounts, taxes, and credits. Optionally apply a discount code. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"discountCode":{"type":"string","description":"Optional discount/promo code to apply"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Cart contents with pricing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_add_domain_registration":{"post":{"operationId":"cartAddDomainRegistration","summary":"Add domains to cart for registration","description":"Add one or more domains to the shopping cart for fresh registration. Returns the updated cart summary, including pre-discount subtotal and post-discount totalAmountDue. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Full domain name (e.g., \"example.com\")"},"productType":{"type":"string","description":"Product type (default: Domain)"},"quantity":{"type":"integer","description":"Registration years (1-10, default: 1)","minimum":1,"maximum":10}},"additionalProperties":false},"minItems":1,"description":"Array of domains to add to the cart"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated cart","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddToCartResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_add_domain_listed":{"post":{"operationId":"cartAddDomainListed","summary":"Add marketplace-listed domains to cart","description":"Add one or more marketplace-listed domains to the shopping cart. Supports both \"Buy it now\" (full price) and \"Lease to Own\" (monthly payments) purchases. Returns the updated cart summary including the final totalAmountDue. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Full domain name listed on marketplace (e.g., \"premium.com\")"},"leaseToOwnOptions":{"type":"object","description":"Optional lease-to-own options. Omit for immediate \"Buy it now\" purchase.","properties":{"type":{"type":"string","enum":["equal_installments","down_payment_plus_equal_installments"],"description":"Payment type: \"equal_installments\" or \"down_payment_plus_equal_installments\""},"termLength":{"type":"integer","minimum":2,"maximum":120,"description":"Number of monthly payments (2-120)"},"downPaymentPercentage":{"type":"number","minimum":10,"maximum":90,"description":"Down payment percentage (10-90%), required for down_payment type"}},"additionalProperties":false}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of marketplace-listed domains to add to cart"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated cart with listed domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddListedDomainToCartResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_add_domain_afternic":{"post":{"operationId":"cartAddDomainAfternic","summary":"Add Afternic marketplace domains to cart","description":"Add one or more Afternic marketplace domains to the shopping cart. For domains with marketplace.source = \"afternic\" and marketplace.status = \"registered-listed-for-sale\" from search results. Returns the updated cart summary including the final totalAmountDue. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Full domain name from Afternic marketplace (e.g., \"premium.com\")"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of Afternic marketplace domains to add to cart"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated cart with Afternic domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddAfternicDomainToCartResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_add_domain_sedo":{"post":{"operationId":"cartAddDomainSedo","summary":"Add Sedo marketplace domains to cart","description":"Add one or more Sedo marketplace domains to the shopping cart. For domains with marketplace.source = \"sedo\" and marketplace.status = \"registered-listed-for-sale\" from search results. Returns the updated cart summary including the final totalAmountDue. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Full domain name from Sedo marketplace (e.g., \"premium.com\")"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of Sedo marketplace domains to add to cart"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated cart with Sedo domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSedoDomainToCartResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_add_domain_renewal":{"post":{"operationId":"cartAddDomainRenewal","summary":"Add domain renewals to cart","description":"Add one or more domain renewals to the shopping cart. User must own the domains to renew them. Returns the updated cart summary, including pre-discount subtotal and post-discount totalAmountDue. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Full domain name to renew (e.g., \"example.com\")"},"quantity":{"type":"integer","description":"Renewal period in years (1-10, default: 1)","minimum":1,"maximum":10}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains to add renewal to cart"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated cart with renewals","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDomainRenewalToCartResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_remove":{"post":{"operationId":"cartRemove","summary":"Remove items from cart","description":"Remove one or more items from the shopping cart by product ID. Returns the updated cart with pre-discount subtotal and post-discount totalAmountDue. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["productIds"],"properties":{"productIds":{"type":"array","items":{"type":"number"},"minItems":1,"description":"Array of product IDs to remove from the cart"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated cart","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveFromCartResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_get_payment_methods":{"post":{"operationId":"cartGetPaymentMethods","summary":"Get available payment methods","description":"Get saved credit cards, account balance, promo credits, and AI credit balance available for checkout. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Payment methods","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_add_payment_method_url":{"post":{"operationId":"cartAddPaymentMethodUrl","summary":"Get URL to add a payment method","description":"Get a URL to the payment management page where users can securely add a new credit card. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Add payment method URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPaymentMethodUrlResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_checkout":{"post":{"operationId":"cartCheckout","summary":"Complete cart checkout","description":"Complete checkout for cart items using saved payment method or account balance. On success, also returns nextAction guidance for handing off to domainManager. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodId":{"type":"string","description":"Stripe payment method ID for card payment. Required if cart total exceeds account balance."},"useAccountBalance":{"type":"boolean","description":"Whether to apply account balance to reduce total. Defaults to true."},"discountCode":{"type":"string","description":"Optional discount/promo code to apply"},"contactId":{"type":"string","description":"ICANN contact ID for DNS domain registration. Get IDs from ud_contacts_list. If not specified, uses the most recent contact."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Checkout result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_get_url":{"post":{"operationId":"cartGetUrl","summary":"Get checkout URL","description":"Generate a checkout URL for completing the purchase in a browser. Returns the URL along with a cart summary. Requires authentication.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"discountCode":{"type":"string","description":"Optional discount/promo code to include in checkout URL"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Checkout URL and cart summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutUrlResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_listing_create":{"post":{"operationId":"listingCreate","summary":"Create marketplace listings","description":"List one or more domains for sale on the marketplace. Supports buy-now pricing, offers, and lease-to-own options.","tags":["Marketplace"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["domainName"],"properties":{"domainName":{"type":"string","description":"The domain name to list"},"priceInCents":{"type":"number","description":"Buy-now price in cents (0 for offers-only)"},"expiresAt":{"type":"string","description":"Listing expiration date as ISO 8601 string (e.g., \"2025-12-31\"). Must be 1-36500 days from now. Default: 90 days."},"listingSettings":{"type":"object","properties":{"isOfferFeatureEnabled":{"type":"boolean"},"minOfferAmountInCents":{"type":"number"},"domainDisplayName":{"type":"string","description":"Optional human-readable domain display name used in listings"}},"additionalProperties":false},"leaseToOwnOptions":{"type":"object","description":"Optional lease-to-own configuration for the domain listing","properties":{"type":{"type":"string","enum":["equal_installments","down_payment_plus_equal_installments"]},"maxTermLength":{"type":"integer","minimum":2,"maximum":120,"description":"Maximum term length in months (2-120)"},"downPaymentPercentage":{"type":"number","description":"Down payment percentage (10-90), required for down_payment type"}},"additionalProperties":false}},"additionalProperties":false},"minItems":1,"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Listing creation results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateListingResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_listing_update":{"post":{"operationId":"listingUpdate","summary":"Update marketplace listings","description":"Update price, settings, or options for existing listings.","tags":["Marketplace"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["listings"],"properties":{"listings":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"number","description":"Listing ID"},"priceInCents":{"type":"number"},"expiresAt":{"type":"string","description":"New listing expiration date as ISO 8601 string (e.g., \"2025-12-31\"). Must be 1-36500 days from now."},"listingSettings":{"type":"object","description":"Listing-level settings such as offers and display preferences.","properties":{"minOfferAmountInCents":{"type":"number","description":"Minimum offer amount (in cents) accepted for this listing."},"isOfferFeatureEnabled":{"type":"boolean","description":"Indicates whether the offer feature is enabled for this listing."},"domainDisplayName":{"type":"string","description":"Custom display name to use for this domain in marketplace contexts."}},"additionalProperties":false},"leaseToOwnOptions":{"type":"object","description":"Lease-to-own configuration options for the listing.","properties":{"type":{"type":"string","enum":["equal_installments","down_payment_plus_equal_installments"]},"maxTermLength":{"type":"integer","minimum":2,"maximum":120,"description":"Maximum term length in months (2-120)"},"downPaymentPercentage":{"type":"number","description":"Down payment percentage (10-90), required for down_payment type"}},"additionalProperties":false}},"additionalProperties":false},"minItems":1,"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Listing update results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateListingResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_listing_cancel":{"post":{"operationId":"listingCancel","summary":"Cancel marketplace listings","description":"Cancel one or more active marketplace listings.","tags":["Marketplace"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["listingIds"],"properties":{"listingIds":{"type":"array","items":{"type":"number"},"description":"Array of listing IDs to cancel","minItems":1,"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Cancellation results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelListingResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_offers_list":{"post":{"operationId":"offersList","summary":"List marketplace offers","description":"List incoming offers on domains you own. Filter by domain or status.","tags":["Marketplace"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domainName":{"type":"string","description":"Filter by specific domain name"},"group":{"type":"string","enum":["active","sold"],"description":"Filter by group: \"active\" (pending) or \"sold\" (completed)"},"page":{"type":"number","description":"Page number (1-indexed)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"List of offers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOffersResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_offer_respond":{"post":{"operationId":"offerRespond","summary":"Respond to marketplace offers","description":"Accept or reject incoming offers on your domains at the offer's stated price. Counter-offers are not supported by this tool — use ud_lead_message_send to propose a counter to the buyer.","tags":["Marketplace"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["offers"],"properties":{"offers":{"type":"array","items":{"type":"object","required":["id","action"],"properties":{"id":{"type":"number","description":"Offer ID"},"action":{"type":"string","enum":["accept","reject"]}},"additionalProperties":false},"minItems":1,"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Offer response results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RespondToOfferResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_leads_list":{"post":{"operationId":"leadsList","summary":"List domain conversation leads","description":"List conversations about domains you own or are interested in. Includes buyer-seller messaging threads.","tags":["Leads"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Filter by specific domain name (e.g., \"example.crypto\")"},"skipEmpty":{"type":"boolean","description":"Skip conversations with no messages (default: true)","default":true},"skip":{"type":"integer","description":"Number of conversations to skip (pagination offset, default: 0)","default":0,"minimum":0},"take":{"type":"integer","description":"Number of conversations to return (1-100, default: 20)","default":20,"minimum":1,"maximum":100}},"additionalProperties":false}}}},"responses":{"200":{"description":"List of conversations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadsListResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_lead_get":{"post":{"operationId":"leadGet","summary":"Get or create domain conversation","description":"Start or find an existing conversation with the seller of a domain. Returns existing conversation if one already exists.","tags":["Leads"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","description":"The domain name to inquire about (e.g., \"example.crypto\")"},"buyerId":{"type":"string","description":"Optional: Encoded buyer ID for sellers responding to offers"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Conversation details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSellerResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_lead_messages_list":{"post":{"operationId":"leadMessagesList","summary":"List messages in a conversation","description":"Get messages in a domain conversation. Messages are returned newest-first with cursor-based pagination.","tags":["Leads"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["conversationId"],"properties":{"conversationId":{"type":"number","description":"The conversation ID"},"cursor":{"type":"string","description":"Pagination cursor for loading older messages"}},"additionalProperties":false}}}},"responses":{"200":{"description":"List of messages","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadMessagesListResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_lead_message_send":{"post":{"operationId":"leadMessageSend","summary":"Send a message in a conversation","description":"Send a message in a domain conversation. Messages are encrypted at rest.","tags":["Leads"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["conversationId","content"],"properties":{"conversationId":{"type":"number","description":"The conversation ID"},"content":{"type":"string","maxLength":1000,"description":"Message content (1-1000 characters)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Sent message details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadMessageSendResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_records_list":{"post":{"operationId":"dnsRecordsList","summary":"List DNS records for a domain","description":"List all DNS records for a domain in your portfolio. Supports filtering by record type and subdomain, with pagination.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain name (e.g., \"example.com\")"},"type":{"type":"string","description":"Filter by record type (A, AAAA, CNAME, MX, TXT, NS)"},"subName":{"type":"string","description":"Filter by subdomain (\"@\" for root, \"www\", \"*\" for wildcard)"},"cursor":{"type":"string","description":"Pagination cursor"}},"additionalProperties":false}}}},"responses":{"200":{"description":"DNS records list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsRecordsListResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_record_add":{"post":{"operationId":"dnsRecordAdd","summary":"Add DNS records (bulk)","description":"Add DNS records to one or more domains. Supports A, AAAA, CNAME, MX, TXT, NS, SRV, and CAA record types. Bulk operations up to 50 records. Under the default \"disallowed\" upsertMode, any record whose (type, subName) already exists on the same domain is returned as a per-record failure with error \"RECORD_ALREADY_EXISTS\".","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["records"],"properties":{"records":{"type":"array","minItems":1,"maxItems":50,"description":"Array of DNS record configurations (1-50)","items":{"type":"object","required":["domain","type","values"],"properties":{"domain":{"type":"string","description":"Domain name (e.g., \"example.com\")"},"type":{"type":"string","description":"Record type (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA)"},"subName":{"type":"string","default":"@","description":"Subdomain (\"@\" for root, \"www\", \"*\" for wildcard)"},"values":{"type":"array","items":{"type":"string"},"description":"Record values"},"ttl":{"type":"number","default":3600,"description":"Time-to-live in seconds (60-86400)"}},"additionalProperties":false}},"upsertMode":{"type":"string","enum":["append","replace","disallowed"],"description":"Global setting for how to handle existing records. \"append\" adds the supplied values to the existing record; \"replace\" overwrites the existing record; \"disallowed\" (default) returns success: false with error \"RECORD_ALREADY_EXISTS\" for any record whose (type, subName) already exists on the same domain."},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The records parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk operation result. Each per-record entry includes success/operationId on success, or error on failure. Collisions under default \"disallowed\" upsertMode appear as success: false with error \"RECORD_ALREADY_EXISTS\".","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDnsOperationResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_record_update":{"post":{"operationId":"dnsRecordUpdate","summary":"Update DNS records (bulk)","description":"Update existing DNS records on one or more domains. Bulk operations up to 50 records.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["records"],"properties":{"records":{"type":"array","minItems":1,"maxItems":50,"description":"Array of record update configurations (1-50)","items":{"type":"object","required":["domain","recordId","values"],"properties":{"domain":{"type":"string","description":"Domain name"},"recordId":{"type":"string","description":"Record ID from ud_dns_records_list"},"values":{"type":"array","items":{"type":"string"},"description":"New record values"},"ttl":{"type":"number","default":3600,"description":"Time-to-live in seconds (60-86400). Default: 3600"}},"additionalProperties":false}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk operation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDnsOperationResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_record_remove":{"post":{"operationId":"dnsRecordRemove","summary":"Remove DNS records (bulk)","description":"Remove specific DNS records by ID from one or more domains. Bulk operations up to 50 records.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["records"],"properties":{"records":{"type":"array","minItems":1,"maxItems":50,"description":"Array of record removal configurations (1-50)","items":{"type":"object","required":["domain","recordId"],"properties":{"domain":{"type":"string","description":"Domain name"},"recordId":{"type":"string","description":"Record ID to remove"}},"additionalProperties":false}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk operation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDnsOperationResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_records_remove_all":{"post":{"operationId":"dnsRecordsRemoveAll","summary":"Remove all DNS records (bulk)","description":"Remove ALL user-created DNS records from one or more domains. Requires explicit confirmation. Bulk operations up to 50 domains.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains","confirmDeleteAll"],"properties":{"domains":{"type":"array","minItems":1,"maxItems":50,"description":"Array of domains to remove all records from (1-50)","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Domain name"}},"additionalProperties":false}},"confirmDeleteAll":{"type":"boolean","const":true,"description":"Must be exactly true to confirm this destructive operation"},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk operation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDnsOperationResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_nameservers_list":{"post":{"operationId":"dnsNameserversList","summary":"List nameservers for a domain","description":"List current nameservers and check if using UD defaults or custom nameservers.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain name"},"includeDnssec":{"type":"boolean","description":"Include DNSSEC info"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Nameservers list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsNameserversListResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_nameservers_set_custom":{"post":{"operationId":"dnsNameserversSetCustom","summary":"Set custom nameservers (bulk)","description":"Configure external nameservers (e.g., Cloudflare, Route 53) for one or more domains. Supports up to 50 domains per request.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name","nameservers"],"properties":{"name":{"type":"string","description":"Domain name"},"nameservers":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":12,"description":"Nameserver hostnames"},"dnssec":{"type":"object","description":"Optional DNSSEC DS records","additionalProperties":false}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domain configurations"},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk operation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDnsOperationResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_nameservers_set_default":{"post":{"operationId":"dnsNameserversSetDefault","summary":"Reset to UD default nameservers (bulk)","description":"Switch back to Unstoppable Domains default nameservers for one or more domains. Supports up to 50 domains per request.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Domain name"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains"},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk operation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDnsOperationResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_hosting_list":{"post":{"operationId":"dnsHostingList","summary":"List hosting configurations","description":"List hosting/forwarding configurations (redirects, reverse proxy, hosted sites, UD Profile).","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain name"},"cursor":{"type":"string","description":"Pagination cursor"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Hosting configurations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DnsHostingListResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_hosting_add":{"post":{"operationId":"dnsHostingAdd","summary":"Add hosting configuration (bulk)","description":"Configure hosting for one or more domains: for-sale listing page, permanent redirect (301), temporary redirect (302), or reverse proxy. Supports up to 50 domains per request.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"Domain name"},"type":{"type":"string","enum":["LISTING_PAGE","REDIRECT_301","REDIRECT_302","REVERSE_PROXY"],"description":"Hosting type"},"targetUrl":{"type":"string","description":"Destination URL (required for REDIRECT_301, REDIRECT_302, REVERSE_PROXY)"},"subName":{"type":"string","description":"Subdomain to configure"},"forceCompatibility":{"type":"boolean","description":"Auto-configure UD nameservers if needed"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domain hosting configurations"},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk operation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDnsOperationResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_dns_hosting_remove":{"post":{"operationId":"dnsHostingRemove","summary":"Remove hosting configuration (bulk)","description":"Remove hosting/forwarding configuration from one or more domains. Supports up to 50 domains per request.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Domain name"},"subName":{"type":"string","description":"Subdomain to remove"},"deleteAll":{"type":"boolean","description":"Remove ALL hosting configs for this domain"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains to remove hosting from"},"confirmDeleteAll":{"type":"boolean","enum":[true],"description":"Must be true when any domain has deleteAll: true"},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Bulk operation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDnsOperationResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_pending_operations":{"post":{"operationId":"domainPendingOperations","summary":"Get pending operations for multiple domains","description":"Check status of DNS operations across multiple domains. Use to track changes and verify completion after bulk operations.","tags":["DNS Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Domain name"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains to check for pending operations"},"includeCompleted":{"type":"boolean","description":"Include completed operations (last 24h)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Pending operations for all domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingOperationsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_auto_renewal_update":{"post":{"operationId":"domainAutoRenewalUpdate","summary":"Enable or disable auto renewal for ICANN DNS domains","description":"Enable or disable auto renewal for ICANN DNS domains (.com, .net, .org, .io, etc.). When enabled, domains will be automatically renewed before expiration using the saved payment method. User must own the domains and have a valid payment method on file. Use ud_cart_get_payment_methods to retrieve available payment methods.","tags":["Domain Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["action","domains"],"properties":{"action":{"type":"string","enum":["enable","disable"],"description":"Action to perform: \"enable\" or \"disable\" auto renewal"},"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Full domain name (e.g., \"example.com\")"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains to update auto renewal for"},"paymentMethodId":{"type":"string","description":"Payment method ID for enabling. Use ud_cart_get_payment_methods to retrieve available payment methods. If not provided, uses default card."},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Auto renewal update results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRenewalUpdateResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_tags_add":{"post":{"operationId":"domainTagsAdd","summary":"Add tags to domains","description":"Add tags to domains in your portfolio. Creates new tags automatically if they don't exist. Supports bulk operations for up to 50 domains.","tags":["Domain Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains","tags"],"properties":{"domains":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50,"description":"Array of domain names to add tags to (e.g., [\"example.com\", \"mysite.io\"])","example":["example.com","mysite.io"]},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":20},"minItems":1,"maxItems":10,"description":"Array of tag names to add (e.g., [\"Work\", \"Important\"]). Max 20 characters each.","example":["Work","Important"]},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Tags added to domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDomainTagsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_tags_remove":{"post":{"operationId":"domainTagsRemove","summary":"Remove tags from domains","description":"Remove tags from domains in your portfolio. Supports bulk operations for up to 50 domains.","tags":["Domain Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains","tags"],"properties":{"domains":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50,"description":"Array of domain names to remove tags from (e.g., [\"example.com\", \"mysite.io\"])","example":["example.com","mysite.io"]},"tags":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":10,"description":"Array of tag names to remove (e.g., [\"Work\", \"Old\"])","example":["Work","Old"]},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Tags removed from domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveDomainTagsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_flags_update":{"post":{"operationId":"domainFlagsUpdate","summary":"Update domain flags","description":"Update domain flags (WHOIS privacy, transfer lock) for domains in your portfolio. Supports bulk operations for up to 50 domains.","tags":["Domain Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains","flags"],"properties":{"domains":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50,"description":"Array of domain names to update (e.g., [\"example.com\", \"mysite.io\"])","example":["example.com","mysite.io"]},"flags":{"type":"object","description":"Flags to update","properties":{"DNS_TRANSFER_OUT":{"type":"object","properties":{"status":{"type":"string","enum":["ENABLED","DISABLED"],"description":"ENABLED = transfers allowed, DISABLED = transfers blocked"}},"additionalProperties":false},"DNS_WHOIS_PROXY":{"type":"object","properties":{"status":{"type":"string","enum":["ENABLED","DISABLED"],"description":"ENABLED = personal info hidden, DISABLED = personal info public"}},"additionalProperties":false}},"additionalProperties":false},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Flags updated for domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDomainFlagsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_push":{"post":{"operationId":"domainPush","summary":"Push domains to another user","description":"Push domains to another Unstoppable Domains user. Requires MFA (two-factor authentication) verification. The recipient must accept the transfer.","tags":["Domain Management"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains","targetAccountId","otpCode"],"properties":{"domains":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":50,"description":"Array of domain names to push (e.g., [\"example.com\", \"mysite.io\"])","example":["example.com","mysite.io"]},"targetAccountId":{"type":"string","minLength":1,"description":"Recipient's account ID in format \"adjective-noun-xxx\" (e.g., \"brave-tiger-k7m\")","example":"brave-tiger-k7m"},"otpCode":{"type":"string","pattern":"^\\d{6}$","description":"6-digit OTP code from your authenticator app","example":"123456"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Push initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushDomainsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_ai_credits_get":{"post":{"operationId":"aiCreditsGet","summary":"Get AI credit balance and available packs","description":"Check your AI credit balance and view available credit packs for purchase. AI credits are used to generate AI-powered landing pages (1 credit per domain).","tags":["AI Credits"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"AI credit balance and available tiers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiCreditsResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_cart_add_ai_credits":{"post":{"operationId":"cartAddAiCredits","summary":"Add AI credit pack to cart","description":"Add an AI credit pack to your shopping cart. Provide either a productCode or tierSize. Returns the updated cart summary including the final totalAmountDue.","tags":["Cart"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"productCode":{"type":"string","description":"AI credits pack product code (e.g., \"ai-credits-pack-25\")"},"tierSize":{"type":"integer","description":"Number of credits in the pack (e.g., 25, 50, 100)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"AI credits added to cart","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddAiCreditsToCartResponse"}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_generate_lander":{"post":{"operationId":"generateLander","summary":"Generate AI landing page for domains","description":"Trigger AI-generated landing page creation for one or more domains. Enqueues asynchronous generation jobs. Use ud_domain_lander_status to check progress.","tags":["AI Lander"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Domain name to generate a lander for (e.g., \"example.com\")"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains (1-50)"},"instructions":{"type":"string","maxLength":2000,"description":"Optional custom instructions to guide AI generation (e.g., tone, color scheme, content focus). Applied to all domains in the request."},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Generation jobs enqueued","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"success":{"type":"boolean"},"jobId":{"type":"string"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"quotaRemaining":{"type":"number","description":"Estimated AI credits remaining after this request"},"purchaseHint":{"type":"string","description":"Present when credits are low with purchase instructions"}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_lander_status":{"post":{"operationId":"landerStatus","summary":"Check AI lander generation status","description":"Check the status of AI landing page generation for one or more domains. Returns pending, generating, processing, hosted, failed, or none.","tags":["AI Lander"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Domain name to check (e.g., \"example.com\")"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains (1-50)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Lander status results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"status":{"type":"string","enum":["pending","generating","processing","hosted","failed","none"]},"hostingType":{"type":"string"},"error":{"type":"string"}}}}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_download_lander":{"post":{"operationId":"downloadLander","summary":"Download landing page content from domains","description":"Download existing hosted lander files from one or more domains. Single-page landers return raw HTML (htmlContent); multi-file sites return a base64-encoded zip (zipContent).","tags":["AI Lander"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Domain name to download lander content for (e.g., \"example.com\")"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains (1-50)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Download results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"success":{"type":"boolean"},"format":{"type":"string","enum":["html","zip"],"description":"Content format: \"html\" for single-page landers, \"zip\" for multi-file sites"},"htmlContent":{"type":"string","description":"Raw HTML string (when format is \"html\")"},"zipContent":{"type":"string","description":"Base64-encoded zip file (when format is \"zip\")"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_domain_remove_lander":{"post":{"operationId":"removeLander","summary":"Remove AI landing page from domains","description":"Remove AI-generated landing pages and hosting configuration from one or more domains. Deletes GCS content and removes hosting config.","tags":["AI Lander"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Domain name to remove lander from (e.g., \"example.com\")"}},"additionalProperties":false},"minItems":1,"maxItems":50,"description":"Array of domains (1-50)"},"applyToAllDomainsInPortfolio":{"type":"boolean","description":"When true, applies this operation to ALL DNS domains in your portfolio. The domains parameter is ignored. Returns an operationId for async tracking via ud_domain_pending_operations."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Lander removal results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"success":{"type":"boolean"},"operationId":{"type":"string"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"}}}}}},"401":{"description":"Authentication required"}}}},"/api/oauth/signup":{"post":{"operationId":"oauthSignup","summary":"Create an account via email and password (headless)","description":"Step 1 of headless account creation. Registers a new user with email and password, sends a verification code via email, and returns a signup_session_token. Use POST /api/oauth/signup/verify with the token and code to get OAuth tokens. Returns identical responses for new and existing users to prevent account enumeration.","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email","description":"Email address for the new account"},"password":{"type":"string","minLength":8,"description":"Password with at least 8 characters, one uppercase, one lowercase, one digit, and one special character"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Signup session created","content":{"application/json":{"schema":{"type":"object","properties":{"signup_session_token":{"type":"string","description":"Token to use with /api/oauth/signup/verify"},"expires_in":{"type":"number","description":"Session TTL in seconds (900)"}}}}}},"400":{"description":"Invalid email, password, or disposable email"},"429":{"description":"Rate limit exceeded"}}}},"/api/oauth/signup/verify":{"post":{"operationId":"oauthSignupVerify","summary":"Verify signup code and get OAuth tokens","description":"Step 2 of headless account creation. Exchanges the signup_session_token and the 6-character verification code (sent via email) for OAuth access and refresh tokens.","tags":["Account"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["signup_session_token","verification_code"],"properties":{"signup_session_token":{"type":"string","description":"Token from POST /api/oauth/signup"},"verification_code":{"type":"string","description":"6-character alphanumeric code from the verification email"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OAuth tokens issued","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"number"},"refresh_token":{"type":"string"},"scope":{"type":"string"}}}}}},"400":{"description":"Invalid or expired session, wrong code, or too many attempts"},"429":{"description":"Rate limit exceeded"}}}},"/mcp/v1/actions/ud_backorder_create":{"post":{"operationId":"backorderCreate","tags":["Backorders"],"summary":"Create domain backorders","description":"Create backorders for one or more expiring DNS domains. The system monitors the domain and automatically registers it when it drops.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domains"],"properties":{"domains":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","required":["name","contactId","availableAfterTimestamp"],"properties":{"name":{"type":"string","description":"Domain name to backorder"},"contactId":{"type":"string","description":"ICANN contact ID for domain registration"},"availableAfterTimestamp":{"type":"number","description":"Unix timestamp (ms) when the domain becomes available for registration"}},"additionalProperties":false}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Backorder creation results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"success":{"type":"boolean"},"backorderId":{"type":"number"},"price":{"type":"number"},"serviceFee":{"type":"number"},"status":{"type":"string"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"message":{"type":"string"}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_backorder_cancel":{"post":{"operationId":"backorderCancel","tags":["Backorders"],"summary":"Cancel domain backorders","description":"Cancel one or more pending domain backorders. Refunds the Account Balance hold (minus non-refundable service fee) and removes the scheduled registration job.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["backorderIds"],"properties":{"backorderIds":{"type":"array","items":{"type":"number"},"minItems":1,"maxItems":50,"description":"Array of backorder IDs to cancel"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Backorder cancellation results","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"backorderId":{"type":"number"},"domain":{"type":"string"},"success":{"type":"boolean"},"refundAmount":{"type":"number"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"message":{"type":"string"}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_backorders_list":{"post":{"operationId":"backordersList","tags":["Backorders"],"summary":"List user's backorders","description":"List the authenticated user's domain backorders with optional status filtering, domain search, and pagination. Status normalization is applied automatically.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"array","items":{"type":"string","enum":["pending","cancelled","in-progress","registration-pending","completed-success","completed-not-available","completed-payment-failed","completed-user-contact-invalid","failed"]},"description":"Filter by backorder status"},"query":{"type":"string","maxLength":253,"description":"Search by domain name (partial match)"},"offset":{"type":"number","minimum":0,"description":"Pagination offset (default: 0)"},"limit":{"type":"number","minimum":1,"maximum":100,"description":"Items per page (1-100, default: 20)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"List of backorders with pagination","content":{"application/json":{"schema":{"type":"object","properties":{"backorders":{"type":"array","items":{"type":"object","properties":{"backorderId":{"type":"number"},"domain":{"type":"string"},"status":{"type":"string"},"price":{"type":"number"},"serviceFee":{"type":"number"},"availableAfter":{"type":"number"},"createdAt":{"type":"number"},"updatedAt":{"type":"number"}}}},"pagination":{"type":"object","properties":{"total":{"type":"number"},"count":{"type":"number"},"offset":{"type":"number"},"limit":{"type":"number"},"hasMore":{"type":"boolean"},"nextOffset":{"type":"number","nullable":true}}}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_expireds_list":{"post":{"operationId":"expiredsList","tags":["Backorders"],"summary":"Browse the expireds/pending-delete domain marketplace","description":"List domains that are approaching expiration or have recently dropped and are available for backorder registration. Supports filtering by status, TLD, label length, backorder count, and watchlist count.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"queries":{"type":"array","items":{"type":"string","maxLength":253},"maxItems":8,"description":"Search by one or more domain names / label substrings (literal modes, OR-combined) or a single natural-language phrase (semantic mode). Max 8 values per call. Under literal modes, values containing \".\" are treated as exact full-name matches (e.g. [\"silvapaul.com\"]); otherwise as case-insensitive label substrings. Under \"semantic\" mode, dotted values are embedded as text, not exact-matched. PASS queries when (a) the caller asks about a specific full domain name, (b) the caller names a concrete theme/topic/keyword — expand into up to 8 distinctive stems (e.g. animal breeds: [\"labrador\", \"poodle\", \"siamese\", \"persian\", \"mastiff\"]), or (c) the caller expresses natural-language similarity intent with queryMode=\"semantic\" — pass a single descriptive phrase. Any stem length is accepted; pick the most specific anchored mode the caller implies (\"starts with ai\" → startsWith, \"ending in ly\" → endsWith). DO NOT pass queries for open-ended browse asks with no user-supplied keyword (\"10 short brandable .coms\", \"good drops today\") — leave queries unset and rely on filters (lengthRange, tlds, labelShape, status, sort)."},"query":{"type":"string","maxLength":253,"deprecated":true,"description":"[Deprecated — use `queries` instead] Single search term, server-side merged into `queries`. Retained for backward compatibility; will be removed in a future release."},"queryMode":{"type":"string","enum":["contains","startsWith","endsWith","exact","semantic"],"description":"How `queries` are matched (default: \"contains\"). Use \"semantic\" for natural-language similarity intent (\"luxury travel domains\", \"crypto brandables\") — cosine match over AI-generated descriptions; pass a single descriptive phrase. Use \"startsWith\" for human names / brand prefixes to avoid substring noise. Use \"contains\" for dictionary themes. Use \"endsWith\" for suffix patterns. Use \"exact\" for whole-label matches. Under any literal mode, values containing \".\" are treated as exact full-name matches; under \"semantic\" those values are embedded as text instead, so use a literal mode for full-name lookups. Semantic mode does not paginate (`hasMore` is always false; `offset > 0` yields zero rows) and ignores `excludeTlds`, `bidsRange`, `watchlistRange`, `deletionAtRange`, `sortBy`, `sortDirection`, and `status` (`tlds`, `lengthRange`, and `labelShape` still apply — `labelShape` collapses `noDigits`/`noHyphens` to the narrower `lettersOnly` shape because the corpus only indexes two shapes)."},"labelShape":{"type":"string","enum":["lettersOnly","noDigits","noHyphens","any"],"description":"Restrict label character set. \"lettersOnly\" (a-z only) is the right default for brandable / curated picks — strips numeric/hyphenated noise. \"noDigits\" allows hyphens. \"noHyphens\" allows digits. \"any\" (default) applies no restriction."},"status":{"type":"string","enum":["COMING_SOON","AVAILABLE_BACKORDER"],"description":"Filter by drop status. \"COMING_SOON\" = not yet dropped — use for \"tomorrow's drops\", \"dropping today\", \"upcoming drops\", \"deleting soon\". \"AVAILABLE_BACKORDER\" = already dropped and registrable now — use for \"available now\", \"buy now\", \"dropped today\", \"in the buy window\"."},"tlds":{"type":"array","items":{"type":"string"},"description":"Filter by TLD extensions (e.g., [\"com\", \"net\"])"},"excludeTlds":{"type":"array","items":{"type":"string"},"description":"TLD extensions to exclude from results (e.g., [\"xyz\", \"info\"]). Combined with tlds if both are passed."},"sortBy":{"type":"string","enum":["name","deletionAt","labelLength","watchlistCount","backorderCount"],"description":"Sort field (default: \"deletionAt\"). Leave unset for natural \"soonest drop first\" order; use `watchlistCount` / `backorderCount` (DESC) only when the user explicitly asks for community-activity ranking."},"sortDirection":{"type":"string","enum":["ASC","DESC"],"description":"Sort direction (default: \"ASC\")"},"lengthRange":{"type":"array","items":{"type":"number","minimum":0},"minItems":2,"maxItems":2,"description":"Filter by label length range [min, max]. Use max=0 for no upper bound."},"bidsRange":{"type":"array","items":{"type":"number","minimum":0},"minItems":2,"maxItems":2,"description":"Filter by backorder count range [min, max]. Use max=0 for no upper bound."},"watchlistRange":{"type":"array","items":{"type":"number","minimum":0},"minItems":2,"maxItems":2,"description":"Filter by watchlist count range [min, max]. Use max=0 for no upper bound."},"deletionAtRange":{"type":"array","items":{"type":"number","minimum":0},"minItems":2,"maxItems":2,"description":"Filter by drop time as Unix milliseconds [startMs, endMs]. Both bounds must be concrete integers >= 1e12 (or 0 for an unbounded side); the literal string \"now\" is rejected by the schema. Compute startMs from the current wall-clock time (Date.now()), endMs as startMs + window-ms (24h = 86400000, 5d = 432000000, 7d = 604800000). Use 0 on either side for unbounded — e.g. [startMs, 0] = \"from now onward\", [0, startMs + 86400000] = \"up to 24h from now\"."},"offset":{"type":"number","minimum":0,"description":"Number of items to skip for pagination (default: 0)"},"limit":{"type":"number","minimum":1,"maximum":500,"description":"Maximum number of items to return (1-500, default: 50)"}},"additionalProperties":false}}}},"responses":{"200":{"description":"List of expiring/dropped domains","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Full domain name"},"deletionDate":{"type":"string","description":"Pre-formatted UTC drop date in YYYY-MM-DD form. Copy this directly into the Drops column of agent responses; do not derive it client-side."},"status":{"type":"string","enum":["COMING_SOON","AVAILABLE_BACKORDER"]}}}},"pagination":{"type":"object","description":"Slim pagination metadata. This tool does NOT return an exact total match count — `hasMore` is true when at least one row exists beyond the current page. The COUNT(*) over broad keyword sets is expensive on large result sets and is skipped here for performance. Callers that need exact counts should use the marketplace REST route.","properties":{"count":{"type":"number"},"offset":{"type":"number"},"limit":{"type":"number"},"hasMore":{"type":"boolean"},"nextOffset":{"type":"number","nullable":true}}},"truncated":{"type":"boolean","description":"Whether the response was truncated to fit within size limits"},"truncationMessage":{"type":"string","description":"Message indicating how many results were truncated"}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_authenticated_url_get":{"post":{"operationId":"authenticatedUrlGet","tags":["Session"],"summary":"Generate an authenticated URL for browser sign-in","description":"Creates a one-time URL that automatically signs the user in and redirects to the specified page. Use this whenever the user needs to complete an action in the browser (e.g., adding a payment method, managing account settings). The URL is valid for 5 minutes; re-clicks from an already-signed-in browser short-circuit cleanly within that window. For support handoffs, link users to https://support.unstoppabledomains.com directly — the SPA has no /support route, so this tool cannot generate links to it.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["path"],"properties":{"path":{"type":"string","pattern":"^/","minLength":1,"description":"Page path to open in the browser. Must match a known SPA route — examples include \"/account/payments/card\", \"/account/orders\", \"/account/ai-credits\", \"/dashboard\", and \"/d/<domain>\" (replace <domain> with the actual domain, e.g. \"/d/foo.com\"). Passing an unknown path returns an error listing the valid templates.","examples":["/account/payments/card","/account/orders","/account/ai-credits","/dashboard","/d/foo.com"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Authenticated URL generated","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"One-time authenticated URL (valid for 5 minutes)"},"expiresIn":{"type":"number","description":"Seconds until the URL expires"},"instructions":{"type":"string","description":"Guidance for the user"}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_presets_list":{"post":{"operationId":"presetsList","summary":"List all saved DNS presets","description":"Returns all saved presets (nameserver, DNS records, forwarding) and hardcoded provider presets.","tags":["Presets"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Presets retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"nameserverPresets":{"type":"array","items":{"$ref":"#/components/schemas/NameserverPreset"}},"dnsPresets":{"type":"array","items":{"$ref":"#/components/schemas/DnsPreset"}},"forwardingPresets":{"type":"array","items":{"$ref":"#/components/schemas/ForwardingPreset"}},"hardcodedNameserverPresets":{"type":"array","items":{"$ref":"#/components/schemas/NameserverPreset"}}}}}}},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_presets_save":{"post":{"operationId":"presetsSave","summary":"Create or update a DNS preset","description":"Save a nameserver, DNS records, or forwarding preset. Upserts by name (forwarding presets key on name + subdomain).","tags":["Presets"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["type","name","values"],"properties":{"type":{"type":"string","enum":["nameserver"]},"name":{"type":"string"},"isDefault":{"type":"boolean"},"isDefaultForTransferIns":{"type":"boolean"},"values":{"type":"array","items":{"type":"string"},"description":"Nameserver hostnames"}},"additionalProperties":false},{"type":"object","required":["type","name","records"],"properties":{"type":{"type":"string","enum":["dns"]},"name":{"type":"string"},"isDefault":{"type":"boolean"},"isDefaultForTransferIns":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","required":["type","values","ttl"],"properties":{"type":{"type":"string"},"subName":{"type":"string"},"values":{"type":"array","items":{"type":"string"}},"ttl":{"type":"integer","minimum":60,"maximum":86400}},"additionalProperties":false},"description":"DNS record sets"}},"additionalProperties":false},{"type":"object","required":["type","name","hostingType"],"properties":{"type":{"type":"string","enum":["forwarding"]},"name":{"type":"string"},"isDefault":{"type":"boolean"},"isDefaultForTransferIns":{"type":"boolean"},"hostingType":{"type":"string"},"targetUrl":{"type":"string"},"subdomain":{"type":"string"}},"additionalProperties":false}],"discriminator":{"propertyName":"type"}}}}},"responses":{"200":{"description":"Preset saved successfully"},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_presets_delete":{"post":{"operationId":"presetsDelete","summary":"Delete a saved DNS preset","description":"Delete a preset by type and name.","tags":["Presets"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["nameserver","dns","forwarding"]},"name":{"type":"string"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Preset deleted successfully"},"401":{"description":"Authentication required"}}}},"/mcp/v1/actions/ud_presets_apply":{"post":{"operationId":"presetsApply","summary":"Apply a saved preset to domains","description":"Apply a saved nameserver, DNS records, or forwarding preset to one or more domains.","tags":["Presets"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["type","name","domains"],"properties":{"type":{"type":"string","enum":["nameserver","dns","forwarding"]},"name":{"type":"string"},"domains":{"type":"array","items":{"type":"string"}},"applyToAllDomainsInPortfolio":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Preset applied successfully"},"401":{"description":"Authentication required"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key for authenticated operations. Obtain from your Unstoppable Domains account settings."}},"schemas":{"NameserverPreset":{"type":"object","properties":{"name":{"type":"string"},"isDefault":{"type":"boolean"},"isDefaultForTransferIns":{"type":"boolean"},"values":{"type":"array","items":{"type":"string"}}}},"DnsPreset":{"type":"object","properties":{"name":{"type":"string"},"isDefault":{"type":"boolean"},"isDefaultForTransferIns":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"subName":{"type":"string"},"values":{"type":"array","items":{"type":"string"}},"ttl":{"type":"number"}}}}}},"ForwardingPreset":{"type":"object","properties":{"name":{"type":"string"},"isDefault":{"type":"boolean"},"isDefaultForTransferIns":{"type":"boolean"},"type":{"type":"string"},"targetUrl":{"type":"string"},"subdomain":{"type":"string"}}},"SearchDomainsResponse":{"type":"object","properties":{"searchQuery":{"type":"string","description":"Sanitized search term (present for single query requests)"},"searchQueries":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"invalidReason":{"type":["string","null"]},"invalidCharacters":{"type":"array","items":{"type":"string"}}}},"description":"Array of search queries with metadata (present for multiple query requests)"},"searchedTlds":{"type":"array","items":{"type":"string"},"description":"TLDs that were searched"},"invalidReason":{"type":["string","null"],"description":"Validation error reason (present for single query requests)"},"invalidCharacters":{"type":["array","null"],"items":{"type":"string"},"description":"Invalid characters found (present for single query requests)"},"results":{"type":"array","items":{"$ref":"#/components/schemas/DomainResult"}},"pagination":{"type":"object","properties":{"total":{"type":"number","description":"Total number of results"},"count":{"type":"number","description":"Number of results in this response"},"offset":{"type":"number","description":"Current offset"},"limit":{"type":"number","description":"Max results per page"},"hasMore":{"type":"boolean","description":"Whether more results are available"},"nextOffset":{"type":["number","null"],"description":"Offset for next page, null if no more pages"}}},"truncated":{"type":"boolean","description":"Whether results were truncated due to size limits"},"truncationMessage":{"type":"string","description":"Message explaining truncation"}}},"DomainResult":{"type":"object","properties":{"name":{"type":"string","description":"Full domain name"},"extension":{"type":"string","description":"TLD (e.g., com, org, io)"},"label":{"type":"string","description":"Domain label without TLD"},"available":{"type":"boolean","description":"Whether the domain can be purchased through Unstoppable Domains. True for fresh registrations AND secondary market listings. False for registered domains not for sale, protected domains, invalid names, etc."},"status":{"type":"string"},"marketplace":{"type":"object","description":"Marketplace information including acquisition status and listing source.","properties":{"status":{"type":"string","enum":["available","registered-listed-for-sale","registered-listed-for-offers","registered-not-for-sale","unavailable","invalid"],"description":"Indicates how this domain can be acquired: \"available\" = fresh registration at standard/promo price; \"registered-listed-for-sale\" = already registered, listed on secondary market with fixed buy-now price; \"registered-listed-for-offers\" = already registered, listed on secondary market accepting offers (no fixed price); \"registered-not-for-sale\" = already registered, not listed for sale; \"unavailable\" = not available (protected, restricted, etc.); \"invalid\" = invalid domain name"},"source":{"type":"string","enum":["unstoppable_domains","sedo","afternic"],"description":"Marketplace where the domain can be purchased. Present for all purchasable domains. \"unstoppable_domains\" = purchase through Unstoppable Domains (fresh registrations and UD marketplace listings); \"sedo\" = purchase through Sedo (external secondary market); \"afternic\" = purchase through Afternic (external secondary market)."}},"required":["status"]},"searchQuery":{"type":"string","description":"The search term that produced this result (present in search results)"},"pricing":{"type":"object","description":"Pricing info. Present for purchasable domains except \"registered-listed-for-offers\" which have no fixed price.","properties":{"amount":{"type":"number","description":"Price in cents. For fresh registrations, may include promo discount. For secondary market listings, shows the marketplace list price."},"currency":{"type":"string","example":"USD"},"formatted":{"type":"string","example":"$9.99"},"listAmount":{"type":"number","description":"List price before promo in cents (only for fresh registrations with active promo)"},"listFormatted":{"type":"string","description":"Formatted list price (only for fresh registrations with active promo)"}}},"product":{"type":"object","description":"Product info (only present when available)","properties":{"type":{"type":"string"},"code":{"type":"string"},"id":{"type":"number"}}},"purchaseUrl":{"type":"string","description":"Direct purchase URL (only for available domains)"},"listingSettings":{"type":"object","description":"Listing settings for UD marketplace listings (present when marketplace.source = \"unstoppable_domains\" and the domain is listed).","properties":{"isOfferFeatureEnabled":{"type":"boolean","description":"Whether the seller accepts offers on this listing."},"minOfferAmountInCents":{"type":"number","description":"Minimum offer amount (in cents) the seller will consider."},"leaseToOwnOptions":{"type":"object","description":"Seller-configured lease-to-own options (present when lease-to-own is enabled).","properties":{"type":{"type":"string","enum":["equal_installments","down_payment_plus_equal_installments"]},"maxTermLength":{"type":"integer","description":"Maximum term length in months allowed by the seller."},"downPaymentPercentage":{"type":"number","description":"Required down payment percentage (only for down_payment_plus_equal_installments)."}}}}}}},"TldListResponse":{"type":"object","properties":{"tlds":{"type":"array","items":{"type":"string"},"description":"Array of supported TLD extensions (e.g., [\"com\", \"io\", \"org\"])"},"count":{"type":"number","description":"Total number of supported TLDs"}}},"KnowledgeBaseSearchResponse":{"type":"object","properties":{"query":{"type":"string","description":"The search query"},"totalMatchCount":{"type":"number","description":"Total articles matching the query"},"returnedCount":{"type":"number","description":"Number of articles returned (max 20)"},"totalIndexedArticles":{"type":"number","description":"Total articles in the knowledge base"},"articles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"snippet":{"type":"string","description":"Text snippet around the keyword match"},"url":{"type":"string","description":"Direct link to the article on support.unstoppabledomains.com"},"folderName":{"type":"string"},"categoryName":{"type":"string"}}}}}},"DeveloperDocsSearchResponse":{"type":"object","properties":{"query":{"type":"string","description":"The search query"},"totalMatchCount":{"type":"number","description":"Total documentation pages matching the query"},"returnedCount":{"type":"number","description":"Number of pages returned (max 20)"},"totalIndexedArticles":{"type":"number","description":"Total markdown pages in the dev-docs index"},"articles":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Path within the unstoppabledomains/dev-docs repo"},"title":{"type":"string"},"snippet":{"type":"string","description":"Text snippet around the keyword match"},"url":{"type":"string","description":"Rendered docs URL on docs.unstoppabledomains.com"},"score":{"type":"number"}}}}}},"ApiSpecsSearchResponse":{"type":"object","properties":{"query":{"type":"string","description":"The search query"},"totalMatchCount":{"type":"number","description":"Total specs matching the query"},"returnedCount":{"type":"number","description":"Number of specs returned (max 20)"},"totalIndexedArticles":{"type":"number","description":"Total specs in the index"},"articles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["skill","mcp_docs","openapi"],"description":"Identifier for which spec matched"},"title":{"type":"string"},"snippet":{"type":"string","description":"Text snippet around the keyword match"},"url":{"type":"string","description":"Direct URL to the full spec document"},"score":{"type":"number"}}}}}},"CartResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CartItem"}},"itemCount":{"type":"number"},"pricing":{"type":"object","properties":{"totalOrderValue":{"type":"number"},"totalOrderValueFormatted":{"type":"string"},"preTaxAmountDue":{"type":"number"},"preTaxAmountDueFormatted":{"type":"string"},"salesTax":{"type":"number"},"salesTaxFormatted":{"type":"string"},"taxRate":{"type":"number"},"promoCreditsUsed":{"type":"number"},"promoCreditsUsedFormatted":{"type":"string"},"storeCreditsUsed":{"type":"number"},"storeCreditsUsedFormatted":{"type":"string"},"accountBalanceUsed":{"type":"number"},"accountBalanceUsedFormatted":{"type":"string"},"totalAmountDue":{"type":"number"},"totalAmountDueFormatted":{"type":"string"}}},"discounts":{"type":"array","items":{"type":"object","properties":{"amount":{"type":"number"},"amountFormatted":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"code":{"type":["string","null"]},"productIds":{"type":"array","items":{"type":"number"}}}}},"totalDiscounts":{"type":"number"},"totalDiscountsFormatted":{"type":"string"}}},"CartItem":{"type":"object","properties":{"productId":{"type":"number"},"productCode":{"type":"string"},"productType":{"type":"string"},"domain":{"type":["string","null"]},"originalPrice":{"type":"number"},"originalPriceFormatted":{"type":"string"},"discountAmount":{"type":"number"},"discountAmountFormatted":{"type":"string"},"promoCreditsApplied":{"type":"number"},"accountBalanceApplied":{"type":"number"},"salesTax":{"type":"number"},"fees":{"type":"array","items":{"type":"object"}}}},"CartSummaryDiscount":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"code":{"type":["string","null"]},"amount":{"type":"number"},"amountFormatted":{"type":"string"}}},"CartSummary":{"type":"object","properties":{"itemCount":{"type":"number"},"subtotal":{"type":"number"},"subtotalFormatted":{"type":"string"},"totalAmountDue":{"type":"number"},"totalAmountDueFormatted":{"type":"string"},"discountsTotal":{"type":"number"},"discountsTotalFormatted":{"type":"string"},"discounts":{"type":"array","items":{"$ref":"#/components/schemas/CartSummaryDiscount"}}}},"AddToCartResponse":{"type":"object","properties":{"addedProducts":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"success":{"type":"boolean"},"error":{"type":"string"},"productId":{"type":"number"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"cart":{"$ref":"#/components/schemas/CartSummary"}}},"AddListedDomainToCartResponse":{"type":"object","description":"Response for adding marketplace-listed domains to cart","properties":{"addedProducts":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean"},"productId":{"type":"number"},"purchaseType":{"type":"string","enum":["buy_now","lease_to_own"],"description":"Type of purchase"},"listingPrice":{"type":"string","description":"Formatted listing price"},"monthlyPayment":{"type":"string","description":"Formatted monthly payment (for LTO only)"},"termLength":{"type":"number","description":"Number of months (for LTO only)"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"cart":{"$ref":"#/components/schemas/CartSummary"}}},"AddAfternicDomainToCartResponse":{"type":"object","description":"Response for adding Afternic marketplace domains to cart","properties":{"addedProducts":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean"},"productId":{"type":"number"},"price":{"type":"string","description":"Formatted price when available"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"cart":{"$ref":"#/components/schemas/CartSummary"}}},"AddSedoDomainToCartResponse":{"type":"object","description":"Response for adding Sedo marketplace domains to cart","properties":{"addedProducts":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean"},"productId":{"type":"number"},"price":{"type":"string","description":"Formatted price when available"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"cart":{"$ref":"#/components/schemas/CartSummary"}}},"AddDomainRenewalToCartResponse":{"type":"object","description":"Response for adding domain renewals to cart","properties":{"addedRenewals":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean"},"productId":{"type":"number"},"renewalPeriodYears":{"type":"number","description":"Renewal period in years"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"cart":{"$ref":"#/components/schemas/CartSummary"}}},"RemoveFromCartResponse":{"type":"object","properties":{"removedProductIds":{"type":"array","items":{"type":"number"}},"removedCount":{"type":"number"},"cart":{"allOf":[{"$ref":"#/components/schemas/CartSummary"},{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"productId":{"type":"number"},"productCode":{"type":"string"},"domain":{"type":["string","null"]},"price":{"type":"number"}}}}}}]}}},"PaymentMethodsResponse":{"type":"object","properties":{"savedCards":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Payment method ID"},"brand":{"type":"string","description":"Card brand"},"last4":{"type":"string","description":"Last 4 digits"},"expMonth":{"type":"number"},"expYear":{"type":"number"},"isExpired":{"type":"boolean"},"isDefault":{"type":"boolean"}}}},"accountBalance":{"type":"object","properties":{"amount":{"type":"number","description":"Balance in cents"},"amountFormatted":{"type":"string"}}},"promoCredits":{"type":"object","properties":{"amount":{"type":"number","description":"Promo credits in cents"},"amountFormatted":{"type":"string"}}},"aiCredits":{"type":"object","properties":{"balance":{"type":"number","description":"AI credits remaining (1 credit = 1 landing page)"}}},"summary":{"type":"object","properties":{"hasValidCards":{"type":"boolean"},"validCardCount":{"type":"number"},"hasAccountBalance":{"type":"boolean"},"hasPromoCredits":{"type":"boolean"},"totalCredits":{"type":"number","description":"Combined account balance + promo credits"},"totalCreditsFormatted":{"type":"string"},"canCheckout":{"type":"boolean"}}}}},"AiCreditsResponse":{"type":"object","properties":{"balance":{"type":"number","description":"Current AI credit balance"},"tiers":{"type":"array","items":{"type":"object","properties":{"size":{"type":"number","description":"Number of credits in the pack"},"priceInCents":{"type":"number","description":"Price in cents"},"priceFormatted":{"type":"string","description":"Price as formatted string"},"productCode":{"type":"string","description":"Product code for purchasing"},"pricePerCredit":{"type":"string","description":"Cost per credit as formatted string"}}}},"hint":{"type":"string","description":"Usage guidance"}}},"AddAiCreditsToCartResponse":{"type":"object","properties":{"productCode":{"type":"string","description":"Product code added to cart"},"credits":{"type":"number","description":"Number of credits in the pack"},"price":{"type":"number","description":"Price in cents"},"priceFormatted":{"type":"string","description":"Price as formatted string"},"cart":{"$ref":"#/components/schemas/CartSummary"}}},"CheckoutResponse":{"type":"object","properties":{"success":{"type":"boolean"},"orderId":{"type":"number"},"paymentId":{"type":"number"},"nextAction":{"type":"object","description":"Present only when domains were purchased. Omitted for AI-credits-only checkouts.","properties":{"handoffTo":{"type":"string","enum":["domainManager"]},"manageUrls":{"type":"object","additionalProperties":{"type":"string"}}}},"summary":{"type":"object","properties":{"itemCount":{"type":"number"},"domains":{"type":"array","items":{"type":"string"}},"subtotal":{"type":"number"},"subtotalFormatted":{"type":"string"},"discounts":{"type":"number"},"discountsFormatted":{"type":"string"},"creditsUsed":{"type":"number"},"creditsUsedFormatted":{"type":"string"},"salesTax":{"type":"number"},"salesTaxFormatted":{"type":"string"},"totalCharged":{"type":"number"},"totalChargedFormatted":{"type":"string"},"paymentMethod":{"type":"string"}}},"note":{"type":"string","description":"Optional note about contact selection when user has multiple contacts"}}},"CheckoutUrlResponse":{"type":"object","properties":{"checkoutUrl":{"type":"string"},"expiresIn":{"type":"number","description":"Seconds until the magic link expires (URL is single-use)"},"cartSummary":{"type":"object","properties":{"itemCount":{"type":"number"},"subtotal":{"type":"number"},"subtotalFormatted":{"type":"string"},"items":{"type":"array","items":{"type":"object"}}}},"discountCode":{"type":["string","null"]},"instructions":{"type":"string"}}},"AddPaymentMethodUrlResponse":{"type":"object","properties":{"url":{"type":"string","description":"Authenticated magic link URL to the payment management page (single-use, valid for 60 seconds)"},"expiresIn":{"type":"number","description":"Seconds until the magic link expires (URL is single-use)"},"instructions":{"type":"string","description":"Guidance for the user on how to add a card"}}},"ContactsListResponse":{"type":"object","properties":{"contacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Contact ID"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string","description":"Partially masked email"},"phone":{"type":"string","description":"Partially masked phone"},"city":{"type":"string"},"stateProvince":{"type":"string"},"countryCode":{"type":"string"},"organization":{"type":"string"},"status":{"type":"string","enum":["active","draft","admin_disabled"],"description":"Contact status: \"active\" = ready for checkout, \"draft\" = syncing with registrar (wait a few seconds), \"admin_disabled\" = cannot be used"}}}},"count":{"type":"number","description":"Total number of contacts"},"accountEmail":{"type":["string","null"],"description":"User's account email (masked) - suggest using for new contacts for auto-verification"},"accountEmailHint":{"type":["string","null"],"description":"Tip about automatic verification when contact email matches account email"}}},"ContactCreateResponse":{"type":"object","properties":{"success":{"type":"boolean"},"contact":{"type":"object","properties":{"operationId":{"type":"string"},"status":{"type":"string"}}},"message":{"type":"string"}}},"ListDomainsResponse":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioDomain"}},"pagination":{"type":"object","properties":{"total":{"type":"number","description":"Total number of domains"},"count":{"type":"number","description":"Number of domains returned in this response"},"offset":{"type":"number","description":"Offset used for this request"},"limit":{"type":"number","description":"Maximum number of items requested"},"hasMore":{"type":"boolean","description":"Whether more results exist"},"nextOffset":{"type":["number","null"],"description":"Offset to use for the next request, or null if no more results"}}},"truncated":{"type":"boolean","description":"Whether results were truncated due to size limits"},"truncationMessage":{"type":"string"}}},"GetPortfolioDomainsResponse":{"type":"object","properties":{"domains":{"type":"array","description":"Comprehensive info for each requested domain","items":{"type":"object","properties":{"domain":{"type":"string","description":"The domain name"},"found":{"type":"boolean","description":"Whether the domain was found in your portfolio"},"extension":{"type":"string","description":"TLD (e.g., \"com\")"},"label":{"type":"string","description":"Domain label without TLD"},"sld":{"type":["string","null"],"description":"Second-level domain"},"punycode":{"type":"boolean","description":"Whether domain uses punycode encoding"},"lifecycle":{"type":"object","description":"Domain lifecycle: dates, ownership, renewal, auto-renewal","properties":{"purchasedAt":{"type":["string","null"],"description":"Purchase date (ISO 8601)"},"expiresAt":{"type":["string","null"],"description":"Expiration date (ISO 8601)"},"transferStatus":{"type":"string","description":"Transfer status: \"none\" or \"pending\""},"isExternallyOwned":{"type":"boolean","description":"Whether domain is in registrar custody (externally owned)"},"reverse":{"type":"boolean","description":"Whether reverse resolution is enabled"},"renewal":{"type":["object","null"],"description":"Renewal eligibility and pricing","properties":{"isEligible":{"type":"boolean","description":"Whether domain is eligible for renewal"},"period":{"type":"object","properties":{"min":{"type":"number","description":"Minimum renewal years"},"max":{"type":"number","description":"Maximum renewal years"},"increments":{"type":"number","description":"Renewal year increments"}}},"pricePerYear":{"type":"number","description":"Renewal price per year in cents (USD)"},"pricePerYearFormatted":{"type":"string","description":"Formatted price (e.g., \"$12.99\")"}}},"autoRenewal":{"type":["object","null"],"description":"Auto-renewal subscription status","properties":{"status":{"type":"string","description":"Subscription status"},"expiresAt":{"type":["string","null"],"description":"Next renewal date (ISO 8601)"}}}}},"flags":{"type":["object","null"],"description":"Domain-level flags (WHOIS privacy, transfer lock, etc.)","properties":{"DNS_TRANSFER_OUT":{"type":"object","properties":{"status":{"type":"string","enum":["ENABLED","DISABLED"]}},"description":"Transfer lock status"},"DNS_WHOIS_PROXY":{"type":"object","properties":{"status":{"type":"string","enum":["ENABLED","DISABLED"]}},"description":"WHOIS privacy status"},"DNS_RESOLUTION":{"type":"object","properties":{"status":{"type":"string","enum":["ENABLED","DISABLED"]}}},"DNS_DELETE":{"type":"object","properties":{"status":{"type":"string","enum":["ENABLED","DISABLED"]}}},"DNS_UPDATE":{"type":"object","properties":{"status":{"type":"string","enum":["ENABLED","DISABLED"]}}},"DNS_UNS_TOKENIZATION":{"type":"object","properties":{"status":{"type":"string","enum":["ENABLED","DISABLED"]}}}}},"dns":{"type":"object","description":"DNS configuration from cache (nameservers, hosting, DNSSEC)","properties":{"nameservers":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["default","custom","none"],"description":"Nameserver status: default (UD-managed), custom (external), none"},"nameservers":{"type":"array","items":{"type":"string"},"description":"Nameserver hostnames"}}},"hosting":{"type":["array","null"],"items":{"type":"object","properties":{"subName":{"type":"string","description":"Subdomain name"},"type":{"type":"string","description":"Hosting type (REDIRECT_301, REDIRECT_302, UD_PROFILE)"},"targetUrl":{"type":["string","null"],"description":"Target URL for redirect"},"status":{"type":"string","description":"Hosting status (ACTIVE, INACTIVE, PENDING)"}}},"description":"URL redirects and hosting rules"},"dnssec":{"type":["object","null"],"properties":{"enabled":{"type":"boolean","description":"Whether DNSSEC is enabled"},"valid":{"type":"boolean","description":"Whether DNSSEC validation passes"}}}}},"marketplace":{"type":"object","description":"Marketplace listing and engagement metrics","properties":{"listing":{"type":["object","null"],"description":"Active listing details","properties":{"id":{"type":"number"},"price":{"type":"number","description":"Listing price in cents"},"status":{"type":"string"},"type":{"type":"string","description":"Listing type: \"default\" for UD-registered domains, \"external\" for externally-owned domains"},"isPrivateListing":{"type":"boolean","description":"Whether this is a private listing (accessible only via a secret URL)"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"views":{"type":"number","description":"Total for-sale landing page views"},"typeInViews":{"type":"number","description":"Subset of views where the visitor typed the domain directly into their browser (higher-intent traffic)"},"listingSettings":{"type":["object","null"]}}},"offersCount":{"type":"number","description":"Number of active offers"},"leadsCount":{"type":"number","description":"Number of buyer leads"},"watchlistCount":{"type":"number","description":"Number of users watching this domain"},"leaseToOwnSubscription":{"type":["object","null"],"description":"Active lease-to-own subscription if a buyer is paying in installments","properties":{"id":{"type":"number"},"status":{"type":"string"},"domainId":{"type":"number"},"createdAt":{"type":"string"},"expiresAt":{"type":["string","null"]}}}}},"afternicFastTransferAuthorizationStatus":{"type":"string","description":"Afternic fast-transfer authorization status: \"authorized\" or \"pre-authorized\". Absent if not authorized."},"tags":{"type":"array","items":{"type":"string"},"description":"Tags applied to this domain"},"pendingOperations":{"type":"array","description":"Pending DNS/domain operations","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"}}}},"error":{"type":"string","description":"Error message if retrieval failed"}}}},"availableTags":{"type":"array","items":{"type":"string"},"description":"All tags you've created (useful for adding tags to other domains)"}}},"PortfolioDomain":{"type":"object","properties":{"name":{"type":"string","description":"Full domain name (e.g., \"example.com\")"},"extension":{"type":"string","description":"TLD (e.g., \"com\")"},"label":{"type":"string","description":"Domain label without TLD"},"sld":{"type":["string","null"],"description":"Second-level domain"},"punycode":{"type":"boolean","description":"Whether domain uses punycode"},"purchasedAt":{"type":["string","null"],"description":"Purchase date (ISO string)"},"expiresAt":{"type":["string","null"],"description":"Expiration date for DNS domains (ISO string)"},"transferStatus":{"type":"string","description":"Domain transfer status:\n• \"none\" - No active transfer\n• \"pending\" - Transfer in progress"},"isExternallyOwned":{"type":"boolean","description":"Whether domain is externally owned"},"tags":{"type":"array","items":{"type":"string"},"description":"User-defined tags"},"reverse":{"type":"boolean","description":"Whether this is set as reverse resolution"},"offersCount":{"type":"number","description":"Number of active offers on this domain"},"leadsCount":{"type":"number","description":"Number of buyer inquiries/messages about this domain"},"watchlistCount":{"type":"number","description":"Number of users watching this domain"},"listing":{"type":["object","null"],"description":"Listing details if domain is for sale","properties":{"id":{"type":"number","description":"Listing ID"},"price":{"type":"number","description":"Listing price in cents"},"status":{"type":"string","description":"Listing status:\n• \"open\" - Live on marketplace, ready for purchase\n• \"open-on-request\" - Accepting offers only, no fixed price\n• \"draft\" - Not yet published\n• \"waiting-for-approval\" - Pending wallet signature from owner\n• \"pending-admin-approval\" - Under review (high-value listings)\n• \"pending\" - Sale in progress\n• \"canceled\" - Listing was canceled"},"type":{"type":"string","description":"Listing type: \"default\" for UD-registered domains, \"external\" for externally-owned domains"},"isPrivateListing":{"type":"boolean","description":"Whether this is a private listing (accessible only via a secret URL)"},"createdAt":{"type":"string","description":"ISO date string"},"updatedAt":{"type":"string","description":"ISO date string"},"views":{"type":"number","description":"Total for-sale landing page views"},"typeInViews":{"type":"number","description":"Subset of views where the visitor typed the domain directly into their browser. Always 0 in ud_portfolio_list (only accurate in ud_domain_get)."}}},"autoRenewal":{"type":["object","null"],"description":"Auto-renewal subscription details if enabled","properties":{"status":{"type":"string","description":"Auto-renewal subscription status:\n• \"active\" - Subscription active, will auto-renew\n• \"pending\" - Payment collected, waiting for domain registration\n• \"update_required\" - Payment method needs updating (card expired/declined)\n• \"expired\" - Subscription expired, domain renewal overdue\n• \"cancelled\" - Subscription cancelled, will not auto-renew"},"expiresAt":{"type":["string","null"],"description":"Subscription expiration date (ISO string)"}}}}},"CreateListingResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domainName":{"type":"string"},"success":{"type":"boolean"},"listingId":{"type":"number"},"status":{"type":"string"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"message":{"type":"string"},"signatureRequired":{"type":"boolean"},"signatureNote":{"type":"string"}}},"UpdateListingResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"listingId":{"type":"number"},"domainName":{"type":"string"},"success":{"type":"boolean"},"status":{"type":"string"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"message":{"type":"string"},"signatureRequired":{"type":"boolean"},"signatureNote":{"type":"string"}}},"CancelListingResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"listingId":{"type":"number"},"domainName":{"type":"string"},"success":{"type":"boolean"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"message":{"type":"string"}}},"ListOffersResponse":{"type":"object","properties":{"offers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Offer ID"},"domainName":{"type":"string"},"priceInCents":{"type":"number"},"priceFormatted":{"type":"string"},"buyerUserId":{"type":"string"},"buyerStatus":{"type":"string"},"sellerStatus":{"type":"string"},"expiresAt":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"totalPages":{"type":"number"},"total":{"type":"number"},"hasMore":{"type":"boolean"}}},"truncated":{"type":"boolean","description":"Indicates if the offers list was truncated to meet response size limits"},"truncationMessage":{"type":"string","description":"Optional message providing details about the truncation"}}},"RespondToOfferResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"offerId":{"type":"number"},"domainName":{"type":"string"},"action":{"type":"string"},"success":{"type":"boolean"},"priceInCents":{"type":"number"},"priceFormatted":{"type":"string"},"newStatus":{"type":"string"},"error":{"type":"string"}}}},"successCount":{"type":"number"},"failureCount":{"type":"number"},"message":{"type":"string"},"signatureRequired":{"type":"boolean"},"signatureNote":{"type":"string"}}},"LeadsListResponse":{"type":"object","properties":{"leads":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Conversation ID (use with ud_lead_messages_list)"},"domainName":{"type":"string"},"domainId":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"shortLatestMessageContent":{"type":"string","description":"Preview of latest message (truncated to 100 chars)"},"unreadMessageCount":{"type":"number","description":"Number of unread messages"},"participants":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Encoded participant ID"},"role":{"type":"string","enum":["BUYER","SELLER"]}}}}}}},"total":{"type":"number","description":"Total number of conversations matching filters"},"skip":{"type":"number","description":"Number of items skipped"},"take":{"type":"number","description":"Number of items returned"}}},"ContactSellerResponse":{"type":"object","properties":{"conversation":{"type":"object","properties":{"id":{"type":"number","description":"Conversation ID"},"domainName":{"type":"string"},"domainId":{"type":"number"},"createdAt":{"type":"string"},"participants":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string","enum":["BUYER","SELLER"]}}}},"isExisting":{"type":"boolean","description":"True if returning existing conversation"}}},"message":{"type":"string"}}},"LeadMessagesListResponse":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Message ID"},"content":{"type":"string"},"senderUserId":{"type":"number"},"createdAt":{"type":"string"}}}},"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]},"conversationId":{"type":"number"}}},"LeadMessageSendResponse":{"type":"object","properties":{"message":{"type":"object","properties":{"id":{"type":"number","description":"Message ID"},"content":{"type":"string"},"senderUserId":{"type":"number"},"createdAt":{"type":"string"}}},"conversationId":{"type":"number"}}},"DnsRecordsListResponse":{"type":"object","properties":{"domain":{"type":"string"},"records":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","null"],"description":"Record ID (may be undefined for system records)"},"type":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS","SRV","CAA"]},"subName":{"type":["string","null"],"description":"Record subdomain (relative name)"},"values":{"type":"array","items":{"type":"string"},"description":"Record values"},"ttl":{"type":"number","description":"Time to live in seconds"},"readonly":{"type":"boolean","description":"Whether this record is read-only and cannot be modified"},"readonlyReasons":{"type":"array","items":{"type":"string"},"description":"Reasons why the record is read-only"}}}},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]}}},"dnsStatus":{"type":["object","null"],"description":"Present when DNS is not managed by UD. Explains the current DNS configuration state.","properties":{"configured":{"type":"boolean","description":"Whether nameservers are set up for this domain"},"provider":{"type":["string","null"],"enum":["ud","external"],"description":"DNS provider: \"ud\" for UD-managed, \"external\" for third-party"},"message":{"type":"string","description":"Human-readable explanation and suggested next steps"}}}}},"BulkDnsOperationResponse":{"type":"object","description":"Response for bulk DNS operations (nameservers, hosting). Contains results per domain with success/failure tracking.","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean","description":"Whether the operation succeeded"},"operationId":{"type":"string","description":"Track with ud_domain_pending_operations (if successful)"},"nameservers":{"type":"array","items":{"type":"string"},"description":"Configured nameservers (for nameserver operations)"},"hasDnssec":{"type":"boolean","description":"Whether DNSSEC is configured (for nameserver operations)"},"config":{"type":"object","description":"Hosting config (for hosting operations)","properties":{"type":{"type":"string"},"subName":{"type":["string","null"]},"targetUrl":{"type":["string","null"]}}},"subName":{"type":"string","description":"Subdomain removed (for hosting remove operations)"},"deletedAll":{"type":"boolean","description":"Whether all configs were removed (for hosting remove)"},"error":{"type":"string","description":"Error message (if failed)"}}}},"successCount":{"type":"number","description":"Number of successful operations"},"failureCount":{"type":"number","description":"Number of failed operations"}}},"DnsNameserversListResponse":{"type":"object","properties":{"domain":{"type":"string"},"nameservers":{"type":"array","items":{"type":"string"},"description":"List of nameserver hostnames"},"isUsingDefaultNameservers":{"type":"boolean","description":"True if using UD default nameservers"},"dnssec":{"type":["object","null"],"properties":{"enabled":{"type":"boolean"},"records":{"type":"array","items":{"type":"object","properties":{"keyTag":{"type":"number"},"algorithm":{"type":"number"},"digestType":{"type":"number"},"digest":{"type":"string"}}}}}}}},"DnsHostingListResponse":{"type":"object","properties":{"domain":{"type":"string"},"configs":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["GCS_HOSTED","LISTING_PAGE","REDIRECT_301","REDIRECT_302","REVERSE_PROXY","UD_PROFILE","STOREFRONT"]},"subName":{"type":["string","null"],"description":"Subdomain (null for root)"},"targetUrl":{"type":["string","null"],"description":"Destination URL (for redirects and reverse proxy)"},"status":{"type":"string"},"certificateStatus":{"type":["string","null"]}}}},"pagination":{"type":"object","properties":{"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]}}}}},"PendingOperationsResponse":{"type":"object","description":"Bulk response for pending operations across multiple domains","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean","description":"Whether the lookup succeeded"},"hasPendingOperations":{"type":"boolean","description":"Whether any operations are still in progress"},"operations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Operation ID"},"type":{"type":"string","description":"Operation type"},"status":{"type":"string","description":"UserOperationStatus string, e.g. PENDING, PENDING_SIGNATURE, COMPLETED, FAILED"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"originOperationId":{"type":["string","null"],"description":"ID of the originating operation, if any"},"errorCode":{"type":["string","null"],"description":"Error code if the operation failed, otherwise null"}}}},"error":{"type":"string","description":"Error message (if lookup failed)"}}}},"successCount":{"type":"number","description":"Number of domains successfully queried"},"failureCount":{"type":"number","description":"Number of domains that failed lookup"},"summary":{"type":"object","description":"Aggregate summary across all domains","properties":{"totalPendingCount":{"type":"number","description":"Total pending operations across all domains"},"domainsWithPending":{"type":"array","items":{"type":"string"},"description":"List of domain names with pending operations"}}}}},"AutoRenewalUpdateResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean","description":"Whether the operation succeeded"},"error":{"type":"string","description":"Error message if failed"}}},"description":"Results for each domain"},"successCount":{"type":"number","description":"Number of successful updates"},"failureCount":{"type":"number","description":"Number of failed updates"}}},"AddDomainTagsResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean","description":"Whether tags were applied successfully"},"tagsApplied":{"type":"array","items":{"type":"string"},"description":"Tags that were applied to this domain"},"error":{"type":"string","description":"Error message if failed"}}},"description":"Results for each domain"},"newTagsCreated":{"type":"array","items":{"type":"string"},"description":"Tags that were newly created (didn't exist before)"},"successCount":{"type":"number","description":"Number of domains with tags applied"},"failureCount":{"type":"number","description":"Number of domains that failed"}}},"RemoveDomainTagsResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean","description":"Whether tags were removed successfully"},"tagsRemoved":{"type":"array","items":{"type":"string"},"description":"Tags that were removed from this domain"},"error":{"type":"string","description":"Error message if failed"}}},"description":"Results for each domain"},"successCount":{"type":"number","description":"Number of domains with tags removed"},"failureCount":{"type":"number","description":"Number of domains that failed"}}},"UpdateDomainFlagsResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"success":{"type":"boolean","description":"Whether flags were updated successfully"},"updatedFlags":{"type":"array","items":{"type":"string"},"description":"Flags that were updated for this domain"},"error":{"type":"string","description":"Error message if failed"}}},"description":"Results for each domain"},"successCount":{"type":"number","description":"Number of domains with flags updated"},"failureCount":{"type":"number","description":"Number of domains that failed"}}},"PushDomainsResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether any domains were successfully pushed"},"pushedDomains":{"type":"array","items":{"type":"string"},"description":"Domains that were successfully initiated for push"},"failedDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"reason":{"type":"string","enum":["not_owned","not_dns","pending_push","expired","ineligible"],"description":"Reason the domain could not be pushed"},"message":{"type":"string","description":"Human-readable error message"}}},"description":"Domains that could not be pushed with reasons"},"targetAccountId":{"type":"string","description":"The target account ID"},"message":{"type":"string","description":"Human-readable summary message"}}}}},"tags":[{"name":"Domain Search","description":"Search and check domain availability"},{"name":"Portfolio","description":"Manage owned domains (requires authentication)"},{"name":"Contacts","description":"Manage ICANN contacts for DNS domain registration (requires authentication)"},{"name":"Cart","description":"Shopping cart management, payment methods, and checkout (requires authentication)"},{"name":"Marketplace","description":"List domains for sale, manage listings, and handle offers (requires authentication)"},{"name":"Leads","description":"Domain conversations and messaging between buyers and sellers (requires authentication)"},{"name":"DNS Management","description":"Manage DNS records, nameservers, and hosting configurations for owned domains (requires authentication)"},{"name":"Domain Management","description":"Manage domain settings like auto renewal (requires authentication)"},{"name":"AI Lander","description":"Generate, manage, and remove AI-powered landing pages for domains (requires authentication)"},{"name":"Presets","description":"Manage and apply DNS presets (nameserver, DNS records, forwarding) for quick domain configuration (requires authentication)"}]}