Spaceship MCP — Referință pentru instrumente

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.

Primii pași

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.

Instrumente pe scurt

  • 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ă

Contacte: referite prin ID

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.

Fluxuri de lucru comune

Mai multe instrumente sunt concepute pentru a fi utilizate împreună: rezultatul unuia devine intrarea următorului.

Înregistrează (cumpără) un domeniu

  1. 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.

  2. 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.

  3. 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.

  4. 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ă.

  5. 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)

Actualizează contactele unui domeniu pe care îl deții

  1. 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.

Schimbă nameserverele unui domeniu

  1. domains_list — găsește domeniul și vezi nameservers actuale ({ provider, hosts }).

  2. 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.

Gestionează înregistrările DNS

  1. domains_list — găsește domeniul pe care vrei să îl gestionezi (sau transmite direct numele lui dacă îl cunoști).

  2. dns_records_get — citește înregistrările curente pentru domeniu.

  3. 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.

Revizuiește-ți portofoliul

  • 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.

Referință instrumente

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.

Contacte

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ă contactul

Salvează 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 contactul

Citeș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ă contactele

Listează 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
}

Domenii

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ă domeniile

Recuperează 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 domeniului

Verifică 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_availabilitydomain_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 110 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 210 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. 110 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 domeniului

Schimbă 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 domeniului

Schimbă 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.

Înregistrări DNS

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 DNS

Recuperează 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 DNS

Adaugă î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.

Forme de înregistrare

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: flag0 sau 128 (bit critic); tagissue, 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 _<165535>; 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 _<165535>), 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.

Operațiuni asincrone

async_operation_get — Obține starea operațiunii asincrone

Verifică 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).

Erori

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ă.

Este necesară o adresă de email validă