Aller au contenu

decide_approval

Decide an approval card

Action · mcp:actCarte seulementAppelle un fournisseur

Approuve ou rejette une carte d'approbation. Appelé par la carte VibeSell dans Claude quand l'utilisateur clique sur Approve ou Reject — caché au modèle, et donné à aucun autre hôte.

Description lue par le modèleEnvoyée telle quelle dans tools/list, en anglais.
Approve or reject an approval card. Called by the VibeSell card when the user clicks; never by the model.

L'utilisateur dit

(L'utilisateur clique sur Approve dans la carte.)

tools/call · Arguments envoyés par l'assistant
{
"name": "decide_approval",
"arguments": {
"approvalId": "0ea4e28d-df68-4ab6-bf2f-ad51e6f7e51d",
"decision": "approve"
}
}
approvalIdstringobligatoire
decision"approve" | "reject"obligatoire
Schéma d'entrée
{
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"decision": {
"type": "string",
"enum": ["approve", "reject"]
}
},
"required": ["approvalId", "decision"]
}

Sorte de résultatapproval

kind"approval"
status"pending" | "done" | "not_done" | "rejected"

pending: waits for the user's click. done: approved and carried out. not_done: approved but refused when run. rejected: the user said no.

approvalobjet
  • id string
  • action string
  • summary string
  • impact string
  • irreversible boolean
  • expiresAt string
outcomestring | null

What happened once decided, in a sentence.

decideHereboolean

True when the card shows Approve and Reject; otherwise the user decides in VibeSell.

appUrlstring

Where the user approves or rejects it in VibeSell.

Schéma de sortie
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "approval"
},
"status": {
"type": "string",
"enum": ["pending", "done", "not_done", "rejected"],
"description": "pending: waits for the user's click. done: approved and carried out. not_done: approved but refused when run. rejected: the user said no."
},
"approval": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"action": {
"type": "string"
},
"summary": {
"type": "string"
},
"impact": {
"type": "string"
},
"irreversible": {
"type": "boolean"
},
"expiresAt": {
"type": "string"
}
},
"required": ["id", "action", "summary", "impact", "irreversible", "expiresAt"],
"additionalProperties": false
},
"outcome": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What happened once decided, in a sentence."
},
"decideHere": {
"type": "boolean",
"description": "True when the card shows Approve and Reject; otherwise the user decides in VibeSell."
},
"appUrl": {
"type": "string",
"description": "Where the user approves or rejects it in VibeSell."
}
},
"required": ["kind", "status", "approval", "outcome", "decideHere", "appUrl"],
"additionalProperties": false
}
  • Déclaré avec _meta.ui.visibility: ["app"] : l'app Claude le cache au modèle.
  • Codex, Claude Code et les autres hôtes ne le reçoivent jamais : l'utilisateur tranche alors dans l'app VibeSell.
  • La décision passe par le même contrôle que l'app : un seul gagnant, avec les droits de dépense du compte au moment du clic.