Spaceship MCP आपके AI assistant (जैसे Claude) को आपके Spaceship खाते से जोड़ता है। इसके माध्यम से, assistant डोमेन जाँच और पंजीकृत कर सकता है, डोमेन संपर्क प्रबंधित कर सकता है, और आपकी ओर से DNS रिकॉर्ड पढ़ या संपादित कर सकता है — आपको बस सामान्य भाषा में पूछना है, और assistant सही टूल्स को कॉल करता है।
आपको एक Spaceship खाता चाहिए। Spaceship MCP यहाँ उपलब्ध है https://mcp.spaceship.com/mcp।
आप कैसे कनेक्ट करते हैं, यह आपके AI assistant पर निर्भर करता है:
Claude (web and desktop) — Settings खोलें, Connectors चुनें, connectors directory में Spaceship खोजें, और उसे जोड़ें। Anthropic का Claude वर्तमान में वह क्लाइंट है जिसके साथ हमने Spaceship MCP के काम करने की पुष्टि की है।
NB: जबकि Spaceship MCP के माध्यम से डोमेन पंजीकरण समग्र रूप से पूरी तरह समर्थित है, यह क्षमता अभी विशेष रूप से Claude connector के माध्यम से उपलब्ध नहीं है। खोज, डोमेन लुकअप, संपर्क प्रबंधन और DNS रिकॉर्ड प्रबंधन पहले से उपलब्ध हैं और आज Claude के साथ काम करने के लिए सत्यापित हैं।
अन्य MCP क्लाइंट्स — एक remote MCP server जोड़ें और उसे https://mcp.spaceship.com/mcp पर इंगित करें। अन्य क्लाइंट्स काम कर सकते हैं, लेकिन हमने अभी तक उनकी पुष्टि नहीं की है।
जब आप कनेक्ट करते हैं, तो आपसे Spaceship में साइन इन करने और सहायक को अपने खाते तक पहुँच देने के लिए कहा जाएगा। सहायक कौन से टूल उपयोग कर सकता है, यह आपके द्वारा स्वीकृत पहुँच पर निर्भर करता है — यदि किसी टूल को इसलिए अस्वीकार किया जाता है क्योंकि पहुँच प्रदान नहीं की गई थी, तो फिर से कनेक्ट करें और उसे आवश्यक पहुँच स्वीकृत करें।
टूल: contacts_save
यह क्या करता है: संपर्क विवरण सहेजें और एक contact ID प्राप्त करें
टूल: contacts_get
यह क्या करता है: सहेजे गए संपर्क को उसकी ID से पढ़ता है
टूल: contacts_list
यह क्या करता है: किसी एक को ढूँढने और फिर से उपयोग करने के लिए सभी सहेजे गए संपर्कों की सूची देता है
टूल: domains_list
यह क्या करता है: अपने डोमेनों की सूची दें, या एक डोमेन खोजें
टूल: domains_check_availability
यह क्या करता है: जाँचें कि डोमेन पंजीकरण के लिए उपलब्ध हैं या नहीं
टूल: domain_register
यह क्या करता है: डोमेन पंजीकृत (खरीदें) करें — पैसे खर्च होते हैं
टूल: domain_set_contacts
यह क्या करता है: आपके स्वामित्व वाले डोमेन को संपर्क असाइन करता है
टूल: domain_set_nameservers
यह क्या करता है: डोमेन को basic या custom nameservers पर स्विच करता है
टूल: dns_records_get
यह क्या करता है: किसी डोमेन के DNS रिकॉर्ड पढ़ता है
टूल: dns_records_save
यह क्या करता है: DNS रिकॉर्ड जोड़ता है या उनका TTL अपडेट करता है
टूल: dns_records_delete
यह क्या करता है: DNS रिकॉर्ड हटाता है
टूल: async_operation_get
यह क्या करता है: लंबे समय तक चलने वाले ऑपरेशन की स्थिति जाँचता है
जहाँ भी संपर्क आवश्यक हो (domain_register, domain_set_contacts), प्रत्येक भूमिका एक contactId स्ट्रिंग लेती है — कभी भी inline contact details नहीं। पहले संपर्क को contacts_save से सहेजें (जो उसका contactId लौटाता है), फिर जहाँ संपर्क स्वीकार किया जाता है वहाँ वह id पास करें। कोई inline auto-save नहीं है; किसी भूमिका को पूरा contact object नहीं दिया जा सकता। आप contacts_list के परिणाम से या domains_list के परिणाम में पढ़े गए contactId का पुनः उपयोग भी कर सकते हैं।
एक contactId27–32 अल्फ़ान्यूमेरिक वर्णों की स्ट्रिंग होती है। जहाँ संपर्क स्वीकार किया जाता है, वहाँ बस इसे वापस पास करें।
कई टूल्स को साथ में उपयोग करने के लिए डिज़ाइन किया गया है: एक का आउटपुट अगले का इनपुट बन जाता है।
contacts_save — पंजीयक, एडमिन, टेक और बिलिंग संपर्कों को सहेजें (यदि आपके पास पहले से उनके ids नहीं हैं) और प्रत्येक के लिए लौटाया गया contactId रखें। पंजीकरण करने से पहले संपर्कों का मौजूद होना आवश्यक है।
domains_check_availability — अपने इच्छित नामों की जाँच करें। केवल तभी आगे बढ़ें जब resultavailable हो। प्रत्येक उपलब्ध नाम में उसे पंजीकृत करने के लिए USD price शामिल होता है (मानक और प्रीमियम दोनों के लिए), या priceUnavailableReason जब इसे निर्धारित नहीं किया जा सकता, साथ ही minRegisterPeriodInYears और maxRegisterPeriodInYears — वह अवधि जिसकी TLD अनुमति देता है। ध्यान दें कि priceprice.pricedYears वर्षों को कवर करता है, जो TLD की सबसे कम अनुमत अवधि है और हमेशा 1 नहीं होती।
domain_register (preview) — confirmationToken को unset छोड़कर कॉल करें ताकि status: confirmation_required, एक नया confirmationToken, और वह price मिले जो चार्ज किया जाएगा। कुछ भी बिल नहीं किया जाता। टूल का response text एक पूर्ण पुष्टि है — अवधि, मूल्य विवरण, auto-renew, WHOIS privacy, payment source, और registrant/admin/tech/billing contacts — इसे उपयोगकर्ता को जैसा है वैसा दिखाएँ। years को चरण 2 से minRegisterPeriodInYears और maxRegisterPeriodInYears के बीच चुनें — सीमा से बाहर का मान सीधे अस्वीकार कर दिया जाता है। प्रत्येक संपर्क भूमिका को चरण 1 में सहेजे गए contactId के रूप में पास करें।
domain_register (accept/decline) — उपयोगकर्ता के सहमत होने के बाद, ठीक उन्हीं arguments के साथ फिर से कॉल करें और साथ में वही confirmationToken तथा confirmationResponse: "accept" दें। इससे खाते की default payment method से बिल किया जाता है और इसे वापस नहीं लिया जा सकता। यह तुरंत status: pending और एक operationId के साथ लौटता है — पंजीकरण पृष्ठभूमि में पूरा होता है। इसके बजाय रद्द करने के लिए, उसी confirmationToken और confirmationResponse: "decline" के साथ फिर से कॉल करें — कुछ भी बिल नहीं किया जाता। टोकन थोड़े समय बाद समाप्त हो जाता है और उन्हीं सटीक arguments और मूल्य से बंधा होता है जिनके लिए इसे जारी किया गया था; यदि यह गायब है, समाप्त हो चुका है, या अब मेल नहीं खाता, तो कॉल त्रुटि के बजाय एक बिल्कुल नई पुष्टि लौटाती है — कभी भी शुल्क नहीं लगता। यदि किसी भी कॉल पर मूल्य निर्धारित नहीं किया जा सकता, तो टूल इसके बजाय status: price_unavailable लौटाता है और कुछ भी चार्ज नहीं किया जाता।
async_operation_get — प्रगति जाँचने के लिए चरण 4 से operationId पास करें। तब तक दोहराएँ जब तक statussuccess या failed न बन जाए।
contacts_save ──▶ domains_check_availability ──▶ domain_register ──▶ domain_register ──▶ async_operation_get(contactId ids) (available? + price + (token unset: (token + (pending →min/maxRegisterPeriod) confirmation, accept: operationId, success/failed)confirmationToken, pending)no charge)
domain_set_contacts — डोमेन को contactId द्वारा संपर्क असाइन करें (यदि आवश्यक हो तो पहले उन्हें contacts_save से सहेजें)। यह तुरंत पूरा हो जाता है और एक verificationStatus लौटाता है: verification का अर्थ है कि परिवर्तन पूरी तरह लागू होने से पहले पंजीयक को अपने ईमेल पते की पुष्टि करनी होगी (उन्हें एक ईमेल भेजा जाता है), success का अर्थ है कि इसकी पुष्टि पहले ही हो चुकी है, और null का अर्थ है कि उस डोमेन के लिए किसी पुष्टि की आवश्यकता नहीं है।
domains_list — डोमेन खोजें और उसके वर्तमान nameservers ({ provider, hosts }) देखें।
domain_set_nameservers — इसे Spaceship के default nameservers पर provider: "basic" के साथ स्विच करें (कोई hosts नहीं), या provider: "custom" और 2–12 hosts की सूची के साथ इसे अपने स्वयं के nameservers पर इंगित करें। यह परिणामी { provider, hosts } लौटाता है, और बाद की domains_list कॉल परिवर्तन को दर्शाती है। जिस स्थिति में डोमेन पहले से है, उसी स्थिति को फिर से लागू करने पर no-op के बजाय validation error लौटती है — इसे अपेक्षित मानें, पुनः प्रयास की विफलता नहीं।
domains_list — वह डोमेन खोजें जिसे आप प्रबंधित करना चाहते हैं (या यदि आप उसका नाम जानते हैं तो उसे सीधे पास करें)।
dns_records_get — डोमेन के वर्तमान रिकॉर्ड पढ़ें।
dns_records_save या dns_records_delete — रिकॉर्ड जोड़ें, अपडेट करें, या हटाएँ। dns_records_get द्वारा लौटाए गए रिकॉर्ड का वही स्वरूप होता है जिसे save और delete टूल स्वीकार करते हैं (delete केवल ttl को छोड़ देता है), इसलिए सहायक पढ़ सकता है, समायोजित कर सकता है, और वापस लिख सकता है। TXT रिकॉर्ड्स को छोड़कर matching case-insensitive है, जबकि TXT रिकॉर्ड्स case-sensitive होते हैं।
domains_list — sorting के साथ अपने सभी डोमेनों को पेज करें, या नाम से एकल डोमेन प्राप्त करें। प्रत्येक डोमेन में उसकी समाप्ति तिथि, auto-renew सेटिंग, स्थिति, nameservers, privacy protection, और असाइन किए गए contact IDs शामिल होते हैं।
contacts_list — अपने खाते में सहेजे गए सभी संपर्कों को पेज करें ताकि किसी मौजूदा संपर्क को खोजकर उसका पुनः उपयोग किया जा सके (उसकी contact ID द्वारा), डुप्लिकेट बनाने के बजाय।
contacts_get — किसी डोमेन पर या contacts_list परिणाम में दिखाई देने वाली किसी भी contact ID के पीछे का विवरण देखें।
हर टूल अपना परिणाम structured JSON के रूप में लौटाता है। लंबे समय तक चलने वाले संचालन (वर्तमान में केवल domain_register) async_operation_get के साथ पोल करने के लिए एक operation reference लौटाते हैं; अन्य सभी टूल तुरंत पूरे हो जाते हैं।
संपर्क वे लोग या संगठन हैं जो डोमेन पंजीकरण से जुड़े होते हैं (पंजीयक, एडमिन, टेक, बिलिंग)। किसी संपर्क को हर जगह उसके contact ID द्वारा संदर्भित किया जाता है — एक अपारदर्शी स्ट्रिंग।
contacts_save — संपर्क सहेजेंसंपर्क विवरण सहेजता है और जनरेट की गई contact ID लौटाता है। कुछ फ़ील्ड्स (जैसे stateProvince और postalCode) का सत्यापन चुने गए देश पर निर्भर करता है।
पैरामीटर: firstName
आवश्यक: हाँ
प्रकार और सीमाएँ: स्ट्रिंग, 1–64 वर्ण। इसमें हाइफ़न और अपॉस्ट्रॉफ़ शामिल हो सकते हैं।
पैरामीटर: lastName
आवश्यक: हाँ
प्रकार और सीमाएँ: स्ट्रिंग, 1–64 वर्ण। इसमें हाइफ़न और अपॉस्ट्रॉफ़ शामिल हो सकते हैं।
पैरामीटर: email
आवश्यक: हाँ
प्रकार और सीमाएँ: मान्य ईमेल पता, अधिकतम 254 वर्ण।
पैरामीटर: address1
आवश्यक: हाँ
प्रकार और सीमाएँ: पता पंक्ति 1। स्ट्रिंग, 1–128 वर्ण।
पैरामीटर: city
आवश्यक: हाँ
प्रकार और सीमाएँ: स्ट्रिंग, 1–64 वर्ण।
पैरामीटर: country
आवश्यक: हाँ
प्रकार और सीमाएँ: दो-अक्षरीय देश कोड (ISO 3166-1 alpha-2), उदाहरण के लिए US.
पैरामीटर: phone
आवश्यक: हाँ
प्रकार और सीमाएँ: अंतरराष्ट्रीय प्रारूप +CountryCode.Number, उदाहरण के लिए +1.2025551234. अधिकतम 32 वर्ण।
पैरामीटर: organization
आवश्यक: नहीं
प्रकार और सीमाएँ: संगठन/कंपनी का नाम। 1–128 वर्ण।
पैरामीटर: address2
आवश्यक: नहीं
प्रकार और सीमाएँ: पता पंक्ति 2। 1–128 वर्ण।
पैरामीटर: stateProvince
आवश्यक: नहीं
प्रकार और सीमाएँ: राज्य/प्रांत का नाम, 1–64 वर्ण। देश के आधार पर आवश्यक हो सकता है।
पैरामीटर: postalCode
आवश्यक: नहीं
प्रकार और सीमाएँ: 1–16 वर्ण। देश के आधार पर आवश्यक हो सकता है।
पैरामीटर: phoneExt
आवश्यक: नहीं
प्रकार और सीमाएँ: फ़ोन एक्सटेंशन, 1–16 वर्ण।
पैरामीटर: fax
आवश्यक: नहीं
प्रकार & सीमाएँ: फैक्स नंबर, वही +CountryCode.Number प्रारूप, अधिकतम 32 वर्ण।
पैरामीटर: faxExt
आवश्यक: नहीं
प्रकार & सीमाएँ: फैक्स एक्सटेंशन, 1–16 वर्ण।
पैरामीटर: taxNumber
आवश्यक: नहीं
प्रकार & सीमाएँ: कर संख्या, 1–32 वर्ण।
रिटर्न
{ "contactId": "..." }
contactId (27–32 अल्फ़ान्यूमेरिक वर्ण) वह है जिसे आप domain_register, domain_set_contacts, और contacts_get को पास करते हैं।
contacts_get — संपर्क प्राप्त करेंसहेजे गए संपर्क का विवरण उसके contact ID द्वारा पढ़ता है। Contact ID contacts_save, contacts_list, या contacts फ़ील्ड से domains_list परिणामों में आते हैं।
पैरामीटर: contactId
आवश्यक: हाँ
प्रकार & सीमाएँ: Contact ID, 27–32 अल्फ़ान्यूमेरिक वर्ण।
रिटर्न — { contact } जिसमें:
फ़ील्ड: firstName, lastName, email, address1, city, country, phone, postalCode
प्रकार: स्ट्रिंग
फ़ील्ड: organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber
प्रकार: स्ट्रिंग या null
contacts_list — संपर्कों की सूचीआपके खाते के अंतर्गत सहेजे गए सभी संपर्कों की सूची देता है, ताकि आप डुप्लिकेट बनाने या अपने डोमेनों में खोजने के बजाय किसी मौजूदा संपर्क (उसके contact ID द्वारा) को ढूँढकर फिर से उपयोग कर सकें। सूची paginated और sortable है, और domains_list के अनुरूप है।
पैरामीटर: take
आवश्यक: नहीं
प्रकार & सीमाएँ: प्रति पृष्ठ आइटम, 1–100। डिफ़ॉल्ट 10।
पैरामीटर: skip
आवश्यक: नहीं
प्रकार & सीमाएँ: छोड़ने के लिए आइटम, 0 या अधिक। डिफ़ॉल्ट 0।
पैरामीटर: orderBy
आवश्यक: नहीं
प्रकार & सीमाएँ: अधिकतम 8 sort keys: name, email, organization; descending के लिए - प्रीफ़िक्स करें (उदा. -name)।
रिटर्न — { items, total } जहाँ total खाते पर अद्वितीय संपर्कों की संख्या है (contact ID द्वारा deduplicated, पृष्ठ आकार नहीं), और प्रत्येक आइटम में इतना डेटा होता है कि बिना follow-up call के संपर्कों में अंतर किया जा सके। यदि खाते में एक ही contact ID के लिए duplicate entries हैं, तो उन्हें एक में समेट दिया जाता है, इसलिए total raw server-side rows के बजाय distinct contacts की गिनती करता है:
फ़ील्ड: contactId
प्रकार: स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक)। इसे contacts_get, domain_register, या domain_set_contacts को पास करें।
फ़ील्ड: name
प्रकार: स्ट्रिंग — संपर्क का नाम।
फ़ील्ड: email
प्रकार: स्ट्रिंग या null जब संपर्क के लिए कोई ईमेल रिकॉर्ड में न हो।
फ़ील्ड: organization
प्रकार: स्ट्रिंग या null जब संपर्क के लिए कोई organization रिकॉर्ड में न हो।
{"items": [{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }],"total": 1}
डोमेन नाम इनपुट (domain/domainName) Unicode (IDN) या ASCII (A-label) स्वीकार करते हैं — किसी भी स्थिति में, टूल उपयोग से पहले नाम को अपने-आप punycode में normalize कर देता है। domains_check_availability और domain_register को अतिरिक्त रूप से ऐसा TLD चाहिए जिसे Spaceship पंजीकरण के लिए समर्थन देता हो: जिस डोमेन का TLD समर्थित नहीं है, उसे जाँचा या शुल्कित करने के बजाय अनुपलब्ध माना जाता है। अन्य डोमेन टूल्स (domains_list, domain_set_contacts, domain_set_nameservers) और DNS टूल्स केवल नाम को normalize करते हैं और TLD support के आधार पर कभी अस्वीकार नहीं करते।
domains_list — डोमेनों की सूचीआपके डोमेनों की paginated सूची प्राप्त करता है। इसके बजाय नाम से एकल डोमेन प्राप्त करने के लिए domain पास करें (तब pagination और ordering को अनदेखा किया जाता है, और यदि वे दिए गए हों तो परिणाम में ऐसा बताने वाला note शामिल होता है)।
पैरामीटर: domain
आवश्यक: नहीं
प्रकार & सीमाएँ: एकल डोमेन प्राप्त करने के लिए पूर्णतः योग्य डोमेन नाम। Unicode (IDN) या ASCII (A-label) स्वीकार करता है — अपने-आप punycode में normalize होता है।
पैरामीटर: take
आवश्यक: नहीं
प्रकार & सीमाएँ: प्रति पृष्ठ आइटम, 1–100। डिफ़ॉल्ट 10।
पैरामीटर: skip
आवश्यक: नहीं
प्रकार & सीमाएँ: छोड़ने के लिए आइटम, 0 या अधिक। डिफ़ॉल्ट 0।
पैरामीटर: orderBy
आवश्यक: नहीं
प्रकार & सीमाएँ: अधिकतम 8 sort keys: name, unicodeName, registrationDate, expirationDate; descending के लिए - प्रीफ़िक्स करें (उदा. -expirationDate)।
रिटर्न — { items, total } जहाँ प्रत्येक आइटम एक डोमेन का वर्णन करता है:
फ़ील्ड: name / unicodeName
अर्थ: ASCII और Unicode रूप में डोमेन नाम।
फ़ील्ड: isPremium
अर्थ: क्या डोमेन एक premium नाम है।
फ़ील्ड: autoRenew
अर्थ: क्या auto-renew सक्षम है।
फ़ील्ड: registrationDate / expirationDate
अर्थ: पंजीकरण और समाप्ति के timestamps।
फ़ील्ड: lifecycleStatus
अर्थ: creating, registered, grace1, grace2, या redemption।
फ़ील्ड: verificationStatus
अर्थ: verification, success, failed, या null जब लागू न हो।
फ़ील्ड: eppStatuses
अर्थ: रजिस्ट्री स्टेटस कोड (उदा. transfer locks)।
फ़ील्ड: suspensions
अर्थ: सक्रिय निलंबन, जिनमें प्रत्येक के साथ एक reasonCode होता है।
फ़ील्ड: privacyProtection
अर्थ: { level: "public" | "high", contactForm: boolean }।
फ़ील्ड: nameservers
अर्थ: { provider: "basic" | "custom", hosts: [...] }।
फ़ील्ड: contacts
अर्थ: Contact IDs: registrant, साथ में admin/tech/billing (null हो सकते हैं) और attributes (extended-attribute contact IDs की सूची, या null)। contacts_get के माध्यम से पढ़े जा सकते हैं।
Spaceship MCP ऊपर के हर फ़ील्ड को भरता है — जिनमें contacts, eppStatuses, suspensions, verificationStatus, nameservers, एक वास्तविक autoRenew, और जहाँ डोमेन में हो वहाँ एक अलग unicodeName शामिल हैं — multi-item list और single-domain fetches दोनों के लिए।
domains_check_availability — डोमेन उपलब्धता जाँचेंजाँचता है कि एक या अधिक डोमेन नाम पंजीकरण के लिए उपलब्ध हैं या नहीं। एक नाम के लिए single-domain endpoint और कई नामों के लिए bulk endpoint का उपयोग करता है। जिस डोमेन का TLD पंजीकरण के लिए समर्थित नहीं है, उसे availability check पर भेजा ही नहीं जाता — उसे तुरंत tldNotSupported के रूप में लौटाया जाता है।
पैरामीटर: domains
आवश्यक: हाँ
प्रकार & सीमाएँ: 1–20 पूर्णतः योग्य डोमेन नाम। प्रत्येक Unicode (IDN) या ASCII (A-label) स्वीकार करता है — अपने-आप punycode में normalize होता है।
रिटर्न — { results }, अनुरोधित प्रत्येक नाम के लिए एक प्रविष्टि:
फ़ील्ड: domain
अर्थ: जाँचा गया नाम।
फ़ील्ड: result
अर्थ: available, taken, invalidDomainName, tldNotSupported, या unexpectedError।
फ़ील्ड: premiumPricing
अर्थ: premium नामों के लिए: { operation, price, currency } की सूची, जहाँ operationregister, transfer, renew, या restore होता है। सामान्य नामों के लिए खाली।
फ़ील्ड: price
अर्थ: available नामों (standard और premium) के लिए: डोमेन को उस सबसे छोटी अवधि के लिए पंजीकृत करने की USD कीमत जिसे TLD अनुमति देता है — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }। amount उस पूरी अवधि के लिए देय कुल राशि है; pricedYears बताता है कि यह कितने वर्षों को कवर करती है। कोई pre-discount या "was" price रिपोर्ट नहीं किया जाता। icannFee ICANN शुल्क (USD) है, जो पहले से शामिल है amount में, और breakdown समझाने के लिए अलग से लौटाया जाता है; यह केवल तब दिखाई देता है जब TLD पर शुल्क लागू होता है।
फ़ील्ड: pricePerYear
अर्थ: price के अंदर: amount को pricedYears से विभाजित किया गया है, ताकि तुलना के लिए हमेशा वार्षिक आँकड़ा उपलब्ध रहे। जब pricedYears 1 हो, तो यह वास्तविक एक-वर्षीय कीमत होती है; इससे ऊपर होने पर यह अवधि का प्रति-वर्ष औसत होता है, न कि ऐसी अवधि जिसे आप खरीद सकते हों।
फ़ील्ड: minRegisterPeriodInYears / maxRegisterPeriodInYears
अर्थ: available नामों के लिए: वह सबसे छोटी और सबसे लंबी पंजीकरण अवधि जिसे वह TLD वास्तव में अनुमति देता है, दो साधारण संख्याओं के रूप में। इन्हें years के लिए वैध मान चुनने हेतु domain_register में उपयोग करें। यदि अनुमत अवधि निर्धारित न की जा सके, तो दोनों छोड़ दिए जाते हैं।
फ़ील्ड: priceUnavailableReason
अर्थ: price के बजाय तब मौजूद होता है जब उपलब्ध नाम के लिए कीमत निर्धारित नहीं की जा सकी हो। जाँच स्वयं फिर भी सफल रहती है।
केवल उपलब्ध नामों की कीमत दी जाती है; taken/invalid परिणामों में न तो price होता है और न ही priceUnavailableReason।
अधिकांश TLD एक वर्ष की अनुमति देते हैं, लेकिन कुछ नहीं देते।.ai, उदाहरण के लिए, न्यूनतम दो वर्ष रखता है। ऐसे मामलों में, price.amount न्यूनतम अवधि के लिए कुल राशि होती है — न कि ऐसी एक-वर्षीय कीमत जिस पर आप कार्रवाई कर सकें — और price.pricedYears यही बताता है:
{"domain": "example.ai","result": "available","premiumPricing": [],"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },"minRegisterPeriodInYears": 2,"maxRegisterPeriodInYears": 10}
pricePerYear यहाँ मौजूद है — 159.96 को जिन दो वर्षों के लिए यह लागू है उनसे विभाजित करने पर 79.98 मिलता है। यह कुल राशि को अवधि से विभाजित करके निकाला गया मान है, न कि ऐसी कीमत जो आप एक वर्ष के लिए चुका सकते हों (एक-वर्षीय .ai पंजीकरण खरीदा नहीं जा सकता)। हमेशा amount को pricedYears के साथ दिखाएँ ("2 वर्षों के लिए $159.96"), कभी भी केवल amount अकेले नहीं। सामान्य TLD के लिए, pricedYears1 होता है और pricePerYearamount के बराबर होता है।
domain_register — डोमेन पंजीकृत करेंडोमेन पंजीकृत (खरीदता) करता है। यह आपके खाते की डिफ़ॉल्ट भुगतान विधि से बिल करता है और अपरिवर्तनीय है। अनुशंसित क्रम: domains_check_availability → domain_register। जिस डोमेन का TLD पंजीकरण के लिए समर्थित नहीं है, उसे तुरंत अस्वीकार कर दिया जाता है — किसी भी availability check, pricing, या charge से पहले।
years TLD की अपनी अनुमत अवधि के भीतर होना चाहिए। नीचे दी गई 1–10 सीमा सभी TLDs में बाहरी सीमा है; प्रत्येक TLD इससे संकीर्ण होता है। .ai 2–10 की अनुमति देता है, .co और .io 1–5 की अनुमति देते हैं, .sg 1–2, .fr ठीक 1। उस सीमा के बाहर का years मान अनुमत सीमा का नाम बताने वाली validation error के साथ अस्वीकार किया जाता है — किसी भी availability check, pricing या charge से पहले — और यह मान आपके लिए चुपचाप समायोजित नहीं किया जाता:
.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.
पहले minRegisterPeriodInYears/maxRegisterPeriodInYears को domains_check_availability से पढ़ें और उसके भीतर का years चुनें। वही जाँच पुष्टि करने वाली (confirmationResponse: "accept") कॉल पर फिर से चलती है, इसलिए पुष्टि करके इसे कभी bypass नहीं किया जा सकता।
शुल्क से पहले दो-चरणीय पुष्टि। पहले confirmationToken को unset रखकर कॉल करें: टूल डोमेन की नई कीमत निकालता है, पूरी पुष्टि बनाता है — अवधि, price breakdown (किसी भी ICANN शुल्क और डोमेन premium है या नहीं सहित), auto-renew, WHOIS privacy, payment source, और registrant/admin/tech/billing contacts (registrant के समान संपर्क को "same as registrant" के रूप में दिखाया जाता है) — और status: "confirmation_required" को उस price और एक नए confirmationToken के साथ लौटाता है। इस कॉल पर कुछ भी पंजीकृत या बिल नहीं किया जाता। पूरी पुष्टि टूल का response text है; इसे उपयोगकर्ता को जैसा है वैसा दिखाएँ। जब वे सहमत हों, तो ठीक वही arguments फिर से इस confirmationToken और confirmationResponse: "accept" के साथ खरीद सबमिट करने के लिए कॉल करें, या confirmationResponse: "decline" के साथ इसे रद्द करें — decline पर कुछ भी बिल नहीं किया जाता। यह token इन्हीं सटीक arguments और quoted price से बँधा होता है और थोड़े समय बाद समाप्त हो जाता है: पुष्टि कॉल पर missing, expired, tampered, या अब मेल न खाने वाला token बस एक बिल्कुल नई पुष्टि नए token के साथ लौटाता है — कभी error नहीं, कभी charge नहीं। यदि किसी भी कॉल पर कीमत निर्धारित नहीं की जा सके, तो टूल token के बजाय status: "price_unavailable" लौटाता है और कभी charge नहीं करता; बाद में फिर प्रयास करें। पुष्टि की गई कॉल तुरंत status: "pending" और एक operationId के साथ लौटती है — पंजीकरण background में पूरा होता है; इसे async_operation_get से जाँचें।
पैरामीटर: domain
आवश्यक: हाँ
प्रकार & सीमाएँ: पंजीकरण के लिए पूर्णतः योग्य डोमेन नाम, उदा. example.com। Unicode (IDN) या ASCII (A-label) स्वीकार करता है — अपने-आप punycode में normalize होता है।
पैरामीटर: years
आवश्यक: हाँ
प्रकार & सीमाएँ: वर्षों में पंजीकरण अवधि। 1–10 बाहरी सीमा है; स्वीकृत सीमा TLD की अपनी होती है — minRegisterPeriodInYears/maxRegisterPeriodInYears को domains_check_availability से देखें। सीमा से बाहर के मान अस्वीकार किए जाते हैं, समायोजित नहीं।
पैरामीटर: autoRenew
आवश्यक: हाँ
प्रकार & सीमाएँ: Boolean। जब true हो, तो डोमेन समाप्ति पर खाते की डिफ़ॉल्ट भुगतान विधि का उपयोग करके अपने-आप नवीनीकृत होता है।
पैरामीटर: privacy.level
आवश्यक: हाँ
प्रकार & सीमाएँ: high registrant के संपर्क विवरण को सार्वजनिक WHOIS से छिपाता है; public उन्हें प्रकाशित करता है।
पैरामीटर: privacy.userConsent
आवश्यक: हाँ
प्रकार & सीमाएँ: Boolean। आपको पुष्टि करनी होगी कि आप चुनी गई privacy setting से सहमत हैं।
पैरामीटर: contacts.registrant
आवश्यक: हाँ
प्रकार & सीमाएँ: contactId स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक), contacts_save से।
पैरामीटर: contacts.admin
आवश्यक: हाँ
प्रकार & सीमाएँ: contactId स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक), contacts_save से।
पैरामीटर: contacts.tech
आवश्यक: हाँ
प्रकार और सीमाएँ: contactId स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक), contacts_save से।
पैरामीटर: contacts.billing
आवश्यक: हाँ
प्रकार और सीमाएँ: contactId स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक), contacts_save से।
पैरामीटर: contacts.attributes
आवश्यक: नहीं
प्रकार और सीमाएँ: विस्तारित-एट्रिब्यूट संपर्क आईडी की ऐरे (अधिकतम 5); केवल कुछ TLDs के लिए आवश्यक, अन्यथा इसे छोड़ दें या null रखें।
पैरामीटर: confirmationToken
आवश्यक: नहीं
प्रकार और सीमाएँ: स्ट्रिंग, अधिकतम 4096 वर्ण। सर्वर द्वारा जारी किया गया टोकन, जो इन्हीं सटीक आर्ग्युमेंट्स के लिए पिछले domain_register कॉल से लौटाया गया था। नए पंजीकरण प्रयास के लिए पहली कॉल पर इसे छोड़ दें। यह थोड़े समय बाद समाप्त हो जाता है और जिन सटीक आर्ग्युमेंट्स और कीमत के लिए जारी किया गया था, उनसे बंधा होता है — इस पर कार्रवाई करने के लिए इसे बिना बदले, confirmationResponse के साथ फिर से भेजें।
पैरामीटर: confirmationResponse
आवश्यक: सशर्त
प्रकार और सीमाएँ: "accept" या "decline"। केवल वैध confirmationToken के साथ ही अर्थपूर्ण। "accept" उस पुष्टि में दिखाए गए (बिल किए गए) पंजीकरण को सबमिट करता है; "decline" बिना शुल्क लिए इसे रद्द करता है। पहली कॉल पर इसे छोड़ दें।
रिटर्न — पहली कॉल के बाद (कुछ भी चार्ज नहीं किया गया):
{"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."}
इस JSON के साथ, टूल का रिस्पॉन्स टेक्स्ट उपयोगकर्ता को दिखाने के लिए पूरी पुष्टि है — यह ऊपर दिए गए डोमेन, अवधि और कीमत को दोहराता है, साथ ही Auto-renew: on/off, WHOIS privacy: on/off, Payment source: Spaceship account funds, और प्रत्येक registrant/admin/tech/billing संपर्क (नाम, ईमेल, देश — registrant से मेल खाने वाला संपर्क "same as registrant" पढ़ता है) के लिए पंक्तियाँ शामिल करता है, जिसके बाद अगली कॉल के लिए निर्देश आते हैं। बहु-वर्षीय अवधि के लिए, price.amount पूरी अवधि का कुल है और price.pricePerYear उस कुल को अवधि से विभाजित करके प्राप्त मान है — उदाहरण के लिए years: 5 पर .com{ "amount": 48.52, "pricedYears": 5, "pricePerYear": 9.70 } लौटाता है, और example.ai के साथ years: 2{ "amount": 159.96, "pricedYears": 2, "pricePerYear": 79.98 } लौटाता है।
रिटर्न — confirmationResponse: "accept" के बाद (पंजीकरण सबमिट किया गया):
{"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."}
रिटर्न — confirmationResponse: "decline" के बाद (कुछ भी चार्ज नहीं किया गया):
{"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."}
रिटर्न — यदि कीमत निर्धारित नहीं की जा सकती, किसी भी कॉल पर:
{"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 हो सकता है:
स्थिति: confirmation_required
अर्थ: पूर्वावलोकन — कुछ भी चार्ज नहीं किया गया। उपयोगकर्ता को रिस्पॉन्स टेक्स्ट दिखाएँ, फिर इस confirmationToken और confirmationResponse के साथ फिर से कॉल करें। यह एक नए टोकन के साथ तब भी लौटाया जाता है, जब सबमिट किया गया confirmationToken गायब हो, समाप्त हो गया हो, छेड़छाड़ किया गया हो, या अब मौजूदा आर्ग्युमेंट्स/कीमत से मेल न खाता हो — कभी भी त्रुटि नहीं।
स्थिति: cancelled
अर्थ: खरीद अस्वीकार कर दी गई थी (confirmationResponse: "decline"), इसलिए कुछ भी सबमिट नहीं किया गया।
स्थिति: pending
अर्थ: सबमिट किया गया; रजिस्ट्री इसे बैकग्राउंड में पूरा कर रही है। async_operation_get को operationId के साथ पोल करें।
स्थिति: price_unavailable
अर्थ: कीमत निर्धारित नहीं की जा सकी, इसलिए कोई टोकन जारी नहीं किया गया और कुछ भी बिल नहीं किया गया। बाद में पुनः प्रयास करें।
operationId एक साधारण स्ट्रिंग है — इसे async_operation_get को पास करें, जो बताता है कि पंजीकरण अंततः सफल होता है या विफल। price जो confirmation_required पर दिखाया गया है, वही ठीक-ठीक confirmationResponse: "accept" पर चार्ज किया जाएगा — price.amount उस पूरी अवधि का कुल है और price.pricedYears अवधि बताता है, इसलिए दोनों को हमेशा साथ में दिखाएँ। जब TLD पर ICANN शुल्क लागू होता है, price.amount में वह पहले से शामिल होता है और price.icannFee शुल्क की राशि बताता है ताकि उसे समझाया जा सके।
domain_set_contacts — डोमेन संपर्क सेट करेंआपके स्वामित्व वाले डोमेन को असाइन किए गए संपर्कों को बदलता है। तुरंत पूरा होता है (पोल करने के लिए कोई ऑपरेशन नहीं)।
पैरामीटर: domainName
आवश्यक: हाँ
प्रकार और सीमाएँ: पूर्णतः योग्य डोमेन नाम। Unicode (IDN) या ASCII (A-label) स्वीकार करता है — स्वचालित रूप से punycode में सामान्यीकृत किया जाता है।
पैरामीटर: registrant
आवश्यक: हाँ
प्रकार और सीमाएँ: contactId स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक), contacts_save से।
पैरामीटर: admin
आवश्यक: नहीं
प्रकार और सीमाएँ: contactId स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक) या null।
पैरामीटर: tech
आवश्यक: नहीं
प्रकार और सीमाएँ: contactId स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक) या null।
पैरामीटर: billing
आवश्यक: नहीं
प्रकार और सीमाएँ: contactId स्ट्रिंग (27–32 अल्फ़ान्यूमेरिक) या null।
पैरामीटर: attributes
आवश्यक: नहीं
प्रकार और सीमाएँ: विस्तारित-एट्रिब्यूट संपर्क आईडी की ऐरे (अधिकतम 5); केवल कुछ TLDs के लिए आवश्यक, अन्यथा इसे छोड़ दें या null रखें।
रिटर्न
{ "verificationStatus": "verification" }
लौटाया गया verificationStatus ICANN RAA ईमेल सत्यापन को दर्शाता है: verification — registrant को अपना ईमेल पता पुष्टि करना होगा (एक पुष्टि ईमेल भेजा जाता है); success — पहले से पुष्टि हो चुकी है; null — RAA सत्यापन इस डोमेन पर लागू नहीं होता।
domain_set_nameservers — डोमेन नेमसर्वर सेट करेंकिसी डोमेन के registrar-level nameservers को बदलता है। तुरंत पूरा होता है (पोल करने के लिए कोई ऑपरेशन नहीं)। यह परिवर्तन बाद में domains_list द्वारा परिलक्षित होता है।
पैरामीटर: domainName
आवश्यक: हाँ
प्रकार और सीमाएँ: पूर्णतः योग्य डोमेन नाम। Unicode (IDN) या ASCII (A-label) स्वीकार करता है — स्वचालित रूप से punycode में सामान्यीकृत किया जाता है।
पैरामीटर: provider
आवश्यक: हाँ
प्रकार और सीमाएँ: basic (Spaceship के डिफ़ॉल्ट nameservers) या custom (आपके अपने hosts)।
पैरामीटर: hosts
आवश्यक: सशर्त
प्रकार और सीमाएँ: जब providercustom हो, तब आवश्यक: 2–12 nameserver hostnames (प्रत्येक एक वैध FQDN, 4–255 वर्ण)। जब providerbasic हो, तब इसे छोड़ना अनिवार्य है।
रिटर्न
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }
जिस स्थिति में डोमेन पहले से है, उसी स्थिति को फिर से लागू करना (उदाहरण के लिए, जब वह पहले से basic हो तब basic सेट करना) no-op success के बजाय validation error लौटाता है — इसे पुनः प्रयास करने योग्य विफलता नहीं, बल्कि अपेक्षित परिणाम मानें।
इन टूल्स द्वारा लिया जाने वाला domainName Unicode (IDN) या ASCII (A-label) स्वीकार करता है और स्वचालित रूप से punycode में सामान्यीकृत किया जाता है; यहाँ TLD समर्थन लागू नहीं किया जाता।
dns_records_get — DNS रिकॉर्ड प्राप्त करेंकिसी डोमेन के लिए DNS resource records की पेजिनेटेड सूची प्राप्त करता है।
पैरामीटर: domainName
आवश्यक: हाँ
प्रकार और सीमाएँ: वह डोमेन जिसके रिकॉर्ड प्राप्त करने हैं।
पैरामीटर: take
आवश्यक: नहीं
प्रकार और सीमाएँ: प्रति पेज आइटम, 1–500। डिफ़ॉल्ट 100।
पैरामीटर: skip
आवश्यक: नहीं
प्रकार और सीमाएँ: छोड़ने के लिए आइटम, 0 या अधिक। डिफ़ॉल्ट 0।
पैरामीटर: orderBy
आवश्यक: नहीं
प्रकार और सीमाएँ: अधिकतम 8 sort keys: type, -type, name, -name।
रिटर्न — { items, total }। प्रत्येक आइटम Record shapes में वर्णित अनुसार एक रिकॉर्ड है, साथ ही एक वैकल्पिक group फ़ील्ड भी हो सकती है, जो बताती है कि रिकॉर्ड कहाँ से आता है (custom — आपके द्वारा बनाया गया, product — किसी Spaceship उत्पाद द्वारा प्रबंधित, personalNs — व्यक्तिगत nameservers)।
dns_records_save — DNS रिकॉर्ड सहेजेंकस्टम DNS रिकॉर्ड जोड़ता है या मौजूदा रिकॉर्ड का TTL अपडेट करता है। TXT रिकॉर्ड को छोड़कर, रिकॉर्ड case-insensitively मैच किए जाते हैं (TXT case-sensitive हैं)।
पैरामीटर: domainName
आवश्यक: हाँ
प्रकार और सीमाएँ: वह डोमेन जिसके रिकॉर्ड अपडेट करने हैं।
पैरामीटर: records
आवश्यक: हाँ
प्रकार और सीमाएँ: 1–500 रिकॉर्ड — Record shapes देखें। प्रत्येक में एक वैकल्पिक ttl शामिल हो सकता है।
पैरामीटर: force
आवश्यक: नहीं
प्रकार और सीमाएँ: बूलियन। conflict-resolution check को छोड़ देता है और zone update को force करता है।
रिटर्न — { "saved": <number> }, सबमिट किए गए रिकॉर्ड की संख्या। सफल रिस्पॉन्स का अर्थ है कि सभी रिकॉर्ड स्वीकार कर लिए गए; यदि कोई भी रिकॉर्ड विफल होता है, तो पूरी कॉल इसके बजाय त्रुटि लौटाती है।
dns_records_delete — DNS रिकॉर्ड हटाएँकस्टम DNS रिकॉर्ड हटाता है। हटाए गए रिकॉर्ड वापस नहीं लाए जा सकते। TXT रिकॉर्ड को छोड़कर, रिकॉर्ड case-insensitively मैच किए जाते हैं (TXT case-sensitive हैं)।
पैरामीटर: domainName
आवश्यक: हाँ
प्रकार और सीमाएँ: वह डोमेन जिसके रिकॉर्ड हटाने हैं।
पैरामीटर: records
आवश्यक: हाँ
प्रकार और सीमाएँ: 1–500 रिकॉर्ड जो मौजूदा रिकॉर्ड की पहचान करते हैं — save जैसी ही shapes, लेकिन ttl के बिना।
रिटर्न — { "deleted": <number> }, सबमिट किए गए रिकॉर्ड की संख्या। यदि किसी भी रिकॉर्ड का मिलान नहीं हो पाता, तो पूरी कॉल विफल हो जाती है और कुछ भी हटाया नहीं जाता।
हर रिकॉर्ड में होता है:
type — नीचे दिए गए 13 समर्थित प्रकारों में से एक।
name — रिकॉर्ड का नाम, डोमेन को छोड़कर: स्वयं डोमेन (apex) के लिए @ और wildcard के लिए * का उपयोग करें।
ttl (केवल save, वैकल्पिक) — सेकंड में cache time, 60–3600।
प्रकार-विशिष्ट फ़ील्ड:
प्रकार: A
फ़ील्ड: address — IPv4 पता।
प्रकार: AAAA
फ़ील्ड: address — IPv6 पता।
प्रकार: CNAME
फ़ील्ड: cname — canonical domain name (अधिकतम 253 वर्ण)।
प्रकार: ALIAS
फ़ील्ड: aliasName — canonical domain name; apex के लिए CNAME-जैसा व्यवहार, जहाँ CNAME की अनुमति नहीं है।
प्रकार: NS
फ़ील्ड: nameserver — nameserver नाम।
प्रकार: PTR
फ़ील्ड: pointer — दिए गए IP पते के लिए डोमेन नाम।
प्रकार: TXT
फ़ील्ड: value — टेक्स्ट मान (case-sensitive मिलान)।
प्रकार: MX
फ़ील्ड: exchange — मेल सर्वर; preference — प्राथमिकता (0–65535, कम मान को वरीयता)।
प्रकार: CAA
फ़ील्ड: flag — 0 या 128 (critical bit); tag — issue, issuewild, या iodef; value — वैकल्पिक पैरामीटर के साथ CA identifier।
प्रकार: SRV
फ़ील्ड: service (उदा. _sip); protocol (उदा. _tcp); priority और weight (0–65535); port (1–65535); target — सर्वर डोमेन नाम।
प्रकार: TLSA
फ़ील्ड्स: usage, selector, matching (प्रत्येक 0–255); port — * या _<1–65535>; protocol (उदा. _tcp); associationData — प्रमाणपत्र हैश या डेटा।
प्रकार: HTTPS
फ़ील्ड्स: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN या .; वैकल्पिक port (* या _<1–65535>), scheme (_https होना चाहिए जब port सेट हो), svcParams.
प्रकार: SVCB
फ़ील्ड्स: svcPriority (0–65535; 0 = AliasMode); targetName — FQDN या .; वैकल्पिक port, scheme (उदा. _tcp), svcParams.
async_operation_get — असमकालिक संचालन स्थिति प्राप्त करेंकिसी अन्य टूल द्वारा शुरू किए गए लंबे समय तक चलने वाले संचालन की जाँच करता है (वर्तमान में domain_register)। इसे operationId को उस operationId पर सेट करके कॉल करें जो उस टूल ने लौटाया था, और तब तक दोहराएँ जब तक statussuccess या failed न हो जाए।
पैरामीटर: operationId
आवश्यक: हाँ
प्रकार और सीमाएँ: अल्फ़ान्यूमेरिक स्ट्रिंग, अधिकतम 36 वर्ण, उस टूल द्वारा लौटाई गई जिसने संचालन शुरू किया था।
रिटर्न्स
फ़ील्ड: operationId
अर्थ: पोल किया गया संचालन।
फ़ील्ड: status
अर्थ: pending, success, या failed.
फ़ील्ड: type
अर्थ: संचालन प्रकार, या null.
फ़ील्ड: details
अर्थ: संचालन के बारे में अतिरिक्त विवरण, या null.
फ़ील्ड: createdAt / modifiedAt
अर्थ: संचालन कब बनाया गया / अंतिम बार अपडेट किया गया (modifiedAtnull हो सकता है)।
जब कोई कॉल विफल होती है, तो टूल एक कोड और मानव-पठनीय detail के साथ त्रुटि लौटाता है, जो बताता है कि क्या गलत हुआ — उदाहरण के लिए अमान्य इनपुट (गलत स्वरूप वाला डोमेन नाम या संपर्क ID), ऐसा डोमेन या संपर्क जो मौजूद नहीं है, या वर्तमान स्थिति के साथ टकराव। यदि किसी टूल को इसलिए अस्वीकार कर दिया जाता है क्योंकि सहायक को उस तक पहुँच नहीं दी गई थी, तो Spaceship MCP को फिर से कनेक्ट करें और वह जो पहुँच माँगता है उसे स्वीकृत करें।