Spaceship MCP — Справочник с инструменти

Spaceship MCP свързва вашия AI асистент (като Claude) с вашия акаунт в Spaceship. Чрез него асистентът може да проверява и регистрира домейни, да управлява контактите за домейни и да чете или редактира DNS записи от ваше име — вие просто питате на обикновен език, а асистентът извиква правилните инструменти.

Първи стъпки

Нуждаете се от акаунт в Spaceship. Spaceship MCP е наличен на https://mcp.spaceship.com/mcp.

Начинът, по който се свързвате, зависи от вашия AI assistant:

  • Claude (уеб и настолен) — отворете 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

    Какво прави: Превключва домейн към basic или custom 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 — запазете контактите на регистранта, администратора, техническия и фактуриращия контакт (ако все още нямате техните ID) и запазете върнатия 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 ids) (available? + price + (token unset: (token + (pending →
min/maxRegisterPeriod) confirmation, accept: operationId, success/failed)
confirmationToken, pending)
no charge)

Актуализирайте контактите на домейн, който притежавате

  1. domain_set_contacts — задайте контакти на домейна чрез contactId (първо ги запазете с contacts_save, ако е необходимо). Това завършва незабавно и връща verificationStatus: verification означава, че регистрантът трябва да потвърди своя имейл адрес, преди промяната да се приложи напълно (до него се изпраща имейл), success означава, че вече е потвърдено, а null означава, че за този домейн не се изисква потвърждение.

Променете nameserver-ите на домейн

  1. domains_list — намерете домейна и вижте текущите му nameservers ({ provider, hosts }).

  2. domain_set_nameservers — превключете го към nameserver-ите по подразбиране на Spaceship с provider: "basic" (без hosts), или го насочете към ваши собствени с provider: "custom" и списък от 2–12 hosts. Връща получения { provider, hosts }, а последващо domains_list отразява промяната. Повторното прилагане на състояние, в което домейнът вече се намира, връща грешка при валидация, а не липса на действие — приемете това като очаквано, а не като неуспех, който трябва да се повтори.

Управление на DNS записи

  1. domains_list — намерете домейна, който искате да управлявате (или подайте името му директно, ако го знаете).

  2. dns_records_get — прочетете текущите записи за домейна.

  3. dns_records_save или dns_records_delete — добавяйте, актуализирайте или премахвайте записи. Записите, върнати от dns_records_get, имат същата форма, която инструментите за запазване и изтриване приемат (изтриването просто пропуска ttl), така че асистентът може да чете, коригира и записва обратно. Съпоставянето не е чувствително към главни и малки букви, с изключение на TXT записите, които са чувствителни към регистъра.

Прегледайте портфолиото си

  • domains_list — преглеждайте страница по страница всички свои домейни със сортиране или извлечете един домейн по име. Всеки домейн включва датата си на изтичане, настройката за автоматично подновяване, статуса, nameserver-ите, защитата на поверителността и зададените 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, когато за контакта няма записан имейл.

  • Поле: 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

    Значение: Дали домейнът е premium име.

  • Поле: 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 — Проверка за наличност на домейн

Проверява дали едно или повече имена на домейни са налични за регистрация. Използва крайната точка за единичен домейн за едно име и груповата крайна точка за няколко. Домейн, чийто TLD не се поддържа за регистрация, изобщо не се изпраща към проверката за наличност — връща се веднага като tldNotSupported.

  • Параметър: domains

    Задължително: Да

    Тип и ограничения: 1–20 пълни имена на домейни. Всяко приема Unicode (IDN) или ASCII (A-label) — нормализира се автоматично до punycode.

Връща{ results }, по един запис за всяко поискано име:

  • Поле: domain

    Значение: Провереното име.

  • Поле: result

    Значение: available, taken, invalidDomainName, tldNotSupported или unexpectedError.

  • Поле: premiumPricing

    Значение: За premium имена: списък от { operation, price, currency }, където operation е register, transfer, renew или restore. Празно за обикновени имена.

  • Поле: price

    Значение: За available имена (стандартни и premium): цената в USD за регистрация на домейна за най-краткия срок, който TLD позволява{ amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }. amount е общата сума за плащане за целия този срок; pricedYears посочва колко години покрива. Не се отчита цена преди отстъпка или цена „беше“. icannFee е таксата на ICANN (USD), вече включена в amount, върната отделно, за да може разбивката да бъде обяснена; появява се само когато TLD има такава такса.

  • Поле: pricePerYear

    Значение: Вътре в price: amount, разделено на pricedYears, така че винаги да има годишна стойност за сравнение. Когато pricedYears е 1, това е реалната цена за една година; над това е средна цена на година за срока, а не срок, който бихте могли да купите.

  • Поле: minRegisterPeriodInYears / maxRegisterPeriodInYears

    Значение: За available имена: най-краткият и най-дългият период за регистрация, който този 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_availabilitydomain_register. Домейн, чийто TLD не се поддържа за регистрация, се отхвърля незабавно — преди каквато и да е проверка за наличност, ценообразуване или таксуване.

years трябва да е в рамките на собствения позволен период на TLD. Ограничението 110 по-долу е външната граница за всички 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 210 years. Call domains_check_availability for this domain to see its allowed registration period.

Първо прочетете minRegisterPeriodInYears/maxRegisterPeriodInYears от domains_check_availability и изберете years в този диапазон. Същата проверка се изпълнява отново при потвърждаващото извикване (confirmationResponse: "accept"), така че никога не може да бъде заобиколена чрез потвърждение.

Двустъпково потвърждение преди таксуване. Първо извикайте с незададен confirmationToken: инструментът преизчислява цената на домейна, изгражда пълно потвърждение — срок, разбивка на цената (включително всяка такса ICANN и дали домейнът е premium), автоматично подновяване, 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

    Задължително: Да

    Тип и ограничения: Период на регистрация в години. 110 е външната граница; приетият диапазон е собственият на TLD — вижте minRegisterPeriodInYears/maxRegisterPeriodInYears от domains_check_availability. Стойности извън диапазона се отхвърлят, а не се коригират.

  • Параметър: autoRenew

    Задължително: Да

    Тип и ограничения: Булева стойност. Когато е true, домейнът се подновява автоматично при изтичане, използвайки метода за плащане по подразбиране на акаунта.

  • Параметър: privacy.level

    Задължително: Да

    Тип и ограничения: high скрива данните за контакт на регистранта от публичния WHOIS; public ги публикува.

  • Параметър: privacy.userConsent

    Задължително: Да

    Тип и ограничения: Булева стойност. Трябва да потвърдите, че сте съгласни с избраната настройка за поверителност.

  • Параметър: 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 (име, имейл, държава — контакт, съвпадащ с 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 отразява проверката на имейл адрес по ICANN RAA: verification — регистрантът трябва да потвърди своя имейл адрес (изпраща се имейл за потвърждение); success — вече е потвърден; null — проверката по RAA не се прилага за този домейн.

domain_set_nameservers — Задаване на nameserver-и за домейн

Променя nameserver-ите на ниво регистратор за домейн. Завършва незабавно (няма операция за проверка). Промяната след това се отразява в domains_list.

  • Параметър: domainName

    Задължителен: Да

    Тип и ограничения: Пълно домейн име. Приема Unicode (IDN) или ASCII (A-label) — автоматично се нормализира до punycode.

  • Параметър: provider

    Задължителен: Да

    Тип и ограничения: basic (nameserver-ите по подразбиране на Spaceship) или custom (вашите собствени хостове).

  • Параметър: hosts

    Задължителен: Условно

    Тип и ограничения: Задължително, когато provider е custom: 2–12 хост имена на nameserver-и (всяко валидно 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 — лични nameserver-и).

dns_records_save — Запазване на DNS записи

Добавя персонализирани DNS записи или актуализира TTL на съществуващи такива. Записите се съпоставят без чувствителност към главни/малки букви, с изключение на TXT записите (чувствителни към главни/малки букви).

  • Параметър: domainName

    Задължителен: Да

    Тип и ограничения: Домейнът, чиито записи да бъдат актуализирани.

  • Параметър: records

    Задължителен: Да

    Тип и ограничения: 1–500 записа — вижте Форми на записите. Всеки може да включва незадължително ttl.

  • Параметър: force

    Задължителен: Не

    Тип и ограничения: Булева стойност. Пропуска проверката за разрешаване на конфликти и принудително актуализира зоната.

Връща{ "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 — име на nameserver.

  • Тип: PTR

    Полета: pointer — име на домейн за дадения IP адрес.

  • Тип: TXT

    Полета: value — текстова стойност (съпоставя се с чувствителност към главни/малки букви).

  • Тип: MX

    Полета: exchange — пощенски сървър; preference — приоритет (0–65535, предпочита се по-ниската стойност).

  • Тип: CAA

    Полета: flag0 или 128 (critical bit); tagissue, issuewild или iodef; value — идентификатор на CA с незадължителни параметри.

  • Тип: SRV

    Полета: service (напр. _sip); protocol (напр. _tcp); priority и weight (0–65535); port (1–65535); target — име на домейн на сървъра.

  • Тип: TLSA

    Полета: usage, selector, matching (всяко 0–255); port* или _<165535>; protocol (напр. _tcp); associationData — хеш на сертификат или данни.

  • Тип: HTTPS

    Полета: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN или .; незадължително port (* или _<165535>), 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 и одобрете достъпа, който той изисква.

Изисква се валиден имейл