Spaceship MCP menghubungkan asisten AI Anda (seperti Claude) ke akun Spaceship Anda. Melaluinya, asisten dapat memeriksa dan mendaftarkan domain, mengelola kontak domain, serta membaca atau mengedit catatan DNS atas nama Anda — Anda cukup meminta dalam bahasa biasa, dan asisten akan memanggil alat yang tepat.
Anda memerlukan akun Spaceship. Spaceship MCP tersedia di https://mcp.spaceship.com/mcp.
Cara Anda terhubung bergantung pada AI assistant Anda:
Claude (web dan desktop) — buka Settings, pilih Connectors, temukan Spaceship di direktori connector, lalu tambahkan. Claude dari Anthropic saat ini adalah klien yang telah kami verifikasi berfungsi dengan Spaceship MCP.
NB: Meskipun pendaftaran domain melalui Spaceship MCP secara keseluruhan didukung penuh, kemampuan ini belum tersedia melalui connector Claude secara khusus. Pencarian, pencarian domain, pengelolaan kontak, dan pengelolaan catatan DNS sudah tersedia dan terverifikasi berfungsi dengan Claude saat ini.
Klien MCP lainnya — tambahkan server MCP jarak jauh dan arahkan ke https://mcp.spaceship.com/mcp. Klien lain mungkin berfungsi, tetapi kami belum memverifikasinya.
Saat Anda terhubung, Anda akan diminta untuk masuk ke Spaceship dan memberi asisten akses ke akun Anda. Alat mana yang dapat digunakan asisten bergantung pada akses yang Anda setujui — jika alat ditolak karena akses tidak diberikan, sambungkan kembali dan setujui akses yang dibutuhkannya.
Alat: contacts_save
Fungsinya: Simpan detail kontak dan dapatkan ID kontak
Alat: contacts_get
Fungsinya: Membaca kontak yang disimpan berdasarkan ID-nya
Alat: contacts_list
Fungsinya: Cantumkan semua kontak yang disimpan untuk menemukan dan menggunakan kembali salah satunya
Alat: domains_list
Fungsinya: Cantumkan domain Anda, atau cari satu domain
Alat: domains_check_availability
Fungsinya: Periksa apakah domain tersedia untuk didaftarkan
Alat: domain_register
Fungsinya: Mendaftarkan (membeli) domain — menghabiskan uang
Alat: domain_set_contacts
Fungsinya: Tetapkan kontak ke domain yang Anda miliki
Alat: domain_set_nameservers
Fungsinya: Alihkan domain ke nameserver basic atau custom
Alat: dns_records_get
Fungsinya: Membaca catatan DNS untuk domain
Alat: dns_records_save
Fungsinya: Menambahkan catatan DNS atau memperbarui TTL-nya
Alat: dns_records_delete
Fungsinya: Menghapus catatan DNS
Alat: async_operation_get
Fungsinya: Memeriksa status operasi yang berjalan lama
Di mana pun kontak diwajibkan (domain_register, domain_set_contacts), setiap peran menerima contactId string — jangan pernah detail kontak inline. Simpan kontak terlebih dahulu dengan contacts_save (yang mengembalikan contactId-nya), lalu teruskan id tersebut di tempat kontak diterima. Tidak ada penyimpanan otomatis inline; sebuah peran tidak dapat menerima objek kontak lengkap. Anda juga dapat menggunakan kembali contactId dari hasil contacts_list atau yang Anda baca dari hasil domains_list.
contactId adalah string berisi 27–32 karakter alfanumerik. Cukup teruskan kembali di tempat kontak diterima.
Beberapa alat dirancang untuk digunakan bersama: output dari satu alat menjadi input untuk alat berikutnya.
contacts_save — simpan kontak registran, admin, teknis, dan penagihan (jika Anda belum memiliki ID mereka) dan simpan contactId yang dikembalikan untuk masing-masing. Kontak harus sudah ada sebelum Anda dapat mendaftar.
domains_check_availability — periksa nama yang Anda inginkan. Lanjutkan hanya saat result adalah available. Setiap nama yang tersedia mencakup price dalam USD untuk mendaftarkannya (baik standar maupun premium), atau priceUnavailableReason saat hal itu tidak dapat ditentukan, ditambah minRegisterPeriodInYears dan maxRegisterPeriodInYears — masa berlaku yang diizinkan TLD. Perhatikan bahwa price mencakup price.pricedYears tahun, yang merupakan masa berlaku terpendek yang diizinkan TLD dan tidak selalu 1.
domain_register (pratinjau) — panggil dengan confirmationToken tidak diatur untuk mendapatkan status: confirmation_required, confirmationToken baru, dan price yang akan ditagihkan. Tidak ada biaya yang dibebankan. Teks respons alat adalah konfirmasi lengkap — masa berlaku, rincian harga, perpanjangan otomatis, privasi WHOIS, sumber pembayaran, dan kontak registran/admin/teknis/penagihan — tampilkan kepada pengguna apa adanya. Pilih years antara minRegisterPeriodInYears dan maxRegisterPeriodInYears dari langkah 2 — nilai di luar rentang akan langsung ditolak. Berikan setiap peran kontak sebagai contactId yang Anda simpan di langkah 1.
domain_register (terima/tolak) — setelah pengguna setuju, panggil lagi dengan argumen yang persis sama ditambah confirmationToken tersebut dan confirmationResponse: "accept". Ini menagih metode pembayaran default akun dan tidak dapat dibatalkan. Ini segera mengembalikan status: pending dan operationId — pendaftaran selesai di latar belakang. Untuk membatalkan, panggil lagi dengan confirmationToken yang sama dan confirmationResponse: "decline" — tidak ada biaya yang dibebankan. Token kedaluwarsa setelah waktu singkat dan terikat pada argumen serta harga persis saat token itu diterbitkan; jika hilang, kedaluwarsa, atau tidak lagi cocok, panggilan akan mengembalikan konfirmasi baru alih-alih kesalahan — tidak pernah penagihan. Jika harga tidak dapat ditentukan pada salah satu panggilan, alat akan mengembalikan status: price_unavailable dan tidak ada biaya yang dibebankan.
async_operation_get — berikan operationId dari langkah 4 untuk memeriksa progres. Ulangi sampai status menjadi success atau failed.
contacts_save ──▶ domains_check_availability ──▶ domain_register ──▶ domain_register ──▶ async_operation_get(ID contactId) (tersedia? + harga + (token tidak diatur: (token + (pending →min/maxRegisterPeriod) konfirmasi, accept: operationId, success/failed)confirmationToken, pending)tanpa biaya)
domain_set_contacts — tetapkan kontak ke domain berdasarkan contactId (simpan terlebih dahulu dengan contacts_save jika perlu). Ini selesai segera dan mengembalikan verificationStatus: verification berarti registran harus mengonfirmasi alamat email mereka sebelum perubahan diterapkan sepenuhnya (email dikirim kepada mereka), success berarti sudah dikonfirmasi, dan null berarti tidak diperlukan konfirmasi untuk domain tersebut.
domains_list — temukan domain dan lihat nameservers saat ini ({ provider, hosts }).
domain_set_nameservers — alihkan ke nameserver default Spaceship dengan provider: "basic" (tanpa hosts), atau arahkan ke milik Anda sendiri dengan provider: "custom" dan daftar hosts sebanyak 2–12. Ini mengembalikan hasil { provider, hosts }, dan domains_list berikutnya mencerminkan perubahan tersebut. Menerapkan kembali status yang sudah dimiliki domain akan mengembalikan kesalahan validasi, bukan no-op — anggap itu sebagai hal yang diharapkan, bukan kegagalan yang perlu dicoba ulang.
domains_list — temukan domain yang ingin Anda kelola (atau berikan namanya langsung jika Anda mengetahuinya).
dns_records_get — baca catatan saat ini untuk domain.
dns_records_save atau dns_records_delete — tambahkan, perbarui, atau hapus catatan. Catatan yang dikembalikan oleh dns_records_get memiliki bentuk yang sama dengan yang diterima alat simpan dan hapus (hapus hanya menghilangkan ttl), sehingga asisten dapat membaca, menyesuaikan, dan menulis kembali. Pencocokan tidak peka huruf besar/kecil kecuali untuk catatan TXT, yang peka huruf besar/kecil.
domains_list — telusuri semua domain Anda per halaman dengan pengurutan, atau ambil satu domain berdasarkan nama. Setiap domain mencakup tanggal kedaluwarsa, pengaturan perpanjangan otomatis, status, nameserver, perlindungan privasi, dan ID kontak yang ditetapkan.
contacts_list — telusuri semua kontak yang disimpan di akun Anda per halaman untuk menemukan dan menggunakan kembali kontak yang sudah ada (berdasarkan ID kontaknya) alih-alih membuat duplikat.
contacts_get — cari detail di balik ID kontak apa pun yang Anda lihat pada domain atau dalam hasil contacts_list.
Setiap alat mengembalikan hasilnya sebagai JSON terstruktur. Operasi berjalan lama (saat ini hanya domain_register) mengembalikan referensi operasi untuk dipolling dengan async_operation_get; semua alat lainnya selesai segera.
Kontak adalah orang atau organisasi yang terkait dengan pendaftaran domain (registran, admin, teknis, penagihan). Sebuah kontak dirujuk di mana-mana dengan ID kontak-nya — sebuah string opak.
contacts_save — Simpan KontakMenyimpan detail kontak dan mengembalikan ID kontak yang dihasilkan. Validasi beberapa bidang (seperti stateProvince dan postalCode) bergantung pada negara yang dipilih.
Parameter: firstName
Wajib: Ya
Tipe & batasan: String, 1–64 karakter. Dapat menyertakan tanda hubung dan apostrof.
Parameter: lastName
Wajib: Ya
Tipe & batasan: String, 1–64 karakter. Dapat menyertakan tanda hubung dan apostrof.
Parameter: email
Wajib: Ya
Tipe & batasan: Alamat email yang valid, maks. 254 karakter.
Parameter: address1
Wajib: Ya
Tipe & batasan: Baris alamat 1. String, 1–128 karakter.
Parameter: city
Wajib: Ya
Tipe & batasan: String, 1–64 karakter.
Parameter: country
Wajib: Ya
Tipe & batasan: Kode negara dua huruf (ISO 3166-1 alpha-2), mis. US.
Parameter: phone
Wajib: Ya
Tipe & batasan: Format internasional +CountryCode.Number, mis. +1.2025551234. Maks. 32 karakter.
Parameter: organization
Wajib: Tidak
Tipe & batasan: Nama organisasi/perusahaan. 1–128 karakter.
Parameter: address2
Wajib: Tidak
Tipe & batasan: Baris alamat 2. 1–128 karakter.
Parameter: stateProvince
Wajib: Tidak
Tipe & batasan: Nama negara bagian/provinsi, 1–64 karakter. Mungkin diwajibkan tergantung negaranya.
Parameter: postalCode
Wajib: Tidak
Tipe & batasan: 1–16 karakter. Mungkin diwajibkan tergantung negaranya.
Parameter: phoneExt
Wajib: Tidak
Tipe & batasan: Ekstensi telepon, 1–16 karakter.
Parameter: fax
Wajib: Tidak
Tipe & batasan: Nomor faks, format sama +CountryCode.Number, maks. 32 karakter.
Parameter: faxExt
Wajib: Tidak
Tipe & batasan: Ekstensi faks, 1–16 karakter.
Parameter: taxNumber
Wajib: Tidak
Tipe & batasan: Nomor pajak, 1–32 karakter.
Mengembalikan
{ "contactId": "..." }
contactId (27–32 karakter alfanumerik) adalah yang Anda teruskan ke domain_register, domain_set_contacts, dan contacts_get.
contacts_get — Ambil KontakMembaca detail kontak yang disimpan berdasarkan ID kontaknya. ID kontak berasal dari contacts_save, contacts_list, atau kolom contacts dari hasil domains_list.
Parameter: contactId
Wajib: Ya
Tipe & batasan: ID kontak, 27–32 karakter alfanumerik.
Mengembalikan — { contact } dengan:
Kolom: firstName, lastName, email, address1, city, country, phone, postalCode
Tipe: String
Kolom: organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber
Tipe: String atau null
contacts_list — Daftar KontakMencantumkan semua kontak yang disimpan di akun Anda, sehingga Anda dapat menemukan dan menggunakan kembali kontak yang sudah ada (berdasarkan ID kontaknya) alih-alih membuat duplikat atau mencarinya di antara domain Anda. Daftar ini dipaginasi dan dapat diurutkan, konsisten dengan domains_list.
Parameter: take
Wajib: Tidak
Tipe & batasan: Item per halaman, 1–100. Default 10.
Parameter: skip
Wajib: Tidak
Tipe & batasan: Item yang dilewati, 0 atau lebih. Default 0.
Parameter: orderBy
Wajib: Tidak
Tipe & batasan: Hingga 8 kunci pengurutan: name, email, organization; awali dengan - untuk urutan menurun (mis. -name).
Mengembalikan — { items, total } di mana total adalah jumlah kontak unik di akun (dideduplikasi berdasarkan ID kontak, bukan ukuran halaman), dan setiap item memuat cukup informasi untuk membedakan kontak tanpa panggilan lanjutan. Jika akun memiliki entri duplikat untuk ID kontak yang sama, entri tersebut digabung menjadi satu, sehingga total menghitung kontak yang berbeda, bukan baris mentah sisi server:
Kolom: contactId
Tipe: String (27–32 alfanumerik). Teruskan ke contacts_get, domain_register, atau domain_set_contacts.
Kolom: name
Tipe: String — nama kontak.
Kolom: email
Tipe: String atau null jika kontak tidak memiliki email yang tercatat.
Kolom: organization
Tipe: String atau null jika kontak tidak memiliki organisasi yang tercatat.
{"items": [{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }],"total": 1}
Input nama domain (domain/domainName) menerima Unicode (IDN) atau ASCII (A-label) — bagaimanapun caranya, alat menormalkan nama ke punycode secara otomatis sebelum digunakan. domains_check_availability dan domain_register juga memerlukan TLD yang didukung Spaceship untuk pendaftaran: domain dengan TLD yang tidak didukung diperlakukan sebagai tidak tersedia alih-alih diperiksa atau ditagih. Alat domain lainnya (domains_list, domain_set_contacts, domain_set_nameservers) dan alat DNS hanya menormalkan nama dan tidak pernah menolak berdasarkan dukungan TLD.
domains_list — Daftar DomainMengambil daftar domain Anda yang dipaginasi. Teruskan domain untuk mengambil satu domain berdasarkan nama sebagai gantinya (paginasi dan pengurutan kemudian diabaikan, dan hasilnya menyertakan note yang menyatakan hal itu jika keduanya diberikan).
Parameter: domain
Wajib: Tidak
Tipe & batasan: Nama domain yang sepenuhnya memenuhi syarat untuk mengambil satu domain. Menerima Unicode (IDN) atau ASCII (A-label) — dinormalkan ke punycode secara otomatis.
Parameter: take
Wajib: Tidak
Tipe & batasan: Item per halaman, 1–100. Default 10.
Parameter: skip
Wajib: Tidak
Tipe & batasan: Item yang dilewati, 0 atau lebih. Default 0.
Parameter: orderBy
Wajib: Tidak
Tipe & batasan: Hingga 8 kunci pengurutan: name, unicodeName, registrationDate, expirationDate; awali dengan - untuk urutan menurun (mis. -expirationDate).
Mengembalikan — { items, total } di mana setiap item mendeskripsikan sebuah domain:
Kolom: name / unicodeName
Arti: Nama domain dalam bentuk ASCII dan Unicode.
Kolom: isPremium
Arti: Apakah domain tersebut merupakan nama premium.
Kolom: autoRenew
Arti: Apakah perpanjangan otomatis diaktifkan.
Kolom: registrationDate / expirationDate
Arti: Stempel waktu pendaftaran dan kedaluwarsa.
Kolom: lifecycleStatus
Arti: creating, registered, grace1, grace2, atau redemption.
Kolom: verificationStatus
Arti: verification, success, failed, atau null jika tidak berlaku.
Kolom: eppStatuses
Arti: Kode status registry (mis. kunci transfer).
Kolom: suspensions
Arti: Penangguhan aktif, masing-masing dengan reasonCode.
Kolom: privacyProtection
Arti: { level: "public" | "high", contactForm: boolean }.
Kolom: nameservers
Arti: { provider: "basic" | "custom", hosts: [...] }.
Kolom: contacts
Arti: ID kontak: registrant, ditambah admin/tech/billing (dapat berupa null) dan attributes (daftar ID kontak atribut yang diperluas, atau null). Dapat dibaca melalui contacts_get.
Spaceship MCP mengisi setiap kolom di atas — termasuk contacts, eppStatuses, suspensions, verificationStatus, nameservers, autoRenew yang nyata, dan unicodeName yang berbeda jika domain memilikinya — baik untuk daftar multi-item maupun pengambilan satu domain.
domains_check_availability — Periksa Ketersediaan DomainMemeriksa apakah satu atau beberapa nama domain tersedia untuk didaftarkan. Menggunakan endpoint domain tunggal untuk satu nama dan endpoint massal untuk beberapa nama. Domain dengan TLD yang tidak didukung untuk pendaftaran tidak dikirim ke pemeriksaan ketersediaan sama sekali — domain tersebut langsung dikembalikan sebagai tldNotSupported.
Parameter: domains
Wajib: Ya
Tipe & batasan: 1–20 nama domain yang sepenuhnya memenuhi syarat. Masing-masing menerima Unicode (IDN) atau ASCII (A-label) — dinormalkan ke punycode secara otomatis.
Mengembalikan — { results }, satu entri per nama yang diminta:
Kolom: domain
Arti: Nama yang diperiksa.
Kolom: result
Arti: available, taken, invalidDomainName, tldNotSupported, atau unexpectedError.
Kolom: premiumPricing
Arti: Untuk nama premium: daftar { operation, price, currency } di mana operation adalah register, transfer, renew, atau restore. Kosong untuk nama biasa.
Kolom: price
Arti: Untuk nama available (standar dan premium): harga USD untuk mendaftarkan domain selama jangka waktu terpendek yang diizinkan TLD — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }. amount adalah total yang harus dibayar untuk seluruh jangka waktu tersebut; pricedYears menyatakan berapa tahun yang dicakup. Tidak ada harga sebelum diskon atau harga "sebelumnya" yang dilaporkan. icannFee adalah biaya ICANN (USD) yang sudah termasuk dalam amount, dikembalikan secara terpisah agar rinciannya dapat dijelaskan; ini hanya muncul ketika TLD dikenai biaya.
Kolom: pricePerYear
Arti: Di dalam price: amount dibagi dengan pricedYears, sehingga angka tahunan selalu tersedia untuk perbandingan. Saat pricedYears adalah 1, itu adalah harga satu tahun yang sebenarnya; di atas itu, itu adalah rata-rata per tahun dari jangka waktu tersebut, bukan jangka waktu yang bisa Anda beli.
Kolom: minRegisterPeriodInYears / maxRegisterPeriodInYears
Arti: Untuk nama available: periode pendaftaran terpendek dan terpanjang yang benar-benar diizinkan TLD tersebut, sebagai dua angka biasa. Gunakan ini untuk memilih years yang valid untuk domain_register. Keduanya dihilangkan jika periode yang diizinkan tidak dapat ditentukan.
Kolom: priceUnavailableReason
Arti: Muncul sebagai pengganti price ketika harga tidak dapat ditentukan untuk nama yang tersedia. Pemeriksaan itu sendiri tetap berhasil.
Hanya nama yang tersedia yang diberi harga; hasil taken/invalid tidak memuat price maupun priceUnavailableReason.
Sebagian besar TLD mengizinkan satu tahun, tetapi beberapa tidak..ai, misalnya, memiliki minimum dua tahun. Untuk kasus tersebut, price.amount adalah total untuk jangka waktu minimum — bukan harga satu tahun yang bisa Anda gunakan — dan price.pricedYears menyatakannya:
{"domain": "example.ai","result": "available","premiumPricing": [],"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },"minRegisterPeriodInYears": 2,"maxRegisterPeriodInYears": 10}
pricePerYear ada di sini — 159.96 dibagi dengan dua tahun yang dicakup menghasilkan 79.98. Ini adalah total dibagi jangka waktu, bukan harga yang bisa Anda bayar untuk satu tahun (pendaftaran .ai selama satu tahun tidak dapat dibeli). Selalu tampilkan amount bersama pricedYears ("$159.96 untuk 2 tahun"), jangan pernah amount saja. Untuk TLD biasa, pricedYears adalah 1 dan pricePerYear sama dengan amount.
domain_register — Daftarkan DomainMendaftarkan (membeli) domain. Ini menagih metode pembayaran default akun Anda dan tidak dapat dibatalkan. Urutan yang disarankan: domains_check_availability → domain_register. Domain dengan TLD yang tidak didukung untuk pendaftaran langsung ditolak — sebelum pemeriksaan ketersediaan, penetapan harga, atau penagihan apa pun.
years harus berada dalam periode yang diizinkan TLD itu sendiri. Batas 1–10 di bawah ini adalah batas luar di semua TLD; setiap TLD lebih sempit. .ai mengizinkan 2–10, .co dan .io mengizinkan 1–5, .sg 1–2, .fr tepat 1. Nilai years di luar rentang tersebut ditolak dengan kesalahan validasi yang menyebutkan rentang yang diizinkan — sebelum pemeriksaan ketersediaan, penetapan harga, atau penagihan apa pun — dan nilainya tidak diam-diam disesuaikan untuk Anda:
.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.
Baca minRegisterPeriodInYears/maxRegisterPeriodInYears dari domains_check_availability terlebih dahulu dan pilih years di dalamnya. Pemeriksaan yang sama dijalankan ulang pada panggilan konfirmasi (confirmationResponse: "accept"), sehingga tidak pernah bisa dilewati dengan mengonfirmasi.
Konfirmasi dua langkah sebelum penagihan. Panggil terlebih dahulu dengan confirmationToken tidak diatur: alat menetapkan harga domain secara baru, membuat konfirmasi lengkap — jangka waktu, rincian harga (termasuk biaya ICANN apa pun dan apakah domain premium), perpanjangan otomatis, privasi WHOIS, sumber pembayaran, dan kontak registrant/admin/tech/billing (kontak yang identik dengan registrant ditampilkan sebagai "same as registrant") — lalu mengembalikan status: "confirmation_required" dengan price tersebut dan confirmationToken baru. Tidak ada yang didaftarkan atau ditagih pada panggilan ini. Konfirmasi lengkap adalah teks respons alat; tampilkan kepada pengguna apa adanya. Setelah mereka setuju, panggil lagi dengan argumen yang persis sama ditambah confirmationToken ini dan confirmationResponse: "accept" untuk mengirim pembelian, atau confirmationResponse: "decline" untuk membatalkannya — tidak ada yang ditagih saat penolakan. Token terikat pada argumen yang persis ini dan harga yang dikutip, serta kedaluwarsa setelah waktu singkat: token yang hilang, kedaluwarsa, dirusak, atau tidak lagi cocok pada panggilan konfirmasi hanya akan mengembalikan konfirmasi baru dengan token baru — tidak pernah kesalahan, tidak pernah penagihan. Jika harga tidak dapat ditentukan pada salah satu panggilan, alat mengembalikan status: "price_unavailable" alih-alih token dan tidak pernah menagih; coba lagi nanti. Panggilan yang dikonfirmasi langsung mengembalikan status: "pending" dan operationId — pendaftaran selesai di latar belakang; periksa dengan async_operation_get.
Parameter: domain
Wajib: Ya
Tipe & batasan: Nama domain yang sepenuhnya memenuhi syarat untuk didaftarkan, mis. example.com. Menerima Unicode (IDN) atau ASCII (A-label) — dinormalkan ke punycode secara otomatis.
Parameter: years
Wajib: Ya
Tipe & batasan: Periode pendaftaran dalam tahun. 1–10 adalah batas luar; rentang yang diterima adalah milik TLD itu sendiri — lihat minRegisterPeriodInYears/maxRegisterPeriodInYears dari domains_check_availability. Nilai di luar rentang ditolak, bukan disesuaikan.
Parameter: autoRenew
Wajib: Ya
Tipe & batasan: Boolean. Saat true, domain diperpanjang secara otomatis saat kedaluwarsa menggunakan metode pembayaran default akun.
Parameter: privacy.level
Wajib: Ya
Tipe & batasan: high menyembunyikan detail kontak registrant dari WHOIS publik; public memublikasikannya.
Parameter: privacy.userConsent
Wajib: Ya
Tipe & batasan: Boolean. Harus mengonfirmasi bahwa Anda menyetujui pengaturan privasi yang dipilih.
Parameter: contacts.registrant
Wajib: Ya
Tipe & batasan: contactId string (27–32 alfanumerik), dari contacts_save.
Parameter: contacts.admin
Wajib: Ya
Tipe & batasan: contactId string (27–32 alfanumerik), dari contacts_save.
Parameter: contacts.tech
Wajib: Ya
Tipe & batasan: contactId string (27–32 alfanumerik), dari contacts_save.
Parameter: contacts.billing
Wajib: Ya
Tipe & batasan: contactId string (27–32 alfanumerik), dari contacts_save.
Parameter: contacts.attributes
Wajib: Tidak
Tipe & batasan: Array ID kontak atribut tambahan (hingga 5); hanya wajib untuk TLD tertentu, jika tidak abaikan atau gunakan null.
Parameter: confirmationToken
Wajib: Tidak
Tipe & batasan: String, hingga 4096 karakter. Token yang diterbitkan server dan dikembalikan oleh panggilan domain_register sebelumnya untuk argumen yang persis sama ini. Abaikan pada panggilan pertama untuk percobaan pendaftaran baru. Kedaluwarsa setelah waktu singkat dan terikat pada argumen serta harga persis saat token diterbitkan — kirim ulang tanpa perubahan, bersama dengan confirmationResponse, untuk menindaklanjutinya.
Parameter: confirmationResponse
Wajib: Bersyarat
Tipe & batasan: "accept" atau "decline". Hanya bermakna bersama confirmationToken yang valid. "accept" mengirim pendaftaran (yang ditagihkan) yang ditampilkan dalam konfirmasi tersebut; "decline" membatalkannya tanpa penagihan. Abaikan pada panggilan pertama.
Hasil — setelah panggilan pertama (belum ada biaya):
{"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."}
Bersamaan dengan JSON ini, teks respons alat adalah konfirmasi lengkap yang harus ditampilkan kepada pengguna — menegaskan kembali domain, masa berlaku, dan harga di atas, ditambah baris untuk Auto-renew: on/off, WHOIS privacy: on/off, Payment source: Spaceship account funds, dan masing-masing kontak registrant/admin/tech/billing (nama, email, negara — kontak yang sama dengan registrant akan berbunyi "same as registrant"), diikuti instruksi untuk panggilan berikutnya. Untuk masa berlaku multi-tahun, price.amount adalah total untuk seluruh masa berlaku dan price.pricePerYear adalah total tersebut dibagi masa berlaku — mis. years: 5 pada .com mengembalikan { "amount": 48.52, "pricedYears": 5, "pricePerYear": 9.70 }, dan example.ai dengan years: 2 mengembalikan { "amount": 159.96, "pricedYears": 2, "pricePerYear": 79.98 }.
Hasil — setelah confirmationResponse: "accept" (pendaftaran dikirim):
{"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."}
Hasil — setelah confirmationResponse: "decline" (belum ada biaya):
{"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."}
Hasil — jika harga tidak dapat ditentukan, pada salah satu panggilan:
{"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 dapat berupa:
Status: confirmation_required
Arti: Pratinjau — belum ada biaya. Tampilkan teks respons kepada pengguna, lalu panggil lagi dengan confirmationToken dan confirmationResponse ini. Juga dikembalikan, dengan token baru, ketika confirmationToken yang dikirim tidak ada, kedaluwarsa, dirusak, atau tidak lagi cocok dengan argumen/harga saat ini — bukan error.
Status: cancelled
Arti: Pembelian ditolak (confirmationResponse: "decline"), jadi tidak ada yang dikirim.
Status: pending
Arti: Sudah dikirim; registry sedang menyelesaikannya di latar belakang. Poll async_operation_get dengan operationId.
Status: price_unavailable
Arti: Harga tidak dapat ditentukan, jadi tidak ada token yang diterbitkan dan tidak ada biaya yang ditagihkan. Coba lagi nanti.
operationId adalah string datar — teruskan ke async_operation_get, yang melaporkan apakah pendaftaran pada akhirnya berhasil atau gagal. price yang ditampilkan pada confirmation_required adalah persis yang akan ditagihkan pada confirmationResponse: "accept" — price.amount adalah total untuk seluruh masa berlaku tersebut dan price.pricedYears menyatakan masa berlakunya, jadi selalu tampilkan keduanya bersama. Saat TLD dikenai biaya ICANN, price.amount sudah mencakupnya dan price.icannFee menyatakan jumlah biayanya agar dapat dijelaskan.
domain_set_contacts — Tetapkan Kontak DomainMengubah kontak yang ditetapkan ke domain yang Anda miliki. Selesai seketika (tidak ada operasi untuk dipoll).
Parameter: domainName
Wajib: Ya
Tipe & batasan: Nama domain yang sepenuhnya memenuhi syarat. Menerima Unicode (IDN) atau ASCII (A-label) — dinormalisasi ke punycode secara otomatis.
Parameter: registrant
Wajib: Ya
Tipe & batasan: contactId string (27–32 alfanumerik), dari contacts_save.
Parameter: admin
Wajib: Tidak
Tipe & batasan: contactId string (27–32 alfanumerik) atau null.
Parameter: tech
Wajib: Tidak
Tipe & batasan: contactId string (27–32 alfanumerik) atau null.
Parameter: billing
Wajib: Tidak
Tipe & batasan: contactId string (27–32 alfanumerik) atau null.
Parameter: attributes
Wajib: Tidak
Tipe & batasan: Array ID kontak atribut tambahan (hingga 5); hanya wajib untuk TLD tertentu, jika tidak abaikan atau gunakan null.
Hasil
{ "verificationStatus": "verification" }
Nilai verificationStatus yang dikembalikan mencerminkan verifikasi email ICANN RAA: verification — registrant harus mengonfirmasi alamat email mereka (email konfirmasi dikirim); success — sudah dikonfirmasi; null — verifikasi RAA tidak berlaku untuk domain ini.
domain_set_nameservers — Tetapkan Nameserver DomainMengubah nameserver tingkat registrar untuk sebuah domain. Selesai seketika (tidak ada operasi untuk dipoll). Perubahan ini kemudian tercermin oleh domains_list.
Parameter: domainName
Wajib: Ya
Tipe & batasan: Nama domain yang sepenuhnya memenuhi syarat. Menerima Unicode (IDN) atau ASCII (A-label) — dinormalisasi ke punycode secara otomatis.
Parameter: provider
Wajib: Ya
Tipe & batasan: basic (nameserver default Spaceship) atau custom (host Anda sendiri).
Parameter: hosts
Wajib: Bersyarat
Tipe & batasan: Wajib saat provider adalah custom: 2–12 hostname nameserver (masing-masing FQDN valid, 4–255 karakter). Harus diabaikan saat provider adalah basic.
Hasil
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }
Menerapkan ulang status yang sudah dimiliki domain (mis. menetapkan basic saat domain sudah basic) akan mengembalikan error validasi, bukan keberhasilan no-op — anggap itu sebagai hasil yang diharapkan, bukan kegagalan yang perlu dicoba ulang.
domainName yang digunakan alat-alat ini menerima Unicode (IDN) atau ASCII (A-label) dan dinormalisasi ke punycode secara otomatis; dukungan TLD tidak diberlakukan di sini.
dns_records_get — Ambil Catatan DNSMengambil daftar berpaginasi dari catatan resource DNS untuk sebuah domain.
Parameter: domainName
Wajib: Ya
Tipe & batasan: Domain yang catatannya akan diambil.
Parameter: take
Wajib: Tidak
Tipe & batasan: Item per halaman, 1–500. Default 100.
Parameter: skip
Wajib: Tidak
Tipe & batasan: Item yang dilewati, 0 atau lebih. Default 0.
Parameter: orderBy
Wajib: Tidak
Tipe & batasan: Hingga 8 kunci pengurutan: type, -type, name, -name.
Hasil — { items, total }. Setiap item adalah catatan seperti dijelaskan dalam Bentuk catatan, ditambah field group opsional yang menunjukkan asal catatan (custom — dibuat oleh Anda, product — dikelola oleh produk Spaceship, personalNs — nameserver pribadi).
dns_records_save — Simpan Catatan DNSMenambahkan catatan DNS kustom atau memperbarui TTL catatan yang ada. Catatan dicocokkan tanpa membedakan huruf besar/kecil, kecuali catatan TXT (peka huruf besar/kecil).
Parameter: domainName
Wajib: Ya
Tipe & batasan: Domain yang catatannya akan diperbarui.
Parameter: records
Wajib: Ya
Tipe & batasan: 1–500 catatan — lihat Bentuk catatan. Masing-masing dapat menyertakan ttl opsional.
Parameter: force
Wajib: Tidak
Tipe & batasan: Boolean. Melewati pemeriksaan penyelesaian konflik dan memaksa pembaruan zona.
Hasil — { "saved": <number> }, jumlah catatan yang dikirim. Respons yang berhasil berarti semua catatan diterima; jika ada catatan yang gagal, seluruh panggilan akan mengembalikan error.
dns_records_delete — Hapus Catatan DNSMenghapus catatan DNS kustom. Penghapusan tidak dapat dibatalkan. Catatan dicocokkan tanpa membedakan huruf besar/kecil, kecuali catatan TXT (peka huruf besar/kecil).
Parameter: domainName
Wajib: Ya
Tipe & batasan: Domain yang catatannya akan dihapus.
Parameter: records
Wajib: Ya
Tipe & batasan: 1–500 catatan yang mengidentifikasi catatan yang ada — bentuk yang sama seperti simpan, tetapi tanpa ttl.
Hasil — { "deleted": <number> }, jumlah catatan yang dikirim. Jika ada catatan yang tidak dapat dicocokkan, seluruh panggilan gagal dan tidak ada yang dihapus.
Setiap catatan memiliki:
type — salah satu dari 13 tipe yang didukung di bawah ini.
name — nama catatan tidak termasuk domain: gunakan @ untuk domain itu sendiri (apex) dan * untuk wildcard.
ttl (hanya simpan, opsional) — waktu cache dalam detik, 60–3600.
Field khusus tipe:
Tipe: A
Field: address — alamat IPv4.
Tipe: AAAA
Field: address — alamat IPv6.
Tipe: CNAME
Field: cname — nama domain kanonis (maks. 253 karakter).
Tipe: ALIAS
Field: aliasName — nama domain kanonis; perilaku mirip CNAME untuk apex, tempat CNAME tidak diizinkan.
Tipe: NS
Field: nameserver — nama nameserver.
Tipe: PTR
Field: pointer — nama domain untuk alamat IP yang diberikan.
Tipe: TXT
Field: value — nilai teks (dicocokkan dengan peka huruf besar/kecil).
Tipe: MX
Field: exchange — server email; preference — prioritas (0–65535, yang lebih rendah lebih diutamakan).
Tipe: CAA
Field: flag — 0 atau 128 (bit kritis); tag — issue, issuewild, atau iodef; value — pengenal CA dengan parameter opsional.
Tipe: SRV
Field: service (mis. _sip); protocol (mis. _tcp); priority dan weight (0–65535); port (1–65535); target — nama domain server.
Tipe: TLSA
Bidang: usage, selector, matching (masing-masing 0–255); port — * atau _<1–65535>; protocol (mis. _tcp); associationData — hash sertifikat atau data.
Tipe: HTTPS
Bidang: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN atau .; opsional port (* atau _<1–65535>), scheme (harus _https saat port ditetapkan), svcParams.
Tipe: SVCB
Bidang: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN atau .; opsional port, scheme (mis. _tcp), svcParams.
async_operation_get — Dapatkan Status Operasi AsinkronMemeriksa operasi berjalan lama yang dimulai oleh alat lain (saat ini domain_register). Panggil dengan operationId diatur ke operationId yang dikembalikan alat tersebut, lalu ulangi sampai status adalah success atau failed.
Parameter: operationId
Wajib: Ya
Tipe & batasan: String alfanumerik, maks. 36 karakter, dikembalikan oleh alat yang memulai operasi.
Mengembalikan
Bidang: operationId
Arti: Operasi yang dipolling.
Bidang: status
Arti: pending, success, atau failed.
Bidang: type
Arti: Tipe operasi, atau null.
Bidang: details
Arti: Detail tambahan tentang operasi, atau null.
Bidang: createdAt / modifiedAt
Arti: Saat operasi dibuat / terakhir diperbarui (modifiedAt dapat berupa null).
Saat panggilan gagal, alat mengembalikan kesalahan dengan kode dan detail yang dapat dibaca manusia yang menjelaskan apa yang salah — misalnya input tidak valid (nama domain atau ID kontak yang salah format), domain atau kontak yang tidak ada, atau konflik dengan status saat ini. Jika alat ditolak karena asisten tidak diberi akses ke alat tersebut, sambungkan kembali Spaceship MCP dan setujui akses yang dimintanya.