Spaceship MCP з'єднує вашого AI assistant (наприклад, Claude) з вашим обліковим записом Spaceship. Через нього помічник може перевіряти та реєструвати домени, керувати контактами доменів, а також читати або редагувати DNS-записи від вашого імені — вам достатньо просто сформулювати запит звичайною мовою, і помічник викличе потрібні інструменти.
Вам потрібен обліковий запис Spaceship. Spaceship MCP доступний за адресою https://mcp.spaceship.com/mcp.
Спосіб підключення залежить від вашого AI assistant:
Claude (web and desktop) — відкрийте Settings, виберіть Connectors, знайдіть Spaceship у каталозі конекторів і додайте його. Claude від Anthropic наразі є клієнтом, з яким ми перевірили роботу Spaceship MCP.
NB: Хоча реєстрація доменів через Spaceship MCP загалом повністю підтримується, ця можливість поки що недоступна саме через конектор Claude. Пошук, перевірка доменів, керування контактами та керування DNS-записами вже доступні й перевірено працюють із Claude сьогодні.
Інші клієнти MCP — додайте віддалений сервер MCP і вкажіть для нього https://mcp.spaceship.com/mcp. Інші клієнти можуть працювати, але ми ще не перевіряли їх.
Під час підключення вам буде запропоновано увійти в Spaceship і надати помічнику доступ до вашого облікового запису. Які інструменти помічник зможе використовувати, залежить від доступу, який ви схвалите — якщо інструмент відхилено, тому що доступ не було надано, перепідключіться й схваліть потрібний йому доступ.
Інструмент: contacts_save
Що робить: Зберігає контактні дані й отримує ID контакту
Інструмент: contacts_get
Що робить: Зчитує збережений контакт за його ID
Інструмент: contacts_list
Що робить: Показує всі збережені контакти, щоб знайти й повторно використати один із них
Інструмент: domains_list
Що робить: Показує ваші домени або шукає один домен
Інструмент: domains_check_availability
Що робить: Перевіряє, чи доступні домени для реєстрації
Інструмент: domain_register
Що робить: Реєструє (купує) домен — списує кошти
Інструмент: domain_set_contacts
Що робить: Призначає контакти домену, яким ви володієте
Інструмент: domain_set_nameservers
Що робить: Перемикає домен на базові або власні nameservers
Інструмент: dns_records_get
Що робить: Читає DNS-записи для домену
Інструмент: dns_records_save
Що робить: Додає DNS-записи або оновлює їх TTL
Інструмент: dns_records_delete
Що робить: Видаляє DNS-записи
Інструмент: async_operation_get
Що робить: Перевіряє статус довготривалої операції
Скрізь, де потрібен контакт (domain_register, domain_set_contacts), кожна роль приймає contactId рядок — ніколи не вбудовані контактні дані. Спочатку збережіть контакт за допомогою contacts_save (який повертає його contactId), а потім передайте цей id туди, де контакт приймається. Вбудованого автозбереження немає; роль не може отримати повний об’єкт контакту. Ви також можете повторно використати contactId з результату contacts_list або той, який ви прочитали з результату domains_list.
contactId — це рядок із 27–32 буквено-цифрових символів. Просто передайте його назад туди, де приймається контакт.
Кілька інструментів призначені для спільного використання: вихідні дані одного стають вхідними даними наступного.
contacts_save — збережіть контакти реєстранта, адміністратора, технічний і платіжний контакти (якщо у вас ще немає їхніх ідентифікаторів) і збережіть повернений contactId для кожного. Контакти мають існувати, перш ніж ви зможете зареєструвати домен.
domains_check_availability — перевірте назву або назви, які ви хочете. Продовжуйте, лише коли result має значення available. Кожна доступна назва містить USD price для її реєстрації (як стандартної, так і преміальної), або priceUnavailableReason, якщо його неможливо визначити, а також minRegisterPeriodInYears і maxRegisterPeriodInYears — строк, який дозволяє TLD. Зверніть увагу, що price покриває price.pricedYears років, що є найкоротшим дозволеним строком для TLD і не завжди дорівнює 1.
domain_register (попередній перегляд) — викличте з confirmationToken без значення, щоб отримати status: confirmation_required, новий confirmationToken і price, який буде списано. Нічого не списується. Текст відповіді інструмента є повним підтвердженням — строк, розбивка ціни, автоподовження, конфіденційність WHOIS, джерело оплати та контакти реєстранта/адміністратора/технічний/платіжний — покажіть його користувачеві як є. Виберіть years між minRegisterPeriodInYears і maxRegisterPeriodInYears з кроку 2 — значення поза діапазоном буде одразу відхилено. Передайте кожну роль контакту як contactId, який ви зберегли на кроці 1.
domain_register (прийняти/відхилити) — після згоди користувача викличте знову з точно такими самими аргументами плюс той самий confirmationToken і confirmationResponse: "accept". Це списує кошти з платіжного методу за замовчуванням для облікового запису й є незворотним. Інструмент одразу повертає status: pending та operationId — реєстрація завершується у фоновому режимі. Щоб натомість скасувати, викличте знову з тим самим confirmationToken і confirmationResponse: "decline" — нічого не списується. Токен спливає через короткий час і прив’язаний до точних аргументів і ціни, для яких його було видано; якщо він відсутній, прострочений або більше не збігається, виклик повертає абсолютно нове підтвердження замість помилки — і ніколи не призводить до списання. Якщо ціну неможливо визначити під час будь-якого з викликів, інструмент натомість повертає status: price_unavailable, і нічого не списується.
async_operation_get — передайте operationId з кроку 4, щоб перевірити перебіг. Повторюйте, доки status не стане success або failed.
contacts_save ──▶ domains_check_availability ──▶ domain_register ──▶ domain_register ──▶ async_operation_get(ідентифікатори contactId) (доступно? + ціна + (токен не задано: (токен + (pending →min/maxRegisterPeriod) підтвердження, accept: operationId, success/failed)confirmationToken, pending)без списання)
domain_set_contacts — призначте контакти домену за contactId (за потреби спочатку збережіть їх за допомогою contacts_save). Це завершується негайно й повертає verificationStatus: verification означає, що реєстрант має підтвердити свою електронну адресу, перш ніж зміна повністю набуде чинності (йому буде надіслано електронний лист), success означає, що це вже підтверджено, а null означає, що для цього домену підтвердження не потрібне.
domains_list — знайдіть домен і перегляньте його поточні nameservers ({ provider, hosts }).
domain_set_nameservers — перемкніть його на стандартні неймсервери Spaceship за допомогою provider: "basic" (без hosts) або вкажіть власні за допомогою provider: "custom" і списку з 2–12 hosts. Повертає отриманий { provider, hosts }, а наступний виклик domains_list відображає зміну. Повторне застосування стану, у якому домен уже перебуває, повертає помилку валідації, а не no-op — вважайте це очікуваним результатом, а не збоєм, який треба повторити.
domains_list — знайдіть домен, яким хочете керувати (або передайте його назву безпосередньо, якщо знаєте її).
dns_records_get — прочитайте поточні записи для домену.
dns_records_save або dns_records_delete — додавайте, оновлюйте або видаляйте записи. Записи, повернуті dns_records_get, мають ту саму структуру, яку приймають інструменти збереження та видалення (видалення просто пропускає ttl), тож помічник може прочитати, скоригувати й записати назад. Зіставлення нечутливе до регістру, окрім TXT-записів, які чутливі до регістру.
domains_list — переглядайте сторінками всі свої домени із сортуванням або отримайте один домен за назвою. Кожен домен містить дату закінчення, налаштування автоподовження, статус, неймсервери, захист конфіденційності та призначені ID контактів.
contacts_list — переглядайте сторінками всі контакти, збережені у вашому обліковому записі, щоб знайти й повторно використати наявний контакт (за його ID контакту) замість створення дубліката.
contacts_get — перегляньте деталі будь-якого ID контакту, який ви бачите на домені або в результаті contacts_list.
Кожен інструмент повертає результат як структурований JSON. Довготривалі операції (зараз лише domain_register) повертають посилання на операцію для опитування через async_operation_get; усі інші інструменти завершуються негайно.
Контакти — це люди або організації, пов’язані з реєстрацією домену (реєстрант, адміністратор, технічний, платіжний). На контакт усюди посилаються за його ID контакту — непрозорим рядком.
contacts_save — Зберегти контактЗберігає контактні дані й повертає згенерований ID контакту. Валідація деяких полів (наприклад, stateProvince і postalCode) залежить від вибраної країни.
Параметр: firstName
Обов’язково: Так
Тип і обмеження: Рядок, 1–64 символи. Може містити дефіси й апострофи.
Параметр: lastName
Обов’язково: Так
Тип і обмеження: Рядок, 1–64 символи. Може містити дефіси й апострофи.
Параметр: email
Обов’язково: Так
Тип і обмеження: Дійсна електронна адреса, максимум 254 символи.
Параметр: address1
Обов’язково: Так
Тип і обмеження: Рядок адреси 1. Рядок, 1–128 символів.
Параметр: city
Обов’язково: Так
Тип і обмеження: Рядок, 1–64 символи.
Параметр: country
Обов’язково: Так
Тип і обмеження: Дволітерний код країни (ISO 3166-1 alpha-2), наприклад US.
Параметр: phone
Обов’язково: Так
Тип і обмеження: Міжнародний формат +CountryCode.Number, наприклад +1.2025551234. Максимум 32 символи.
Параметр: organization
Обов’язково: Ні
Тип і обмеження: Назва організації/компанії. 1–128 символів.
Параметр: address2
Обов’язково: Ні
Тип і обмеження: Рядок адреси 2. 1–128 символів.
Параметр: stateProvince
Обов’язково: Ні
Тип і обмеження: Назва штату/провінції, 1–64 символи. Може бути обов’язковим залежно від країни.
Параметр: postalCode
Обов’язково: Ні
Тип і обмеження: 1–16 символів. Може бути обов’язковим залежно від країни.
Параметр: phoneExt
Обов’язково: Ні
Тип і обмеження: Додатковий номер телефону, 1–16 символів.
Параметр: fax
Обов’язково: Ні
Тип і обмеження: Номер факсу, той самий формат +CountryCode.Number, максимум 32 символи.
Параметр: faxExt
Обов’язково: Ні
Тип і обмеження: Додатковий номер факсу, 1–16 символів.
Параметр: taxNumber
Обов’язково: Ні
Тип і обмеження: Податковий номер, 1–32 символи.
Повертає
{ "contactId": "..." }
contactId (27–32 буквено-цифрові символи) — це те, що ви передаєте в domain_register, domain_set_contacts і contacts_get.
contacts_get — Отримати контактЗчитує дані збереженого контакту за його ID контакту. ID контактів надходять із contacts_save, contacts_list або з поля contacts у результатах domains_list.
Параметр: contactId
Обов’язково: Так
Тип і обмеження: ID контакту, 27–32 буквено-цифрові символи.
Повертає — { contact } з такими полями:
Поле: firstName, lastName, email, address1, city, country, phone, postalCode
Тип: Рядок
Поле: organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber
Тип: Рядок або null
contacts_list — Список контактівПоказує всі контакти, збережені у вашому обліковому записі, щоб ви могли знайти й повторно використати наявний контакт (за його ID контакту) замість створення дубліката або пошуку серед ваших доменів. Список підтримує пагінацію та сортування, узгоджені з domains_list.
Параметр: take
Обов’язково: Ні
Тип і обмеження: Елементів на сторінці, 1–100. Значення за замовчуванням 10.
Параметр: skip
Обов’язково: Ні
Тип і обмеження: Елементів для пропуску, 0 або більше. Значення за замовчуванням 0.
Параметр: orderBy
Обов’язково: Ні
Тип і обмеження: До 8 ключів сортування: name, email, organization; додайте префікс - для сортування за спаданням (наприклад, -name).
Повертає — { items, total }, де total — це кількість унікальних контактів в обліковому записі (без дублікатів за ID контакту, а не розмір сторінки), і кожен елемент містить достатньо даних, щоб розрізняти контакти без додаткового виклику. Якщо в обліковому записі є дублікати записів для того самого ID контакту, вони згортаються в один, тому total рахує окремі контакти, а не сирі рядки на боці сервера:
Поле: contactId
Тип: Рядок (27–32 буквено-цифрові символи). Передається в contacts_get, domain_register або domain_set_contacts.
Поле: name
Тип: Рядок — ім’я контакту.
Поле: email
Тип: Рядок або null, якщо для контакту не вказано email.
Поле: organization
Тип: Рядок або null, якщо для контакту не вказано організацію.
{"items": [{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }],"total": 1}
Поля введення доменного імені (domain/domainName) приймають Unicode (IDN) або ASCII (A-label) — у будь-якому разі інструмент автоматично нормалізує ім’я до punycode перед використанням. domains_check_availability і domain_register додатково вимагають TLD, який Spaceship підтримує для реєстрації: домен, TLD якого не підтримується, вважається недоступним замість перевірки або списання коштів. Інші інструменти для доменів (domains_list, domain_set_contacts, domain_set_nameservers) та DNS-інструменти лише нормалізують ім’я й ніколи не відхиляють його через підтримку TLD.
domains_list — Список доменівОтримує список ваших доменів із пагінацією. Передайте domain, щоб натомість отримати один домен за назвою (тоді пагінація та сортування ігноруються, а результат містить note із поясненням цього, якщо їх було передано).
Параметр: domain
Обов’язково: Ні
Тип і обмеження: Повне доменне ім’я для отримання одного домену. Приймає Unicode (IDN) або ASCII (A-label) — автоматично нормалізується до punycode.
Параметр: take
Обов’язково: Ні
Тип і обмеження: Елементів на сторінці, 1–100. Значення за замовчуванням 10.
Параметр: skip
Обов’язково: Ні
Тип і обмеження: Елементів для пропуску, 0 або більше. Значення за замовчуванням 0.
Параметр: orderBy
Обов’язково: Ні
Тип і обмеження: До 8 ключів сортування: name, unicodeName, registrationDate, expirationDate; додайте префікс - для сортування за спаданням (наприклад, -expirationDate).
Повертає — { items, total }, де кожен елемент описує домен:
Поле: name / unicodeName
Значення: Доменне ім’я у формах ASCII та Unicode.
Поле: isPremium
Значення: Чи є домен преміальним ім’ям.
Поле: autoRenew
Значення: Чи ввімкнено автоподовження.
Поле: registrationDate / expirationDate
Значення: Часові позначки реєстрації та закінчення строку дії.
Поле: lifecycleStatus
Значення: creating, registered, grace1, grace2 або redemption.
Поле: verificationStatus
Значення: verification, success, failed або null, якщо не застосовується.
Поле: eppStatuses
Значення: Коди статусу реєстру (наприклад, блокування трансферу).
Поле: suspensions
Значення: Активні призупинення, кожне з полем reasonCode.
Поле: privacyProtection
Значення: { level: "public" | "high", contactForm: boolean }.
Поле: nameservers
Значення: { provider: "basic" | "custom", hosts: [...] }.
Поле: contacts
Значення: ID контактів: registrant, а також admin/tech/billing (може бути null) і attributes (список ID контактів розширених атрибутів або null). Можна прочитати через contacts_get.
Spaceship MCP заповнює кожне поле вище — включно з contacts, eppStatuses, suspensions, verificationStatus, nameservers, реальним значенням autoRenew і окремим unicodeName, якщо домен його має, — як для списку з кількох елементів, так і для отримання одного домену.
domains_check_availability — Перевірка доступності доменуПеревіряє, чи доступні для реєстрації одне або кілька доменних імен. Для одного імені використовує endpoint для одного домену, а для кількох — масовий endpoint. Домен, TLD якого не підтримується для реєстрації, взагалі не надсилається на перевірку доступності — він одразу повертається як tldNotSupported.
Параметр: domains
Обов’язково: Так
Тип і обмеження: 1–20 повних доменних імен. Кожне приймає Unicode (IDN) або ASCII (A-label) — автоматично нормалізується до punycode.
Повертає — { results }, по одному запису для кожного запитаного імені:
Поле: domain
Значення: Перевірене ім’я.
Поле: result
Значення: available, taken, invalidDomainName, tldNotSupported або unexpectedError.
Поле: premiumPricing
Значення: Для преміальних імен: список { operation, price, currency }, де operation — це register, transfer, renew або restore. Для звичайних імен порожній.
Поле: price
Значення: Для доступних імен (стандартних і преміальних): ціна в USD за реєстрацію домену на найкоротший строк, дозволений TLD — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }. amount — це загальна сума до сплати за весь цей строк; pricedYears вказує, скільки років він охоплює. Ціна до знижки або "стара" ціна не повідомляється. icannFee — це збір ICANN (USD), already included у amount, який повертається окремо, щоб можна було пояснити розбивку; він з’являється лише тоді, коли для TLD передбачено збір.
Поле: pricePerYear
Значення: Усередині price: amount, поділене на pricedYears, тож для порівняння завжди доступне річне значення. Коли pricedYears дорівнює 1, це реальна ціна за один рік; якщо більше, це середня ціна за рік для всього строку, а не строк, який можна купити.
Поле: minRegisterPeriodInYears / maxRegisterPeriodInYears
Значення: Для доступних імен: найкоротший і найдовший строк реєстрації, який фактично дозволяє цей TLD, як два звичайні числа. Використовуйте їх, щоб вибрати коректне значення years для domain_register. Обидва поля пропускаються, якщо дозволений строк не вдалося визначити.
Поле: priceUnavailableReason
Значення: Присутнє замість price, якщо для доступного імені не вдалося визначити ціну. Сама перевірка при цьому все одно успішна.
Ціна вказується лише для доступних імен; результати taken/invalid не містять ні price, ні priceUnavailableReason.
Більшість TLD дозволяють один рік, але деякі — ні..ai, наприклад, має мінімум два роки. Для таких випадків price.amount — це загальна сума за мінімальний строк, а не ціна за один рік, яку можна застосувати, — і price.pricedYears це показує:
{"domain": "example.ai","result": "available","premiumPricing": [],"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },"minRegisterPeriodInYears": 2,"maxRegisterPeriodInYears": 10}
pricePerYear тут присутній — 159.96, поділене на два роки, які він охоплює, дає 79.98. Це загальна сума, поділена на строк, а не ціна, яку можна сплатити за один рік (однорічну реєстрацію .ai купити не можна). Завжди показуйте amount разом із pricedYears ("$159.96 за 2 роки"), ніколи не показуйте лише amount. Для звичайного TLD pricedYears дорівнює 1, а pricePerYear дорівнює amount.
domain_register — Реєстрація доменуРеєструє (купує) домен. Це списує кошти з основного способу оплати вашого облікового запису й не може бути скасовано. Рекомендована послідовність: domains_check_availability → domain_register. Домен, TLD якого не підтримується для реєстрації, відхиляється одразу — до будь-якої перевірки доступності, розрахунку ціни чи списання коштів.
years має бути в межах власного дозволеного строку TLD. Межа 1–10 нижче — це зовнішнє обмеження для всіх TLD; кожен TLD має вужчий діапазон. .ai дозволяє 2–10, .co і .io дозволяють 1–5, .sg — 1–2, .fr — рівно 1. Значення years поза цим діапазоном відхиляється з помилкою валідації, у якій вказано дозволений діапазон — до будь-якої перевірки доступності, розрахунку ціни чи списання коштів — і значення не коригується для вас непомітно:
.ai domains cannot be registered for 1 year: this TLD allows 2–10 years. Call domains_check_availability for this domain to see its allowed registration period.
Спочатку прочитайте minRegisterPeriodInYears/maxRegisterPeriodInYears з domains_check_availability і виберіть значення years у цих межах. Та сама перевірка повторно виконується під час підтверджувального виклику (confirmationResponse: "accept"), тому обійти її підтвердженням неможливо.
Двоетапне підтвердження перед списанням коштів. Спочатку викличте без confirmationToken: інструмент заново розрахує ціну домену, сформує повне підтвердження — строк, розбивку ціни (включно з будь-яким збором ICANN і тим, чи є домен преміальним), автоподовження, конфіденційність WHOIS, джерело оплати та контакти registrant/admin/tech/billing (контакт, ідентичний registrant, буде показано як "same as registrant") — і поверне status: "confirmation_required" із цим price і новим confirmationToken. Під час цього виклику нічого не реєструється й кошти не списуються. Повне підтвердження — це текст відповіді інструмента; покажіть його користувачеві без змін. Коли він погодиться, викличте знову з точно тими самими аргументами плюс цей confirmationToken і confirmationResponse: "accept", щоб надіслати покупку, або confirmationResponse: "decline", щоб скасувати її — у разі відхилення кошти не списуються. Токен прив’язаний до цих точних аргументів і вказаної ціни та спливає через короткий час: відсутній, прострочений, змінений або такий, що більше не збігається, токен у підтверджувальному виклику просто повертає абсолютно нове підтвердження з новим токеном — ніколи не помилку й ніколи не списання коштів. Якщо ціну не вдається визначити під час будь-якого з викликів, інструмент повертає status: "price_unavailable" замість токена й ніколи не списує кошти; спробуйте пізніше. Підтверджений виклик одразу повертає status: "pending" і operationId — реєстрація завершується у фоновому режимі; перевіряйте її через async_operation_get.
Параметр: domain
Обов’язково: Так
Тип і обмеження: Повне доменне ім’я для реєстрації, наприклад example.com. Приймає Unicode (IDN) або ASCII (A-label) — автоматично нормалізується до punycode.
Параметр: years
Обов’язково: Так
Тип і обмеження: Строк реєстрації в роках. 1–10 — це зовнішня межа; прийнятний діапазон визначається самим TLD — див. minRegisterPeriodInYears/maxRegisterPeriodInYears у domains_check_availability. Значення поза діапазоном відхиляються, а не коригуються.
Параметр: autoRenew
Обов’язково: Так
Тип і обмеження: Boolean. Якщо true, домен автоматично подовжується після закінчення строку дії з використанням основного способу оплати облікового запису.
Параметр: privacy.level
Обов’язково: Так
Тип і обмеження: high приховує контактні дані registrant із публічного WHOIS; public публікує їх.
Параметр: privacy.userConsent
Обов’язково: Так
Тип і обмеження: Boolean. Має підтверджувати, що ви погоджуєтеся з вибраним налаштуванням конфіденційності.
Параметр: contacts.registrant
Обов’язково: Так
Тип і обмеження: contactId рядок (27–32 буквено-цифрові символи), з contacts_save.
Параметр: contacts.admin
Обов’язково: Так
Тип і обмеження: contactId рядок (27–32 буквено-цифрові символи), з contacts_save.
Параметр: contacts.tech
Обов’язковий: Так
Тип і обмеження: contactId рядок (27–32 буквено-цифрових символи), з contacts_save.
Параметр: contacts.billing
Обов’язковий: Так
Тип і обмеження: contactId рядок (27–32 буквено-цифрових символи), з contacts_save.
Параметр: contacts.attributes
Обов’язковий: Ні
Тип і обмеження: Масив ідентифікаторів контактів розширених атрибутів (до 5); потрібен лише для певних TLD, інакше пропустіть або null.
Параметр: confirmationToken
Обов’язковий: Ні
Тип і обмеження: Рядок, до 4096 символів. Токен, виданий сервером і повернений попереднім викликом domain_register для цих точних аргументів. Пропустіть під час першого виклику для нової спроби реєстрації. Термін дії спливає через короткий час і він прив’язаний до точних аргументів і ціни, для яких був виданий — надішліть його повторно без змін разом із confirmationResponse, щоб виконати дію.
Параметр: confirmationResponse
Обов’язковий: Умовно
Тип і обмеження: "accept" або "decline". Має значення лише разом із дійсним confirmationToken. "accept" надсилає реєстрацію (з виставленням рахунку), показану в цьому підтвердженні; "decline" скасовує її без списання коштів. Пропустіть під час першого виклику.
Повертає — після першого виклику (нічого не списано):
{"domain": "example.com","years": 1,"status": "confirmation_required","price": {"amount": 9.08,"currency": "USD","pricedYears": 1,"pricePerYear": 9.08,"icannFee": 0.2,"isPremium": false},"confirmationToken": "v1.eyJ2IjoxLCJwIjoi...aWQiOjF9.9F3q7z_5c8Vb...","note": "Nothing has been charged yet. Show the confirmation to the user and, once they agree, call domain_register again with this confirmationToken and confirmationResponse=\"accept\" to complete the purchase, or confirmationResponse=\"decline\" to cancel."}
Поряд із цим JSON текстова відповідь інструмента є повним підтвердженням, яке слід показати користувачеві — у ній повторно вказано домен, термін і ціну вище, а також рядки для Auto-renew: on/off, WHOIS privacy: on/off, Payment source: Spaceship account funds і кожного з контактів registrant/admin/tech/billing (ім’я, email, країна — контакт, що збігається з registrant, відображається як "same as registrant"), після чого наведено інструкції для наступного виклику. Для багаторічного терміну price.amount — це загальна сума за весь термін, а price.pricePerYear — це ця загальна сума, поділена на термін — наприклад, years: 5 для .com повертає { "amount": 48.52, "pricedYears": 5, "pricePerYear": 9.70 }, а example.ai з years: 2 повертає { "amount": 159.96, "pricedYears": 2, "pricePerYear": 79.98 }.
Повертає — після confirmationResponse: "accept" (реєстрацію надіслано):
{"domain": "example.com","years": 1,"status": "pending","operationId": "...","price": {"amount": 9.08,"currency": "USD","pricedYears": 1,"pricePerYear": 9.08,"icannFee": 0.2,"isPremium": false},"note": "Registration of example.com submitted. Ask again, or call async_operation_get with this operationId, to check status."}
Повертає — після confirmationResponse: "decline" (нічого не списано):
{"domain": "example.com","years": 1,"status": "cancelled","price": { "amount": 9.08, "currency": "USD", "pricedYears": 1, "pricePerYear": 9.08, "icannFee": 0.2, "isPremium": false },"note": "Registration of example.com was not submitted because the purchase was not confirmed."}
Повертає — якщо ціну неможливо визначити, у будь-якому виклику:
{"domain": "example.com","years": 1,"status": "price_unavailable","priceUnavailableReason": "Price is currently unavailable for this domain.","note": "Registration of example.com could not be priced right now, so nothing was confirmed or charged. Try again shortly."}
status може бути:
Статус: confirmation_required
Значення: Попередній перегляд — нічого не списано. Покажіть текст відповіді користувачеві, а потім викличте знову з цим confirmationToken і confirmationResponse. Також повертається з новим токеном, коли надісланий confirmationToken відсутній, прострочений, підроблений або більше не відповідає поточним аргументам/ціні — ніколи не є помилкою.
Статус: cancelled
Значення: Покупку було відхилено (confirmationResponse: "decline"), тому нічого не було надіслано.
Статус: pending
Значення: Надіслано; реєстр завершує обробку у фоновому режимі. Опитуйте async_operation_get з operationId.
Статус: price_unavailable
Значення: Ціну не вдалося визначити, тому токен не було видано й нічого не було виставлено до оплати. Повторіть спробу пізніше.
operationId — це простий рядок — передайте його в async_operation_get, який повідомить, чи реєстрація зрештою завершиться успішно чи невдачею. price, показана на етапі confirmation_required, — це саме та сума, яку буде списано при confirmationResponse: "accept" — price.amount є загальною сумою за весь термін, а price.pricedYears вказує термін, тож завжди показуйте їх разом. Коли TLD має збір ICANN, price.amount уже включає його, а price.icannFee вказує суму збору, щоб її можна було пояснити.
domain_set_contacts — Установити контакти доменуЗмінює контакти, призначені домену, яким ви володієте. Завершується негайно (немає операції для опитування).
Параметр: domainName
Обов’язковий: Так
Тип і обмеження: Повне доменне ім’я. Приймає Unicode (IDN) або ASCII (A-label) — автоматично нормалізується до punycode.
Параметр: registrant
Обов’язковий: Так
Тип і обмеження: contactId рядок (27–32 буквено-цифрових символи), з contacts_save.
Параметр: admin
Обов’язковий: Ні
Тип і обмеження: contactId рядок (27–32 буквено-цифрових символи) або null.
Параметр: tech
Обов’язковий: Ні
Тип і обмеження: contactId рядок (27–32 буквено-цифрових символи) або null.
Параметр: billing
Обов’язковий: Ні
Тип і обмеження: contactId рядок (27–32 буквено-цифрових символи) або null.
Параметр: attributes
Обов’язковий: Ні
Тип і обмеження: Масив ідентифікаторів контактів розширених атрибутів (до 5); потрібен лише для певних TLD, інакше пропустіть або null.
Повертає
{ "verificationStatus": "verification" }
Повернений verificationStatus відображає перевірку email за ICANN RAA: verification — реєстрант має підтвердити свою email-адресу (надсилається лист-підтвердження); success — уже підтверджено; null — перевірка RAA не застосовується до цього домену.
domain_set_nameservers — Установити неймсервери доменуЗмінює неймсервери домену на рівні реєстратора. Завершується негайно (немає операції для опитування). Після цього зміна відображається в domains_list.
Параметр: domainName
Обов’язковий: Так
Тип і обмеження: Повне доменне ім’я. Приймає Unicode (IDN) або ASCII (A-label) — автоматично нормалізується до punycode.
Параметр: provider
Обов’язковий: Так
Тип і обмеження: basic (стандартні неймсервери Spaceship) або custom (ваші власні хости).
Параметр: hosts
Обов’язковий: Умовно
Тип і обмеження: Потрібно, коли provider має значення custom: 2–12 імен хостів неймсерверів (кожне — дійсне FQDN, 4–255 символів). Має бути пропущено, коли provider має значення basic.
Повертає
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }
Повторне застосування стану, у якому домен уже перебуває (наприклад, установлення basic, коли він уже basic), повертає помилку валідації, а не успішний no-op — вважайте це очікуваним результатом, а не збоєм, який треба повторити.
Параметр domainName, який приймають ці інструменти, підтримує Unicode (IDN) або ASCII (A-label) і автоматично нормалізується до punycode; підтримка TLD тут не перевіряється.
dns_records_get — Отримати DNS-записиОтримує посторінковий список DNS resource records для домену.
Параметр: domainName
Обов’язковий: Так
Тип і обмеження: Домен, записи якого потрібно отримати.
Параметр: take
Обов’язковий: Ні
Тип і обмеження: Елементів на сторінку, 1–500. Значення за замовчуванням — 100.
Параметр: skip
Обов’язковий: Ні
Тип і обмеження: Елементи, які потрібно пропустити, 0 або більше. Значення за замовчуванням — 0.
Параметр: orderBy
Обов’язковий: Ні
Тип і обмеження: До 8 ключів сортування: type, -type, name, -name.
Повертає — { items, total }. Кожен елемент — це запис, як описано в Форми записів, а також необов’язкове поле group, яке вказує, звідки походить запис (custom — створений вами, product — керується продуктом Spaceship, personalNs — персональні неймсервери).
dns_records_save — Зберегти DNS-записиДодає користувацькі DNS-записи або оновлює TTL наявних. Записи зіставляються без урахування регістру, крім TXT-записів (з урахуванням регістру).
Параметр: domainName
Обов’язковий: Так
Тип і обмеження: Домен, записи якого потрібно оновити.
Параметр: records
Обов’язковий: Так
Тип і обмеження: 1–500 записів — див. Форми записів. Кожен може містити необов’язкове поле ttl.
Параметр: force
Обов’язковий: Ні
Тип і обмеження: Boolean. Пропускає перевірку вирішення конфліктів і примусово оновлює зону.
Повертає — { "saved": <number> }, кількість надісланих записів. Успішна відповідь означає, що всі записи було прийнято; якщо будь-який запис не пройде, увесь виклик поверне помилку.
dns_records_delete — Видалити DNS-записиВидаляє користувацькі DNS-записи. Видалення неможливо скасувати. Записи зіставляються без урахування регістру, крім TXT-записів (з урахуванням регістру).
Параметр: domainName
Обов’язковий: Так
Тип і обмеження: Домен, записи якого потрібно видалити.
Параметр: records
Обов’язковий: Так
Тип і обмеження: 1–500 записів, що ідентифікують наявні записи — ті самі форми, що й для збереження, але без ttl.
Повертає — { "deleted": <number> }, кількість надісланих записів. Якщо будь-який запис неможливо зіставити, увесь виклик завершується помилкою й нічого не видаляється.
Кожен запис має:
type — один із 13 підтримуваних типів нижче.
name — ім’я запису без домену: використовуйте @ для самого домену (apex) і * для wildcard.
ttl (лише для збереження, необов’язково) — час кешування в секундах, 60–3600.
Поля для конкретних типів:
Тип: A
Поля: address — IPv4-адреса.
Тип: AAAA
Поля: address — IPv6-адреса.
Тип: CNAME
Поля: cname — канонічне доменне ім’я (макс. 253 символи).
Тип: ALIAS
Поля: aliasName — канонічне доменне ім’я; поведінка, подібна до CNAME, для apex, де CNAME не дозволено.
Тип: NS
Поля: nameserver — ім’я неймсервера.
Тип: PTR
Поля: pointer — доменне ім’я для заданої IP-адреси.
Тип: TXT
Поля: value — текстове значення (зіставляється з урахуванням регістру).
Тип: MX
Поля: exchange — поштовий сервер; preference — пріоритет (0–65535, менше значення має вищий пріоритет).
Тип: CAA
Поля: flag — 0 або 128 (critical bit); tag — issue, issuewild або iodef; value — ідентифікатор CA з необов’язковими параметрами.
Тип: SRV
Поля: service (наприклад, _sip); protocol (наприклад, _tcp); priority і weight (0–65535); port (1–65535); target — доменне ім’я сервера.
Тип: TLSA
Поля: usage, selector, matching (кожне 0–255); port — * або _<1–65535>; protocol (наприклад, _tcp); associationData — хеш сертифіката або дані.
Тип: HTTPS
Поля: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN або .; необов’язково port (* або _<1–65535>), scheme (має бути _https, коли port задано), svcParams.
Тип: SVCB
Поля: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN або .; необов’язково port, scheme (наприклад, _tcp), svcParams.
async_operation_get — Отримати статус асинхронної операціїПеревіряє довготривалу операцію, запущену іншим інструментом (зараз це domain_register). Викликайте його з operationId, встановленим у значення operationId, яке повернув той інструмент, і повторюйте, доки status не стане success або failed.
Параметр: operationId
Обов’язково: Так
Тип і обмеження: Буквено-цифровий рядок, максимум 36 символів, повертається інструментом, який запустив операцію.
Повертає
Поле: operationId
Значення: Операція, що опитується.
Поле: status
Значення: pending, success або failed.
Поле: type
Значення: Тип операції або null.
Поле: details
Значення: Додаткові відомості про операцію або null.
Поле: createdAt / modifiedAt
Значення: Коли операцію було створено / востаннє оновлено (modifiedAt може бути null).
Коли виклик завершується помилкою, інструмент повертає помилку з кодом і зрозумілим для людини detail, що пояснює, що пішло не так — наприклад, некоректне введення (неправильно сформоване доменне ім’я або ID контакту), домен або контакт, якого не існує, або конфлікт із поточним станом. Якщо інструмент відхилено, тому що помічнику не було надано доступ до нього, повторно підключіть Spaceship MCP і схваліть доступ, який він запитує.