Spaceship MCP — Araç Referansı

Spaceship MCP, yapay zeka asistanınızı (örneğin Claude) Spaceship hesabınıza bağlar. Bu sayede asistan, alan adlarını kontrol edip kaydedebilir, alan adı kişilerini yönetebilir ve sizin adınıza DNS kayıtlarını okuyabilir veya düzenleyebilir — siz sadece sade bir dille istersiniz, asistan da doğru araçları çağırır.

Başlarken

Bir Spaceship hesabına ihtiyacınız var. Spaceship MCP şu adreste kullanılabilir: https://mcp.spaceship.com/mcp.

Nasıl bağlanacağınız AI assistant'ınıza bağlıdır:

  • Claude (web ve masaüstü) — Ayarlar'ı açın, Connectors'ı seçin, bağlayıcılar dizininde Spaceship'i bulun ve ekleyin. Anthropic'in Claude'u, Spaceship MCP'nin çalıştığını doğruladığımız istemcidir.

    Not: Spaceship MCP üzerinden alan adı kaydı genel olarak tamamen desteklense de, bu özellik henüz özellikle Claude bağlayıcısı üzerinden kullanılamamaktadır. Arama, alan adı sorgulama, kişi yönetimi ve DNS kayıt yönetimi bugün Claude ile zaten kullanılabilir durumdadır ve çalıştığı doğrulanmıştır.

  • Diğer MCP istemcileri — uzak bir MCP sunucusu ekleyin ve onu https://mcp.spaceship.com/mcp adresine yönlendirin. Diğer istemciler çalışabilir, ancak henüz doğrulamadık.

Bağlandığınızda, Spaceship'te oturum açmanız ve asistana hesabınıza erişim izni vermeniz istenir. Asistanın hangi araçları kullanabileceği, onayladığınız erişime bağlıdır — bir araç erişim verilmediği için reddedilirse, yeniden bağlanın ve ihtiyaç duyduğu erişimi onaylayın.

Araçlara genel bakış

  • Araç: contacts_save

    Ne yapar: Kişi ayrıntılarını kaydeder ve bir kişi kimliği alır

  • Araç: contacts_get

    Ne yapar: Kayıtlı bir kişiyi kimliğine göre okur

  • Araç: contacts_list

    Ne yapar: Birini bulup yeniden kullanmak için tüm kayıtlı kişileri listeler

  • Araç: domains_list

    Ne yapar: Alan adlarınızı listeler veya tek bir alan adını arar

  • Araç: domains_check_availability

    Ne yapar: Alan adlarının kayda uygun olup olmadığını kontrol eder

  • Araç: domain_register

    Ne yapar: Bir alan adını kaydeder (satın alır) — para harcar

  • Araç: domain_set_contacts

    Ne yapar: Sahip olduğunuz bir alan adına kişiler atar

  • Araç: domain_set_nameservers

    Ne yapar: Bir alan adını temel veya özel ad sunucularına geçirir

  • Araç: dns_records_get

    Ne yapar: Bir alan adı için DNS kayıtlarını okur

  • Araç: dns_records_save

    Ne yapar: DNS kayıtları ekler veya TTL'lerini günceller

  • Araç: dns_records_delete

    Ne yapar: DNS kayıtlarını siler

  • Araç: async_operation_get

    Ne yapar: Uzun süren bir işlemin durumunu kontrol eder

Kişiler: kimlikle referans verilir

Bir kişinin gerekli olduğu her yerde (domain_register, domain_set_contacts), her rol bir contactId dizesi alır — asla satır içi kişi ayrıntıları değil. Önce kişiyi contacts_save ile kaydedin (bu işlem onun contactId değerini döndürür), ardından bu kimliği kişinin kabul edildiği yerde iletin. Satır içi otomatik kaydetme yoktur; bir rol tam bir kişi nesnesi alamaz. Ayrıca bir contactId değerini contacts_list sonucundan veya domains_list sonucunda gördüğünüz bir değerden yeniden kullanabilirsiniz.

Bir contactId, 27–32 alfasayısal karakterden oluşan bir dizedir. Bir kişinin kabul edildiği yerde bunu geri iletmeniz yeterlidir.

Yaygın iş akışları

Birkaç araç birlikte kullanılmak üzere tasarlanmıştır: birinin çıktısı diğerinin girdisi olur.

Bir alan adı kaydet (satın al)

  1. contacts_save — kayıt sahibi, yönetici, teknik ve faturalama kişilerini kaydedin (kimliklerine zaten sahip değilseniz) ve her biri için döndürülen contactId değerini saklayın. Kayıt yapabilmeniz için kişiler önceden mevcut olmalıdır.

  2. domains_check_availability — istediğiniz ad(lar)ı kontrol edin. Yalnızca resultavailable olduğunda devam edin. Kullanılabilir her ad, kaydetme için USD cinsinden price değerini içerir (standart ve premium fark etmeksizin) veya belirlenemediğinde priceUnavailableReason ile birlikte, ayrıca minRegisterPeriodInYears ve maxRegisterPeriodInYears — TLD'nin izin verdiği süreyi de içerir. price değerinin price.pricedYears yılı kapsadığını unutmayın; bu, TLD'nin izin verdiği en kısa süredir ve her zaman 1 olmayabilir.

  3. domain_register (önizleme) — confirmationToken ayarlanmamış olarak çağırın; status: confirmation_required, yeni bir confirmationToken ve tahsil edilecek price döner. Hiçbir ücret alınmaz. Aracın yanıt metni tam bir onaydır — süre, fiyat dökümü, otomatik yenileme, WHOIS gizliliği, ödeme kaynağı ve kayıt sahibi/yönetici/teknik/faturalama kişileri — bunu kullanıcıya olduğu gibi gösterin. years değerini 2. adımdaki minRegisterPeriodInYears ile maxRegisterPeriodInYears arasında seçin — aralık dışı bir değer doğrudan reddedilir. Her kişi rolünü, 1. adımda kaydettiğiniz contactId olarak iletin.

  4. domain_register (kabul/ret) — kullanıcı kabul ettikten sonra, aynı argümanlarla birlikte o confirmationToken ve confirmationResponse: "accept" ile tekrar çağırın. Bu, hesabın varsayılan ödeme yönteminden tahsilat yapar ve geri alınamaz. Hemen status: pending ve bir operationId döndürür — kayıt arka planda tamamlanır. Bunun yerine iptal etmek için, aynı confirmationToken ve confirmationResponse: "decline" ile tekrar çağırın — hiçbir ücret alınmaz. Token kısa bir süre sonra sona erer ve verildiği tam argümanlara ve fiyata bağlıdır; eksikse, süresi dolmuşsa veya artık eşleşmiyorsa, çağrı hata yerine yepyeni bir onay döndürür — asla ücret alınmaz. Fiyat her iki çağrıda da belirlenemezse, araç bunun yerine status: price_unavailable döndürür ve hiçbir ücret alınmaz.

  5. async_operation_get — ilerlemeyi kontrol etmek için 4. adımdaki operationId değerini iletin. statussuccess veya failed olana kadar tekrarlayın.

contacts_save ──▶ domains_check_availability ──▶ domain_register ──▶ domain_register ──▶ async_operation_get
(contactId kimlikleri) (uygun mu? + fiyat + (token ayarsız: (token + (pending →
min/maxRegisterPeriod) onay, accept: operationId, success/failed)
confirmationToken, pending)
ücret yok)

Sahip olduğunuz bir alan adındaki kişileri güncelleyin

  1. domain_set_contacts — kişileri alan adına contactId ile atayın (gerekirse önce contacts_save ile kaydedin). Bu işlem hemen tamamlanır ve bir verificationStatus döndürür: verification, değişikliğin tam olarak uygulanabilmesi için kayıt sahibinin e-posta adresini doğrulaması gerektiği anlamına gelir (kendisine bir e-posta gönderilir); success bunun zaten doğrulandığı anlamına gelir ve null o alan adı için doğrulama gerekmediği anlamına gelir.

Bir alan adının ad sunucularını değiştirin

  1. domains_list — alan adını bulun ve mevcut nameservers değerlerini görün ({ provider, hosts }).

  2. domain_set_nameservers — bunu, provider: "basic" ile Spaceship'in varsayılan ad sunucularına geçirin (hosts yok) veya provider: "custom" ve 2–12 hosts listesi ile kendi ad sunucularınıza yönlendirin. Sonuçta oluşan { provider, hosts } değerini döndürür ve sonraki bir domains_list çağrısı değişikliği yansıtır. Bir alan adının zaten bulunduğu durumu yeniden uygulamak, etkisiz bir işlem yerine doğrulama hatası döndürür — bunu yeniden denenecek bir başarısızlık değil, beklenen bir durum olarak değerlendirin.

DNS kayıtlarını yönetin

  1. domains_list — yönetmek istediğiniz alan adını bulun (veya biliyorsanız adını doğrudan iletin).

  2. dns_records_get — alan adı için mevcut kayıtları okuyun.

  3. dns_records_save veya dns_records_delete — kayıt ekleyin, güncelleyin veya kaldırın. dns_records_get tarafından döndürülen kayıtlar, kaydetme ve silme araçlarının kabul ettiği yapıyla aynıdır (silme işleminde yalnızca ttl atlanır), böylece asistan okuyabilir, düzenleyebilir ve geri yazabilir. Eşleştirme, büyük/küçük harfe duyarlı olan TXT kayıtları dışında büyük/küçük harfe duyarsızdır.

Portföyünüzü inceleyin

  • domains_list — sıralama ile tüm alan adlarınız arasında sayfalayın veya ada göre tek bir alan adını getirin. Her alan adı, sona erme tarihi, otomatik yenileme ayarı, durum, ad sunucuları, gizlilik koruması ve atanmış kişi kimliklerini içerir.

  • contacts_list — hesabınıza kaydedilmiş tüm kişiler arasında sayfalayarak mevcut bir kişiyi bulup yeniden kullanın (kişi kimliğine göre), böylece yinelenen bir kayıt oluşturmazsınız.

  • contacts_get — bir alan adında veya contacts_list sonucunda gördüğünüz herhangi bir kişi kimliğinin arkasındaki ayrıntıları görüntüleyin.

Araç başvurusu

Her araç sonucunu yapılandırılmış JSON olarak döndürür. Uzun süren işlemler (şu anda yalnızca domain_register) async_operation_get ile sorgulanacak bir işlem başvurusu döndürür; diğer tüm araçlar hemen tamamlanır.

Kişiler

Kişiler, bir alan adı kaydına bağlı kişi veya kuruluşlardır (kayıt sahibi, yönetici, teknik, faturalama). Bir kişiye her yerde kişi kimliği ile başvurulur — bu, opak bir dizedir.

contacts_save — Kişiyi Kaydet

Kişi ayrıntılarını kaydeder ve oluşturulan kişi kimliğini döndürür. Bazı alanların doğrulanması (örneğin stateProvince ve postalCode) seçilen ülkeye bağlıdır.

  • Parametre: firstName

    Gerekli: Evet

    Tür ve kısıtlamalar: Dize, 1–64 karakter. Tire ve kesme işareti içerebilir.

  • Parametre: lastName

    Gerekli: Evet

    Tür ve kısıtlamalar: Dize, 1–64 karakter. Tire ve kesme işareti içerebilir.

  • Parametre: email

    Gerekli: Evet

    Tür ve kısıtlamalar: Geçerli e-posta adresi, en fazla 254 karakter.

  • Parametre: address1

    Gerekli: Evet

    Tür ve kısıtlamalar: Adres satırı 1. Dize, 1–128 karakter.

  • Parametre: city

    Gerekli: Evet

    Tür ve kısıtlamalar: Dize, 1–64 karakter.

  • Parametre: country

    Gerekli: Evet

    Tür ve kısıtlamalar: İki harfli ülke kodu (ISO 3166-1 alpha-2), ör. US.

  • Parametre: phone

    Gerekli: Evet

    Tür ve kısıtlamalar: Uluslararası biçim +CountryCode.Number, ör. +1.2025551234. En fazla 32 karakter.

  • Parametre: organization

    Gerekli: Hayır

    Tür ve kısıtlamalar: Kuruluş/şirket adı. 1–128 karakter.

  • Parametre: address2

    Gerekli: Hayır

    Tür ve kısıtlamalar: Adres satırı 2. 1–128 karakter.

  • Parametre: stateProvince

    Gerekli: Hayır

    Tür ve kısıtlamalar: Eyalet/il adı, 1–64 karakter. Ülkeye bağlı olarak gerekli olabilir.

  • Parametre: postalCode

    Gerekli: Hayır

    Tür ve kısıtlamalar: 1–16 karakter. Ülkeye bağlı olarak gerekli olabilir.

  • Parametre: phoneExt

    Gerekli: Hayır

    Tür ve kısıtlamalar: Telefon dahili numarası, 1–16 karakter.

  • Parametre: fax

    Gerekli: Hayır

    Tür ve kısıtlamalar: Faks numarası, aynı +CountryCode.Number biçimi, en fazla 32 karakter.

  • Parametre: faxExt

    Gerekli: Hayır

    Tür ve kısıtlamalar: Faks dahili numarası, 1–16 karakter.

  • Parametre: taxNumber

    Gerekli: Hayır

    Tür ve kısıtlamalar: Vergi numarası, 1–32 karakter.

Döndürür

{ "contactId": "..." }

contactId (27–32 alfasayısal karakter), domain_register, domain_set_contacts ve contacts_get için ilettiğiniz değerdir.

contacts_get — Kişiyi Al

Kayıtlı bir kişinin ayrıntılarını kişi kimliğine göre okur. Kişi kimlikleri contacts_save, contacts_list veya domains_list sonuçlarındaki contacts alanından gelir.

  • Parametre: contactId

    Gerekli: Evet

    Tür ve kısıtlamalar: Kişi kimliği, 27–32 alfasayısal karakter.

Döndürür{ contact }, şunlarla birlikte:

  • Alan: firstName, lastName, email, address1, city, country, phone, postalCode

    Tür: Dize

  • Alan: organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber

    Tür: Dize veya null

contacts_list — Kişileri Listele

Hesabınız altında kayıtlı tüm kişileri listeler; böylece yinelenen bir kayıt oluşturmak veya alan adlarınız arasında aramak yerine mevcut bir kişiyi (kişi kimliğine göre) bulup yeniden kullanabilirsiniz. Liste sayfalıdır ve sıralanabilir; domains_list ile tutarlıdır.

  • Parametre: take

    Gerekli: Hayır

    Tür ve kısıtlamalar: Sayfa başına öğe, 1–100. Varsayılan 10.

  • Parametre: skip

    Gerekli: Hayır

    Tür ve kısıtlamalar: Atlanacak öğeler, 0 veya daha fazla. Varsayılan 0.

  • Parametre: orderBy

    Gerekli: Hayır

    Tür ve kısıtlamalar: En fazla 8 sıralama anahtarı: name, email, organization; azalan sıralama için başına - ekleyin (ör. -name).

Döndürür{ items, total }; burada total hesaptaki benzersiz kişi sayısıdır (sayfa boyutuna göre değil, kişi kimliğine göre tekilleştirilmiş) ve her öğe, ek bir çağrı yapmadan kişileri ayırt etmeye yetecek kadar bilgi taşır. Hesapta aynı kişi kimliği için yinelenen girdiler varsa bunlar tek bir girdiye daraltılır; bu nedenle total ham sunucu tarafı satırları değil, farklı kişileri sayar:

  • Alan: contactId

    Tür: Dize (27–32 alfasayısal). contacts_get, domain_register veya domain_set_contacts için iletin.

  • Alan: name

    Tür: Dize — kişinin adı.

  • Alan: email

    Tür: Kişinin kayıtlı e-postası yoksa Dize veya null

  • Alan: organization

    Tür: Kişinin kayıtlı kuruluşu yoksa Dize veya null

{
"items": [
{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }
],
"total": 1
}

Alan adları

Alan adı girdileri (domain/domainName) Unicode (IDN) veya ASCII (A-label) kabul eder — her iki durumda da araç, adı kullanmadan önce otomatik olarak punycode'a normalleştirir. domains_check_availability ve domain_register ayrıca Spaceship'in kayıt için desteklediği bir TLD gerektirir: TLD'si desteklenmeyen bir alan adı, kontrol edilmek veya ücretlendirilmek yerine kullanılamaz olarak değerlendirilir. Diğer alan adı araçları (domains_list, domain_set_contacts, domain_set_nameservers) ve DNS araçları yalnızca adı normalleştirir ve TLD desteğine göre asla reddetmez.

domains_list — Alan Adlarını Listele

Alan adlarınızın sayfalı bir listesini getirir. Bunun yerine adına göre tek bir alan adı getirmek için domain iletin (bu durumda sayfalama ve sıralama yok sayılır; sağlanmışlarsa sonuçta bunu belirten bir note bulunur).

  • Parametre: domain

    Gerekli: Hayır

    Tür ve kısıtlamalar: Tek bir alan adı getirmek için tam nitelikli alan adı. Unicode (IDN) veya ASCII (A-label) kabul eder — otomatik olarak punycode'a normalleştirilir.

  • Parametre: take

    Gerekli: Hayır

    Tür ve kısıtlamalar: Sayfa başına öğe, 1–100. Varsayılan 10.

  • Parametre: skip

    Gerekli: Hayır

    Tür ve kısıtlamalar: Atlanacak öğeler, 0 veya daha fazla. Varsayılan 0.

  • Parametre: orderBy

    Gerekli: Hayır

    Tür ve kısıtlamalar: En fazla 8 sıralama anahtarı: name, unicodeName, registrationDate, expirationDate; azalan sıralama için başına - ekleyin (ör. -expirationDate).

Döndürür{ items, total }; burada her öğe bir alan adını açıklar:

  • Alan: name / unicodeName

    Anlamı: Alan adının ASCII ve Unicode biçimi.

  • Alan: isPremium

    Anlamı: Alan adının premium bir ad olup olmadığı.

  • Alan: autoRenew

    Anlamı: Otomatik yenilemenin etkin olup olmadığı.

  • Alan: registrationDate / expirationDate

    Anlamı: Kayıt ve sona erme zaman damgaları.

  • Alan: lifecycleStatus

    Anlamı: creating, registered, grace1, grace2 veya redemption.

  • Alan: verificationStatus

    Anlamı: verification, success, failed veya uygulanmadığında null.

  • Alan: eppStatuses

    Anlamı: Kayıt operatörü durum kodları (ör. transfer kilitleri).

  • Alan: suspensions

    Anlamı: Etkin askıya almalar; her biri bir reasonCode içerir.

  • Alan: privacyProtection

    Anlamı: { level: "public" | "high", contactForm: boolean }.

  • Alan: nameservers

    Anlamı: { provider: "basic" | "custom", hosts: [...] }.

  • Alan: contacts

    Anlamı: Kişi kimlikleri: registrant, ayrıca admin/tech/billing (null olabilir) ve attributes (genişletilmiş öznitelik kişi kimliklerinin listesi veya null). contacts_get ile okunabilir.

Spaceship MCP, yukarıdaki her alanı doldurur — buna contacts, eppStatuses, suspensions, verificationStatus, nameservers, gerçek bir autoRenew ve alan adında varsa ayrı bir unicodeName da dahildir — hem çok öğeli liste hem de tek alan adı getirme işlemleri için.

domains_check_availability — Alan Adı Uygunluğunu Kontrol Et

Bir veya daha fazla alan adının kayda uygun olup olmadığını kontrol eder. Tek ad için tek alan adı uç noktasını, birden fazla ad için toplu uç noktayı kullanır. TLD'si kayıt için desteklenmeyen bir alan adı uygunluk kontrolüne hiç gönderilmez — doğrudan tldNotSupported olarak döndürülür.

  • Parametre: domains

    Gerekli: Evet

    Tür ve kısıtlamalar: 1–20 tam nitelikli alan adı. Her biri Unicode (IDN) veya ASCII (A-label) kabul eder — otomatik olarak punycode'a normalleştirilir.

Döndürür{ results }, istenen her ad için bir giriş:

  • Alan: domain

    Anlamı: Kontrol edilen ad.

  • Alan: result

    Anlamı: available, taken, invalidDomainName, tldNotSupported veya unexpectedError.

  • Alan: premiumPricing

    Anlamı: Premium adlar için: { operation, price, currency } listesidir; burada operationregister, transfer, renew veya restore olur. Normal adlar için boştur.

  • Alan: price

    Anlamı: available adlar için (standart ve premium): alan adını TLD'nin izin verdiği en kısa süre boyunca kaydetmenin USD fiyatı — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }. amount, bu sürenin tamamı için ödenecek toplamdır; pricedYears bunun kaç yılı kapsadığını belirtir. İndirim öncesi veya "eski" fiyat bildirilmez. icannFee, amount içine zaten dahil edilmiş ICANN ücretidir (USD); döküm açıklanabilsin diye ayrıca döndürülür ve yalnızca TLD ücret taşıdığında görünür.

  • Alan: pricePerYear

    Anlamı: price içinde: amount değerinin pricedYears değerine bölünmüş hali; böylece karşılaştırma için her zaman yıllık bir rakam bulunur. pricedYears 1 olduğunda bu gerçek bir yıllık fiyattır; bunun üzerindeyse satın alabileceğiniz bir süre değil, sürenin yıllık ortalamasıdır.

  • Alan: minRegisterPeriodInYears / maxRegisterPeriodInYears

    Anlamı: available adlar için: ilgili TLD'nin gerçekten izin verdiği en kısa ve en uzun kayıt süresi, iki düz sayı olarak. domain_register için geçerli bir years seçmekte kullanın. İzin verilen süre belirlenemediğinde her ikisi de atlanır.

  • Alan: priceUnavailableReason

    Anlamı: Uygun bir ad için fiyat belirlenemediğinde price yerine bulunur. Kontrolün kendisi yine de başarılı olur.

Yalnızca uygun adlar fiyatlandırılır; taken/geçersiz sonuçlar ne price ne de priceUnavailableReason taşır.

Çoğu TLD bir yıla izin verir, ancak bazıları vermez..ai, örneğin, en az iki yıl gerektirir. Bunlarda price.amount, uygulanabilir bir bir yıllık fiyat değil, minimum süre için toplam tutardır — ve price.pricedYears bunu belirtir:

{
"domain": "example.ai",
"result": "available",
"premiumPricing": [],
"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },
"minRegisterPeriodInYears": 2,
"maxRegisterPeriodInYears": 10
}

pricePerYear burada vardır — 159.96 değerinin kapsadığı iki yıla bölünmesi 79.98 verir. Bu, toplamın süreye bölünmüş halidir; tek bir yıl için ödeyebileceğiniz bir fiyat değildir (bir yıllık .ai kaydı satın alınamaz). Her zaman amount ile birlikte pricedYears gösterin ("2 yıl için $159.96"); asla yalnızca amount göstermeyin. Sıradan bir TLD için pricedYears1 olur ve pricePerYear, amount değerine eşittir.

domain_register — Alan Adı Kaydet

Bir alan adını kaydeder (satın alır). Bu işlem hesabınızın varsayılan ödeme yöntemini ücretlendirir ve geri alınamaz. Önerilen sıra: domains_check_availabilitydomain_register. TLD'si kayıt için desteklenmeyen bir alan adı, herhangi bir uygunluk kontrolü, fiyatlandırma veya ücretlendirme yapılmadan önce hemen reddedilir.

years, TLD'nin kendi izin verdiği süre içinde olmalıdır. Aşağıdaki 110 sınırı tüm TLD'ler için dış sınırdır; her TLD daha dardır. .ai 2–10'a, .co ve .io 1–5'e, .sg 1–2'ye, .fr ise tam olarak 1'e izin verir. Bu aralığın dışındaki bir years değeri, izin verilen aralığı belirten bir doğrulama hatasıyla reddedilir — herhangi bir uygunluk kontrolü, fiyatlandırma veya ücretlendirme yapılmadan önce — ve değer sizin için sessizce ayarlanmaz:

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

Önce domains_check_availability içinden minRegisterPeriodInYears/maxRegisterPeriodInYears değerlerini okuyun ve bunun içinde bir years seçin. Aynı kontrol, onaylayan (confirmationResponse: "accept") çağrıda yeniden çalıştırılır; bu nedenle onay verilerek asla atlatılamaz.

Ücretlendirme öncesi iki adımlı onay. İlk olarak confirmationToken ayarlanmamış şekilde çağırın: araç alan adını güncel olarak fiyatlandırır, tam bir onay oluşturur — süre, fiyat dökümü (ICANN ücreti ve alan adının premium olup olmadığı dahil), otomatik yenileme, WHOIS gizliliği, ödeme kaynağı ve registrant/admin/tech/billing kişileri (registrant ile aynı olan bir kişi "same as registrant" olarak gösterilir) — ve bu price ile birlikte status: "confirmation_required" ve yeni bir confirmationToken döndürür. Bu çağrıda hiçbir şey kaydedilmez veya ücretlendirilmez. Tam onay, aracın yanıt metnidir; bunu kullanıcıya olduğu gibi gösterin. Kullanıcı kabul ettiğinde, satın alma işlemini göndermek için tam olarak aynı argümanlarla birlikte bu confirmationToken ve confirmationResponse: "accept" ile tekrar çağırın; ya da iptal etmek için confirmationResponse: "decline" kullanın — reddetmede hiçbir ücret alınmaz. Belirteç bu tam argümanlara ve verilen fiyata bağlıdır ve kısa bir süre sonra sona erer: onaylayan çağrıda eksik, süresi dolmuş, değiştirilmiş veya artık eşleşmeyen bir belirteç yalnızca yeni bir belirteçle yepyeni bir onay döndürür — asla hata vermez, asla ücret almaz. Her iki çağrıda da fiyat belirlenemezse araç belirteç yerine status: "price_unavailable" döndürür ve asla ücret almaz; daha sonra yeniden deneyin. Onaylanmış bir çağrı hemen status: "pending" ve bir operationId ile döner — kayıt arka planda tamamlanır; bunu async_operation_get ile kontrol edin.

  • Parametre: domain

    Gerekli: Evet

    Tür ve kısıtlamalar: Kaydedilecek tam nitelikli alan adı, ör. example.com. Unicode (IDN) veya ASCII (A-label) kabul eder — otomatik olarak punycode'a normalleştirilir.

  • Parametre: years

    Gerekli: Evet

    Tür ve kısıtlamalar: Yıl cinsinden kayıt süresi. 110 dış sınırdır; kabul edilen aralık TLD'nin kendisine aittir — domains_check_availability içindeki minRegisterPeriodInYears/maxRegisterPeriodInYears değerlerine bakın. Aralık dışı değerler ayarlanmaz, reddedilir.

  • Parametre: autoRenew

    Gerekli: Evet

    Tür ve kısıtlamalar: Boolean. true olduğunda alan adı, süresi dolduğunda hesabın varsayılan ödeme yöntemi kullanılarak otomatik olarak yenilenir.

  • Parametre: privacy.level

    Gerekli: Evet

    Tür ve kısıtlamalar: high, registrant'ın iletişim bilgilerini herkese açık WHOIS'ten gizler; public ise bunları yayımlar.

  • Parametre: privacy.userConsent

    Gerekli: Evet

    Tür ve kısıtlamalar: Boolean. Seçilen gizlilik ayarını kabul ettiğinizi onaylamalıdır.

  • Parametre: contacts.registrant

    Gerekli: Evet

    Tür ve kısıtlamalar: contactId dizesi (27–32 alfasayısal), contacts_save içinden.

  • Parametre: contacts.admin

    Gerekli: Evet

    Tür ve kısıtlamalar: contactId dizesi (27–32 alfasayısal), contacts_save içinden.

  • Parametre: contacts.tech

    Gerekli: Evet

    Tür ve kısıtlamalar: contactId dizesi (27–32 alfasayısal), contacts_save içinden.

  • Parametre: contacts.billing

    Gerekli: Evet

    Tür ve kısıtlamalar: contactId dizesi (27–32 alfasayısal), contacts_save içinden.

  • Parametre: contacts.attributes

    Gerekli: Hayır

    Tür ve kısıtlamalar: Genişletilmiş öznitelik iletişim kimliklerinden oluşan dizi (en fazla 5); yalnızca belirli TLD'ler için gereklidir, aksi halde atlayın veya null kullanın.

  • Parametre: confirmationToken

    Gerekli: Hayır

    Tür ve kısıtlamalar: Dize, en fazla 4096 karakter. Bu tam bağımsız değişkenler için önceki bir domain_register çağrısından dönen, sunucu tarafından verilmiş belirteç. Yeni bir kayıt denemesinin ilk çağrısında atlayın. Kısa bir süre sonra süresi dolar ve verildiği tam bağımsız değişkenlere ve fiyata bağlıdır — işlem yapmak için bunu değiştirmeden, confirmationResponse ile birlikte yeniden gönderin.

  • Parametre: confirmationResponse

    Gerekli: Koşullu

    Tür ve kısıtlamalar: "accept" veya "decline". Yalnızca geçerli bir confirmationToken ile birlikte anlamlıdır. "accept", bu onayda gösterilen (ücretlendirilen) kaydı gönderir; "decline" ise ücret almadan iptal eder. İlk çağrıda atlayın.

Döndürür — ilk çağrıdan sonra (ücret alınmaz):

{
"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."
}

Bu JSON'un yanında, aracın yanıt metni kullanıcıya gösterilecek tam onaydır — yukarıdaki alan adını, süreyi ve fiyatı yeniden belirtir; ayrıca Auto-renew: on/off, WHOIS privacy: on/off, Payment source: Spaceship account funds ve kayıt sahibi/yönetici/teknik/faturalandırma kişilerinin her biri için satırlar içerir (ad, e-posta, ülke — kayıt sahibiyle eşleşen bir kişi "same as registrant" olarak görünür); ardından sonraki çağrı için talimatlar gelir. Çok yıllı bir süre için price.amount tüm süre için toplamdır ve price.pricePerYear bu toplamın süreye bölünmüş halidir — örneğin years: 5 ile .com için { "amount": 48.52, "pricedYears": 5, "pricePerYear": 9.70 } döner ve example.ai ile years: 2 için { "amount": 159.96, "pricedYears": 2, "pricePerYear": 79.98 } döner.

DöndürürconfirmationResponse: "accept" sonrasında (kayıt gönderildi):

{
"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."
}

DöndürürconfirmationResponse: "decline" sonrasında (ücret alınmaz):

{
"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."
}

Döndürür — fiyat belirlenemiyorsa, her iki çağrıda da:

{
"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 şu değerlerden biri olabilir:

  • Durum: confirmation_required

    Anlamı: Önizleme — ücret alınmaz. Yanıt metnini kullanıcıya gösterin, ardından bu confirmationToken ve confirmationResponse ile tekrar çağırın. Ayrıca, gönderilen bir confirmationToken eksikse, süresi dolmuşsa, kurcalanmışsa veya artık mevcut bağımsız değişkenler/fiyatla eşleşmiyorsa, yeni bir belirteçle birlikte döndürülür — asla hata olarak değil.

  • Durum: cancelled

    Anlamı: Satın alma reddedildi (confirmationResponse: "decline"), bu nedenle hiçbir şey gönderilmedi.

  • Durum: pending

    Anlamı: Gönderildi; kayıt operatörü işlemi arka planda tamamlıyor. async_operation_get aracını operationId ile sorgulayın.

  • Durum: price_unavailable

    Anlamı: Fiyat belirlenemedi, bu nedenle belirteç verilmedi ve ücretlendirme yapılmadı. Daha sonra yeniden deneyin.

operationId düz bir dizedir — bunu async_operation_get aracına iletin; bu araç kaydın nihayetinde başarılı mı başarısız mı olduğunu bildirir. price içinde confirmation_required durumunda gösterilen değer, confirmationResponse: "accept" sırasında tam olarak ücretlendirilecek tutardır — price.amount tüm süre için toplamdır ve price.pricedYears süreyi belirtir; bu yüzden ikisini her zaman birlikte gösterin. TLD bir ICANN ücreti içeriyorsa, price.amount bunu zaten içerir ve price.icannFee açıklanabilmesi için ücret tutarını belirtir.

domain_set_contacts — Alan Adı Kişilerini Ayarla

Sahip olduğunuz bir alan adına atanmış kişileri değiştirir. Hemen tamamlanır (sorgulanacak işlem yoktur).

  • Parametre: domainName

    Gerekli: Evet

    Tür ve kısıtlamalar: Tam nitelikli alan adı. Unicode (IDN) veya ASCII (A-label) kabul eder — otomatik olarak punycode'a normalleştirilir.

  • Parametre: registrant

    Gerekli: Evet

    Tür ve kısıtlamalar: contactId dizesi (27–32 alfasayısal), contacts_save içinden.

  • Parametre: admin

    Gerekli: Hayır

    Tür ve kısıtlamalar: contactId dizesi (27–32 alfasayısal) veya null.

  • Parametre: tech

    Gerekli: Hayır

    Tür ve kısıtlamalar: contactId dizesi (27–32 alfasayısal) veya null.

  • Parametre: billing

    Gerekli: Hayır

    Tür ve kısıtlamalar: contactId dizesi (27–32 alfasayısal) veya null.

  • Parametre: attributes

    Gerekli: Hayır

    Tür ve kısıtlamalar: Genişletilmiş öznitelik iletişim kimliklerinden oluşan dizi (en fazla 5); yalnızca belirli TLD'ler için gereklidir, aksi halde atlayın veya null kullanın.

Döndürür

{ "verificationStatus": "verification" }

Döndürülen verificationStatus, ICANN RAA e-posta doğrulamasını yansıtır: verification — kayıt sahibi e-posta adresini onaylamalıdır (bir onay e-postası gönderilir); success — zaten onaylandı; null — RAA doğrulaması bu alan adı için geçerli değildir.

domain_set_nameservers — Alan Adı Ad Sunucularını Ayarla

Bir alan adının kayıt kuruluşu düzeyindeki ad sunucularını değiştirir. Hemen tamamlanır (sorgulanacak işlem yoktur). Değişiklik daha sonra domains_list tarafından yansıtılır.

  • Parametre: domainName

    Gerekli: Evet

    Tür ve kısıtlamalar: Tam nitelikli alan adı. Unicode (IDN) veya ASCII (A-label) kabul eder — otomatik olarak punycode'a normalleştirilir.

  • Parametre: provider

    Gerekli: Evet

    Tür ve kısıtlamalar: basic (Spaceship'in varsayılan ad sunucuları) veya custom (kendi ana makineleriniz).

  • Parametre: hosts

    Gerekli: Koşullu

    Tür ve kısıtlamalar: providercustom olduğunda gereklidir: 2–12 ad sunucusu ana makine adı (her biri geçerli bir FQDN, 4–255 karakter). providerbasic olduğunda atlanmalıdır.

Döndürür

{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }

Bir alan adının zaten bulunduğu durumu yeniden uygulamak (ör. zaten basic iken basic ayarlamak), etkisiz bir başarı yerine doğrulama hatası döndürür — bunu yeniden denenecek bir başarısızlık değil, beklenen bir sonuç olarak değerlendirin.

DNS kayıtları

Bu araçların aldığı domainName Unicode (IDN) veya ASCII (A-label) kabul eder ve otomatik olarak punycode'a normalleştirilir; TLD desteği burada zorunlu kılınmaz.

dns_records_get — DNS Kayıtlarını Getir

Bir alan adı için sayfalandırılmış DNS kaynak kaydı listesini alır.

  • Parametre: domainName

    Gerekli: Evet

    Tür ve kısıtlamalar: Kayıtları alınacak alan adı.

  • Parametre: take

    Gerekli: Hayır

    Tür ve kısıtlamalar: Sayfa başına öğe sayısı, 1–500. Varsayılan 100.

  • Parametre: skip

    Gerekli: Hayır

    Tür ve kısıtlamalar: Atlanacak öğeler, 0 veya daha fazla. Varsayılan 0.

  • Parametre: orderBy

    Gerekli: Hayır

    Tür ve kısıtlamalar: En fazla 8 sıralama anahtarı: type, -type, name, -name.

Döndürür{ items, total }. Her öğe, Kayıt şekilleri bölümünde açıklandığı gibi bir kayıttır; ayrıca kaydın nereden geldiğini gösteren isteğe bağlı bir group alanı da olabilir (custom — sizin tarafınızdan oluşturuldu, product — bir Spaceship ürünü tarafından yönetiliyor, personalNs — kişisel ad sunucuları).

dns_records_save — DNS Kayıtlarını Kaydet

Özel DNS kayıtları ekler veya mevcut olanların TTL değerini günceller. Kayıtlar, TXT kayıtları hariç (büyük/küçük harfe duyarlı), büyük/küçük harf duyarsız olarak eşleştirilir.

  • Parametre: domainName

    Gerekli: Evet

    Tür ve kısıtlamalar: Kayıtları güncellenecek alan adı.

  • Parametre: records

    Gerekli: Evet

    Tür ve kısıtlamalar: 1–500 kayıt — bkz. Kayıt şekilleri. Her biri isteğe bağlı bir ttl içerebilir.

  • Parametre: force

    Gerekli: Hayır

    Tür ve kısıtlamalar: Boolean. Çakışma çözümleme denetimini atlar ve bölge güncellemesini zorlar.

Döndürür{ "saved": <number> }, gönderilen kayıtların sayısı. Başarılı bir yanıt, tüm kayıtların kabul edildiği anlamına gelir; herhangi bir kayıt başarısız olursa, bunun yerine tüm çağrı hata döndürür.

dns_records_delete — DNS Kayıtlarını Sil

Özel DNS kayıtlarını siler. Silmeler geri alınamaz. Kayıtlar, TXT kayıtları hariç (büyük/küçük harfe duyarlı), büyük/küçük harf duyarsız olarak eşleştirilir.

  • Parametre: domainName

    Gerekli: Evet

    Tür ve kısıtlamalar: Kayıtları silinecek alan adı.

  • Parametre: records

    Gerekli: Evet

    Tür ve kısıtlamalar: Mevcut kayıtları tanımlayan 1–500 kayıt — kaydetmeyle aynı şekiller, ancak ttl olmadan.

Döndürür{ "deleted": <number> }, gönderilen kayıtların sayısı. Herhangi bir kayıt eşleştirilemezse, tüm çağrı başarısız olur ve hiçbir şey silinmez.

Kayıt şekilleri

Her kayıt şunlara sahiptir:

  • type — aşağıda desteklenen 13 türden biri.

  • namealan adı hariç kayıt adı: alan adının kendisi (apex) için @ ve joker karakter için * kullanın.

  • ttl (yalnızca kaydetme, isteğe bağlı) — saniye cinsinden önbellek süresi, 60–3600.

Türe özgü alanlar:

  • Tür: A

    Alanlar: address — IPv4 adresi.

  • Tür: AAAA

    Alanlar: address — IPv6 adresi.

  • Tür: CNAME

    Alanlar: cname — kurallı alan adı (en fazla 253 karakter).

  • Tür: ALIAS

    Alanlar: aliasName — kurallı alan adı; CNAME'e izin verilmeyen apex için CNAME benzeri davranış.

  • Tür: NS

    Alanlar: nameserver — ad sunucusu adı.

  • Tür: PTR

    Alanlar: pointer — verilen IP adresi için alan adı.

  • Tür: TXT

    Alanlar: value — metin değeri (büyük/küçük harfe duyarlı eşleştirilir).

  • Tür: MX

    Alanlar: exchange — posta sunucusu; preference — öncelik (0–65535, düşük olan tercih edilir).

  • Tür: CAA

    Alanlar: flag0 veya 128 (kritik bit); tagissue, issuewild veya iodef; value — isteğe bağlı parametrelerle CA tanımlayıcısı.

  • Tür: SRV

    Alanlar: service (ör. _sip); protocol (ör. _tcp); priority ve weight (0–65535); port (1–65535); target — sunucu alan adı.

  • Tür: TLSA

    Alanlar: usage, selector, matching (her biri 0–255); port* veya _<165535>; protocol (ör. _tcp); associationData — sertifika karması veya veri.

  • Tür: HTTPS

    Alanlar: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN veya .; isteğe bağlı port (* veya _<165535>), scheme (_https, port ayarlandığında zorunludur), svcParams.

  • Tür: SVCB

    Alanlar: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN veya .; isteğe bağlı port, scheme (ör. _tcp), svcParams.

Eşzamansız işlemler

async_operation_get — Eşzamansız İşlem Durumunu Al

Başka bir araç tarafından başlatılan uzun süren bir işlemi kontrol eder (şu anda domain_register). Aracın döndürdüğü operationId değerini operationId olarak vererek çağırın ve statussuccess veya failed olana kadar tekrarlayın.

  • Parametre: operationId

    Gerekli: Evet

    Tür ve kısıtlamalar: Alfasayısal dize, en fazla 36 karakter; işlemi başlatan araç tarafından döndürülür.

Döndürür

  • Alan: operationId

    Anlamı: Sorgulanan işlem.

  • Alan: status

    Anlamı: pending, success veya failed.

  • Alan: type

    Anlamı: İşlem türü veya null.

  • Alan: details

    Anlamı: İşlem hakkında ek ayrıntılar veya null.

  • Alan: createdAt / modifiedAt

    Anlamı: İşlemin oluşturulduğu / son güncellendiği zaman (modifiedAtnull olabilir).

Hatalar

Bir çağrı başarısız olduğunda, araç neyin yanlış gittiğini açıklayan bir kod ve insan tarafından okunabilir bir detail hatası döndürür — örneğin geçersiz girdi (hatalı biçimlendirilmiş bir alan adı veya kişi kimliği), mevcut olmayan bir alan adı ya da kişi veya mevcut durumla çakışma. Bir araç, asistana erişim izni verilmediği için reddedilirse, Spaceship MCP'yi yeniden bağlayın ve istediği erişimi onaylayın.

Geçerli bir e-posta gereklidir