Spaceship MCP — Довідник інструментів

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

    Що робить: Перевіряє статус довготривалої операції

Контакти: посилання за id

Скрізь, де потрібен контакт (domain_register, domain_set_contacts), кожна роль приймає contactId рядок — ніколи не вбудовані контактні дані. Спочатку збережіть контакт за допомогою contacts_save (який повертає його contactId), а потім передайте цей id туди, де контакт приймається. Вбудованого автозбереження немає; роль не може отримати повний об’єкт контакту. Ви також можете повторно використати contactId з результату contacts_list або той, який ви прочитали з результату domains_list.

contactId — це рядок із 27–32 буквено-цифрових символів. Просто передайте його назад туди, де приймається контакт.

Поширені робочі процеси

Кілька інструментів призначені для спільного використання: вихідні дані одного стають вхідними даними наступного.

Зареєструвати (купити) домен

  1. contacts_save — збережіть контакти реєстранта, адміністратора, технічний і платіжний контакти (якщо у вас ще немає їхніх ідентифікаторів) і збережіть повернений contactId для кожного. Контакти мають існувати, перш ніж ви зможете зареєструвати домен.

  2. domains_check_availability — перевірте назву або назви, які ви хочете. Продовжуйте, лише коли result має значення available. Кожна доступна назва містить USD price для її реєстрації (як стандартної, так і преміальної), або priceUnavailableReason, якщо його неможливо визначити, а також minRegisterPeriodInYears і maxRegisterPeriodInYears — строк, який дозволяє TLD. Зверніть увагу, що price покриває price.pricedYears років, що є найкоротшим дозволеним строком для TLD і не завжди дорівнює 1.

  3. domain_register (попередній перегляд) — викличте з confirmationToken без значення, щоб отримати status: confirmation_required, новий confirmationToken і price, який буде списано. Нічого не списується. Текст відповіді інструмента є повним підтвердженням — строк, розбивка ціни, автоподовження, конфіденційність WHOIS, джерело оплати та контакти реєстранта/адміністратора/технічний/платіжний — покажіть його користувачеві як є. Виберіть years між minRegisterPeriodInYears і maxRegisterPeriodInYears з кроку 2 — значення поза діапазоном буде одразу відхилено. Передайте кожну роль контакту як contactId, який ви зберегли на кроці 1.

  4. domain_register (прийняти/відхилити) — після згоди користувача викличте знову з точно такими самими аргументами плюс той самий confirmationToken і confirmationResponse: "accept". Це списує кошти з платіжного методу за замовчуванням для облікового запису й є незворотним. Інструмент одразу повертає status: pending та operationId — реєстрація завершується у фоновому режимі. Щоб натомість скасувати, викличте знову з тим самим confirmationToken і confirmationResponse: "decline" — нічого не списується. Токен спливає через короткий час і прив’язаний до точних аргументів і ціни, для яких його було видано; якщо він відсутній, прострочений або більше не збігається, виклик повертає абсолютно нове підтвердження замість помилки — і ніколи не призводить до списання. Якщо ціну неможливо визначити під час будь-якого з викликів, інструмент натомість повертає status: price_unavailable, і нічого не списується.

  5. 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)
без списання)

Оновити контакти домену, яким ви володієте

  1. domain_set_contacts — призначте контакти домену за contactId (за потреби спочатку збережіть їх за допомогою contacts_save). Це завершується негайно й повертає verificationStatus: verification означає, що реєстрант має підтвердити свою електронну адресу, перш ніж зміна повністю набуде чинності (йому буде надіслано електронний лист), success означає, що це вже підтверджено, а null означає, що для цього домену підтвердження не потрібне.

Змінити неймсервери домену

  1. domains_list — знайдіть домен і перегляньте його поточні nameservers ({ provider, hosts }).

  2. domain_set_nameservers — перемкніть його на стандартні неймсервери Spaceship за допомогою provider: "basic" (без hosts) або вкажіть власні за допомогою provider: "custom" і списку з 2–12 hosts. Повертає отриманий { provider, hosts }, а наступний виклик domains_list відображає зміну. Повторне застосування стану, у якому домен уже перебуває, повертає помилку валідації, а не no-op — вважайте це очікуваним результатом, а не збоєм, який треба повторити.

Керування DNS-записами

  1. domains_list — знайдіть домен, яким хочете керувати (або передайте його назву безпосередньо, якщо знаєте її).

  2. dns_records_get — прочитайте поточні записи для домену.

  3. 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 — вважайте це очікуваним результатом, а не збоєм, який треба повторити.

DNS-записи

Параметр 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 і схваліть доступ, який він запитує.

Потрібна дійсна адреса електронної пошти