Points d'entrée et transport
Points d’entrée
Section intitulée « Points d’entrée »| Endpoint | Méthode | Rôle |
|---|---|---|
https://api.vibesell.it/v1/mcp |
POST |
Le serveur MCP — JSON-RPC sur Streamable HTTP. Exige un jeton bearer. |
https://api.vibesell.it/.well-known/oauth-protected-resource/v1/mcp |
GET |
Métadonnées de la ressource protégée (RFC 9728). Aussi servies sans le suffixe /v1/mcp. |
https://api.vibesell.it/.well-known/oauth-authorization-server |
GET |
Métadonnées du serveur d’autorisation (RFC 8414). |
https://api.vibesell.it/v1/oauth/register |
POST |
Inscription dynamique des clients (RFC 7591). |
https://api.vibesell.it/v1/oauth/authorize |
GET |
Autorisation — redirige vers la page d’accord de VibeSell. |
https://api.vibesell.it/v1/oauth/token |
POST |
Échange du code et rafraîchissement (OAuth 2.1). |
https://api.vibesell.it/v1/oauth/revoke |
POST |
Révocation des jetons (RFC 7009). |
Les documents de découverte sont mis en cache une heure (Cache-Control: public, max-age=3600). Le
flux d’autorisation est décrit dans Autorisation.
Transport
Section intitulée « Transport »- Streamable HTTP, sans état. Chaque
POSTporte un message JSON-RPC, ouvre sa propre instance de serveur avec les accès de son jeton, et la ferme avec la réponse. Il n’y a pas de session : aucunMcp-Session-Idn’est émis. - Pas de push serveur.
GET(un flux de notifications) etDELETE(la fermeture d’une session) répondent405 Method Not AllowedavecAllow: POST. - Jeton bearer uniquement.
Authorization: Bearer <access token>— ni cookie, ni clé d’API. Sans jeton, le serveur répond401avec un défiWWW-Authenticatequi pointe vers les métadonnées. - Versions du protocole. Le serveur négocie jusqu’à MCP
2025-11-25et accepte les versions antérieures jusqu’à2024-11-05.
HTTP/1.1 401 UnauthorizedWWW-Authenticate: Bearer resource_metadata="https://api.vibesell.it/.well-known/oauth-protected-resource/v1/mcp", scope="mcp mcp:act"initialize
Section intitulée « initialize »curl https://api.vibesell.it/v1/mcp \-H "Authorization: Bearer $VIBESELL_TOKEN" \-H "Content-Type: application/json" \-H "Accept: application/json, text/event-stream" \-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0.0"}}}'{ "protocolVersion": "2025-11-25", "capabilities": { "tools": {}, "resources": {} }, "serverInfo": { "name": "vibesell", "title": "VibeSell", "version": "0.3.0", "description": "Your VibeSell workspace in the chat: leads, plans, sending setup, campaign and replies.", "websiteUrl": "https://vibesell.it", "icons": [ { "src": "https://vibesell.it/brand/vibesell-icon.png", "mimeType": "image/png", "sizes": [ "144x144" ] } ] }, "instructions": "VibeSell finds B2B prospects and runs cold email campaigns for the user, from their VibeSell workspace. Start with get_w…"}Les instructions diffèrent pour une connexion en lecture seule et pour une connexion qui peut
agir : voir Instructions du serveur.
tools/list
Section intitulée « tools/list »La liste est construite pour chaque jeton :
| Outils | Listés quand |
|---|---|
| Outils de lecture (12) | Toujours. |
| Outils d’action (25) | Le jeton porte mcp:act. |
decide_approval |
Le jeton porte mcp:act et le client est l’app Claude, qui le cache au modèle (_meta.ui.visibility: ["app"]). |
Chaque outil est accompagné de son inputSchema, de son outputSchema, de ses annotations et de la
ressource de la carte :
{ "name": "estimate_lead_pool", "title": "Count matching leads", "description": "Count how many B2B leads (people at companies) VibeSell's lead provider holds for a target…", "inputSchema": { "type": "object", "properties": { "countries": { "…": "…" } } }, "outputSchema": { "type": "object", "properties": { "kind": { "const": "lead_count" } } }, "annotations": { "title": "Count matching leads", "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true }, "_meta": { "ui": { "resourceUri": "ui://vibesell/card-2f87d8dc967b" }, "ui/resourceUri": "ui://vibesell/card-2f87d8dc967b" }}| Annotation | Valeur |
|---|---|
readOnlyHint |
true pour les outils de lecture, false pour les outils d’action. |
destructiveHint |
Toujours false : rien de destructif ne s’exécute sans carte d’approbation. |
idempotentHint |
Selon que deux appels identiques donnent ou non le même résultat. |
openWorldHint |
Selon que l’outil sollicite ou non un fournisseur (leads, Instantly, Stripe). |
resources
Section intitulée « resources »Le serveur expose une ressource, la carte VibeSell (text/html;profile=mcp-app), à l’adresse
ui://vibesell/card-2f87d8dc967b — le suffixe est un hash du code de la carte. Toute adresse conforme à
ui://vibesell/card-{version} renvoie la carte actuelle : un client qui a gardé en cache une ancienne
liste d’outils obtient donc quand même une carte. Voir Cartes interactives.