Spaceship MCP connecte votre assistant IA (tel que Claude) à votre compte Spaceship. Grâce à lui, l’assistant peut vérifier et enregistrer des domaines, obtenir des liens de paiement pour acheter des domaines dans votre navigateur, gérer les contacts de domaine, et lire ou modifier des enregistrements DNS en votre nom — il vous suffit de demander en langage naturel, et l’assistant appelle les bons outils.
Vous avez besoin d’un compte Spaceship. Spaceship MCP est disponible à l’adresse https://mcp.spaceship.com/mcp.
La façon de vous connecter dépend de votre assistant IA :
Claude (web et bureau) — ouvrez Settings, choisissez Connectors, ajoutez un connecteur personnalisé et pointez-le vers https://mcp.spaceship.com/mcp. Le Claude d’Anthropic est actuellement le client dont nous avons vérifié la compatibilité avec Spaceship MCP.
Autres clients MCP — ajoutez un serveur MCP distant et pointez-le vers https://mcp.spaceship.com/mcp. D’autres clients peuvent fonctionner, mais nous ne les avons pas encore vérifiés.
Lorsque vous vous connectez, il vous sera demandé de vous connecter à Spaceship et d’accorder à l’assistant l’accès à votre compte. Les outils que l’assistant peut utiliser dépendent de l’accès que vous approuvez — si un outil est refusé parce que l’accès n’a pas été accordé, reconnectez-vous et approuvez l’accès dont il a besoin.
Les accords et politiques qui s’appliquent à Spaceship MCP et à tout ce que vous achetez par son intermédiaire :
Outil : contacts_save
Ce qu’il fait : Enregistrer les coordonnées d’un contact et obtenir un ID de contact
Outil : contacts_get
Ce qu’il fait : Lire un contact enregistré à partir de son ID
Outil : contacts_list
Ce qu’il fait : Lister tous les contacts enregistrés pour en trouver un et le réutiliser
Outil : domains_list
Ce qu’il fait : Lister vos domaines ou rechercher un domaine
Outil : domains_check_availability
Ce qu’il fait : Vérifier si des domaines sont disponibles à l’enregistrement
Outil : domain_register
Ce que cela fait : Enregistrer (acheter) un domaine — dépense de l'argent
Outil : domain_purchase_link
Ce que cela fait : Obtenir des liens de paiement pour acheter des domaines sur la page de paiement de Spaceship — aucun montant n'est facturé par l'appel
Outil : domain_set_contacts
Ce que cela fait : Attribuer des contacts à un domaine que vous possédez
Outil : domain_set_nameservers
Ce que cela fait : Basculer un domaine vers des nameservers de base ou personnalisés
Outil : dns_records_get
Ce que cela fait : Lire les enregistrements DNS d'un domaine
Outil : dns_records_save
Ce que cela fait : Ajouter des enregistrements DNS ou mettre à jour leur TTL
Outil : dns_records_delete
Ce que cela fait : Supprimer des enregistrements DNS
Outil : async_operation_get
Ce que cela fait : Vérifier le statut d’une opération de longue durée
Partout où un contact est requis (domain_register, domain_purchase_link, domain_set_contacts), chaque rôle prend une contactId chaîne — jamais de coordonnées de contact en ligne. Enregistrez d’abord le contact avec contacts_save (qui renvoie son contactId), puis transmettez cet ID là où le contact est accepté. Il n’existe pas d’enregistrement automatique en ligne ; un rôle ne peut pas recevoir un objet contact complet. Vous pouvez également réutiliser un contactId issu d’un résultat contacts_list ou lu dans un résultat domains_list.
Un contactId est une chaîne de 27 à 32 caractères alphanumériques. Il suffit de la retransmettre là où un contact est accepté.
Plusieurs outils sont conçus pour être utilisés ensemble : la sortie de l’un devient l’entrée du suivant.
contacts_save — enregistrez les contacts titulaire, admin, technique et facturation (si vous ne possédez pas déjà leurs ID) et conservez le contactId renvoyé pour chacun. Les contacts doivent exister avant que vous puissiez enregistrer le domaine.
domains_check_availability — vérifiez le ou les noms souhaités. Ne poursuivez que lorsque result vaut available. Chaque nom disponible inclut le price en USD pour l’enregistrer (standard comme premium), ou priceUnavailableReason lorsqu’il ne peut pas être déterminé, ainsi que minRegisterPeriodInYears et maxRegisterPeriodInYears — la durée autorisée par ce TLD. Notez que le price couvre price.pricedYears années, ce qui correspond à la durée minimale autorisée par le TLD et n’est pas toujours de 1.
domain_register (aperçu) — appelez-le avec confirmationToken non défini pour obtenir status: confirmation_required, un nouveau confirmationToken et le price qui sera facturé. Rien n’est débité. Omettez paymentMethodId pour laisser l’outil proposer le moyen de paiement par défaut du compte (ou les fonds lorsqu’il n’existe aucun moyen par défaut utilisable) — la réponse contient alors aussi paymentMethods afin qu’un autre puisse être choisi ; transmettez un id spécifique comme paymentMethodId pour débiter ce moyen à la place. Le texte de réponse de l’outil constitue une confirmation complète — durée, détail du prix, renouvellement automatique, confidentialité WHOIS, source de paiement et contacts titulaire/admin/technique/facturation — affichez-le à l’utilisateur tel quel. Choisissez years entre minRegisterPeriodInYears et maxRegisterPeriodInYears à l’étape 2 — une valeur hors plage est rejetée immédiatement. Transmettez chaque rôle de contact sous la forme du contactId enregistré à l’étape 1.
domain_register (accepter/refuser) — une fois que l’utilisateur a accepté, appelez-le de nouveau avec exactement les mêmes arguments plus ce confirmationToken et confirmationResponse: "accept". Cela débite le moyen de paiement résolu et est irréversible. L’appel renvoie immédiatement status: pending et un operationId — l’enregistrement se termine en arrière-plan. Pour annuler à la place, appelez-le de nouveau avec le même confirmationToken et confirmationResponse: "decline" — rien n’est débité. Le jeton expire après un court délai et est lié aux arguments exacts, au prix et au moyen de paiement pour lesquels il a été émis ; s’il manque, a expiré ou ne correspond plus, l’appel renvoie une toute nouvelle confirmation au lieu d’une erreur — jamais un débit. Si le prix ne peut pas être déterminé lors de l’un ou l’autre appel, l’outil renvoie à la place status: price_unavailable et rien n’est débité. Si aucun moyen de paiement ne peut être utilisé, il renvoie status: payment_unavailable avec les moyens enregistrés sur le compte et rien n’est débité.
async_operation_get — transmettez l’operationId de l’étape 4 pour vérifier la progression. Répétez jusqu’à ce que status devienne success ou failed.
contacts_save ──▶ domains_check_availability ──▶ domain_register ──▶ domain_register ──▶ async_operation_get(ids contactId) (disponible ? + prix + (jeton non défini : (jeton + (pending →min/maxRegisterPeriod) confirmation, accept : operationId, success/failed)confirmationToken, pending)aucun débit)
Utilisez ceci à la place de domain_register lorsque vous demandez un lien de paiement, lorsque l’achat direct dans le chat a échoué, ou lorsque vous souhaitez payer avec un moyen de paiement que l’achat dans le chat ne peut pas utiliser.
domains_check_availability — vérifiez le ou les noms souhaités. Ne poursuivez que lorsque result vaut available, et lisez minRegisterPeriodInYears/maxRegisterPeriodInYears pour choisir une valeur years valide.
domain_purchase_link — transmettez les domaines comme items et les contacts à leur attribuer comme contacts — IDs de contact issus de contacts_list, ou enregistrez d’abord de nouvelles informations avec contacts_save — avec years et autoRenew partagés au niveau supérieur et des remplacements par domaine lorsqu’ils diffèrent. Cet appel ne débite rien. Il renvoie un lien par groupe de 10 domaines maximum, avec un prix estimé pour chacun ; vous ouvrez chaque lien et payez sur la page de paiement de Spaceship, où vous choisissez le moyen de paiement (les fonds du compte sont présélectionnés lorsque vous en avez). La confidentialité WHOIS ne peut pas être définie de cette manière.
domains_list — après avoir payé, appelez-le pour le domaine afin de confirmer qu’il est enregistré. Ne considérez pas le lien comme une preuve d’achat.
Ne demandez pas un second lien pour un achat qui a peut-être déjà abouti. Si une tentative domain_register a pu être facturée, ou si vous avez suivi un lien précédent, appelez d’abord domains_list et ne demandez un nouveau lien que pour les domaines qui ne sont réellement pas enregistrés. Les liens n’expirent pas et peuvent être réutilisés, alors ne les partagez avec personne d’autre.
domains_check_availability ──▶ domain_purchase_link ──▶ (domains_list pour confirmer)(disponible ? + prix + (liens, jusqu’à 10 domaines après avoir payémin/maxRegisterPeriod) chacun ; aucun débit decet appel)
domain_set_contacts — attribuez des contacts au domaine via contactId (enregistrez-les d’abord avec contacts_save si nécessaire). Cela se termine immédiatement et renvoie un verificationStatus : verification signifie que le titulaire doit confirmer son adresse e-mail avant que le changement ne s’applique complètement (un e-mail lui est envoyé), success signifie que c’est déjà confirmé, et null signifie qu’aucune confirmation n’est requise pour ce domaine.
domains_list — trouvez le domaine et consultez ses nameservers actuels ({ provider, hosts }).
domain_set_nameservers — basculez-le vers les serveurs de noms par défaut de Spaceship avec provider: "basic" (sans hosts), ou pointez-le vers les vôtres avec provider: "custom" et une liste de 2 à 12 hosts. Il renvoie le { provider, hosts } résultant, et un appel ultérieur à domains_list reflète le changement. Réappliquer l’état dans lequel un domaine se trouve déjà renvoie une erreur de validation plutôt qu’une opération sans effet — considérez cela comme attendu, et non comme un échec nécessitant une nouvelle tentative.
domains_list — trouvez le domaine que vous souhaitez gérer (ou transmettez directement son nom si vous le connaissez).
dns_records_get — lisez les enregistrements actuels du domaine.
dns_records_save ou dns_records_delete — ajoutez, mettez à jour ou supprimez des enregistrements. Les enregistrements renvoyés par dns_records_get ont la même forme que celle acceptée par les outils d’enregistrement et de suppression (la suppression omet simplement ttl), de sorte que l’assistant peut lire, ajuster et réécrire. La correspondance ne tient pas compte de la casse, sauf pour les enregistrements TXT, qui y sont sensibles.
domains_list — parcourez tous vos domaines avec tri, ou récupérez un seul domaine par son nom. Chaque domaine inclut sa date d’expiration, le paramètre de renouvellement automatique, le statut, les serveurs de noms, la protection de la confidentialité et les IDs de contact attribués.
contacts_list — parcourez tous les contacts enregistrés sur votre compte pour trouver et réutiliser un contact existant (par son ID de contact) au lieu de créer un doublon.
contacts_get — consultez les détails associés à tout ID de contact que vous voyez sur un domaine ou dans un résultat contacts_list.
Chaque outil renvoie son résultat sous forme de JSON structuré. Les opérations de longue durée (actuellement uniquement domain_register) renvoient une référence d’opération à interroger avec async_operation_get ; tous les autres outils se terminent immédiatement.
Les contacts sont les personnes ou organisations associées à un enregistrement de domaine (titulaire, admin, technique, facturation). Un contact est référencé partout par son ID de contact — une chaîne opaque.
contacts_save — Enregistrer le contactEnregistre les coordonnées du contact et renvoie l’ID de contact généré. La validation de certains champs (tels que stateProvince et postalCode) dépend du pays sélectionné.
Paramètre : firstName
Obligatoire : Oui
Type et contraintes : Chaîne, 1–64 caractères. Peut inclure des traits d’union et des apostrophes.
Paramètre : lastName
Obligatoire : Oui
Type et contraintes : Chaîne, 1–64 caractères. Peut inclure des traits d’union et des apostrophes.
Paramètre : email
Obligatoire : Oui
Type et contraintes : Adresse e-mail valide, 254 caractères max.
Paramètre : address1
Obligatoire : Oui
Type et contraintes : Ligne d’adresse 1. Chaîne, 1–128 caractères.
Paramètre : city
Obligatoire : Oui
Type et contraintes : Chaîne, 1–64 caractères.
Paramètre : country
Obligatoire : Oui
Type et contraintes : Code pays à deux lettres (ISO 3166-1 alpha-2), par ex. US.
Paramètre : phone
Obligatoire : Oui
Type et contraintes : Format international +CountryCode.Number, par ex. +1.2025551234. Max. 32 caractères.
Paramètre : organization
Obligatoire : Non
Type & contraintes : Nom de l’organisation/de l’entreprise. 1–128 caractères.
Paramètre : address2
Obligatoire : Non
Type & contraintes : Ligne d’adresse 2. 1–128 caractères.
Paramètre : stateProvince
Obligatoire : Non
Type & contraintes : Nom de l’État/de la province, 1–64 caractères. Peut être requis selon le pays.
Paramètre : postalCode
Obligatoire : Non
Type & contraintes : 1–16 caractères. Peut être requis selon le pays.
Paramètre : phoneExt
Obligatoire : Non
Type & contraintes : Poste téléphonique, 1–16 caractères.
Paramètre : fax
Obligatoire : Non
Type & contraintes : Numéro de fax, même format +CountryCode.Number, 32 caractères max.
Paramètre : faxExt
Obligatoire : Non
Type & contraintes : Poste de fax, 1–16 caractères.
Paramètre : taxNumber
Obligatoire : Non
Type & contraintes : Numéro fiscal, 1–32 caractères.
Renvoie
{ "contactId": "..." }
contactId (27–32 caractères alphanumériques) est ce que vous transmettez à domain_register, domain_purchase_link, domain_set_contacts et contacts_get.
contacts_get — Obtenir un contactLit les détails d’un contact enregistré à partir de son ID de contact. Les ID de contact proviennent de contacts_save, contacts_list, ou du champ contacts des résultats de domains_list.
Paramètre : contactId
Obligatoire : Oui
Type & contraintes : ID de contact, 27–32 caractères alphanumériques.
Renvoie — { contact } avec :
Champ : firstName, lastName, email, address1, city, country, phone, postalCode
Type : Chaîne
Champ : organization, address2, stateProvince, phoneExt, fax, faxExt, taxNumber
Type : Chaîne ou null
contacts_list — Lister les contactsListe tous les contacts enregistrés sous votre compte, afin que vous puissiez trouver et réutiliser un contact existant (par son ID de contact) au lieu de créer un doublon ou de chercher parmi vos domaines. La liste est paginée et triable, conformément à domains_list.
Paramètre : take
Obligatoire : Non
Type & contraintes : Éléments par page, 1–100. Valeur par défaut 10.
Paramètre : skip
Obligatoire : Non
Type & contraintes : Éléments à ignorer, 0 ou plus. Valeur par défaut 0.
Paramètre : orderBy
Obligatoire : Non
Type & contraintes : Jusqu’à 8 clés de tri : name, email, organization ; préfixez avec - pour un ordre décroissant (par ex. -name).
Renvoie — { items, total } où total est le nombre de contacts uniques du compte (dédupliqués par ID de contact, et non par taille de page), et chaque élément contient suffisamment d’informations pour distinguer les contacts sans appel supplémentaire. Si le compte contient des entrées en double pour le même ID de contact, elles sont regroupées en une seule, de sorte que total compte les contacts distincts plutôt que les lignes brutes côté serveur :
Champ : contactId
Type : Chaîne (27–32 alphanumériques). À transmettre à contacts_get, domain_register, domain_purchase_link ou domain_set_contacts.
Champ : name
Type : Chaîne — le nom du contact.
Champ : email
Type : Chaîne ou null lorsque le contact n’a pas d’adresse e-mail enregistrée.
Champ : organization
Type : Chaîne ou null lorsque le contact n’a pas d’organisation enregistrée.
{"items": [{ "contactId": "1anq5bsl9haBy21rOV9aeDWrARBsV", "name": "Ada Lovelace", "email": "ada@example.com", "organization": "Analytical Engines" }],"total": 1}
Les entrées de nom de domaine (domain/domainName) acceptent l’Unicode (IDN) ou l’ASCII (A-label) — dans les deux cas, l’outil normalise automatiquement le nom en punycode avant utilisation. domains_check_availability et domain_register exigent en plus un TLD que Spaceship prend en charge pour l’enregistrement : un domaine dont le TLD n’est pas pris en charge est considéré comme indisponible plutôt que vérifié ou facturé. Les autres outils de domaine (domains_list, domain_set_contacts, domain_set_nameservers) ainsi que les outils DNS normalisent uniquement le nom et ne le rejettent jamais en fonction de la prise en charge du TLD.
domains_list — Lister les domainesRécupère une liste paginée de vos domaines. Transmettez domain pour récupérer à la place un seul domaine par son nom (la pagination et l’ordre sont alors ignorés, et le résultat inclut une note l’indiquant s’ils ont été fournis).
Paramètre : domain
Obligatoire : Non
Type & contraintes : Nom de domaine complet pour récupérer un seul domaine. Accepte l’Unicode (IDN) ou l’ASCII (A-label) — normalisé automatiquement en punycode.
Paramètre : take
Obligatoire : Non
Type & contraintes : Éléments par page, 1–100. Valeur par défaut 10.
Paramètre : skip
Obligatoire : Non
Type & contraintes : Éléments à ignorer, 0 ou plus. Valeur par défaut 0.
Paramètre : orderBy
Obligatoire : Non
Type & contraintes : Jusqu’à 8 clés de tri : name, unicodeName, registrationDate, expirationDate ; préfixez avec - pour un ordre décroissant (par ex. -expirationDate).
Renvoie — { items, total } où chaque élément décrit un domaine :
Champ : name / unicodeName
Signification : Nom de domaine sous forme ASCII et Unicode.
Champ : isPremium
Signification : Indique si le domaine est un nom premium.
Champ : autoRenew
Signification : Indique si le renouvellement automatique est activé.
Champ : registrationDate / expirationDate
Signification : Horodatages d’enregistrement et d’expiration.
Champ : lifecycleStatus
Signification : creating, registered, grace1, grace2 ou redemption.
Champ : verificationStatus
Signification : verification, success, failed ou null lorsque non applicable.
Champ : eppStatuses
Signification : Codes d’état du registre (par ex. verrous de transfert).
Champ : suspensions
Signification : Suspensions actives, chacune avec un reasonCode.
Champ : privacyProtection
Signification : { level: "public" | "high", contactForm: boolean }.
Champ : nameservers
Signification : { provider: "basic" | "custom", hosts: [...] }.
Champ : contacts
Signification : ID de contact : registrant, plus admin/tech/billing (peuvent être null) et attributes (une liste d’ID de contact d’attributs étendus, ou null). Lisible via contacts_get.
Spaceship MCP renseigne chaque champ ci-dessus — y compris contacts, eppStatuses, suspensions, verificationStatus, nameservers, un vrai autoRenew, et un unicodeName distinct lorsque le domaine en possède un — à la fois pour les listes à plusieurs éléments et les récupérations d’un seul domaine.
domains_check_availability — Vérifier la disponibilité d’un domaineVérifie si un ou plusieurs noms de domaine sont disponibles à l’enregistrement. Utilise le point de terminaison pour un seul domaine pour un nom, et le point de terminaison en masse pour plusieurs. Un domaine dont le TLD n’est pas pris en charge pour l’enregistrement n’est pas envoyé du tout à la vérification de disponibilité — il est immédiatement renvoyé comme tldNotSupported.
Paramètre : domains
Obligatoire : Oui
Type & contraintes : 1–20 noms de domaine complets. Chacun accepte l’Unicode (IDN) ou l’ASCII (A-label) — normalisé automatiquement en punycode.
Renvoie — { results }, une entrée par nom demandé :
Champ : domain
Signification : Le nom vérifié.
Champ : result
Signification : available, taken, invalidDomainName, tldNotSupported ou unexpectedError.
Champ : premiumPricing
Signification : Pour les noms premium : liste de { operation, price, currency } où operation vaut register, transfer, renew ou restore. Vide pour les noms standard.
Champ : price
Signification : Pour les noms disponibles (standard et premium) : le prix en USD pour enregistrer le domaine pour la durée la plus courte autorisée par le TLD — { amount, currency: "USD", pricedYears?, pricePerYear?, icannFee?, isPremium }. amount est le total à payer pour toute cette durée ; pricedYears indique combien d’années elle couvre. Aucun prix avant remise ni prix « ancien » n’est indiqué. icannFee est les frais ICANN (USD) déjà inclus dans amount, renvoyés séparément afin que le détail puisse être expliqué ; ils n’apparaissent que lorsque le TLD comporte des frais.
Champ : pricePerYear
Signification : À l’intérieur de price : amount divisé par pricedYears, afin qu’un montant annuel soit toujours disponible pour comparaison. Lorsque pricedYears vaut 1, il s’agit du vrai prix pour un an ; au-delà, il s’agit d’une moyenne annuelle sur la durée, et non d’une durée que vous pourriez acheter.
Champ : minRegisterPeriodInYears / maxRegisterPeriodInYears
Signification : Pour les noms disponibles : la durée d’enregistrement la plus courte et la plus longue réellement autorisées par ce TLD, sous forme de deux nombres simples. Utilisez-les pour choisir une valeur years valide pour domain_register. Les deux sont omises lorsque la durée autorisée n’a pas pu être déterminée.
Champ : priceUnavailableReason
Signification : Présent à la place de price lorsque le prix n’a pas pu être déterminé pour un nom disponible. La vérification elle-même réussit quand même.
Seuls les noms disponibles sont tarifés ; les résultats taken/invalid n’ont ni price ni priceUnavailableReason.
La plupart des TLD autorisent un an, mais certains non..ai, par exemple, a un minimum de deux ans. Pour ceux-là, price.amount est le total pour la durée minimale — et non un prix d’un an que vous pourriez choisir — et price.pricedYears l’indique :
{"domain": "example.ai","result": "available","premiumPricing": [],"price": { "amount": 159.96, "currency": "USD", "pricedYears": 2, "pricePerYear": 79.98, "isPremium": false },"minRegisterPeriodInYears": 2,"maxRegisterPeriodInYears": 10}
pricePerYear est présent ici — 159.96 divisé par les deux années qu’il couvre donne 79.98. Il s’agit du total divisé par la durée, et non d’un prix que vous pourriez payer pour une seule année (un enregistrement .ai d’un an ne peut pas être acheté). Affichez toujours amount avec pricedYears (« 159,96 $ pour 2 ans »), jamais amount seul. Pour un TLD ordinaire, pricedYears vaut 1 et pricePerYear est égal à amount.
domain_register — Enregistrer un domaineEnregistre (achète) un domaine. Cela débite un moyen de paiement — votre moyen enregistré par défaut, les fonds du compte ou celui que vous choisissez — et c’est irréversible. Séquence recommandée : domains_check_availability → domain_register. Un domaine dont le TLD n’est pas pris en charge pour l’enregistrement est rejeté immédiatement — avant toute vérification de disponibilité, tarification ou facturation.
years doit se situer dans la plage autorisée propre au TLD. La limite 1–10 ci-dessous est la limite externe pour l’ensemble des TLD ; chaque TLD a une plage plus restreinte. .ai autorise 2–10, .co et .io autorisent 1–5, .sg 1–2, .fr exactement 1. Une valeur years en dehors de cette plage est rejetée avec une erreur de validation indiquant la plage autorisée — avant toute vérification de disponibilité, tarification ou facturation — et la valeur n’est pas discrètement ajustée pour vous :
.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.
Lisez minRegisterPeriodInYears/maxRegisterPeriodInYears dans domains_check_availability d’abord et choisissez une valeur years comprise dans cette plage. La même vérification est relancée lors de l’appel de confirmation (confirmationResponse: "accept"), elle ne peut donc jamais être contournée par confirmation.
Confirmation préalable au débit en deux étapes. Appelez d’abord avec confirmationToken non défini : l’outil recalcule le prix du domaine, résout le moyen de paiement, construit une confirmation complète — durée, détail du prix (y compris d’éventuels frais ICANN et si le domaine est premium), renouvellement automatique, confidentialité WHOIS, source de paiement, et les contacts registrant/admin/tech/billing (un contact identique au registrant est affiché comme « same as registrant ») — et renvoie status: "confirmation_required" avec ce price et un nouveau confirmationToken. Rien n’est enregistré ni facturé lors de cet appel. La confirmation complète est le texte de réponse de l’outil ; affichez-le tel quel à l’utilisateur. Une fois qu’il accepte, appelez à nouveau avec exactement les mêmes arguments plus ce confirmationToken et confirmationResponse: "accept" pour soumettre l’achat, ou confirmationResponse: "decline" pour l’annuler — rien n’est facturé en cas de refus. Le jeton est lié à ces arguments exacts, au prix indiqué et au moyen de paiement résolu, et expire après un court délai : un jeton manquant, expiré, altéré ou ne correspondant plus lors de l’appel de confirmation renvoie simplement une toute nouvelle confirmation avec un nouveau jeton — jamais une erreur, jamais un débit. Si le prix ne peut pas être déterminé lors de l’un ou l’autre appel, l’outil renvoie status: "price_unavailable" au lieu d’un jeton et ne facture jamais ; réessayez plus tard. Un appel confirmé renvoie immédiatement status: "pending" et un operationId — l’enregistrement se termine en arrière-plan ; vérifiez-le avec async_operation_get.
Choisir un moyen de paiement. Omettez paymentMethodId pour débiter le moyen de paiement enregistré par défaut du compte, ou les fonds du compte lorsqu’il n’existe aucun moyen par défaut utilisable — la confirmation nomme la source résolue dans paymentSource et dans son texte de réponse. Lorsqu’il est omis, la réponse contient aussi paymentMethods : les moyens enregistrés du compte, chacun avec un id et un label d’affichage (par ex. "Card ···2584" ou "Account funds (USD 17.29)"), afin que le client puisse en choisir un autre — retransmettez cet id comme paymentMethodId lors de l’appel suivant pour le débiter à la place. Un moyen expiré, ou qui ne peut pas être débité pour cet achat (par ex. signalé comme inutilisable pour un débit sans surveillance), est rejeté avec une erreur de validation indiquant la raison — aucun jeton n’est émis et rien n’est facturé. Si aucun moyen de paiement ne peut être utilisé — aucun moyen enregistré n’est utilisable et les fonds du compte ne couvrent pas le prix, ou les moyens enregistrés n’ont pas pu être lus — l’outil renvoie status: "payment_unavailable" avec la raison et les moyens enregistrés du compte, et ne facture jamais ; le client doit choisir un autre moyen, en ajouter un, ou ajouter des fonds.
Paramètre : domain
Obligatoire : Oui
Type & contraintes : Nom de domaine complet à enregistrer, par ex. example.com. Accepte l’Unicode (IDN) ou l’ASCII (A-label) — normalisé automatiquement en punycode.
Paramètre : years
Obligatoire : Oui
Type et contraintes : Période d'enregistrement en années. 1–10 est la limite externe ; la plage acceptée est celle propre au TLD — voir minRegisterPeriodInYears/maxRegisterPeriodInYears de domains_check_availability. Les valeurs hors plage sont rejetées, pas ajustées.
Paramètre : autoRenew
Obligatoire : Oui
Type et contraintes : Booléen. Lorsque true, le domaine est renouvelé automatiquement à l'expiration en utilisant le mode de paiement par défaut du compte.
Paramètre : privacy.level
Obligatoire : Oui
Type et contraintes : high masque les coordonnées du titulaire dans le WHOIS public ; public les publie.
Paramètre : privacy.userConsent
Obligatoire : Oui
Type et contraintes : Booléen. Doit confirmer que vous acceptez le paramètre de confidentialité sélectionné.
Paramètre : contacts.registrant
Obligatoire : Oui
Type et contraintes : contactId chaîne (27–32 caractères alphanumériques), provenant de contacts_save.
Paramètre : contacts.admin
Obligatoire : Oui
Type et contraintes : contactId chaîne (27–32 caractères alphanumériques), provenant de contacts_save.
Paramètre : contacts.tech
Obligatoire : Oui
Type et contraintes : contactId chaîne (27–32 caractères alphanumériques), provenant de contacts_save.
Paramètre : contacts.billing
Obligatoire : Oui
Type et contraintes : contactId chaîne (27–32 caractères alphanumériques), provenant de contacts_save.
Paramètre : contacts.attributes
Obligatoire : Non
Type et contraintes : Tableau d'identifiants de contact d'attributs étendus (jusqu'à 5) ; requis uniquement pour certains TLD, sinon omettez-le ou utilisez null.
Paramètre : paymentMethodId
Obligatoire : Non
Type et contraintes : Identifiant d'un mode de paiement enregistré à débiter, tiré de la liste paymentMethods d'un appel précédent. Omettez-le pour accepter le mode de paiement par défaut du compte (ou les fonds lorsqu'il n'existe aucun mode par défaut utilisable).
Paramètre : confirmationToken
Obligatoire : Non
Type et contraintes : Chaîne, jusqu'à 4096 caractères. Jeton émis par le serveur renvoyé par un appel précédent à domain_register pour ces arguments exacts. Omettez-le lors du premier appel pour une nouvelle tentative d'enregistrement. Il expire après un court délai et est lié aux arguments exacts, au prix et au mode de paiement pour lesquels il a été émis — renvoyez-le inchangé, avec confirmationResponse, pour agir dessus.
Paramètre : confirmationResponse
Obligatoire : Conditionnel
Type et contraintes : "accept" ou "decline". N'a de sens qu'avec un confirmationToken valide. "accept" soumet l'enregistrement (facturé) affiché dans cette confirmation ; "decline" l'annule sans facturation. Omettez-le lors du premier appel.
Renvoie — après le premier appel (rien n'est facturé), lorsque le client dispose d'un mode par défaut utilisable et n'a pas besoin d'en choisir un :
{"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": "<opaque confirmation token>","paymentSource": "Card ···2584","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."}
Renvoie — après le premier appel avec paymentMethodId omis, en incluant en plus les modes enregistrés du compte afin que le client puisse en choisir un autre :
{"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": "<opaque confirmation token>","paymentSource": "Account funds (USD 17.29)","paymentMethods": [{ "id": "pm_9f2c1a7e", "type": "Funds", "order": 1, "label": "Account funds (USD 17.29)" },{ "id": "pm_4b6e2d90", "type": "CreditCard", "order": 2, "label": "MasterCard ···2584" }],"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."}
En plus de ce JSON, le texte de la réponse de l'outil constitue la confirmation complète à montrer à l'utilisateur — il reprend le domaine, la durée et le prix ci-dessus, plus des lignes pour Auto-renew: on/off, WHOIS privacy: on/off, Payment source: <resolved method label>, ainsi que chacun des contacts titulaire/admin/tech/facturation (nom, e-mail, pays — un contact identique au titulaire affiche "same as registrant"), suivis des instructions pour l'appel suivant. Pour une durée de plusieurs années, price.amount est le total pour toute la durée et price.pricePerYear est ce total divisé par la durée — par exemple years: 5 sur .com renvoie { "amount": 48.52, "pricedYears": 5, "pricePerYear": 9.70 }, et example.ai avec years: 2 renvoie { "amount": 159.96, "pricedYears": 2, "pricePerYear": 79.98 }.
Une entrée paymentMethods ne contient jamais de numéros de carte, de noms de titulaires de carte ni de détails de facturation/émetteur au-delà de label — isExpired/offSessionForbidden (lorsque true) signalent qu'un mode n'est actuellement pas utilisable, et availableBalance/balanceCurrency ne sont présents que pour l'entrée Funds.
Renvoie — après confirmationResponse: "accept" (enregistrement soumis) :
{"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."}
Renvoie — après confirmationResponse: "decline" (rien n'est facturé) :
{"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."}
Renvoie — si le prix ne peut pas être déterminé, lors de l'un ou l'autre appel :
{"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."}
Renvoie — si aucun mode de paiement ne peut être utilisé, lors de l'un ou l'autre appel :
{"domain": "example.com","years": 1,"status": "payment_unavailable","price": {"amount": 9.08,"currency": "USD","pricedYears": 1,"pricePerYear": 9.08,"icannFee": 0.2,"isPremium": false},"paymentMethods": [{ "id": "pm_4b6e2d90", "type": "CreditCard", "order": 2, "label": "MasterCard ···2584", "isExpired": true }],"note": "example.com was not registered and nothing was charged. None of the saved payment methods can be charged for this purchase and the account funds cannot be used. Add a payment method or add funds to the account, then try again."}
status peut être :
Statut : confirmation_required
Signification : Aperçu — rien n'est facturé. Affichez le texte de réponse à l'utilisateur, puis appelez à nouveau avec ce confirmationToken et confirmationResponse. Également renvoyé, avec un jeton nouveau, lorsqu'un confirmationToken soumis est manquant, expiré, falsifié ou ne correspond plus aux arguments/prix/mode de paiement actuels — jamais une erreur.
Statut : cancelled
Signification : L'achat a été refusé (confirmationResponse: "decline"), donc rien n'a été soumis.
Statut : pending
Signification : Soumis ; le registre finalise l'opération en arrière-plan. Interrogez async_operation_get avec l'operationId.
Statut : price_unavailable
Signification : Le prix n'a pas pu être déterminé, donc aucun jeton n'a été émis et rien n'a été facturé. Réessayez plus tard.
Statut : payment_unavailable
Signification : Aucun mode de paiement utilisable n'existe pour cet achat — aucun mode enregistré ne peut être débité et les fonds du compte ne couvrent pas le prix (ou les modes enregistrés n'ont pas pu être lus). Aucun jeton n'a été émis et rien n'a été facturé. La note indique la cause réelle lorsque le client peut agir dessus — le solde des fonds par rapport au prix, une devise de fonds qui ne peut pas payer le prix, ou un portefeuille sans rien de facturable — et reste générique uniquement lorsque les modes enregistrés n'ont pas pu être lus ; paymentMethods répertorie les modes enregistrés du compte afin que le client puisse choisir, ajouter un mode ou ajouter des fonds.
operationId est une chaîne simple — transmettez-la à async_operation_get, qui indique si l'enregistrement aboutit finalement ou échoue. Le price affiché à confirmation_required est exactement ce qui sera facturé lors de confirmationResponse: "accept" — price.amount est le total pour toute cette durée et price.pricedYears indique la durée, donc affichez toujours les deux ensemble. Lorsque le TLD comporte des frais ICANN, price.amount les inclut déjà et price.icannFee indique le montant des frais afin qu'ils puissent être expliqués.
domain_purchase_link — Obtenir des liens d'achat de domainePrépare un ou plusieurs liens de paiement Spaceship afin que vous puissiez acheter des domaines sur la propre page de paiement de Spaceship dans votre navigateur plutôt que dans le chat. Aucun domaine n'est enregistré et aucun montant n'est facturé par cet appel — vous vérifiez et payez sur la page, qui constitue l'étape de confirmation. Utilisez-le lorsque vous demandez un lien de paiement, lorsque l'achat direct dans le chat a échoué, ou lorsque vous souhaitez payer avec un mode de paiement que l'achat dans le chat ne peut pas utiliser. Si une tentative d'achat a peut-être déjà abouti, vérifiez d'abord domains_list et demandez un lien uniquement pour les domaines qui ne sont réellement pas enregistrés, sinon vous risquez de payer deux fois. Nécessite l'accès domains:billing.
Les paramètres donnés au niveau supérieur (years, autoRenew, contacts) s'appliquent à chaque élément. Un élément qui définit son propre years, autoRenew ou contacts les remplace pour ce domaine uniquement, et tout ce qu'il omet est hérité (les contacts d'un élément remplacent entièrement les contacts de niveau supérieur). Les contacts de niveau supérieur sont obligatoires : les contacts accompagnent le lien et sont déjà renseignés comme contacts du domaine lorsque vous l'ouvrez. Chaque domaine ne peut être listé qu'une seule fois, et il n'existe pas d'entrées pour le paiement, la devise ou la confidentialité WHOIS — la confidentialité WHOIS reste sur la valeur par défaut de la plateforme sur la page de paiement.
Paramètre : items
Obligatoire : Oui
Type et contraintes : Tableau de 1 à 20 éléments, chacun listé une seule fois.
Paramètre : items[].domain
Obligatoire : Oui
Type et contraintes : Nom de domaine pleinement qualifié à acheter, par ex. example.com. Accepte Unicode (IDN) ou ASCII (A-label) — normalisé automatiquement en punycode.
Paramètre : items[].years
Obligatoire : Non
Type et contraintes : Entier 1–10 ; remplace le years de niveau supérieur pour ce domaine.
Paramètre : items[].autoRenew
Obligatoire : Non
Type et contraintes : Booléen ; remplace le autoRenew de niveau supérieur pour ce domaine.
Paramètre : items[].contacts
Obligatoire : Non
Type et contraintes : Contacts pour ce domaine uniquement, sous forme de chaînes contactId (registrant, admin, tech, billing, attributes facultatif) ; remplacent entièrement les contacts de niveau supérieur.
Paramètre : years
Obligatoire : Non
Type et contraintes : Entier 1–10, appliqué à chaque élément qui ne définit pas le sien. Doit se situer dans la durée autorisée par le TLD (minRegisterPeriodInYears/maxRegisterPeriodInYears de domains_check_availability) ; les valeurs hors plage sont rejetées avec une erreur indiquant la plage autorisée, et non ajustées. Lorsque ni ce paramètre ni l'élément ne le définissent, la durée la plus courte du TLD est utilisée.
Paramètre : autoRenew
Obligatoire : Non
Type et contraintes : Booléen, appliqué à chaque élément qui ne définit pas le sien. La valeur par défaut est true.
Paramètre : contacts
Obligatoire : Oui
Type et contraintes : Contacts sous forme de chaînes contactId, appliqués à chaque élément qui ne définit pas les siens : registrant (obligatoire), admin, tech et billing (chacun prend par défaut la valeur de registrant), ainsi que attributes facultatif (une liste de jusqu'à 5 identifiants de contact d'attributs étendus, requise uniquement pour certains TLD). Prenez les identifiants depuis contacts_list, ou enregistrez d'abord les détails avec contacts_save.
Liens par appel. Un seul lien peut contenir au maximum 10 domaines, donc une liste plus longue renvoie plusieurs liens dans l'ordre de la requête — par exemple, 15 domaines produisent deux liens de 10 et 5. links[].domains indique quels domaines chaque lien couvre.
Prix. Chaque domaine comporte un prixestimé (le prix final est affiché sur la page de paiement) ou un priceUnavailableReason lorsqu'il ne peut pas être déterminé. Une estimation manquante n'empêche jamais l'émission d'un lien.
Paiement. Le mode de paiement est choisi sur la page. Les fonds du compte sont présélectionnés lorsque le compte en dispose.
Les liens sont réutilisables. Un lien n'expire pas et peut être ouvert plus d'une fois, alors ne le partagez avec personne d'autre.
Renvoie
{"status": "links_ready","links": [{"url": "https://example.spaceship.com/pay/abc123","domains": [{"domain": "example.com","years": 1,"autoRenew": true,"price": { "amount": 9.08, "currency": "USD", "pricedYears": 1, "pricePerYear": 9.08, "icannFee": 0.2, "isPremium": false }},{"domain": "example.ai","years": 2,"autoRenew": false,"priceUnavailableReason": "Price is currently unavailable for this domain."}]}],"failed": [],"note": "Nothing has been charged. ..."}
status: links_ready
Signification : Chaque domaine est couvert par un lien.
status: partial
Signification : Certains domaines sont couverts ; les autres sont listés dans failed, chacun avec une reason (par exemple non disponible, extension non prise en charge, durée non autorisée, problème de contacts ou lien qui n'a pas pu être créé).
status: no_links
Signification : Aucun lien n'a pu être préparé. Le résultat est signalé comme une erreur, failed indique pourquoi, et rien n'a été facturé.
Après que le client a indiqué avoir payé, appelez domains_list pour le domaine afin de confirmer qu'il est enregistré — ne considérez pas le lien seul comme une preuve d'achat.
domain_set_contacts — Définir les contacts du domaineModifie les contacts attribués à un domaine que vous possédez. S'exécute immédiatement (aucune opération à interroger).
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Nom de domaine pleinement qualifié. Accepte Unicode (IDN) ou ASCII (A-label) — normalisé automatiquement en punycode.
Paramètre : registrant
Obligatoire : Oui
Type et contraintes : contactId chaîne (27–32 caractères alphanumériques), provenant de contacts_save.
Paramètre : admin
Obligatoire : Non
Type et contraintes : contactId chaîne (27–32 caractères alphanumériques) ou null.
Paramètre : tech
Obligatoire : Non
Type et contraintes : contactId chaîne (27–32 caractères alphanumériques) ou null.
Paramètre : billing
Obligatoire : Non
Type et contraintes : contactId chaîne (27–32 caractères alphanumériques) ou null.
Paramètre : attributes
Obligatoire : Non
Type et contraintes : Tableau d'identifiants de contact d'attributs étendus (jusqu'à 5) ; requis uniquement pour certains TLD, sinon omettez-le ou utilisez null.
Renvoie
{ "verificationStatus": "verification" }
La valeur renvoyée verificationStatus reflète la vérification d'e-mail ICANN RAA : verification — le titulaire doit confirmer son adresse e-mail (un e-mail de confirmation est envoyé) ; success — déjà confirmée ; null — la vérification RAA ne s'applique pas à ce domaine.
domain_set_nameservers — Définir les nameservers du domaineModifie les nameservers d'un domaine au niveau du registrar. S'exécute immédiatement (aucune opération à interroger). Le changement est ensuite reflété par domains_list.
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Nom de domaine pleinement qualifié. Accepte Unicode (IDN) ou ASCII (A-label) — normalisé automatiquement en punycode.
Paramètre : provider
Obligatoire : Oui
Type et contraintes : basic (nameservers par défaut de Spaceship) ou custom (vos propres hôtes).
Paramètre : hosts
Obligatoire : Conditionnel
Type et contraintes : Requis lorsque provider est custom : 2 à 12 noms d'hôte de nameserver (chacun étant un FQDN valide, de 4 à 255 caractères). Doit être omis lorsque provider est basic.
Renvoie
{ "provider": "custom", "hosts": ["ns1.example.com", "ns2.example.com"] }
Réappliquer l’état dans lequel un domaine se trouve déjà (par ex. définir basic alors qu’il est déjà en basic) renvoie une erreur de validation plutôt qu’un succès sans effet — considérez cela comme un résultat attendu, et non comme un échec nécessitant une nouvelle tentative.
Le domainName accepté par ces outils prend en charge l’Unicode (IDN) ou l’ASCII (A-label) et est automatiquement normalisé en punycode ; la prise en charge du TLD n’est pas appliquée ici.
dns_records_get — Obtenir les enregistrements DNSRécupère une liste paginée des enregistrements de ressources DNS pour un domaine.
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Le domaine dont les enregistrements doivent être récupérés.
Paramètre : take
Obligatoire : Non
Type et contraintes : Éléments par page, 1–500. Valeur par défaut : 100.
Paramètre : skip
Obligatoire : Non
Type et contraintes : Éléments à ignorer, 0 ou plus. Valeur par défaut : 0.
Paramètre : orderBy
Obligatoire : Non
Type et contraintes : Jusqu’à 8 clés de tri : type, -type, name, -name.
Renvoie — { items, total }. Chaque élément est un enregistrement tel que décrit dans Formes d’enregistrement, avec en plus un champ facultatif group indiquant d’où provient l’enregistrement (custom — créé par vous, product — géré par un produit Spaceship, personalNs — serveurs de noms personnels).
dns_records_save — Enregistrer les enregistrements DNSAjoute des enregistrements DNS personnalisés ou met à jour le TTL de ceux qui existent déjà. Les enregistrements sont comparés sans tenir compte de la casse, sauf les enregistrements TXT (sensibles à la casse).
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Le domaine dont les enregistrements doivent être mis à jour.
Paramètre : records
Obligatoire : Oui
Type et contraintes : 1–500 enregistrements — voir Formes d’enregistrement. Chacun peut inclure un ttl facultatif.
Paramètre : force
Obligatoire : Non
Type et contraintes : Booléen. Ignore la vérification de résolution des conflits et force la mise à jour de la zone.
Renvoie — { "saved": <number> }, le nombre d’enregistrements soumis. Une réponse réussie signifie que tous les enregistrements ont été acceptés ; si un seul échoue, l’appel entier renvoie une erreur à la place.
dns_records_delete — Supprimer les enregistrements DNSSupprime des enregistrements DNS personnalisés. Les suppressions ne peuvent pas être annulées. Les enregistrements sont comparés sans tenir compte de la casse, sauf les enregistrements TXT (sensibles à la casse).
Paramètre : domainName
Obligatoire : Oui
Type et contraintes : Le domaine dont les enregistrements doivent être supprimés.
Paramètre : records
Obligatoire : Oui
Type et contraintes : 1–500 enregistrements identifiant des enregistrements existants — mêmes formes que pour l’enregistrement, mais sans ttl.
Renvoie — { "deleted": <number> }, le nombre d’enregistrements soumis. Si un enregistrement ne peut pas être mis en correspondance, l’appel entier échoue et rien n’est supprimé.
Chaque enregistrement comporte :
type — l’un des 13 types pris en charge ci-dessous.
name — le nom de l’enregistrement hors domaine : utilisez @ pour le domaine lui-même (apex) et * pour un joker.
ttl (enregistrement uniquement, facultatif) — durée de mise en cache en secondes, 60–3600.
Champs spécifiques au type :
Type : A
Champs : address — adresse IPv4.
Type : AAAA
Champs : address — adresse IPv6.
Type : CNAME
Champs : cname — nom de domaine canonique (253 caractères max.).
Type : ALIAS
Champs : aliasName — nom de domaine canonique ; comportement de type CNAME pour l’apex, là où CNAME n’est pas autorisé.
Type : NS
Champs : nameserver — nom du serveur de noms.
Type : PTR
Champs : pointer — nom de domaine pour l’adresse IP donnée.
Type : TXT
Champs : value — valeur texte (comparée en respectant la casse).
Type : MX
Champs : exchange — serveur de messagerie ; preference — priorité (0–65535, la plus basse étant préférée).
Type : CAA
Champs : flag — 0 ou 128 (bit critique) ; tag — issue, issuewild ou iodef ; value — identifiant d’AC avec paramètres facultatifs.
Type : SRV
Champs : service (par ex. _sip) ; protocol (par ex. _tcp) ; priority et weight (0–65535) ; port (1–65535) ; target — nom de domaine du serveur.
Type : TLSA
Champs : usage, selector, matching (chacun 0–255) ; port — * ou _<1–65535> ; protocol (par ex. _tcp) ; associationData — hachage ou données du certificat.
Type : HTTPS
Champs : svcPriority (0–65535 ; 0 = AliasMode) ; targetName — FQDN ou . ; facultatif port (* ou _<1–65535>), scheme (doit être _https lorsque port est défini), svcParams.
Type : SVCB
Champs : svcPriority (0–65535 ; 0 = AliasMode) ; targetName — FQDN ou . ; facultatif port, scheme (par ex. _tcp), svcParams.
async_operation_get — Obtenir le statut d’une opération asynchroneVérifie une opération de longue durée démarrée par un autre outil (actuellement domain_register). Appelez-le avec operationId défini sur l’operationId renvoyé par cet outil, puis répétez jusqu’à ce que status soit success ou failed.
Paramètre : operationId
Obligatoire : Oui
Type et contraintes : Chaîne alphanumérique, 36 caractères max., renvoyée par l’outil qui a démarré l’opération.
Renvoie
Champ : operationId
Signification : L’opération interrogée.
Champ : status
Signification : pending, success ou failed.
Champ : type
Signification : Type d’opération, ou null.
Champ : details
Signification : Détails supplémentaires sur l’opération, ou null.
Champ : createdAt / modifiedAt
Signification : Moment où l’opération a été créée / mise à jour pour la dernière fois (modifiedAt peut être null).
Lorsqu’un appel échoue, l’outil renvoie une erreur avec un code et un detail lisible par un humain expliquant ce qui s’est mal passé — par exemple une entrée invalide (un nom de domaine ou un ID de contact mal formé), un domaine ou un contact inexistant, ou un conflit avec l’état actuel. Si un outil est refusé parce que l’assistant n’a pas reçu l’accès nécessaire, reconnectez Spaceship MCP et approuvez l’accès demandé.