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
Какво прави: Проверява състоянието на дълго изпълняваща се операция
Навсякъде, където се изисква контакт (domain_register, domain_set_contacts), всяка роля приема contactId низ — никога вградени данни за контакт. Първо запазете контакта с contacts_save (което връща неговия contactId), след което подайте това id там, където контактът се приема. Няма автоматично вградено запазване; роля не може да получи пълен обект за контакт. Можете също да използвате повторно contactId от резултат на contacts_list или такъв, който сте прочели от резултат на domains_list.
Един contactId е низ от 27–32 буквено-цифрови знака. Просто го подайте обратно там, където се приема контакт.
Няколко инструмента са проектирани да се използват заедно: изходът на единия става вход за следващия.
contacts_save — запазете контактите на регистранта, администратора, техническия и фактуриращия контакт (ако все още нямате техните ID) и запазете върнатия 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 ids) (available? + price + (token unset: (token + (pending →min/maxRegisterPeriod) confirmation, accept: operationId, success/failed)confirmationToken, pending)no charge)
domain_set_contacts — задайте контакти на домейна чрез contactId (първо ги запазете с contacts_save, ако е необходимо). Това завършва незабавно и връща verificationStatus: verification означава, че регистрантът трябва да потвърди своя имейл адрес, преди промяната да се приложи напълно (до него се изпраща имейл), success означава, че вече е потвърдено, а null означава, че за този домейн не се изисква потвърждение.
domains_list — намерете домейна и вижте текущите му nameservers ({ provider, hosts }).
domain_set_nameservers — превключете го към nameserver-ите по подразбиране на Spaceship с provider: "basic" (без hosts), или го насочете към ваши собствени с provider: "custom" и списък от 2–12 hosts. Връща получения { provider, hosts }, а последващо domains_list отразява промяната. Повторното прилагане на състояние, в което домейнът вече се намира, връща грешка при валидация, а не липса на действие — приемете това като очаквано, а не като неуспех, който трябва да се повтори.
domains_list — намерете домейна, който искате да управлявате (или подайте името му директно, ако го знаете).
dns_records_get — прочетете текущите записи за домейна.
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_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 и дали домейнът е 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
Задължително: Да
Тип и ограничения: Период на регистрация в години. 1–10 е външната граница; приетият диапазон е собственият на 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 — приемайте това като очакван резултат, а не като неуспех, който трябва да се опита отново.
Полето 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
Полета: 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 и одобрете достъпа, който той изисква.