Spaceship MCP 可将你的 AI 助手(例如 Claude)连接到你的 Spaceship 账户。通过它,助手可以代表你检查和注册域名、管理域名联系人,以及读取或编辑 DNS 记录——你只需用自然语言提出请求,助手就会调用正确的工具。
你需要一个 Spaceship 账户。Spaceship MCP 可在 https://mcp.spaceship.com/mcp 使用。
如何连接取决于您的 AI 助手:
Claude(网页和桌面版) — 打开“设置”,选择“连接器”,在连接器目录中找到 Spaceship 并添加它。Anthropic 的 Claude 是我们目前已验证可与 Spaceship MCP 配合使用的客户端。
注意:虽然通过 Spaceship MCP 进行域名注册在整体上已得到完全支持,但此功能目前尚无法通过 Claude 连接器本身使用。搜索、域名查询、联系人管理和 DNS 记录管理现已可用,并已验证当前可与 Claude 配合使用。
其他 MCP 客户端 — 添加远程 MCP 服务器,并将其指向 https://mcp.spaceship.com/mcp。其他客户端可能也能使用,但我们尚未验证。
连接时,系统会要求你登录 Spaceship 并授予助手访问你账户的权限。助手可使用哪些工具取决于你批准的访问权限 — 如果某个工具因未授予访问权限而被拒绝,请重新连接并批准其所需的访问权限。
工具:contacts_save
作用:保存联系人详细信息并获取联系人 ID
工具: contacts_get
作用: 通过 ID 读取已保存的联系人
工具: contacts_list
作用: 列出所有已保存的联系人,以便查找并重复使用其中一个
工具: domains_list
作用: 列出你的域名,或查找一个域名
工具: domains_check_availability
作用: 检查域名是否可注册
工具: domain_register
作用: 注册(购买)域名——会花费资金
工具: domain_set_contacts
作用: 为你拥有的域名分配联系人
工具: domain_set_nameservers
作用: 将域名切换为基础或自定义名称服务器
工具:dns_records_get
作用:读取域名的 DNS 记录
工具:dns_records_save
作用:添加 DNS 记录或更新其 TTL
工具:dns_records_delete
作用:删除 DNS 记录
工具:async_operation_get
作用:检查长时间运行操作的状态
凡是需要联系人的地方(domain_register、domain_set_contacts),每个角色都接收一个 contactId 字符串——绝不能内联联系人详细信息。请先使用 contacts_save 保存联系人(它会返回其 contactId),然后在接受联系人的地方传入该 id。不存在内联自动保存;角色不能接收完整的联系人对象。您也可以重复使用来自 contacts_list 结果中的 contactId,或您从 domains_list 结果中读取到的 contactId。
一个 contactId 是由 27–32 个字母数字字符 组成的字符串。只需在接受联系人的地方将其传回即可。
有几个工具被设计为配合使用:一个工具的输出会成为下一个工具的输入。
contacts_save — 保存注册人、管理员、技术和账单联系人(如果你还没有他们的 ID),并保留为每个联系人返回的 contactId。在注册之前,联系人必须已存在。
domains_check_availability — 检查你想要的名称。仅当 result 为 available 时才继续。每个可用名称都包含以美元计的注册 price(标准和高级域名均适用),或者在无法确定时显示 priceUnavailableReason,以及 minRegisterPeriodInYears 和 maxRegisterPeriodInYears — 即该 TLD 允许的期限。请注意,price 涵盖 price.pricedYears 年,这是该 TLD 允许的最短期限,并不总是 1 年。
domain_register(预览)— 在 confirmationToken 未设置的情况下调用,以获取 status: confirmation_required、一个新的 confirmationToken,以及将被收取的 price。不会产生任何费用。该工具的响应文本是完整的确认信息 — 包括期限、价格明细、自动续费、WHOIS 隐私、付款来源,以及注册人/管理员/技术/账单联系人 — 请原样展示给用户。从第 2 步中选择介于 minRegisterPeriodInYears 和 maxRegisterPeriodInYears 之间的 years — 超出范围的值会被直接拒绝。将每个联系人角色作为你在第 1 步中保存的 contactId 传递。
domain_register(接受/拒绝)— 用户同意后,使用完全相同的参数再次调用,并额外传入该 confirmationToken 和 confirmationResponse: "accept"。这将从账户的默认付款方式扣费,且不可撤销。它会立即返回 status: pending 和一个 operationId — 注册将在后台完成。若要取消,请使用相同的 confirmationToken 和 confirmationResponse: "decline" 再次调用 — 不会产生任何费用。该令牌会在短时间后过期,并且与其签发时的精确参数和价格绑定;如果它缺失、已过期或不再匹配,调用将返回一个全新的确认,而不是错误 — 绝不会扣费。如果任一调用中无法确定价格,工具将返回 status: price_unavailable,且不会收取任何费用。
async_operation_get — 传入第 4 步中的 operationId 以检查进度。重复调用,直到 status 变为 success 或 failed。
contacts_save ──▶ domains_check_availability ──▶ domain_register ──▶ domain_register ──▶ async_operation_get(contactId ID) (可用?+ 价格 + (token 未设置: (token + (pending →min/maxRegisterPeriod) 确认、 accept: operationId, success/failed)confirmationToken, pending)不扣费)
domain_set_contacts — 通过 contactId 将联系人分配给域名(如有需要,先用 contacts_save 保存)。此操作会立即完成,并返回一个 verificationStatus:verification 表示注册人必须先确认其电子邮件地址,更改才会完全生效(系统会向其发送电子邮件);success 表示已确认;null 表示该域名无需确认。
domains_list — 查找该域名并查看其当前的 nameservers({ provider, hosts })。
domain_set_nameservers — 使用 provider: "basic" 将其切换为 Spaceship 的默认名称服务器(不带 hosts),或使用 provider: "custom" 和 2–12 个 hosts 的列表将其指向你自己的名称服务器。它会返回结果 { provider, hosts },随后再次调用 domains_list 将反映该更改。重新应用域名已处于的状态会返回验证错误,而不是无操作 — 这应视为预期结果,而不是需要重试的失败。
domains_list — 找到你要管理的域名(如果你知道名称,也可以直接传入)。
dns_records_get — 读取该域名当前的记录。
dns_records_save 或 dns_records_delete — 添加、更新或删除记录。由 dns_records_get 返回的记录,其结构与保存和删除工具接受的结构相同(删除时仅省略 ttl),因此助手可以读取、调整并写回。除 TXT 记录外,匹配均不区分大小写;TXT 记录区分大小写。
domains_list — 通过排序分页查看你的所有域名,或按名称获取单个域名。每个域名都包含其到期日期、自动续费设置、状态、名称服务器、隐私保护以及已分配的联系人 ID。
contacts_list — 分页查看保存在你账户中的所有联系人,以查找并重用现有联系人(通过其联系人 ID),而不是创建重复项。
contacts_get — 查询你在域名上或 contacts_list 结果中看到的任何联系人 ID 的详细信息。
每个工具都会以结构化 JSON 形式返回其结果。长时间运行的操作(目前仅 domain_register)会返回一个操作引用,可使用 async_operation_get 进行轮询;所有其他工具都会立即完成。
联系人是附加到域名注册上的个人或组织(注册人、管理员、技术、账单)。联系人在所有地方都通过其 联系人 ID 引用 — 这是一个不透明字符串。
contacts_save — 保存联系人保存联系人详细信息并返回生成的联系人 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 — 获取联系人通过联系人 ID 读取已保存联系人的详细信息。联系人 ID 来自 contacts_save、contacts_list,或 domains_list 结果中的 contacts 字段。
参数: contactId
必填: 是
类型和限制: 联系人 ID,27–32 个字母数字字符。
返回 — { contact },包含:
字段: firstName、lastName、email、address1、city、country、phone、postalCode
类型: 字符串
字段: organization、address2、stateProvince、phoneExt、fax、faxExt、taxNumber
类型: 字符串或 null
contacts_list — 列出联系人列出你账户下保存的所有联系人,这样你就可以找到并重复使用现有联系人(通过其联系人 ID),而不必创建重复项或在你的域名中逐个查找。该列表支持分页和排序,并与 domains_list 保持一致。
参数: take
必填: 否
类型和限制: 每页项目数,1–100。默认值为 10。
参数: skip
必填: 否
类型和限制: 要跳过的项目数,0 或更多。默认值为 0。
参数: orderBy
必填: 否
类型和限制: 最多 8 个排序键: name、email、organization;降序请加前缀 -(例如 -name)。
返回 — { items, total },其中 total 是账户中唯一联系人的数量(按联系人 ID 去重,而不是页面大小),并且每个项目都包含足够的信息来区分联系人,而无需后续调用。如果账户中同一联系人 ID 存在重复条目,它们会折叠为一个,因此 total 统计的是不同联系人,而不是服务器端原始行数:
字段: contactId
类型: 字符串(27–32 个字母数字字符)。传递给 contacts_get、domain_register 或 domain_set_contacts。
字段: name
类型: 字符串 — 联系人的姓名。
字段: email
类型: 字符串或 null,当联系人没有记录电子邮件时。
字段: organization
类型: 字符串或 null,当联系人没有记录组织时。
{"items": [{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }],"total": 1}
域名输入(domain/domainName)接受 Unicode(IDN)或 ASCII(A-label)——无论哪种方式,工具都会在使用前自动将名称规范化为 punycode。 domains_check_availability 和 domain_register 还要求 TLD 是 Spaceship 支持注册的:如果域名的 TLD 不受支持,则会被视为不可用,而不会被检查或收费。其他域名工具(domains_list、domain_set_contacts、domain_set_nameservers)以及 DNS 工具只会规范化名称,绝不会因 TLD 支持情况而拒绝。
domains_list — 列出域名检索你的域名分页列表。改为传递 domain 可按名称获取单个域名(此时会忽略分页和排序,如果提供了这些参数,结果中会包含一个说明此情况的 note)。
参数: domain
必填: 否
类型和限制: 用于获取单个域名的完全限定域名。接受 Unicode(IDN)或 ASCII(A-label)——会自动规范化为 punycode。
参数: take
必填: 否
类型和限制: 每页项目数,1–100。默认值为 10。
参数: skip
必填: 否
类型和限制: 要跳过的项目数,0 或更多。默认值为 0。
参数: orderBy
必填: 否
类型和限制: 最多 8 个排序键: name、unicodeName、registrationDate、expirationDate;降序请加前缀 -(例如 -expirationDate)。
返回 — { items, total },其中每个项目描述一个域名:
字段: name / unicodeName
含义: ASCII 和 Unicode 形式的域名。
字段: isPremium
含义: 该域名是否为高级域名。
字段: autoRenew
含义: 是否启用了自动续费。
字段: registrationDate / expirationDate
含义: 注册和到期时间戳。
字段: lifecycleStatus
含义: creating、registered、grace1、grace2 或 redemption。
字段: verificationStatus
含义: verification、success、failed,或在不适用时为 null。
字段: eppStatuses
含义: 注册局状态代码(例如转移锁)。
字段: suspensions
含义: 活动中的暂停项,每项都带有一个 reasonCode。
字段: privacyProtection
含义: { level: "public" | "high", contactForm: boolean }。
字段: nameservers
含义: { provider: "basic" | "custom", hosts: [...] }。
字段: contacts
含义: 联系人 ID: registrant,以及 admin/tech/billing(可能为 null)和 attributes(扩展属性联系人 ID 列表,或 null)。可通过 contacts_get 读取。
对于多项列表和单域名获取,Spaceship MCP 都会填充上述每个字段——包括 contacts、eppStatuses、suspensions、verificationStatus、nameservers、真实的 autoRenew,以及当域名存在时单独的 unicodeName。
domains_check_availability — 检查域名可用性检查一个或多个域名是否可供注册。单个名称使用单域名端点,多个名称使用批量端点。对于 TLD 不支持注册的域名,根本不会发送到可用性检查——而是立即返回为 tldNotSupported。
参数: domains
必填: 是
类型和限制: 1–20 个完全限定域名。每个都接受 Unicode(IDN)或 ASCII(A-label)——会自动规范化为 punycode。
返回 — { results },每个请求的名称对应一个条目:
字段: domain
含义: 已检查的名称。
字段: result
含义: available、taken、invalidDomainName、tldNotSupported 或 unexpectedError。
字段: premiumPricing
含义: 对于高级域名: { operation, price, currency } 的列表,其中 operation 为 register、transfer、renew 或 restore。普通域名则为空。
字段: price
含义: 对于 available 的名称(标准和高级):按 该 TLD 允许的最短期限 注册域名的 USD 价格 — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }。 amount 是整个期限的应付总额;pricedYears 说明其覆盖的年数。不报告折扣前价格或“原价”。 icannFee 是 已包含 在 amount 中的 ICANN 费用(USD),单独返回以便解释价格明细;仅当该 TLD 带有费用时才会出现。
字段: pricePerYear
含义: 在 price 内: amount 除以 pricedYears,因此始终可获得年度对比数值。当 pricedYears 为 1 时,它就是真实的一年价格;大于 1 时,它是该期限的年均价格,而不是你可以购买的期限。
字段: minRegisterPeriodInYears / maxRegisterPeriodInYears
含义: 对于 available 的名称:该 TLD 实际允许的最短和最长注册期限,以两个纯数字表示。使用它们为 years 选择一个有效值,以用于 domain_register。如果无法确定允许期限,则两者都会省略。
字段: priceUnavailableReason
含义: 当可用名称的价格无法确定时,会显示此字段而不是 price。检查本身仍然成功。
只有可用名称才会定价;taken/无效结果既不包含 price,也不包含 priceUnavailableReason。
大多数 TLD 允许一年,但有些不允许。.ai 例如,最短期限为两年。对于这些 TLD,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,pricedYears 为 1,且 pricePerYear 等于 amount。
domain_register — 注册域名注册(购买)域名。 这会向你账户的默认付款方式收费,且不可撤销。 推荐顺序: domains_check_availability → domain_register。如果域名的 TLD 不支持注册,则会立即被拒绝——在任何可用性检查、定价或收费之前。
years 必须在该 TLD 自身允许的期限范围内。 下方的 1–10 是所有 TLD 的外部上限;每个 TLD 的范围都更窄。 .ai 允许 2–10,.co 和 .io 允许 1–5,.sg 允许 1–2,.fr 则只能为 1。超出该范围的 years 会 以指明允许范围的验证错误被拒绝——在任何可用性检查、定价或收费之前——并且该值 不会 被悄悄替你调整:
.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.
先从 domains_check_availability 读取 minRegisterPeriodInYears/maxRegisterPeriodInYears,然后选择一个在该范围内的 years。在确认调用(confirmationResponse: "accept")时会再次运行相同检查,因此无法通过确认来绕过它。
收费前的两步确认。 首次调用时不要设置 confirmationToken:工具会重新获取域名价格,构建完整确认信息——期限、价格明细(包括任何 ICANN 费用以及域名是否为高级域名)、自动续费、WHOIS 隐私、付款来源,以及 registrant/admin/tech/billing 联系人(与 registrant 相同的联系人会显示为 “same as registrant”)——并返回 status: "confirmation_required",同时附带该 price 和一个新的 confirmationToken。 此次调用不会注册任何内容,也不会收费。 完整确认信息就是工具的响应文本;请原样展示给用户。一旦他们同意,请使用完全相同的参数再次调用,并额外传入此 confirmationToken 和 confirmationResponse: "accept" 以提交购买,或传入 confirmationResponse: "decline" 以取消——拒绝时不会收费。该令牌绑定到这些完全相同的参数和所报价,并会在短时间后过期:如果在确认调用中令牌缺失、过期、被篡改或不再匹配,系统只会返回一个带有新令牌的全新确认——绝不会报错,也绝不会收费。如果任一调用中无法确定价格,工具会返回 status: "price_unavailable" 而不是令牌,并且绝不会收费;请稍后重试。已确认的调用会立即返回 status: "pending" 和一个 operationId——注册会在后台完成;请使用 async_operation_get 检查其状态。
参数: domain
必填: 是
类型和限制: 要注册的完全限定域名,例如 example.com。接受 Unicode(IDN)或 ASCII(A-label)——会自动规范化为 punycode。
参数: years
必填: 是
类型和限制: 注册年限。 1–10 是外部范围;可接受范围取决于该 TLD 本身——请参见 domains_check_availability 中的 minRegisterPeriodInYears/maxRegisterPeriodInYears。超出范围的值会被拒绝,不会被调整。
参数: autoRenew
必填: 是
类型和限制: 布尔值。当为 true 时,域名会在到期时使用账户的默认付款方式自动续费。
参数: privacy.level
必填: 是
类型和限制: high 会在公开 WHOIS 中隐藏注册人的联系信息;public 则会公开这些信息。
参数: privacy.userConsent
必填: 是
类型和限制: 布尔值。必须确认你同意所选的隐私设置。
参数: 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
必填:否
类型和约束:扩展属性联系人 ID 数组(最多 5 个);仅某些 TLD 需要,否则省略或使用 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
含义:已提交;注册局正在后台完成处理。使用 operationId 轮询 async_operation_get。
状态:price_unavailable
含义:无法确定价格,因此未签发令牌,也未计费。请稍后重试。
operationId 是一个扁平字符串——将其传给 async_operation_get,它会报告注册最终是成功还是失败。在 confirmation_required 时显示的 price,正是执行 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
必填:否
类型和约束:扩展属性联系人 ID 数组(最多 5 个);仅某些 TLD 需要,否则省略或使用 null。
返回
{ "verificationStatus": "verification" }
返回的 verificationStatus 反映 ICANN RAA 电子邮件验证状态:verification — 注册人必须确认其电子邮件地址(将发送确认邮件);success — 已确认;null — 此域名不适用 RAA 验证。
domain_set_nameservers — 设置域名名称服务器更改域名在注册商层级的名称服务器。立即完成(无需轮询操作)。更改之后会反映在 domains_list 中。
参数:domainName
必填:是
类型和约束:完全限定域名。接受 Unicode(IDN)或 ASCII(A-label)——会自动规范化为 punycode。
参数:provider
必填:是
类型和约束:basic(Spaceship 的默认名称服务器)或 custom(您自己的主机)。
参数:hosts
必填:有条件
类型和约束:当 provider 为 custom 时必填:2–12 个名称服务器主机名(每个都必须是有效的 FQDN,4–255 个字符)。当 provider 为 basic 时必须省略。
返回
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }
重新应用域名当前已处于的状态(例如,在已经是 basic 时再次设置为 basic)会返回验证错误,而不是无操作成功——请将其视为预期结果,而不是需要重试的失败。
这些工具接受的 domainName 支持 Unicode(IDN)或 ASCII(A-label),并会自动规范化为 punycode;此处不强制执行 TLD 支持。
dns_records_get — 获取 DNS 记录检索域名的 DNS 资源记录分页列表。
参数:domainName
必填:是
类型和约束:要获取其记录的域名。
参数:take
必填:否
类型和约束:每页项目数,1–500。默认值为 100。
参数:skip
必填:否
类型和约束:要跳过的项目数,0 或更多。默认值为 0。
参数:orderBy
必填:否
类型和约束:最多 8 个排序键:type、-type、name、-name。
返回 — { items, total }。每个项目都是 Record shapes 中描述的记录,外加一个可选的 group 字段,用于指示记录来源(custom — 由您创建,product — 由 Spaceship 产品管理,personalNs — 个人名称服务器)。
dns_records_save — 保存 DNS 记录添加自定义 DNS 记录或更新现有记录的 TTL。记录以不区分大小写的方式匹配,但 TXT 记录除外(区分大小写)。
参数:domainName
必填:是
类型和约束:要更新其记录的域名。
参数:records
必填:是
类型和约束:1–500 条记录——参见 Record shapes。每条记录都可以包含一个可选的 ttl。
参数:force
必填:否
类型和约束:布尔值。跳过冲突解决检查并强制更新区域。
返回 — { "saved": <number> },即已提交记录的数量。成功响应表示所有记录都已被接受;如果任一记录失败,则整个调用会返回错误。
dns_records_delete — 删除 DNS 记录删除自定义 DNS 记录。删除后无法撤销。记录以不区分大小写的方式匹配,但 TXT 记录除外(区分大小写)。
参数:domainName
必填:是
类型和约束:要删除其记录的域名。
参数:records
必填:是
类型和约束:1–500 条用于标识现有记录的记录——与保存时的形状相同,但不包含 ttl。
返回 — { "deleted": <number> },即已提交记录的数量。如果任一记录无法匹配,则整个调用失败,且不会删除任何记录。
每条记录都具有:
type — 以下 13 种受支持类型之一。
name — 不含域名 的记录名称:对域名本身(根域)使用 @,对通配符使用 *。
ttl(仅保存时,可选)— 以秒为单位的缓存时间,60–3600。
特定类型字段:
类型:A
字段:address — IPv4 地址。
类型:AAAA
字段:address — IPv6 地址。
类型:CNAME
字段:cname — 规范域名(最多 253 个字符)。
类型:ALIAS
字段:aliasName — 规范域名;用于根域的类似 CNAME 的行为,在该处不允许使用 CNAME。
类型:NS
字段:nameserver — 名称服务器名称。
类型:PTR
字段:pointer — 给定 IP 地址对应的域名。
类型:TXT
字段:value — 文本值(区分大小写匹配)。
类型:MX
字段:exchange — 邮件服务器;preference — 优先级(0–65535,数值越小优先级越高)。
类型:CAA
字段:flag — 0 或 128(关键位);tag — issue、issuewild 或 iodef;value — 带可选参数的 CA 标识符。
类型: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(当设置了 port 时必须为 _https)、svcParams。
类型:SVCB
字段:svcPriority(0–65535;0 = AliasMode);targetName — FQDN 或 .;可选 port、scheme(例如 _tcp)、svcParams。
async_operation_get — 获取异步操作状态检查由其他工具启动的长时间运行操作(当前为 domain_register)。调用时将 operationId 设置为该工具返回的 operationId,并重复调用,直到 status 为 success 或 failed。
参数:operationId
必填:是
类型和约束:字母数字字符串,最多 36 个字符,由启动该操作的工具返回。
返回
字段:operationId
含义:被轮询的操作。
字段:status
含义:pending、success 或 failed。
字段:type
含义:操作类型,或 null。
字段:details
含义:有关该操作的额外详细信息,或 null。
字段:createdAt / modifiedAt
含义:操作创建时间 / 上次更新时间(modifiedAt 可能为 null)。
当调用失败时,工具会返回一个带有代码和人类可读 detail 的错误,用于说明出了什么问题 — 例如无效输入(格式错误的域名或联系人 ID)、不存在的域名或联系人,或与当前状态冲突。如果某个工具因未授予助手访问权限而被拒绝,请重新连接 Spaceship MCP 并批准其请求的访问权限。