Skip to main content
Le serveur MCP Qwairy utilise OAuth 2.1 avec PKCE pour sécuriser l’authentification. Vos identifiants ne sont jamais partagés avec les clients IA : seul un jeton d’accès sécurisé et limité à des scopes l’est.

Fonctionnement

La plupart des clients MCP gèrent ce flux automatiquement. Il vous suffit de cliquer sur « Authorize » quand cela vous est demandé : aucune équipe à choisir, aucun jeton à gérer à la main. La connexion est rattachée à l’utilisateur : elle peut lire chaque workspace éligible au MCP auquel vous avez accès directement ou par héritage depuis une équipe parente.

Points de terminaison OAuth

Les clients MCP récents découvrent ces points de terminaison à partir de l’URL du serveur. Indiquez seulement https://mcp.qwairy.co : le client récupère la configuration OAuth via le point de découverte.

Scopes disponibles

Ne demandez que les scopes nécessaires :
Si aucun scope n’est précisé, tous les scopes de lecture sont accordés par défaut. Si l’un des scopes demandés n’est pas reconnu, toute la demande d’autorisation est rejetée avec invalid_scope.
read:measure et read:pitch-audits sont des scopes plus récents. Les connexions OAuth existantes doivent se reconnecter et autoriser à nouveau l’accès pour utiliser leurs outils. Les scopes d’un jeton déjà émis ne sont jamais étendus en silence.

Cycle de vie des jetons

Le flux OAuth émet un unique jeton d’accès rattaché à l’utilisateur : le même type de jeton qu’un jeton d’accès personnel (qw-usr-). Il est durable et n’a pas de jeton de rafraîchissement : rien à faire tourner, les clients réutilisent simplement le bearer jusqu’à sa révocation. Les nouvelles connexions OAuth émettent un jeton qw-usr- durable, sans jeton de rafraîchissement. Déconnecter puis reconnecter une ancienne connexion la fait passer à ce flux actuel.

Jetons d’accès personnels

Pour les clients headless qui ne peuvent pas mener un flux OAuth interactif (plateformes d’automatisation comme n8n ou Make, scripts, agents sur mesure), Qwairy propose des jetons d’accès personnels rattachés à l’utilisateur. Créez-les et révoquez-les depuis Gestion de l’équipe > Serveur MCP dans Qwairy.
  • Un jeton personnel commence par qw-usr- et est lié à votre compte utilisateur, pas à une seule équipe.
  • Il peut lire chaque équipe éligible au MCP à laquelle vous avez accès directement ou par héritage depuis une équipe parente : un seul jeton peut donc couvrir plusieurs workspaces.
  • Transmettez-le comme jeton bearer : Authorization: Bearer qw-usr-....
  • Comme le jeton d’accès OAuth, un jeton personnel n’a pas d’expiration fixe. Révoquez-le depuis Gestion de l’équipe > Serveur MCP quand vous n’en avez plus besoin.
Les jetons personnels sont en lecture seule, comme tout accès MCP à Qwairy : ils n’exposent jamais d’opération d’écriture.

Choisir une équipe

Les outils liés à une marque prennent un brandId, et Qwairy rattache cette marque à une seule équipe propriétaire pour l’appel. Une réponse n’agrège jamais les données de marques de plusieurs équipes. Appelez d’abord list_brands, puis passez le brandId voulu. Les jetons rattachés à l’utilisateur peuvent couvrir les équipes accessibles directement et les sous-équipes héritées via un rôle Propriétaire ou Manager sur une équipe parente. list_pitch_audits est l’autre outil de découverte multi-workspaces : il ne liste que les workspaces agence accessibles au jeton et accepte un filtre teamId facultatif. Les appels de détail résolvent toujours un seul audit dans un seul workspace autorisé.

Prise en charge de PKCE

Le serveur exige PKCE avec la seule méthode S256 :
  • S256 : hachage SHA-256 du code verifier
La méthode plain n’est pas prise en charge. La plupart des clients MCP utilisent S256 par défaut, aucune configuration supplémentaire n’est donc nécessaire.

Sécurité

Votre mot de passe Qwairy n’est jamais transmis à un client IA. L’authentification se fait directement auprès du serveur d’authentification de Qwairy.
Les jetons sont limités à des types de données précis. Un client MCP n’accède qu’à ce que vous avez autorisé.
Les connexions OAuth comme les jetons d’accès personnels sont rattachés à l’utilisateur (qw-usr-) : ils couvrent les équipes éligibles au MCP auxquelles vous avez accès directement ou par héritage d’un rôle Propriétaire ou Manager sur l’équipe parente. Chaque appel lié à une marque rattache toutefois le brandId demandé à une seule équipe propriétaire, si bien qu’une réponse ne mélange jamais les données de marques de plusieurs équipes.
Le code d’autorisation est à usage unique et expire au bout de 5 minutes : la fenêtre pour l’échanger contre un jeton est donc étroite. Le jeton d’accès émis reste révocable à tout moment (voir ci-dessous).
Vous pouvez révoquer l’accès à tout moment depuis Gestion de l’équipe > Serveur MCP dans Qwairy.

Échange manuel du jeton

Si vous développez votre propre client MCP, enregistrez d’abord le client public, puis réutilisez le client_id renvoyé tout au long de l’échange du code d’autorisation.

1. Enregistrer le client

L’URI de redirection enregistrée ici doit être identique dans les deux requêtes suivantes.
La réponse contient l’identifiant du client public enregistré :

2. Lancer l’autorisation

Générez un verifier RFC 7636 et son challenge S256, puis ouvrez cette URL dans le navigateur de l’utilisateur. Remplacez REGISTERED_CLIENT_ID par le client_id renvoyé ci-dessus.
Le callback contient code et state. Vérifiez state avant d’échanger le code.

3. Échanger le code

Réponse :
Le jeton d’accès est un jeton durable rattaché à l’utilisateur (qw-usr-). Il n’y a ni refresh_token ni expires_in : réutilisez le bearer jusqu’à sa révocation.

4. Réutiliser ou révoquer

Le jeton n’expire pas et n’a pas d’étape de rafraîchissement : réutilisez le bearer pour les requêtes suivantes. Pour le renouveler, révoquez l’ancien puis relancez le flux d’autorisation :

Dépannage

« Invalid or expired token »

Le jeton a été révoqué : les jetons rattachés à l’utilisateur n’expirent pas d’eux-mêmes. Déconnectez puis reconnectez le serveur pour en autoriser un nouveau.

« Insufficient scope »

L’outil appelé exige un scope qui n’a pas été accordé. Reconnectez le serveur et autorisez tous les scopes demandés.

« No eligible team »

Votre compte n’appartient à aucune équipe disposant d’une offre éligible au MCP (Starter et au-delà), ou l’abonnement a expiré. L’autorisation est refusée tant qu’aucun workspace n’est éligible.