Skip to main content
POST
Initialisez un client MCP, découvrez les outils autorisés ou exécutez les actions client VoiceCheap via MCP.

Authentification

Jeton d’accès OAuth d’un compte payant dans Authorization: Bearer mcpaccess…, ou clé API dans x-api-key ou Authorization: Bearer vc_…. Les identifiants d’authentification sont transmis dans les en-têtes, jamais dans les paramètres de requête de l’URL.

Corps de la requête

Exemples de requêtes

Suivez l’encodage et l’authentification documentés pour cette route. L’enveloppe et les règles d’idempotence de l’API d’actions s’appliquent uniquement aux invocations d’actions.

Réponse

Extrait représentatif de la réponse tools/list. Le résultat réel contient jusqu’à 50 outils autorisés et nextCursor s’il en reste davantage. Les requêtes normales reçoivent des réponses JSON JSON-RPC ; les notifications acceptées reçoivent HTTP 202 avec un corps vide.
HTTP 200

En-têtes de réponse

Notes de l’opération

  • POST est la seule méthode HTTP prise en charge pour MCP. Les requêtes authentifiées GET, DELETE et les autres requêtes non POST renvoient METHOD_NOT_ALLOWED avec HTTP 405 et Allow: POST après les vérifications du débit du compte et de l’origine. L’analyse de la requête ou le traitement CORS peuvent répondre plus tôt. Il n’existe ni canal GET SSE ni route de suppression de session.
  • Envoyez Content-Type: application/json et Accept: application/json, text/event-stream. Le transport MCP installé exige les deux valeurs Accept, même si ce serveur active les réponses JSON.
  • Utilisez le cycle MCP normal : initialize, envoyez notifications/initialized, puis tools/list ou tools/call. Incluez l’en-tête MCP-Protocol-Version négocié dans les requêtes suivantes.
  • Le serveur est sans état et ne renvoie aucun Mcp-Session-Id. Chaque requête HTTP revérifie les autorisations actuelles, la propriété utilisateur/équipe et l’accès du compte payant.
  • tools/list utilise un curseur sous forme de chaîne opaque fourni par nextCursor et renvoie 50 outils par page. Continuez jusqu’à ce que nextCursor soit absent. Les curseurs invalides produisent une erreur de méthode JSON-RPC.
  • Chaque outil déclare ses permissions OAuth requises dans securitySchemes et _meta.securitySchemes. action_request_get vérifie aussi les permissions de l’action d’origine.
  • Les annotations des outils décrivent les opérations en lecture seule et les opérations destructrices. openWorldHint indique une interaction avec des services externes ou des sources média ; il n’accorde aucune permission supplémentaire.
  • webhooks_create_secret est réservé à REST et exclu de la découverte MCP. Son appel ou la consultation de son résultat via MCP renvoie l’erreur d’outil ACTION_NOT_AVAILABLE_IN_MCP. Les secrets de signature ne sont pas transmis aux assistants.
  • tools/call accepte {name, arguments} ; les noms d’outils et les schémas d’arguments sont partagés avec /v1/actions. Les mutations utilisent un requestId UUID v4 dans arguments et réutilisent des arguments identiques lors des nouvelles tentatives.
  • Les appels d’outils ordinaires réussis renvoient content contenant le résultat sérialisé {data, requestId?} ainsi que le même structuredContent. Les actions de téléchargement d’images renvoient à la place un contenu image MCP natif et un texte generationId.
  • Les échecs d’action sont des résultats d’outil avec isError: true, des détails d’erreur textuels et structuredContent.error ; il ne s’agit pas nécessairement d’échecs HTTP. Vérifiez les erreurs de transport et celles au niveau de l’outil.
  • Le résultat d’un outil à exécution longue inclut son identifiant de requête d’action et pollAction: action_request_get. Effectuez le suivi avec le nom de l’opération d’origine ; ne recréez pas de génération pour vérifier la progression.
  • L’initialisation, les notifications, la découverte et les appels d’outils sont tous comptabilisés dans la limite de débit partagée du compte. Seules les actions de données réussies consomment des appels d’intégration mensuels, sous réserve des exceptions documentées pour le statut et le contrôle.
  • Envoyez un message JSON-RPC par requête HTTP. Les corps JSON sont limités à 1 MiB ; les octets des médias passent par les actions d’envoi.
  • L’en-tête Host doit correspondre à l’hôte MCP canonique. Si un en-tête Origin est présent, il doit correspondre à l’origine MCP, à celle de l’application, à https://chatgpt.com, https://chat.openai.com ou https://claude.ai. Les clients natifs peuvent omettre Origin.
  • En production, les erreurs HTTP 401 incluent WWW-Authenticate: Bearer resource_metadata=“https://api.voicecheap.ai/.well-known/oauth-protected-resource/mcp”.
  • Les échecs d’authentification utilisent l’objet d’erreur d’intégration. Les vérifications du protocole MCP peuvent renvoyer {code, message} ; les autres échecs du protocole utilisent des objets d’erreur JSON-RPC avec des codes d’erreur numériques. Ne supposez pas que tous les échecs de transport utilisent la même enveloppe d’erreur.
  • La protection HTTP publique de la route autorise 3000 requêtes par minute et par adresse IP client avant l’authentification du compte. Chaque compte conserve sa limite de fréquence API/MCP partagée, plus basse et propre à son forfait.
  • Les erreurs d’autorisation des outils incluent un challenge Bearer dans _meta, sous la clé mcp/www_authenticate. Reconnectez votre compte avec les permissions requises avant de réessayer.

Erreurs