Spaceship MCP łączy Twojego asystenta AI (takiego jak Claude) z Twoim kontem Spaceship. Dzięki temu asystent może sprawdzać i rejestrować domeny, zarządzać kontaktami domen oraz odczytywać lub edytować rekordy DNS w Twoim imieniu — wystarczy, że zapytasz zwykłym językiem, a asystent wywoła odpowiednie narzędzia.
Potrzebujesz konta Spaceship. Spaceship MCP jest dostępny pod adresem https://mcp.spaceship.com/mcp.
Sposób połączenia zależy od Twojego asystenta AI:
Claude (web i desktop) — otwórz Ustawienia, wybierz Connectors, znajdź Spaceship w katalogu konektorów i dodaj go. Claude od Anthropic jest obecnie klientem, z którym potwierdziliśmy działanie Spaceship MCP.
Uwaga: Chociaż rejestracja domen przez Spaceship MCP jest ogólnie w pełni obsługiwana, ta funkcja nie jest jeszcze dostępna konkretnie przez konektor Claude. Wyszukiwanie, sprawdzanie domen, zarządzanie kontaktami i rekordami DNS są już dostępne i potwierdzono, że działają dziś z Claude.
Inni klienci MCP — dodaj zdalny serwer MCP i wskaż go na https://mcp.spaceship.com/mcp. Inni klienci mogą działać, ale jeszcze ich nie zweryfikowaliśmy.
Podczas łączenia zostaniesz poproszony o zalogowanie się do Spaceship i przyznanie asystentowi dostępu do Twojego konta. To, z których narzędzi asystent może korzystać, zależy od zatwierdzonego przez Ciebie dostępu — jeśli narzędzie zostanie odrzucone, ponieważ dostęp nie został przyznany, połącz się ponownie i zatwierdź potrzebny mu dostęp.
Narzędzie: contacts_save
Co robi: Zapisuje dane kontaktowe i pobiera identyfikator kontaktu
Narzędzie: contacts_get
Co robi: Odczytuje zapisany kontakt na podstawie jego ID
Narzędzie: contacts_list
Co robi: Wyświetla wszystkie zapisane kontakty, aby znaleźć i ponownie użyć jednego z nich
Narzędzie: domains_list
Co robi: Wyświetla Twoje domeny lub wyszukuje jedną domenę
Narzędzie: domains_check_availability
Co robi: Sprawdza, czy domeny są dostępne do rejestracji
Narzędzie: domain_register
Co robi: Rejestruje (kupuje) domenę — wydaje pieniądze
Narzędzie: domain_set_contacts
Co robi: Przypisuje kontakty do domeny, którą posiadasz
Narzędzie: domain_set_nameservers
Co robi: Przełącza domenę na podstawowe lub niestandardowe serwery nazw
Narzędzie: dns_records_get
Co robi: Odczytuje rekordy DNS dla domeny
Narzędzie: dns_records_save
Co robi: Dodaje rekordy DNS lub aktualizuje ich TTL
Narzędzie: dns_records_delete
Co robi: Usuwa rekordy DNS
Narzędzie: async_operation_get
Co robi: Sprawdza status długotrwałej operacji
Wszędzie tam, gdzie wymagany jest kontakt (domain_register, domain_set_contacts), każda rola przyjmuje contactId jako ciąg znaków — nigdy wbudowanych danych kontaktowych. Najpierw zapisz kontakt za pomocą contacts_save (które zwraca jego contactId), a następnie przekaż ten identyfikator tam, gdzie kontakt jest akceptowany. Nie ma wbudowanego automatycznego zapisu; rola nie może otrzymać pełnego obiektu kontaktu. Możesz też ponownie użyć contactId z wyniku contacts_list lub odczytanego z wyniku domains_list.
contactId to ciąg 27–32 znaków alfanumerycznych. Po prostu przekaż go z powrotem tam, gdzie kontakt jest akceptowany.
Kilka narzędzi zaprojektowano do wspólnego użycia: dane wyjściowe jednego stają się danymi wejściowymi następnego.
contacts_save — zapisz kontakty rejestrującego, administratora, techniczny i rozliczeniowy (jeśli nie masz jeszcze ich identyfikatorów) i zachowaj zwrócone contactId dla każdego z nich. Kontakty muszą istnieć, zanim będzie można zarejestrować domenę.
domains_check_availability — sprawdź nazwę lub nazwy, które chcesz. Kontynuuj tylko wtedy, gdy result ma wartość available. Każda dostępna nazwa zawiera cenę rejestracji w USD w polu price (zarówno standardową, jak i premium) albo priceUnavailableReason, gdy nie można jej ustalić, a także minRegisterPeriodInYears i maxRegisterPeriodInYears — okres dozwolony przez TLD. Pamiętaj, że price obejmuje price.pricedYears lat, co jest najkrótszym okresem dozwolonym przez TLD i nie zawsze wynosi 1.
domain_register (podgląd) — wywołaj z nieustawionym confirmationToken, aby otrzymać status: confirmation_required, nowy confirmationToken oraz price, która zostanie naliczona. Nic nie jest obciążane. Tekst odpowiedzi narzędzia to pełne potwierdzenie — okres, rozbicie ceny, automatyczne odnawianie, prywatność WHOIS, źródło płatności oraz kontakty rejestrującego/admina/techniczny/rozliczeniowy — pokaż go użytkownikowi bez zmian. Wybierz years pomiędzy minRegisterPeriodInYears a maxRegisterPeriodInYears z kroku 2 — wartość spoza zakresu zostanie od razu odrzucona. Przekaż każdą rolę kontaktu jako contactId zapisane w kroku 1.
domain_register (akceptacja/odrzucenie) — po zgodzie użytkownika wywołaj ponownie z dokładnie tymi samymi argumentami plus tym confirmationToken oraz confirmationResponse: "accept". To obciąża domyślną metodę płatności konta i jest nieodwracalne. Zwraca natychmiast status: pending oraz operationId — rejestracja kończy się w tle. Aby zamiast tego anulować, wywołaj ponownie z tym samym confirmationToken oraz confirmationResponse: "decline" — nic nie zostanie naliczone. Token wygasa po krótkim czasie i jest powiązany z dokładnymi argumentami oraz ceną, dla których został wydany; jeśli go brakuje, wygasł lub już nie pasuje, wywołanie zwraca zupełnie nowe potwierdzenie zamiast błędu — nigdy obciążenie. Jeśli ceny nie da się ustalić przy którymkolwiek wywołaniu, narzędzie zwraca zamiast tego status: price_unavailable i nic nie zostaje naliczone.
async_operation_get — przekaż operationId z kroku 4, aby sprawdzić postęp. Powtarzaj, aż status zmieni się na success lub failed.
contacts_save ──▶ domains_check_availability ──▶ domain_register ──▶ domain_register ──▶ async_operation_get(identyfikatory contactId) (dostępna? + cena + (token nieustawiony: (token + (pending →min/maxRegisterPeriod) potwierdzenie, accept: operationId, success/failed)confirmationToken, pending)bez opłaty)
domain_set_contacts — przypisz kontakty do domeny za pomocą contactId (najpierw zapisz je przez contacts_save, jeśli to konieczne). To kończy się natychmiast i zwraca verificationStatus: verification oznacza, że rejestrujący musi potwierdzić swój adres e-mail, zanim zmiana zostanie w pełni zastosowana (zostanie do niego wysłany e-mail), success oznacza, że jest już potwierdzony, a null oznacza, że dla tej domeny nie jest wymagane potwierdzenie.
domains_list — znajdź domenę i zobacz jej bieżące nameservers ({ provider, hosts }).
domain_set_nameservers — przełącz ją na domyślne serwery nazw Spaceship za pomocą provider: "basic" (bez hosts) albo wskaż własne za pomocą provider: "custom" i listy 2–12 hosts. Zwraca wynikowe { provider, hosts }, a kolejne domains_list odzwierciedla zmianę. Ponowne zastosowanie stanu, w którym domena już się znajduje, zwraca błąd walidacji zamiast braku działania — traktuj to jako oczekiwane, a nie jako niepowodzenie wymagające ponowienia.
domains_list — znajdź domenę, którą chcesz zarządzać (lub przekaż jej nazwę bezpośrednio, jeśli ją znasz).
dns_records_get — odczytaj bieżące rekordy domeny.
dns_records_save lub dns_records_delete — dodawaj, aktualizuj lub usuwaj rekordy. Rekordy zwracane przez dns_records_get mają ten sam format, który akceptują narzędzia zapisu i usuwania (usuwanie po prostu pomija ttl), więc asystent może odczytać, dostosować i zapisać je z powrotem. Dopasowanie nie uwzględnia wielkości liter, z wyjątkiem rekordów TXT, które rozróżniają wielkość liter.
domains_list — przeglądaj strona po stronie wszystkie swoje domeny z sortowaniem lub pobierz pojedynczą domenę po nazwie. Każda domena zawiera datę wygaśnięcia, ustawienie automatycznego odnawiania, status, serwery nazw, ochronę prywatności i przypisane identyfikatory kontaktów.
contacts_list — przeglądaj strona po stronie wszystkie kontakty zapisane na Twoim koncie, aby znaleźć i ponownie użyć istniejącego kontaktu (według jego identyfikatora kontaktu) zamiast tworzyć duplikat.
contacts_get — sprawdź szczegóły kryjące się za dowolnym identyfikatorem kontaktu, który widzisz przy domenie lub w wyniku contacts_list.
Każde narzędzie zwraca wynik jako uporządkowany JSON. Długotrwałe operacje (obecnie tylko domain_register) zwracają odwołanie do operacji do odpytywania przez async_operation_get; wszystkie pozostałe narzędzia kończą się natychmiast.
Kontakty to osoby lub organizacje powiązane z rejestracją domeny (rejestrujący, administrator, techniczny, rozliczeniowy). Do kontaktu wszędzie odwołuje się jego identyfikator kontaktu — nieprzezroczysty ciąg znaków.
contacts_save — Zapisz kontaktZapisuje dane kontaktowe i zwraca wygenerowany identyfikator kontaktu. Walidacja niektórych pól (takich jak stateProvince i postalCode) zależy od wybranego kraju.
Parametr: firstName
Wymagane: Tak
Typ i ograniczenia: Ciąg znaków, 1–64 znaki. Może zawierać myślniki i apostrofy.
Parametr: lastName
Wymagane: Tak
Typ i ograniczenia: Ciąg znaków, 1–64 znaki. Może zawierać myślniki i apostrofy.
Parametr: email
Wymagane: Tak
Typ i ograniczenia: Prawidłowy adres e-mail, maks. 254 znaki.
Parametr: address1
Wymagane: Tak
Typ i ograniczenia: Wiersz adresu 1. Ciąg znaków, 1–128 znaków.
Parametr: city
Wymagane: Tak
Typ i ograniczenia: Ciąg znaków, 1–64 znaki.
Parametr: country
Wymagane: Tak
Typ i ograniczenia: Dwuliterowy kod kraju (ISO 3166-1 alpha-2), np. US.
Parametr: phone
Wymagane: Tak
Typ i ograniczenia: Format międzynarodowy +CountryCode.Number, np. +1.2025551234. Maks. 32 znaki.
Parametr: organization
Wymagane: Nie
Typ i ograniczenia: Nazwa organizacji/firmy. 1–128 znaków.
Parametr: address2
Wymagane: Nie
Typ i ograniczenia: Wiersz adresu 2. 1–128 znaków.
Parametr: stateProvince
Wymagane: Nie
Typ i ograniczenia: Nazwa stanu/prowincji, 1–64 znaki. Może być wymagana w zależności od kraju.
Parametr: postalCode
Wymagane: Nie
Typ i ograniczenia: 1–16 znaków. Może być wymagany w zależności od kraju.
Parametr: phoneExt
Wymagane: Nie
Typ i ograniczenia: Numer wewnętrzny telefonu, 1–16 znaków.
Parametr: fax
Wymagane: Nie
Typ i ograniczenia: Numer faksu, ten sam format +CountryCode.Number, maks. 32 znaki.
Parametr: faxExt
Wymagane: Nie
Typ i ograniczenia: Wewnętrzny numer faksu, 1–16 znaków.
Parametr: taxNumber
Wymagane: Nie
Typ i ograniczenia: Numer podatkowy, 1–32 znaki.
Zwraca
{ "contactId": "..." }
contactId (27–32 znaki alfanumeryczne) to wartość przekazywana do domain_register, domain_set_contacts i contacts_get.
contacts_get — Pobierz kontaktOdczytuje szczegóły zapisanego kontaktu na podstawie jego identyfikatora kontaktu. Identyfikatory kontaktów pochodzą z contacts_save, contacts_list lub z pola contacts w wynikach domains_list.
Parametr: contactId
Wymagane: Tak
Typ i ograniczenia: Identyfikator kontaktu, 27–32 znaki alfanumeryczne.
Zwraca — { contact } zawierający:
Pole: firstName, lastName, email, address1, city, country, phone, postalCode
Typ: String
Pole: organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber
Typ: String lub null
contacts_list — Lista kontaktówWyświetla wszystkie kontakty zapisane na Twoim koncie, aby umożliwić znalezienie i ponowne użycie istniejącego kontaktu (według jego identyfikatora kontaktu) zamiast tworzenia duplikatu lub przeszukiwania domen. Lista jest stronicowana i sortowalna, zgodnie z domains_list.
Parametr: take
Wymagane: Nie
Typ i ograniczenia: Liczba elementów na stronę, 1–100. Domyślnie 10.
Parametr: skip
Wymagane: Nie
Typ i ograniczenia: Liczba pomijanych elementów, 0 lub więcej. Domyślnie 0.
Parametr: orderBy
Wymagane: Nie
Typ i ograniczenia: Do 8 kluczy sortowania: name, email, organization; poprzedź - dla kolejności malejącej (np. -name).
Zwraca — { items, total }, gdzie total to liczba unikalnych kontaktów na koncie (bez duplikatów według identyfikatora kontaktu, a nie rozmiar strony), a każdy element zawiera wystarczająco dużo informacji, by odróżnić kontakty bez dodatkowego wywołania. Jeśli konto ma zduplikowane wpisy dla tego samego identyfikatora kontaktu, są one scalane do jednego, więc total liczy odrębne kontakty, a nie surowe wiersze po stronie serwera:
Pole: contactId
Typ: String (27–32 znaki alfanumeryczne). Przekaż do contacts_get, domain_register lub domain_set_contacts.
Pole: name
Typ: String — nazwa kontaktu.
Pole: email
Typ: String lub null, gdy dla kontaktu nie ma zapisanego adresu e-mail.
Pole: organization
Typ: String lub null, gdy dla kontaktu nie ma zapisanej organizacji.
{"items": [{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }],"total": 1}
Pola wejściowe nazwy domeny (domain/domainName) akceptują Unicode (IDN) lub ASCII (A-label) — w obu przypadkach narzędzie automatycznie normalizuje nazwę do punycode przed użyciem. domains_check_availability i domain_register dodatkowo wymagają TLD obsługiwanego przez Spaceship do rejestracji: domena, której TLD nie jest obsługiwane, jest traktowana jako niedostępna zamiast być sprawdzana lub obciążana opłatą. Pozostałe narzędzia domenowe (domains_list, domain_set_contacts, domain_set_nameservers) oraz narzędzia DNS tylko normalizują nazwę i nigdy nie odrzucają jej z powodu obsługi TLD.
domains_list — Lista domenPobiera stronicowaną listę Twoich domen. Przekaż domain, aby zamiast tego pobrać pojedynczą domenę po nazwie (stronicowanie i sortowanie są wtedy ignorowane, a wynik zawiera note informującą o tym, jeśli zostały podane).
Parametr: domain
Wymagane: Nie
Typ i ograniczenia: W pełni kwalifikowana nazwa domeny do pobrania pojedynczej domeny. Akceptuje Unicode (IDN) lub ASCII (A-label) — automatycznie normalizowana do punycode.
Parametr: take
Wymagane: Nie
Typ i ograniczenia: Liczba elementów na stronę, 1–100. Domyślnie 10.
Parametr: skip
Wymagane: Nie
Typ i ograniczenia: Liczba pomijanych elementów, 0 lub więcej. Domyślnie 0.
Parametr: orderBy
Wymagane: Nie
Typ i ograniczenia: Do 8 kluczy sortowania: name, unicodeName, registrationDate, expirationDate; poprzedź - dla kolejności malejącej (np. -expirationDate).
Zwraca — { items, total }, gdzie każdy element opisuje domenę:
Pole: name / unicodeName
Znaczenie: Nazwa domeny w formie ASCII i Unicode.
Pole: isPremium
Znaczenie: Czy domena jest nazwą premium.
Pole: autoRenew
Znaczenie: Czy automatyczne odnawianie jest włączone.
Pole: registrationDate / expirationDate
Znaczenie: Znaczniki czasu rejestracji i wygaśnięcia.
Pole: lifecycleStatus
Znaczenie: creating, registered, grace1, grace2 lub redemption.
Pole: verificationStatus
Znaczenie: verification, success, failed lub null, gdy nie dotyczy.
Pole: eppStatuses
Znaczenie: Kody statusu rejestru (np. blokady transferu).
Pole: suspensions
Znaczenie: Aktywne zawieszenia, każde z polem reasonCode.
Pole: privacyProtection
Znaczenie: { level: "public" | "high", contactForm: boolean }.
Pole: nameservers
Znaczenie: { provider: "basic" | "custom", hosts: [...] }.
Pole: contacts
Znaczenie: Identyfikatory kontaktów: registrant oraz admin/tech/billing (mogą mieć wartość null) oraz attributes (lista identyfikatorów kontaktów atrybutów rozszerzonych lub null). Można je odczytać przez contacts_get.
Spaceship MCP wypełnia każde z powyższych pól — w tym contacts, eppStatuses, suspensions, verificationStatus, nameservers, rzeczywiste autoRenew oraz odrębne unicodeName, jeśli domena je ma — zarówno dla list wieloelementowych, jak i pobrań pojedynczej domeny.
domains_check_availability — Sprawdź dostępność domenySprawdza, czy jedna lub więcej nazw domen jest dostępna do rejestracji. Dla jednej nazwy używa punktu końcowego pojedynczej domeny, a dla wielu — punktu końcowego zbiorczego. Domena, której TLD nie jest obsługiwane do rejestracji, w ogóle nie jest wysyłana do sprawdzenia dostępności — jest natychmiast zwracana jako tldNotSupported.
Parametr: domains
Wymagane: Tak
Typ i ograniczenia: 1–20 w pełni kwalifikowanych nazw domen. Każda akceptuje Unicode (IDN) lub ASCII (A-label) — automatycznie normalizowana do punycode.
Zwraca — { results }, po jednym wpisie dla każdej żądanej nazwy:
Pole: domain
Znaczenie: Sprawdzana nazwa.
Pole: result
Znaczenie: available, taken, invalidDomainName, tldNotSupported lub unexpectedError.
Pole: premiumPricing
Znaczenie: Dla nazw premium: lista { operation, price, currency }, gdzie operation to register, transfer, renew lub restore. Puste dla zwykłych nazw.
Pole: price
Znaczenie: Dla nazw available (standardowych i premium): cena w USD za rejestrację domeny na najkrótszy okres dozwolony przez TLD — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }. amount to łączna kwota do zapłaty za cały ten okres; pricedYears określa, ile lat obejmuje. Nie jest podawana cena sprzed rabatu ani cena „było”. icannFee to opłata ICANN (USD) już uwzględniona w amount, zwracana osobno, aby można było wyjaśnić rozbicie ceny; pojawia się tylko wtedy, gdy TLD obejmuje taką opłatę.
Pole: pricePerYear
Znaczenie: Wewnątrz price: amount podzielone przez pricedYears, dzięki czemu zawsze dostępna jest wartość roczna do porównania. Gdy pricedYears wynosi 1, jest to rzeczywista cena za jeden rok; powyżej 1 jest to średnia roczna dla całego okresu, a nie okres, który można kupić.
Pole: minRegisterPeriodInYears / maxRegisterPeriodInYears
Znaczenie: Dla nazw available: najkrótszy i najdłuższy okres rejestracji faktycznie dozwolony przez to TLD, jako dwie zwykłe liczby. Użyj ich, aby wybrać prawidłowe years dla domain_register. Oba pola są pomijane, gdy nie udało się ustalić dozwolonego okresu.
Pole: priceUnavailableReason
Znaczenie: Obecne zamiast price, gdy nie udało się ustalić ceny dla dostępnej nazwy. Samo sprawdzenie nadal kończy się powodzeniem.
Wycena jest dostępna tylko dla nazw dostępnych; wyniki taken/invalid nie zawierają ani price, ani priceUnavailableReason.
Większość TLD pozwala na jeden rok, ale nie wszystkie..ai ma na przykład minimum dwa lata. W takich przypadkach price.amount to łączna kwota za minimalny okres — a nie cena za jeden rok, którą można zastosować — a price.pricedYears to wskazuje:
{"domain": "example.ai","result": "available","premiumPricing": [],"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },"minRegisterPeriodInYears": 2,"maxRegisterPeriodInYears": 10}
pricePerYear jest tutaj obecne — 159.96 podzielone przez dwa lata, które obejmuje, daje 79.98. To suma podzielona przez okres, a nie cena, którą można zapłacić za jeden rok (nie można kupić rocznej rejestracji .ai). Zawsze pokazuj amount razem z pricedYears („159.96 USD za 2 lata”), nigdy samego amount. Dla zwykłego TLD pricedYears wynosi 1, a pricePerYear jest równe amount.
domain_register — Zarejestruj domenęRejestruje (kupuje) domenę. To obciąża domyślną metodę płatności Twojego konta i jest nieodwracalne. Zalecana sekwencja: domains_check_availability → domain_register. Domena, której TLD nie jest obsługiwane do rejestracji, jest odrzucana natychmiast — przed jakimkolwiek sprawdzeniem dostępności, wyceną lub obciążeniem.
years musi mieścić się w zakresie dozwolonym przez dane TLD. Zakres 1–10 poniżej to granica zewnętrzna dla wszystkich TLD; każde TLD ma węższy zakres. .ai pozwala na 2–10, .co i .io pozwalają na 1–5, .sg na 1–2, .fr dokładnie 1. Wartość years spoza tego zakresu jest odrzucana z błędem walidacji wskazującym dozwolony zakres — przed jakimkolwiek sprawdzeniem dostępności, wyceną lub obciążeniem — i wartość ta nie jest po cichu dostosowywana za Ciebie:
.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.
Najpierw odczytaj minRegisterPeriodInYears/maxRegisterPeriodInYears z domains_check_availability i wybierz years mieszczące się w tym zakresie. To samo sprawdzenie jest uruchamiane ponownie przy wywołaniu potwierdzającym (confirmationResponse: "accept"), więc nie da się go obejść przez potwierdzenie.
Dwuetapowe potwierdzenie przed obciążeniem. Najpierw wywołaj bez ustawionego confirmationToken: narzędzie ponownie wycenia domenę, tworzy pełne potwierdzenie — okres, rozbicie ceny (w tym ewentualną opłatę ICANN i informację, czy domena jest premium), auto-odnawianie, prywatność WHOIS, źródło płatności oraz kontakty registrant/admin/tech/billing (kontakt identyczny z registrant jest pokazany jako „same as registrant”) — i zwraca status: "confirmation_required" wraz z tym price i nowym confirmationToken. Podczas tego wywołania nic nie jest rejestrowane ani rozliczane. Pełne potwierdzenie jest tekstem odpowiedzi narzędzia; pokaż je użytkownikowi bez zmian. Gdy się zgodzi, wywołaj ponownie z dokładnie tymi samymi argumentami plus ten confirmationToken i confirmationResponse: "accept", aby wysłać zakup, lub confirmationResponse: "decline", aby go anulować — przy odrzuceniu nic nie jest naliczane. Token jest powiązany z dokładnie tymi argumentami i podaną ceną oraz wygasa po krótkim czasie: brakujący, wygasły, zmodyfikowany lub już niepasujący token przy wywołaniu potwierdzającym po prostu zwraca zupełnie nowe potwierdzenie z nowym tokenem — nigdy błąd, nigdy obciążenie. Jeśli nie da się ustalić ceny przy którymkolwiek wywołaniu, narzędzie zwraca status: "price_unavailable" zamiast tokena i nigdy nie obciąża konta; spróbuj ponownie później. Potwierdzone wywołanie zwraca natychmiast status: "pending" oraz operationId — rejestracja kończy się w tle; sprawdź ją za pomocą async_operation_get.
Parametr: domain
Wymagane: Tak
Typ i ograniczenia: W pełni kwalifikowana nazwa domeny do rejestracji, np. example.com. Akceptuje Unicode (IDN) lub ASCII (A-label) — automatycznie normalizowana do punycode.
Parametr: years
Wymagane: Tak
Typ i ograniczenia: Okres rejestracji w latach. 1–10 to granica zewnętrzna; akceptowany zakres zależy od danego TLD — zobacz minRegisterPeriodInYears/maxRegisterPeriodInYears z domains_check_availability. Wartości spoza zakresu są odrzucane, a nie dostosowywane.
Parametr: autoRenew
Wymagane: Tak
Typ i ograniczenia: Boolean. Gdy true, domena odnawia się automatycznie po wygaśnięciu przy użyciu domyślnej metody płatności konta.
Parametr: privacy.level
Wymagane: Tak
Typ i ograniczenia: high ukrywa dane kontaktowe registranta przed publicznym WHOIS; public je publikuje.
Parametr: privacy.userConsent
Wymagane: Tak
Typ i ograniczenia: Boolean. Musi potwierdzać zgodę na wybrane ustawienie prywatności.
Parametr: contacts.registrant
Wymagane: Tak
Typ i ograniczenia: contactId string (27–32 znaki alfanumeryczne), z contacts_save.
Parametr: contacts.admin
Wymagane: Tak
Typ i ograniczenia: contactId string (27–32 znaki alfanumeryczne), z contacts_save.
Parametr: contacts.tech
Wymagane: Tak
Typ i ograniczenia: contactId ciąg znaków (27–32 znaki alfanumeryczne), z contacts_save.
Parametr: contacts.billing
Wymagane: Tak
Typ i ograniczenia: contactId ciąg znaków (27–32 znaki alfanumeryczne), z contacts_save.
Parametr: contacts.attributes
Wymagane: Nie
Typ i ograniczenia: Tablica identyfikatorów kontaktów z rozszerzonymi atrybutami (do 5); wymagana tylko dla niektórych TLD, w przeciwnym razie pomiń lub użyj null.
Parametr: confirmationToken
Wymagane: Nie
Typ i ograniczenia: Ciąg znaków, do 4096 znaków. Token wydany przez serwer, zwrócony przez wcześniejsze wywołanie domain_register dla dokładnie tych argumentów. Pomiń przy pierwszym wywołaniu dla nowej próby rejestracji. Wygasa po krótkim czasie i jest powiązany z dokładnymi argumentami oraz ceną, dla których został wydany — wyślij go ponownie bez zmian wraz z confirmationResponse, aby na nim wykonać działanie.
Parametr: confirmationResponse
Wymagane: Warunkowo
Typ i ograniczenia: "accept" lub "decline". Ma znaczenie tylko razem z prawidłowym confirmationToken. "accept" wysyła rejestrację (obciążaną opłatą) pokazaną w tym potwierdzeniu; "decline" anuluje ją bez obciążania opłatą. Pomiń przy pierwszym wywołaniu.
Zwraca — po pierwszym wywołaniu (nic nie zostało naliczone):
{"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."}
Obok tego JSON-a odpowiedź tekstowa narzędzia text jest pełnym potwierdzeniem do pokazania użytkownikowi — powtarza domenę, okres i cenę powyżej, a także zawiera wiersze dla Auto-renew: on/off, WHOIS privacy: on/off, Payment source: Spaceship account funds oraz każdego z kontaktów registrant/admin/tech/billing (imię i nazwisko, e-mail, kraj — kontakt zgodny z registrantem ma opis „same as registrant”), po czym następują instrukcje dotyczące następnego wywołania. W przypadku okresu wieloletniego price.amount to łączna kwota za cały okres, a price.pricePerYear to ta łączna kwota podzielona przez długość okresu — np. years: 5 dla .com zwraca { "amount": 48.52, "pricedYears": 5, "pricePerYear": 9.70 }, a example.ai z years: 2 zwraca { "amount": 159.96, "pricedYears": 2, "pricePerYear": 79.98 }.
Zwraca — po confirmationResponse: "accept" (rejestracja wysłana):
{"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."}
Zwraca — po confirmationResponse: "decline" (nic nie zostało naliczone):
{"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."}
Zwraca — jeśli nie można ustalić ceny, przy dowolnym wywołaniu:
{"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 może mieć wartość:
Status: confirmation_required
Znaczenie: Podgląd — nic nie zostało naliczone. Pokaż użytkownikowi tekst odpowiedzi, a następnie wywołaj ponownie z tym confirmationToken i confirmationResponse. Zwracane również, z nowym tokenem, gdy przesłany confirmationToken jest brakujący, wygasły, zmodyfikowany lub nie odpowiada już bieżącym argumentom/cenie — nigdy jako błąd.
Status: cancelled
Znaczenie: Zakup został odrzucony (confirmationResponse: "decline"), więc nic nie zostało wysłane.
Status: pending
Znaczenie: Wysłano; rejestr kończy operację w tle. Odpytuj async_operation_get za pomocą operationId.
Status: price_unavailable
Znaczenie: Nie udało się ustalić ceny, więc nie wydano tokena i nic nie zostało naliczone. Spróbuj ponownie później.
operationId to prosty ciąg znaków — przekaż go do async_operation_get, które informuje, czy rejestracja ostatecznie się powiedzie, czy zakończy niepowodzeniem. price pokazana przy confirmation_required to dokładnie kwota, która zostanie naliczona przy confirmationResponse: "accept" — price.amount to suma za cały ten okres, a price.pricedYears określa długość okresu, więc zawsze pokazuj te dwie wartości razem. Gdy TLD obejmuje opłatę ICANN, price.amount już ją zawiera, a price.icannFee podaje jej wysokość, aby można ją było wyjaśnić.
domain_set_contacts — Ustaw kontakty domenyZmienia kontakty przypisane do domeny, którą posiadasz. Kończy się natychmiast (brak operacji do odpytywania).
Parametr: domainName
Wymagane: Tak
Typ i ograniczenia: W pełni kwalifikowana nazwa domeny. Akceptuje Unicode (IDN) lub ASCII (A-label) — automatycznie normalizowana do punycode.
Parametr: registrant
Wymagane: Tak
Typ i ograniczenia: contactId ciąg znaków (27–32 znaki alfanumeryczne), z contacts_save.
Parametr: admin
Wymagane: Nie
Typ i ograniczenia: contactId ciąg znaków (27–32 znaki alfanumeryczne) lub null.
Parametr: tech
Wymagane: Nie
Typ i ograniczenia: contactId ciąg znaków (27–32 znaki alfanumeryczne) lub null.
Parametr: billing
Wymagane: Nie
Typ i ograniczenia: contactId ciąg znaków (27–32 znaki alfanumeryczne) lub null.
Parametr: attributes
Wymagane: Nie
Typ i ograniczenia: Tablica identyfikatorów kontaktów z rozszerzonymi atrybutami (do 5); wymagana tylko dla niektórych TLD, w przeciwnym razie pomiń lub użyj null.
Zwraca
{ "verificationStatus": "verification" }
Zwrócone verificationStatus odzwierciedla weryfikację e-mail zgodnie z ICANN RAA: verification — registrant musi potwierdzić swój adres e-mail (wysyłana jest wiadomość potwierdzająca); success — już potwierdzono; null — weryfikacja RAA nie dotyczy tej domeny.
domain_set_nameservers — Ustaw serwery nazw domenyZmienia serwery nazw domeny na poziomie rejestratora. Kończy się natychmiast (brak operacji do odpytywania). Zmiana jest następnie widoczna w domains_list.
Parametr: domainName
Wymagane: Tak
Typ i ograniczenia: W pełni kwalifikowana nazwa domeny. Akceptuje Unicode (IDN) lub ASCII (A-label) — automatycznie normalizowana do punycode.
Parametr: provider
Wymagane: Tak
Typ i ograniczenia: basic (domyślne serwery nazw Spaceship) lub custom (własne hosty).
Parametr: hosts
Wymagane: Warunkowo
Typ i ograniczenia: Wymagane, gdy provider ma wartość custom: 2–12 nazw hostów serwerów nazw (każda prawidłowa FQDN, 4–255 znaków). Musi zostać pominięte, gdy provider ma wartość basic.
Zwraca
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }
Ponowne zastosowanie stanu, w którym domena już się znajduje (np. ustawienie basic, gdy jest już ustawione basic) zwraca błąd walidacji zamiast powodzenia bez działania — traktuj to jako oczekiwany wynik, a nie niepowodzenie wymagające ponowienia próby.
Pole domainName używane przez te narzędzia akceptuje Unicode (IDN) lub ASCII (A-label) i jest automatycznie normalizowane do punycode; obsługa TLD nie jest tutaj wymuszana.
dns_records_get — Pobierz rekordy DNSPobiera stronicowaną listę rekordów zasobów DNS dla domeny.
Parametr: domainName
Wymagane: Tak
Typ i ograniczenia: Domena, której rekordy mają zostać pobrane.
Parametr: take
Wymagane: Nie
Typ i ograniczenia: Liczba elementów na stronę, 1–500. Domyślnie 100.
Parametr: skip
Wymagane: Nie
Typ i ograniczenia: Elementy do pominięcia, 0 lub więcej. Domyślnie 0.
Parametr: orderBy
Wymagane: Nie
Typ i ograniczenia: Do 8 kluczy sortowania: type, -type, name, -name.
Zwraca — { items, total }. Każdy element jest rekordem opisanym w sekcji Kształty rekordów oraz może zawierać opcjonalne pole group wskazujące, skąd pochodzi rekord (custom — utworzony przez Ciebie, product — zarządzany przez produkt Spaceship, personalNs — osobiste serwery nazw).
dns_records_save — Zapisz rekordy DNSDodaje niestandardowe rekordy DNS lub aktualizuje TTL istniejących. Rekordy są dopasowywane bez rozróżniania wielkości liter, z wyjątkiem rekordów TXT (z rozróżnianiem wielkości liter).
Parametr: domainName
Wymagane: Tak
Typ i ograniczenia: Domena, której rekordy mają zostać zaktualizowane.
Parametr: records
Wymagane: Tak
Typ i ograniczenia: 1–500 rekordów — zobacz Kształty rekordów. Każdy może zawierać opcjonalne pole ttl.
Parametr: force
Wymagane: Nie
Typ i ograniczenia: Wartość logiczna. Pomija sprawdzanie rozwiązywania konfliktów i wymusza aktualizację strefy.
Zwraca — { "saved": <number> }, liczbę przesłanych rekordów. Pomyślna odpowiedź oznacza, że wszystkie rekordy zostały zaakceptowane; jeśli którykolwiek rekord zakończy się niepowodzeniem, całe wywołanie zwraca zamiast tego błąd.
dns_records_delete — Usuń rekordy DNSUsuwa niestandardowe rekordy DNS. Usunięć nie można cofnąć. Rekordy są dopasowywane bez rozróżniania wielkości liter, z wyjątkiem rekordów TXT (z rozróżnianiem wielkości liter).
Parametr: domainName
Wymagane: Tak
Typ i ograniczenia: Domena, której rekordy mają zostać usunięte.
Parametr: records
Wymagane: Tak
Typ i ograniczenia: 1–500 rekordów identyfikujących istniejące rekordy — te same kształty co przy zapisie, ale bez ttl.
Zwraca — { "deleted": <number> }, liczbę przesłanych rekordów. Jeśli nie można dopasować któregokolwiek rekordu, całe wywołanie kończy się niepowodzeniem i nic nie zostaje usunięte.
Każdy rekord zawiera:
type — jeden z 13 obsługiwanych typów poniżej.
name — nazwa rekordu bez domeny: użyj @ dla samej domeny (apex) oraz * dla symbolu wieloznacznego.
ttl (tylko zapis, opcjonalnie) — czas pamięci podręcznej w sekundach, 60–3600.
Pola specyficzne dla typu:
Typ: A
Pola: address — adres IPv4.
Typ: AAAA
Pola: address — adres IPv6.
Typ: CNAME
Pola: cname — kanoniczna nazwa domeny (maks. 253 znaki).
Typ: ALIAS
Pola: aliasName — kanoniczna nazwa domeny; zachowanie podobne do CNAME dla apexu, gdzie CNAME nie jest dozwolony.
Typ: NS
Pola: nameserver — nazwa serwera nazw.
Typ: PTR
Pola: pointer — nazwa domeny dla podanego adresu IP.
Typ: TXT
Pola: value — wartość tekstowa (dopasowywana z rozróżnianiem wielkości liter).
Typ: MX
Pola: exchange — serwer pocztowy; preference — priorytet (0–65535, preferowana niższa wartość).
Typ: CAA
Pola: flag — 0 lub 128 (bit krytyczny); tag — issue, issuewild lub iodef; value — identyfikator CA z opcjonalnymi parametrami.
Typ: SRV
Pola: service (np. _sip); protocol (np. _tcp); priority i weight (0–65535); port (1–65535); target — nazwa domeny serwera.
Typ: TLSA
Pola: usage, selector, matching (każde 0–255); port — * lub _<1–65535>; protocol (np. _tcp); associationData — skrót certyfikatu lub dane.
Typ: HTTPS
Pola: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN lub .; opcjonalnie port (* lub _<1–65535>), scheme (musi być _https, gdy port jest ustawiony), svcParams.
Typ: SVCB
Pola: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN lub .; opcjonalnie port, scheme (np. _tcp), svcParams.
async_operation_get — Pobierz status operacji asynchronicznejSprawdza długotrwałą operację uruchomioną przez inne narzędzie (obecnie domain_register). Wywołaj je z parametrem operationId ustawionym na operationId zwrócone przez tamto narzędzie i powtarzaj, aż status będzie mieć wartość success lub failed.
Parametr: operationId
Wymagane: Tak
Typ i ograniczenia: Ciąg alfanumeryczny, maks. 36 znaków, zwrócony przez narzędzie, które uruchomiło operację.
Zwraca
Pole: operationId
Znaczenie: Odpytywana operacja.
Pole: status
Znaczenie: pending, success lub failed.
Pole: type
Znaczenie: Typ operacji lub null.
Pole: details
Znaczenie: Dodatkowe szczegóły operacji lub null.
Pole: createdAt / modifiedAt
Znaczenie: Kiedy operacja została utworzona / ostatnio zaktualizowana (modifiedAt może mieć wartość null).
Gdy wywołanie się nie powiedzie, narzędzie zwraca błąd z kodem i czytelnym dla człowieka polem detail wyjaśniającym, co poszło nie tak — na przykład nieprawidłowe dane wejściowe (błędnie sformatowana nazwa domeny lub identyfikator kontaktu), domenę lub kontakt, które nie istnieją, albo konflikt z bieżącym stanem. Jeśli narzędzie zostanie odrzucone, ponieważ asystent nie otrzymał do niego dostępu, połącz ponownie Spaceship MCP i zatwierdź żądany dostęp.