Spaceship MCP conectează asistentul tău AI (cum ar fi Claude) la contul tău Spaceship. Prin intermediul lui, asistentul poate verifica și înregistra domenii, gestiona contactele domeniilor și citi sau edita înregistrări DNS în numele tău — tu doar ceri în limbaj obișnuit, iar asistentul apelează instrumentele potrivite.
Ai nevoie de un cont Spaceship. Spaceship MCP este disponibil la https://mcp.spaceship.com/mcp.
Modul în care vă conectați depinde de asistentul dvs. AI:
Claude (web și desktop) — deschide Settings, alege Connectors, găsește Spaceship în directorul de conectori și adaugă-l. Claude de la Anthropic este în prezent clientul cu care am verificat că Spaceship MCP funcționează.
NB: Deși înregistrarea domeniilor prin Spaceship MCP este pe deplin acceptată în ansamblu, această capabilitate nu este încă disponibilă în mod specific prin conectorul Claude. Căutarea, verificarea domeniilor, gestionarea contactelor și gestionarea înregistrărilor DNS sunt deja disponibile și s-a verificat că funcționează cu Claude în prezent.
Alți clienți MCP — adaugă un server MCP la distanță și indică-l către https://mcp.spaceship.com/mcp. Alți clienți pot funcționa, dar încă nu i-am verificat.
Când te conectezi, ți se va cere să te autentifici în Spaceship și să acorzi asistentului acces la contul tău. Instrumentele pe care le poate folosi asistentul depind de accesul pe care îl aprobi — dacă un instrument este respins pentru că accesul nu a fost acordat, reconectează-te și aprobă accesul de care are nevoie.
Instrument: contacts_save
Ce face: Salvează detaliile de contact și obține un ID de contact
Instrument: contacts_get
Ce face: Citește un contact salvat după ID-ul său
Instrument: contacts_list
Ce face: Listează toate contactele salvate pentru a găsi și reutiliza unul
Instrument: domains_list
Ce face: Listează domeniile tale sau caută un singur domeniu
Instrument: domains_check_availability
Ce face: Verifică dacă domeniile sunt disponibile pentru înregistrare
Instrument: domain_register
Ce face: Înregistrează (cumpără) un domeniu — cheltuie bani
Instrument: domain_set_contacts
Ce face: Atribuie contacte unui domeniu pe care îl deții
Instrument: domain_set_nameservers
Ce face: Comută un domeniu la nameservere de bază sau personalizate
Instrument: dns_records_get
Ce face: Citește înregistrările DNS pentru un domeniu
Instrument: dns_records_save
Ce face: Adaugă înregistrări DNS sau le actualizează TTL-ul
Instrument: dns_records_delete
Ce face: Șterge înregistrări DNS
Instrument: async_operation_get
Ce face: Verifică starea unei operațiuni de lungă durată
Oriunde este necesar un contact (domain_register, domain_set_contacts), fiecare rol primește un contactId șir de caractere — niciodată detalii de contact inline. Salvați mai întâi contactul cu contacts_save (care returnează contactId), apoi transmiteți acel ID acolo unde contactul este acceptat. Nu există salvare automată inline; un rol nu poate primi un obiect complet de contact. De asemenea, puteți reutiliza un contactId dintr-un rezultat contacts_list sau unul citit dintr-un rezultat domains_list.
Un contactId este un șir de 27–32 de caractere alfanumerice. Doar transmiteți-l înapoi acolo unde este acceptat un contact.
Mai multe instrumente sunt concepute pentru a fi utilizate împreună: rezultatul unuia devine intrarea următorului.
contacts_save — salvează contactele registrant, admin, tech și billing (dacă nu ai deja ID-urile lor) și păstrează contactId returnat pentru fiecare. Contactele trebuie să existe înainte să poți înregistra.
domains_check_availability — verifică numele dorit(e). Continuă doar când result este available. Fiecare nume disponibil include price în USD pentru înregistrare (atât standard, cât și premium) sau priceUnavailableReason când acesta nu poate fi determinat, plus minRegisterPeriodInYears și maxRegisterPeriodInYears — perioada permisă de TLD. Reține că price acoperă price.pricedYears ani, care reprezintă cea mai scurtă perioadă permisă de TLD și nu este întotdeauna 1.
domain_register (preview) — apelează cu confirmationToken nesetat pentru a obține status: confirmation_required, un confirmationToken nou și price care va fi facturat. Nu se facturează nimic. Textul de răspuns al instrumentului este o confirmare completă — perioadă, detalierea prețului, reînnoire automată, confidențialitate WHOIS, sursa de plată și contactele registrant/admin/tech/billing — afișează-l utilizatorului exact așa cum este. Alege years între minRegisterPeriodInYears și maxRegisterPeriodInYears de la pasul 2 — o valoare în afara intervalului este respinsă direct. Transmite fiecare rol de contact ca contactId pe care l-ai salvat la pasul 1.
domain_register (acceptare/refuz) — după ce utilizatorul este de acord, apelează din nou cu exact aceleași argumente plus acel confirmationToken și confirmationResponse: "accept". Aceasta facturează metoda de plată implicită a contului și este ireversibilă. Returnează imediat status: pending și un operationId — înregistrarea se finalizează în fundal. Pentru a anula în schimb, apelează din nou cu același confirmationToken și confirmationResponse: "decline" — nu se facturează nimic. Tokenul expiră după scurt timp și este asociat exact argumentelor și prețului pentru care a fost emis; dacă lipsește, a expirat sau nu mai corespunde, apelul returnează o confirmare complet nouă în loc de eroare — niciodată o taxare. Dacă prețul nu poate fi determinat la oricare dintre apeluri, instrumentul returnează în schimb status: price_unavailable și nu se percepe nicio taxă.
async_operation_get — transmite operationId de la pasul 4 pentru a verifica progresul. Repetă până când status devine success sau failed.
contacts_save ──▶ domains_check_availability ──▶ domain_register ──▶ domain_register ──▶ async_operation_get(ID-uri contactId) (disponibil? + preț + (token nesetat: (token + (pending →min/maxRegisterPeriod) confirmare, accept: operationId, success/failed)confirmationToken, pending)fără taxare)
domain_set_contacts — atribuie contacte domeniului prin contactId (salvează-le mai întâi cu contacts_save dacă este necesar). Aceasta se finalizează imediat și returnează un verificationStatus: verification înseamnă că registrantul trebuie să își confirme adresa de email înainte ca modificarea să se aplice complet (i se trimite un email), success înseamnă că este deja confirmată, iar null înseamnă că nu este necesară nicio confirmare pentru acel domeniu.
domains_list — găsește domeniul și vezi nameservers actuale ({ provider, hosts }).
domain_set_nameservers — comută-l la nameserverele implicite Spaceship cu provider: "basic" (fără hosts) sau direcționează-l către ale tale cu provider: "custom" și o listă de 2–12 hosts. Returnează rezultatul { provider, hosts }, iar un apel ulterior la domains_list reflectă modificarea. Reaplicarea unei stări în care domeniul se află deja returnează o eroare de validare în loc de no-op — tratează asta ca fiind de așteptat, nu ca pe un eșec care necesită reîncercare.
domains_list — găsește domeniul pe care vrei să îl gestionezi (sau transmite direct numele lui dacă îl cunoști).
dns_records_get — citește înregistrările curente pentru domeniu.
dns_records_save sau dns_records_delete — adaugă, actualizează sau elimină înregistrări. Înregistrările returnate de dns_records_get au aceeași structură pe care o acceptă instrumentele de salvare și ștergere (ștergerea doar omite ttl), astfel încât asistentul poate citi, ajusta și scrie înapoi. Potrivirea nu ține cont de majuscule/minuscule, cu excepția înregistrărilor TXT, care sunt sensibile la majuscule.
domains_list — parcurge paginat toate domeniile tale cu sortare sau preia un singur domeniu după nume. Fiecare domeniu include data expirării, setarea de reînnoire automată, starea, nameserverele, protecția confidențialității și ID-urile de contact atribuite.
contacts_list — parcurge paginat toate contactele salvate în contul tău pentru a găsi și reutiliza unul existent (după ID-ul său de contact) în loc să creezi un duplicat.
contacts_get — caută detaliile din spatele oricărui ID de contact pe care îl vezi pe un domeniu sau într-un rezultat contacts_list.
Fiecare instrument returnează rezultatul său ca JSON structurat. Operațiunile de lungă durată (în prezent doar domain_register) returnează o referință de operațiune care poate fi interogată cu async_operation_get; toate celelalte instrumente se finalizează imediat.
Contactele sunt persoanele sau organizațiile asociate unei înregistrări de domeniu (registrant, admin, tech, billing). Un contact este referit peste tot prin ID-ul de contact — un șir opac.
contacts_save — Salvează contactulSalvează detaliile de contact și returnează ID-ul de contact generat. Validarea unor câmpuri (cum ar fi stateProvince și postalCode) depinde de țara selectată.
Parametru: firstName
Obligatoriu: Da
Tip și constrângeri: Șir, 1–64 de caractere. Poate include cratime și apostrofuri.
Parametru: lastName
Obligatoriu: Da
Tip și constrângeri: Șir, 1–64 de caractere. Poate include cratime și apostrofuri.
Parametru: email
Obligatoriu: Da
Tip și constrângeri: Adresă de email validă, max. 254 de caractere.
Parametru: address1
Obligatoriu: Da
Tip și constrângeri: Linia 1 a adresei. Șir, 1–128 de caractere.
Parametru: city
Obligatoriu: Da
Tip și constrângeri: Șir, 1–64 de caractere.
Parametru: country
Obligatoriu: Da
Tip și constrângeri: Cod de țară din două litere (ISO 3166-1 alpha-2), de ex. US.
Parametru: phone
Obligatoriu: Da
Tip și constrângeri: Format internațional +CountryCode.Number, de ex. +1.2025551234. Max. 32 de caractere.
Parametru: organization
Obligatoriu: Nu
Tip și constrângeri: Numele organizației/companiei. 1–128 de caractere.
Parametru: address2
Obligatoriu: Nu
Tip și constrângeri: Linia 2 a adresei. 1–128 de caractere.
Parametru: stateProvince
Obligatoriu: Nu
Tip și constrângeri: Numele statului/provinciei, 1–64 de caractere. Poate fi obligatoriu în funcție de țară.
Parametru: postalCode
Obligatoriu: Nu
Tip și constrângeri: 1–16 caractere. Poate fi obligatoriu în funcție de țară.
Parametru: phoneExt
Obligatoriu: Nu
Tip și constrângeri: Extensie telefonică, 1–16 caractere.
Parametru: fax
Obligatoriu: Nu
Tip și constrângeri: Număr de fax, același format +CountryCode.Number, max. 32 de caractere.
Parametru: faxExt
Obligatoriu: Nu
Tip și constrângeri: Extensie fax, 1–16 caractere.
Parametru: taxNumber
Obligatoriu: Nu
Tip și constrângeri: Număr fiscal, 1–32 de caractere.
Returnează
{ "contactId": "..." }
contactId (27–32 de caractere alfanumerice) este ceea ce transmiți către domain_register, domain_set_contacts și contacts_get.
contacts_get — Obține contactulCitește detaliile unui contact salvat după ID-ul său de contact. ID-urile de contact provin din contacts_save, contacts_list sau din câmpul contacts al rezultatelor domains_list.
Parametru: contactId
Obligatoriu: Da
Tip și constrângeri: ID de contact, 27–32 de caractere alfanumerice.
Returnează — { contact } cu:
Câmp: firstName, lastName, email, address1, city, country, phone, postalCode
Tip: Șir
Câmp: organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber
Tip: Șir sau null
contacts_list — Listează contacteleListează toate contactele salvate în contul tău, astfel încât să poți găsi și reutiliza un contact existent (după ID-ul său de contact) în loc să creezi un duplicat sau să cauți prin domeniile tale. Lista este paginată și sortabilă, în mod consecvent cu domains_list.
Parametru: take
Obligatoriu: Nu
Tip și constrângeri: Elemente pe pagină, 1–100. Implicit 10.
Parametru: skip
Obligatoriu: Nu
Tip și constrângeri: Elemente de omis, 0 sau mai multe. Implicit 0.
Parametru: orderBy
Obligatoriu: Nu
Tip și constrângeri: Până la 8 chei de sortare: name, email, organization; prefixează cu - pentru ordine descrescătoare (de ex. -name).
Returnează — { items, total } unde total este numărul de contacte unice din cont (deduplicate după ID-ul de contact, nu după dimensiunea paginii), iar fiecare element conține suficiente informații pentru a diferenția contactele fără un apel suplimentar. Dacă contul are intrări duplicate pentru același ID de contact, acestea sunt restrânse la una singură, astfel încât total numără contactele distincte, nu rândurile brute de pe server:
Câmp: contactId
Tip: Șir (27–32 alfanumeric). Transmite-l către contacts_get, domain_register sau domain_set_contacts.
Câmp: name
Tip: Șir — numele contactului.
Câmp: email
Tip: Șir sau null când contactul nu are un e-mail înregistrat.
Câmp: organization
Tip: Șir sau null când contactul nu are o organizație înregistrată.
{"items": [{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }],"total": 1}
Intrările pentru numele de domeniu (domain/domainName) acceptă Unicode (IDN) sau ASCII (A-label) — în ambele cazuri, instrumentul normalizează automat numele în punycode înainte de utilizare. domains_check_availability și domain_register necesită în plus un TLD pe care Spaceship îl acceptă pentru înregistrare: un domeniu al cărui TLD nu este acceptat este tratat ca indisponibil, în loc să fie verificat sau taxat. Celelalte instrumente pentru domenii (domains_list, domain_set_contacts, domain_set_nameservers) și instrumentele DNS normalizează doar numele și nu resping niciodată pe baza suportului TLD.
domains_list — Listează domeniileRecuperează o listă paginată a domeniilor tale. Transmite domain pentru a obține în schimb un singur domeniu după nume (paginarea și ordonarea sunt apoi ignorate, iar rezultatul include o note care spune acest lucru dacă au fost furnizate).
Parametru: domain
Obligatoriu: Nu
Tip și constrângeri: Nume de domeniu complet calificat pentru a obține un singur domeniu. Acceptă Unicode (IDN) sau ASCII (A-label) — normalizat automat în punycode.
Parametru: take
Obligatoriu: Nu
Tip și constrângeri: Elemente pe pagină, 1–100. Implicit 10.
Parametru: skip
Obligatoriu: Nu
Tip și constrângeri: Elemente de omis, 0 sau mai multe. Implicit 0.
Parametru: orderBy
Obligatoriu: Nu
Tip și constrângeri: Până la 8 chei de sortare: name, unicodeName, registrationDate, expirationDate; prefixează cu - pentru ordine descrescătoare (de ex. -expirationDate).
Returnează — { items, total } unde fiecare element descrie un domeniu:
Câmp: name / unicodeName
Semnificație: Numele domeniului în format ASCII și Unicode.
Câmp: isPremium
Semnificație: Dacă domeniul este un nume premium.
Câmp: autoRenew
Semnificație: Dacă reînnoirea automată este activată.
Câmp: registrationDate / expirationDate
Semnificație: Marcaje temporale de înregistrare și expirare.
Câmp: lifecycleStatus
Semnificație: creating, registered, grace1, grace2 sau redemption.
Câmp: verificationStatus
Semnificație: verification, success, failed sau null când nu se aplică.
Câmp: eppStatuses
Semnificație: Coduri de stare ale registrului (de ex. blocări de transfer).
Câmp: suspensions
Semnificație: Suspendări active, fiecare cu un reasonCode.
Câmp: privacyProtection
Semnificație: { level: "public" | "high", contactForm: boolean }.
Câmp: nameservers
Semnificație: { provider: "basic" | "custom", hosts: [...] }.
Câmp: contacts
Semnificație: ID-uri de contact: registrant, plus admin/tech/billing (pot fi null) și attributes (o listă de ID-uri de contact pentru atribute extinse sau null). Pot fi citite prin contacts_get.
Spaceship MCP completează fiecare câmp de mai sus — inclusiv contacts, eppStatuses, suspensions, verificationStatus, nameservers, un autoRenew real și un unicodeName distinct acolo unde domeniul are unul — atât pentru lista cu mai multe elemente, cât și pentru obținerile unui singur domeniu.
domains_check_availability — Verifică disponibilitatea domeniuluiVerifică dacă unul sau mai multe nume de domeniu sunt disponibile pentru înregistrare. Folosește endpointul pentru un singur domeniu pentru un nume și endpointul în masă pentru mai multe. Un domeniu al cărui TLD nu este acceptat pentru înregistrare nu este trimis deloc la verificarea disponibilității — este returnat imediat ca tldNotSupported.
Parametru: domains
Obligatoriu: Da
Tip și constrângeri: 1–20 de nume de domeniu complet calificate. Fiecare acceptă Unicode (IDN) sau ASCII (A-label) — normalizate automat în punycode.
Returnează — { results }, câte o intrare pentru fiecare nume solicitat:
Câmp: domain
Semnificație: Numele verificat.
Câmp: result
Semnificație: available, taken, invalidDomainName, tldNotSupported sau unexpectedError.
Câmp: premiumPricing
Semnificație: Pentru nume premium: listă de { operation, price, currency } unde operation este register, transfer, renew sau restore. Goală pentru nume obișnuite.
Câmp: price
Semnificație: Pentru numele available (standard și premium): prețul în USD pentru înregistrarea domeniului pe cea mai scurtă perioadă permisă de TLD — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }. amount este totalul de plată pentru întreaga perioadă; pricedYears indică numărul de ani acoperiți. Nu este raportat niciun preț înainte de reducere sau preț „anterior”. icannFee este taxa ICANN (USD) deja inclusă în amount, returnată separat pentru ca defalcarea să poată fi explicată; apare doar când TLD-ul implică o taxă.
Câmp: pricePerYear
Semnificație: În interiorul price: amount împărțit la pricedYears, astfel încât o valoare anuală să fie întotdeauna disponibilă pentru comparație. Când pricedYears este 1, acesta este prețul real pentru un an; peste această valoare, este o medie anuală a perioadei, nu o perioadă pe care ai putea-o cumpăra.
Câmp: minRegisterPeriodInYears / maxRegisterPeriodInYears
Semnificație: Pentru numele available: cea mai scurtă și cea mai lungă perioadă de înregistrare pe care acel TLD o permite efectiv, ca două numere simple. Folosește-le pentru a alege un years valid pentru domain_register. Ambele sunt omise când perioada permisă nu a putut fi determinată.
Câmp: priceUnavailableReason
Semnificație: Prezent în loc de price atunci când prețul nu a putut fi determinat pentru un nume disponibil. Verificarea în sine reușește în continuare.
Doar numele disponibile au preț; rezultatele taken/invalide nu conțin nici price, nici priceUnavailableReason.
Majoritatea TLD-urilor permit un an, dar unele nu..ai, de exemplu, are un minim de doi ani. Pentru acestea, price.amount este totalul pentru perioada minimă — nu un preț pe un an pe care l-ai putea folosi — iar price.pricedYears indică acest lucru:
{"domain": "example.ai","result": "available","premiumPricing": [],"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },"minRegisterPeriodInYears": 2,"maxRegisterPeriodInYears": 10}
pricePerYear este prezent aici — 159.96 împărțit la cei doi ani pe care îi acoperă dă 79.98. Acesta este totalul împărțit la perioadă, nu un preț pe care l-ai putea plăti pentru un singur an (o înregistrare .ai pe un an nu poate fi cumpărată). Afișează întotdeauna amount împreună cu pricedYears („159.96 USD pentru 2 ani”), niciodată amount singur. Pentru un TLD obișnuit, pricedYears este 1 și pricePerYear este egal cu amount.
domain_register — Înregistrează domeniulÎnregistrează (cumpără) un domeniu. Aceasta facturează metoda de plată implicită a contului tău și este ireversibilă. Secvență recomandată: domains_check_availability → domain_register. Un domeniu al cărui TLD nu este acceptat pentru înregistrare este respins imediat — înainte de orice verificare a disponibilității, stabilire a prețului sau taxare.
years trebuie să fie în intervalul permis de TLD-ul respectiv. Limita 1–10 de mai jos este limita externă pentru toate TLD-urile; fiecare TLD are un interval mai restrâns. .ai permite 2–10, .co și .io permit 1–5, .sg 1–2, .fr exact 1. Un years în afara acelui interval este respins cu o eroare de validare care indică intervalul permis — înainte de orice verificare a disponibilității, stabilire a prețului sau taxare — iar valoarea nu este ajustată discret pentru tine:
.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.
Citește mai întâi minRegisterPeriodInYears/maxRegisterPeriodInYears din domains_check_availability și alege un years din interiorul acestui interval. Aceeași verificare se rulează din nou la apelul de confirmare (confirmationResponse: "accept"), astfel încât nu poate fi niciodată ocolită prin confirmare.
Confirmare în doi pași înainte de taxare. Apelează mai întâi cu confirmationToken necompletat: instrumentul recalculează prețul domeniului, construiește o confirmare completă — perioadă, defalcarea prețului (inclusiv orice taxă ICANN și dacă domeniul este premium), reînnoire automată, confidențialitate WHOIS, sursa plății și contactele registrant/admin/tech/billing (un contact identic cu registrantul este afișat ca „same as registrant”) — și returnează status: "confirmation_required" cu acel price și un confirmationToken nou. La acest apel nu se înregistrează și nu se facturează nimic. Confirmarea completă este textul de răspuns al instrumentului; arată-l utilizatorului exact așa cum este. După ce acesta este de acord, apelează din nou cu exact aceleași argumente plus acest confirmationToken și confirmationResponse: "accept" pentru a trimite achiziția sau confirmationResponse: "decline" pentru a o anula — la refuz nu se facturează nimic. Tokenul este legat de aceste argumente exacte și de prețul cotat și expiră după scurt timp: un token lipsă, expirat, modificat sau care nu mai corespunde la apelul de confirmare returnează pur și simplu o confirmare complet nouă cu un token nou — niciodată o eroare, niciodată o taxare. Dacă prețul nu poate fi determinat la niciunul dintre apeluri, instrumentul returnează status: "price_unavailable" în loc de un token și nu taxează niciodată; încearcă din nou mai târziu. Un apel confirmat returnează imediat status: "pending" și un operationId — înregistrarea se finalizează în fundal; verific-o cu async_operation_get.
Parametru: domain
Obligatoriu: Da
Tip și constrângeri: Nume de domeniu complet calificat de înregistrat, de ex. example.com. Acceptă Unicode (IDN) sau ASCII (A-label) — normalizat automat în punycode.
Parametru: years
Obligatoriu: Da
Tip și constrângeri: Perioada de înregistrare în ani. 1–10 este limita externă; intervalul acceptat este cel propriu TLD-ului — vezi minRegisterPeriodInYears/maxRegisterPeriodInYears din domains_check_availability. Valorile în afara intervalului sunt respinse, nu ajustate.
Parametru: autoRenew
Obligatoriu: Da
Tip și constrângeri: Boolean. Când este true, domeniul se reînnoiește automat la expirare folosind metoda de plată implicită a contului.
Parametru: privacy.level
Obligatoriu: Da
Tip și constrângeri: high ascunde datele de contact ale registrantului din WHOIS-ul public; public le publică.
Parametru: privacy.userConsent
Obligatoriu: Da
Tip și constrângeri: Boolean. Trebuie să confirmi că ești de acord cu setarea de confidențialitate selectată.
Parametru: contacts.registrant
Obligatoriu: Da
Tip și constrângeri: contactId șir (27–32 alfanumeric), din contacts_save.
Parametru: contacts.admin
Obligatoriu: Da
Tip și constrângeri: contactId șir (27–32 alfanumeric), din contacts_save.
Parametru: contacts.tech
Obligatoriu: Da
Tip și constrângeri: contactId șir de caractere (27–32 alfanumerice), din contacts_save.
Parametru: contacts.billing
Obligatoriu: Da
Tip și constrângeri: contactId șir de caractere (27–32 alfanumerice), din contacts_save.
Parametru: contacts.attributes
Obligatoriu: Nu
Tip și constrângeri: Matrice de ID-uri de contact cu atribute extinse (până la 5); necesară doar pentru anumite TLD-uri, altfel omiteți sau folosiți null.
Parametru: confirmationToken
Obligatoriu: Nu
Tip și constrângeri: Șir de caractere, până la 4096 de caractere. Token emis de server, returnat de un apel anterior domain_register pentru exact aceste argumente. Omiteți-l la primul apel pentru o nouă încercare de înregistrare. Expiră după scurt timp și este asociat exact argumentelor și prețului pentru care a fost emis — retrimiteți-l neschimbat, împreună cu confirmationResponse, pentru a acționa asupra lui.
Parametru: confirmationResponse
Obligatoriu: Condițional
Tip și constrângeri: "accept" sau "decline". Are sens doar împreună cu un confirmationToken valid. "accept" trimite înregistrarea (facturată) afișată în acea confirmare; "decline" o anulează fără taxare. Omiteți-l la primul apel.
Returnează — după primul apel (nu se taxează nimic):
{"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."}
Pe lângă acest JSON, răspunsul în text al instrumentului este confirmarea completă care trebuie afișată utilizatorului — reia domeniul, perioada și prețul de mai sus, plus linii pentru Auto-renew: on/off, WHOIS privacy: on/off, Payment source: Spaceship account funds și fiecare dintre contactele registrant/admin/tech/billing (nume, e-mail, țară — un contact care corespunde registrantului apare ca „same as registrant”), urmate de instrucțiuni pentru apelul următor. Pentru o perioadă de mai mulți ani, price.amount este totalul pentru întreaga perioadă, iar price.pricePerYear este acel total împărțit la perioadă — de exemplu, years: 5 pentru .com returnează { "amount": 48.52, "pricedYears": 5, "pricePerYear": 9.70 }, iar example.ai cu years: 2 returnează { "amount": 159.96, "pricedYears": 2, "pricePerYear": 79.98 }.
Returnează — după confirmationResponse: "accept" (înregistrare trimisă):
{"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."}
Returnează — după confirmationResponse: "decline" (nu se taxează nimic):
{"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."}
Returnează — dacă prețul nu poate fi determinat, la oricare dintre apeluri:
{"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 poate fi:
Stare: confirmation_required
Semnificație: Previzualizare — nu se taxează nimic. Afișați textul răspunsului utilizatorului, apoi apelați din nou cu acest confirmationToken și confirmationResponse. Este returnat și, cu un token nou, atunci când un confirmationToken trimis lipsește, a expirat, a fost modificat sau nu mai corespunde argumentelor/prețului curent — niciodată ca eroare.
Stare: cancelled
Semnificație: Achiziția a fost refuzată (confirmationResponse: "decline"), deci nu a fost trimis nimic.
Stare: pending
Semnificație: Trimis; registrul finalizează în fundal. Interogați async_operation_get cu operationId.
Stare: price_unavailable
Semnificație: Prețul nu a putut fi determinat, deci nu a fost emis niciun token și nu s-a facturat nimic. Reîncercați mai târziu.
operationId este un șir simplu — transmiteți-l către async_operation_get, care raportează dacă înregistrarea reușește sau eșuează în cele din urmă. price afișat la confirmation_required este exact ceea ce va fi taxat la confirmationResponse: "accept" — price.amount este totalul pentru întreaga perioadă, iar price.pricedYears indică perioada, așa că afișați-le întotdeauna împreună. Când TLD-ul include o taxă ICANN, price.amount o include deja, iar price.icannFee indică valoarea taxei, astfel încât să poată fi explicată.
domain_set_contacts — Setează contactele domeniuluiSchimbă contactele atribuite unui domeniu pe care îl dețineți. Se finalizează imediat (fără operațiune de interogat).
Parametru: domainName
Obligatoriu: Da
Tip și constrângeri: Nume de domeniu complet calificat. Acceptă Unicode (IDN) sau ASCII (A-label) — normalizat automat la punycode.
Parametru: registrant
Obligatoriu: Da
Tip și constrângeri: contactId șir de caractere (27–32 alfanumerice), din contacts_save.
Parametru: admin
Obligatoriu: Nu
Tip și constrângeri: contactId șir de caractere (27–32 alfanumerice) sau null.
Parametru: tech
Obligatoriu: Nu
Tip și constrângeri: contactId șir de caractere (27–32 alfanumerice) sau null.
Parametru: billing
Obligatoriu: Nu
Tip și constrângeri: contactId șir de caractere (27–32 alfanumerice) sau null.
Parametru: attributes
Obligatoriu: Nu
Tip și constrângeri: Matrice de ID-uri de contact cu atribute extinse (până la 5); necesară doar pentru anumite TLD-uri, altfel omiteți sau folosiți null.
Returnează
{ "verificationStatus": "verification" }
Valoarea returnată verificationStatus reflectă verificarea e-mailului ICANN RAA: verification — registrantul trebuie să își confirme adresa de e-mail (se trimite un e-mail de confirmare); success — deja confirmată; null — verificarea RAA nu se aplică acestui domeniu.
domain_set_nameservers — Setează nameserverele domeniuluiSchimbă nameserverele la nivel de registrar ale unui domeniu. Se finalizează imediat (fără operațiune de interogat). Modificarea este reflectată ulterior de domains_list.
Parametru: domainName
Obligatoriu: Da
Tip și constrângeri: Nume de domeniu complet calificat. Acceptă Unicode (IDN) sau ASCII (A-label) — normalizat automat la punycode.
Parametru: provider
Obligatoriu: Da
Tip și constrângeri: basic (nameserverele implicite ale Spaceship) sau custom (gazdele proprii).
Parametru: hosts
Obligatoriu: Condițional
Tip și constrângeri: Obligatoriu când provider este custom: 2–12 nume de gazdă pentru nameservere (fiecare un FQDN valid, 4–255 de caractere). Trebuie omis când provider este basic.
Returnează
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }
Reaplicarea stării în care se află deja un domeniu (de ex. setarea basic când este deja basic) returnează o eroare de validare în locul unui succes fără efect — tratați acest lucru ca pe un rezultat așteptat, nu ca pe un eșec care trebuie reîncercat.
Valoarea domainName acceptată de aceste instrumente acceptă Unicode (IDN) sau ASCII (A-label) și este normalizată automat la punycode; suportul TLD nu este impus aici.
dns_records_get — Obține înregistrări DNSRecuperează o listă paginată de înregistrări de resurse DNS pentru un domeniu.
Parametru: domainName
Obligatoriu: Da
Tip și constrângeri: Domeniul ale cărui înregistrări trebuie preluate.
Parametru: take
Obligatoriu: Nu
Tip și constrângeri: Elemente pe pagină, 1–500. Implicit 100.
Parametru: skip
Obligatoriu: Nu
Tip și constrângeri: Elemente de omis, 0 sau mai multe. Implicit 0.
Parametru: orderBy
Obligatoriu: Nu
Tip și constrângeri: Până la 8 chei de sortare: type, -type, name, -name.
Returnează — { items, total }. Fiecare element este o înregistrare așa cum este descrisă în Forme de înregistrare, plus un câmp opțional group care indică de unde provine înregistrarea (custom — creată de dvs., product — gestionată de un produs Spaceship, personalNs — nameservere personale).
dns_records_save — Salvează înregistrări DNSAdaugă înregistrări DNS personalizate sau actualizează TTL-ul celor existente. Înregistrările sunt potrivite fără a ține cont de majuscule/minuscule, cu excepția înregistrărilor TXT (sensibile la majuscule/minuscule).
Parametru: domainName
Obligatoriu: Da
Tip și constrângeri: Domeniul ale cărui înregistrări trebuie actualizate.
Parametru: records
Obligatoriu: Da
Tip și constrângeri: 1–500 de înregistrări — vedeți Forme de înregistrare. Fiecare poate include un câmp opțional ttl.
Parametru: force
Obligatoriu: Nu
Tip și constrângeri: Boolean. Omite verificarea de rezolvare a conflictelor și forțează actualizarea zonei.
Returnează — { "saved": <number> }, numărul de înregistrări trimise. Un răspuns reușit înseamnă că toate înregistrările au fost acceptate; dacă orice înregistrare eșuează, întregul apel returnează în schimb o eroare.
dns_records_delete — Șterge înregistrări DNSȘterge înregistrări DNS personalizate. Ștergerile nu pot fi anulate. Înregistrările sunt potrivite fără a ține cont de majuscule/minuscule, cu excepția înregistrărilor TXT (sensibile la majuscule/minuscule).
Parametru: domainName
Obligatoriu: Da
Tip și constrângeri: Domeniul ale cărui înregistrări trebuie șterse.
Parametru: records
Obligatoriu: Da
Tip și constrângeri: 1–500 de înregistrări care identifică înregistrări existente — aceleași forme ca la salvare, dar fără ttl.
Returnează — { "deleted": <number> }, numărul de înregistrări trimise. Dacă vreo înregistrare nu poate fi potrivită, întregul apel eșuează și nu se șterge nimic.
Fiecare înregistrare are:
type — unul dintre cele 13 tipuri acceptate de mai jos.
name — numele înregistrării fără domeniu: folosiți @ pentru domeniul în sine (apex) și * pentru un wildcard.
ttl (doar la salvare, opțional) — timp de cache în secunde, 60–3600.
Câmpuri specifice tipului:
Tip: A
Câmpuri: address — adresă IPv4.
Tip: AAAA
Câmpuri: address — adresă IPv6.
Tip: CNAME
Câmpuri: cname — nume de domeniu canonic (max. 253 de caractere).
Tip: ALIAS
Câmpuri: aliasName — nume de domeniu canonic; comportament similar CNAME pentru apex, unde CNAME nu este permis.
Tip: NS
Câmpuri: nameserver — nume de nameserver.
Tip: PTR
Câmpuri: pointer — nume de domeniu pentru adresa IP dată.
Tip: TXT
Câmpuri: value — valoare text (potrivită cu sensibilitate la majuscule/minuscule).
Tip: MX
Câmpuri: exchange — server de e-mail; preference — prioritate (0–65535, valorile mai mici au prioritate).
Tip: CAA
Câmpuri: flag — 0 sau 128 (bit critic); tag — issue, issuewild sau iodef; value — identificator CA cu parametri opționali.
Tip: SRV
Câmpuri: service (de ex. _sip); protocol (de ex. _tcp); priority și weight (0–65535); port (1–65535); target — nume de domeniu al serverului.
Tip: TLSA
Câmpuri: usage, selector, matching (fiecare 0–255); port — * sau _<1–65535>; protocol (de ex. _tcp); associationData — hash de certificat sau date.
Tip: HTTPS
Câmpuri: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN sau .; opțional port (* sau _<1–65535>), scheme (trebuie să fie _https când port este setat), svcParams.
Tip: SVCB
Câmpuri: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN sau .; opțional port, scheme (de ex. _tcp), svcParams.
async_operation_get — Obține starea operațiunii asincroneVerifică o operațiune de lungă durată pornită de un alt instrument (în prezent domain_register). Apelează-l cu operationId setat la operationId returnat de acel instrument și repetă până când status este success sau failed.
Parametru: operationId
Obligatoriu: Da
Tip și constrângeri: Șir alfanumeric, max. 36 de caractere, returnat de instrumentul care a pornit operațiunea.
Returnează
Câmp: operationId
Semnificație: Operațiunea interogată.
Câmp: status
Semnificație: pending, success sau failed.
Câmp: type
Semnificație: Tipul operațiunii sau null.
Câmp: details
Semnificație: Detalii suplimentare despre operațiune sau null.
Câmp: createdAt / modifiedAt
Semnificație: Când a fost creată operațiunea / ultima actualizare (modifiedAt poate fi null).
Când un apel eșuează, instrumentul returnează o eroare cu un cod și un detail ușor de înțeles, care explică ce nu a mers bine — de exemplu, intrare invalidă (un nume de domeniu sau un ID de contact format greșit), un domeniu sau contact care nu există ori un conflict cu starea curentă. Dacă un instrument este respins deoarece asistentului nu i s-a acordat acces la el, reconectează Spaceship MCP și aprobă accesul pe care îl solicită.