Format de sortie
Chaque appel d’outil renvoie trois choses :
| Partie | Pour | Contenu |
|---|---|---|
content[0].text |
Le modèle | Un résumé Markdown : ce qui a été trouvé ou fait, et la suite à donner. |
structuredContent |
Le client et la carte | Les données, valides selon l’outputSchema de l’outil, avec un kind qui dit ce qu’elles sont. |
La carte (_meta.ui.resourceUri) |
L’utilisateur, dans l’app Claude | La carte VibeSell, qui affiche structuredContent selon son kind. |
isError vaut false pour un résultat et true pour un refus ; un refus ne porte que du texte.
Voir Erreurs et refus.
Un exemple
Section intitulée « Un exemple »{ "content": [ { "type": "text", "text": "**Question for the user:** Choose your sending addresses\n_This decides what gets set up for you. Nothing is set up, reserved or billed by this answer._\n\n- `already_warmed` — Start sooner (…)\n- `own_names` — Send under my brand (…)\n- or an answer in their own words\n\nPut this to the user and wait for THEIR answer — never pick for them. Then call choose_sending_source again with the same arguments and answers: [{\"card\":\"ecdbf5a52b3ecea6\",\"answer\":\"<their answer>\"}]…" } ], "structuredContent": { "kind": "choice", "tool": "choose_sending_source", "arguments": {}, "card": "ecdbf5a52b3ecea6", "question": "Choose your sending addresses", "reason": "This decides what gets set up for you. Nothing is set up, reserved or billed by this answer.", "choices": [ { "id": "already_warmed", "label": "Start sooner", "description": "Addresses already prepared, without your brand's name. …" }, { "id": "own_names", "label": "Send under my brand", "description": "Addresses created for you, ready after about 2 business days of preparation, weekends not counted." } ], "allowFreeText": true, "answers": [] }, "isError": false}Sortes de résultat
Section intitulée « Sortes de résultat »Le résultat de chaque outil porte un kind. Les clients peuvent s’en servir pour afficher les
résultats à leur façon.
Questions et réponses
Section intitulée « Questions et réponses »Les outils qui posent une question à l’utilisateur — choose_sending_source, propose_domains,
propose_warmed_domains, propose_email — renvoient kind: "choice" avec :
card— l’identifiant de cette question ;question,reasonetchoices(chacun avec unid, unlabelet parfois unedescription) ;allowFreeText— si l’utilisateur peut répondre avec ses propres mots ;arguments— les arguments avec lesquels rappeler l’outil ;answers— les réponses données jusqu’ici.
L’assistant pose la question à l’utilisateur, puis rappelle le même outil avec les mêmes arguments et
answers égal à la liste reçue plus { "card": "<card id>", "answer": "<choice id or the user's words>" }.
Une réponse n’est acceptée que pour la carte exacte à laquelle elle a été donnée : si la question a
changé entre-temps, l’outil la repose. Une fois la question réglée, le résultat passe à
sending_choice ou email_step.
Résultats d’approbation
Section intitulée « Résultats d’approbation »Les six outils d’approbation renvoient kind: "approval" avec un status — pending, done,
not_done ou rejected —, l’action de la carte, son summary, l’impact rédigé par le serveur,
l’indicateur irreversible et expiresAt, plus decideHere et appUrl. Voir
Cartes d’approbation.
Liens dans les résultats
Section intitulée « Liens dans les résultats »Les résultats renvoient l’utilisateur vers VibeSell quand une chose s’y décide ou s’y fait : appUrl
(l’app), les liens de facturation d’open_billing_portal, et la page de paiement Stripe de
start_checkout. Seul l’utilisateur les ouvre.