bugAgent
officielConnectez bugAgent à tout client IA compatible MCP. Signalez, classez et gérez des bugs, demandes de fonctionnalités et plus encore directement depuis votre assistant de codage IA. Pas de changement de contexte, pas de copier-coller — décrivez simplement le problème et bugAgent s'occupe du reste.
Que pouvez-vous faire avec bugAgent MCP ?
- Signaler des bugs — Décrivez un bug en langage naturel et bugAgent le classe automatiquement par type et par gravité, puis l’enregistre.
- Soumettre des demandes de fonctionnalités — Demandez à votre assistant de soumettre une demande de fonctionnalité et bugAgent la classe automatiquement comme demande de fonctionnalité avec un niveau de gravité.
- Lister les rapports récents — Demandez à votre assistant de lister vos rapports de bugs les plus récents, par exemple via
list_bug_reports. - Rechercher et filtrer les rapports — Recherchez les bugs critiques ouverts dans un projet précis ou regroupez par gravité tous les rapports soumis cette semaine.
- Mettre à jour les tickets et ajouter des commentaires — Modifiez le statut d’un rapport, attribuez-le-vous ou ajoutez un commentaire à un ticket existant.
- Se connecter depuis votre client — Ajoutez le point de terminaison HTTP Streamable hébergé à Claude Desktop, Claude Code, Codex, Cursor, VS Code ou via
curl-example.
Documentation
Connectez l’Agent bug à n’importe quel client IA compatible avec MCP.
Signalez, classez et gérez des bugs, des demandes de fonctionnalités et bien plus directement depuis votre assistant de programmation IA. Sans changer de contexte ni copier-coller : décrivez simplement le problème et l’Agent bug s’occupe du reste.
Les clients MCP externes sont distincts de l’assistant IA du tableau de bord de l’Agent bug. L’assistant du tableau de bord est désactivé par défaut pour tous les forfaits et nécessite une activation explicite dans l’espace de travail ; son ai_assistant ne désactive ni MCP ni les intégrations. L’authentification MCP, les portées, les autorisations de l’espace de travail et du projet, ainsi que les droits propres aux outils restent applicables.
Premiers pas
L’Agent bug exécute le serveur MCP hébergé afin que les clients IA puissent créer, consulter et gérer des rapports de bugs, des demandes de fonctionnalités, des améliorations et bien plus via le Model Context Protocol. Les clients se connectent directement au point de terminaison HTTP Streamable hébergé.
Obtenir votre clé API
Créez un compte gratuit ; les nouveaux propriétaires d’espace de travail sont directement dirigés vers la configuration de la clé API. Les utilisateurs existants peuvent générer une clé depuis Settings → Developers → API Keys.
Configurer votre client IA
Ajoutez l’Agent bug comme serveur MCP dans la configuration de votre client (voir la procédure ci-dessous).
Commencer à signaler des bugs
Décrivez un bug en langage naturel et l’Agent bug le classe automatiquement, l’enrichit et l’enregistre.
# Create a bug report
"File a bug: Login button is unresponsive on iOS Safari.
Steps: tap login, nothing happens. Expected: navigate to
dashboard. Severity: high."
# bugAgent auto-classifies as UI bug, severity high
# File a feature request
"Feature request: Add dark mode toggle to the
settings page. Users have asked for this in surveys."
# Auto-classified as feature-request, severity medium
Configuration
Plugin dédié à la capture de bugs
Consultez le code source public du plugin et la liste de vérification de configuration. Il s’agit d’un aperçu du code source ; la vérification OAuth pour l’hébergement et la publication dans le répertoire OpenAI sont en attente.
Le point de terminaison dédié https://mcp.bugagent.com/mcp/capture ne propose que capture_get_profile, capture_list_projects, capture_search_reports, capture_get_report et capture_create_report. Il ne donne pas accès à l’administration, à la suppression, aux commentaires ni à l’exécution de tests. La disponibilité dans le répertoire OpenAI est soumise à un examen et à une publication distincts.
Connectez-vous avec OAuth. Les autorisations de capture sont liées à ce point de terminaison et ne peuvent pas être utilisées sur le point de terminaison complet /mcp. Les lectures nécessitent bugs:read ; la création nécessite bugs:write. Les clés API d’espace de travail restent prises en charge avec reports:read et reports:write, et sont limitées à leur espace de travail.
Sélectionnez d’abord un espace de travail et un projet autorisés. Les recherches et la consultation des rapports nécessitent explicitement workspace_id et project_id ; les résultats sont limités et paginés. Les résultats de recherche sont des correspondances possibles et ne garantissent pas l’absence de doublons.
Avant la création, vérifiez la destination, le titre, la description, le type et la gravité. Envoyez approved: true et un UUID stable request_id avec la charge utile approuvée. Réutilisez le même identifiant de requête uniquement pour une nouvelle tentative identique ; toute charge utile modifiée sera rejetée. Les limites du forfait existantes et le transfert Jira configuré restent applicables.
L’interprétation des images peut aider à rédiger un brouillon, mais ce point de terminaison ne permet pas de téléverser des pièces jointes. Ouvrez le ticket créé pour joindre des éléments privés. Ne collez jamais de mots de passe, de jetons ni d’autres secrets dans la conversation.
Recommandé : HTTP Streamable hébergé
Connectez-vous directement à https://mcp.bugagent.com/mcp. Rien à installer ni à maintenir en fonctionnement localement. Ajoutez votre clé API d’espace de travail comme jeton Bearer :
{
"mcpServers": {
"bugagent": {
"type": "http",
"url": "https://mcp.bugagent.com/mcp",
"headers": {
"Authorization": "Bearer ba_live_YOUR_KEY_HERE"
}
}
}
}
💡
Remplacez ba_live_YOUR_KEY_HERE par votre véritable clé API depuis Settings → Developers.
Pont stdio facultatif
Utilisez le pont publié uniquement si un client exige stdio et ne peut pas se connecter à un serveur HTTP distant. Lancez-le à la demande avec npx -y bugagent-mcp :
{
"mcpServers": {
"bugagent": {
"command": "npx",
"args": ["-y", "bugagent-mcp"],
"env": {
"BUGAGENT_API_KEY": "ba_live_YOUR_KEY_HERE"
}
}
}
}
Se connecter au serveur
Dans le tableau de bord sur les appareils tactiles, touchez une fois un libellé de la barre latérale pour naviguer. Les options et la restauration sont des commandes distinctes, également accessibles au clavier. La visibilité de la barre latérale n’accorde ni ne révoque les autorisations MCP.
Le serveur MCP de l’Agent bug est disponible à l’adresse https://mcp.bugagent.com/mcp via le transport HTTP Streamable. Connectez-vous depuis l’un des huit clients ci-dessous : choisissez celui qui convient à votre flux de travail.
Pour obtenir une configuration compacte prête à copier, des conseils sur les clés à portée limitée et des invites de démarrage sûres, consultez le guide de démarrage rapide MCP public.
🔑
Obtenez d’abord votre clé API. Connectez-vous à Settings → Developers, cliquez sur Create API Key, sélectionnez les portées nécessaires à votre client et copiez la valeur (elle commence par ba_live_). Vous ne pourrez la voir qu’une seule fois ; collez-la donc dans un endroit sûr. Les clients MCP n’affichent que les outils autorisés par ces portées. Les exemples de connexion ci-dessous utilisent cette clé ; les invites nécessitant une session OAuth interactive ou un droit associé à un forfait payant sont indiquées séparément.
Option 1 — MCP Inspector (interface Web, recommandé pour les premiers tests)
L’outil officiel d’Anthropic. Il lance une interface Web locale qui permet de parcourir chaque outil, de renseigner les paramètres et de consulter les réponses. Aucune configuration ni IDE requis.
macOS (Terminal)
npx @modelcontextprotocol/inspector
Windows (PowerShell ou CMD)
npx @modelcontextprotocol/inspector
Dans l’interface du navigateur qui s’ouvre :
- Transport Type : sélectionnez
Streamable HTTP - URL :
https://mcp.bugagent.com/mcp - Connection Type : sélectionnez Proxy (valeur par défaut — Inspector utilise un processus Node local comme proxy pour contourner CORS dans le navigateur)
- Ouvrez Server Settings → Custom Headers et ajoutez :
- Header Name :
X-Api-Key- Value :
ba_live_YOUR_KEY_HERE(sans le préfixeBearer)
- Value :
- Header Name :
- Cliquez sur Connect. Le panneau de gauche affiche les outils de l’Agent bug autorisés par les portées de la clé API sélectionnées.
- Cliquez sur un outil (par exemple
list_bug_reports), renseignez les paramètres, puis cliquez sur Run Tool. La réponse s’affiche à droite.
Prérequis : MCP Inspector v2 nécessite Node.js 22.19 ou une version ultérieure. Installez une version actuelle de Node.js depuis nodejs.org si ce n’est pas déjà fait.
Si Inspector renvoie invalid_client, il tente d’utiliser une connexion OAuth enregistrée au lieu de l’authentification par clé API. Supprimez le serveur enregistré (ou effacez son état OAuth stocké), ajoutez-le à nouveau et utilisez l’en-tête personnalisé X-Api-Key ci-dessus. Ne placez pas une clé ba_live_ dans un champ OAuth client_id.
Option 2 — Claude Desktop (Mac et Windows)
Si vous utilisez l’application Claude Desktop, vous pouvez ajouter l’Agent bug comme serveur MCP permanent. Avec une clé API d’espace de travail, Claude ne reçoit que les outils autorisés par les portées de cette clé. OAuth délégué donne accès au catalogue interactif complet.
macOS
- Ouvrez Claude Desktop → barre de menus Claude → Settings → Developer → Edit Config. Le fichier
~/Library/Application Support/Claude/claude_desktop_config.jsons’ouvre. - Ajoutez l’entrée de l’Agent bug sous
mcpServers:{ "mcpServers": { "bugagent": { "type": "http", "url": "https://mcp.bugagent.com/mcp", "headers": { "Authorization": "Bearer ba_live_YOUR_KEY_HERE" } } } } - Enregistrez le fichier et quittez complètement Claude Desktop (Cmd+Q, ne vous contentez pas de fermer la fenêtre).
- Relancez Claude Desktop. L’icône marteau des outils en bas de la zone de saisie du chat doit maintenant afficher les outils de l’Agent bug.
- Essayez : saisissez « Liste mes 5 rapports de bugs les plus récents » — Claude appellera automatiquement
list_bug_reports.
Windows
- Ouvrez Claude Desktop → File → Settings → Developer → Edit Config. Le fichier
%APPDATA%\Claude\claude_desktop_config.jsons’ouvre (généralementC:\Users\YourName\AppData\Roaming\Claude\claude_desktop_config.json). - Ajoutez le même bloc JSON que dans la section macOS.
- Enregistrez le fichier et quittez complètement Claude Desktop depuis la zone de notification (clic droit sur l’icône Claude → Quit), puis relancez l’application.
- L’icône marteau des outils affichera les outils de l’Agent bug.
Option 3 — Claude Code (CLI)
Si vous utilisez Claude Code depuis votre terminal (la version CLI de Claude), enregistrez le serveur de l’Agent bug avec une seule commande. La procédure est identique sur macOS, Linux et Windows.
claude mcp add --transport http bugagent https://mcp.bugagent.com/mcp \
--header "Authorization: Bearer ba_live_YOUR_KEY_HERE"
Redémarrez ensuite votre session Claude Code. Vérifiez la connexion :
claude mcp list
Vous devriez voir bugagent dans la liste avec un point vert. Commencez par une invite compatible avec une clé API : « Liste mes 5 rapports de bugs ouverts les plus récents. »
Connecté, mais certains outils sont absents ?
Vérifiez le nombre d’outils du serveur dans /mcp, et pas seulement les outils déjà chargés dans la conversation. Claude Code peut découvrir des outils à la demande grâce à la recherche d’outils. Demandez-lui de rechercher dans bugAgent list_test_cases, list_test_suites ou get_test_run_plan. Consultez la documentation de recherche d’outils de Claude Code.
Le catalogue est filtré selon les portées de la clé API. La lecture des cas de test nécessite test_cases:read ; la lecture des suites et des exécutions nécessite test_runs:read. Ne demandez que les portées d’écriture dont vous avez réellement besoin. Comparez le tools/list authentifié avec le même point de terminaison et la même clé que votre client ; une découverte anonyme ou effectuée avec une autre clé ne constitue pas une comparaison valable. Vérifiez qu’une configuration au niveau du projet ne remplace pas votre connexion au niveau utilisateur, puis reconnectez-vous ou redémarrez après toute modification des identifiants.
Si le catalogue du serveur authentifié inclut un outil, mais que le client ne parvient toujours pas à le découvrir, consignez la version du client, la version du serveur, les noms et le nombre d’outils, ainsi que les éventuelles erreurs de schéma, en supprimant les identifiants et les données client. Une session démarrée avec ENABLE_TOOL_SEARCH=false claude permet de distinguer une découverte différée des problèmes de chargement, mais charge toutes les définitions d’outils et utilise davantage de contexte ; utilisez-la uniquement comme diagnostic temporaire. N’élargissez pas les autorisations et ne séparez pas les points de terminaison dans le seul but d’augmenter le nombre d’outils.
Pour le supprimer ultérieurement :
claude mcp remove bugagent
Option 4 — OpenAI Codex CLI
Si vous utilisez OpenAI Codex CLI, exportez votre clé API et ajoutez l’Agent bug à ~/.codex/config.toml.
Enregistrement permanent (ajouter à la configuration)
[mcp_servers.bugagent]
url = "https://mcp.bugagent.com/mcp"
bearer_token_env_var = "BUGAGENT_API_KEY"
Définir la clé API
export BUGAGENT_API_KEY="ba_live_YOUR_KEY_HERE"
Démarrez ou redémarrez Codex depuis cet environnement. Codex résout automatiquement les appels d’outils à partir de votre invite en langage naturel. Essayez : « Liste mes bugs ouverts, triés par gravité. »
Option 5 — Cursor (Mac et Windows)
Cursor intègre la prise en charge de MCP. Avec une clé API d’espace de travail dont les portées sont correctement définies, l’assistant IA de Cursor peut signaler des bugs, lister des rapports et exécuter des flux d’automatisation pris en charge sans quitter votre éditeur. Les analyses de sécurité, de performances et exploratoires nécessitent OAuth délégué et l’accès au forfait applicable.
- Ouvrez Cursor → Settings (Cmd+, sur Mac / Ctrl+, sur Windows) → MCP dans la barre latérale gauche.
- Cliquez sur + Add new MCP server.
- Sélectionnez le type de transport HTTP.
- Renseignez :
- Name :
bugagent- URL :
https://mcp.bugagent.com/mcp - Header name :
Authorization - Header value :
Bearer ba_live_YOUR_KEY_HERE
- URL :
- Name :
- Cliquez sur Save. Cursor affiche un indicateur vert lorsque la connexion est établie.
- Ouvrez le chat de Cursor (Cmd+L / Ctrl+L) et saisissez « Crée un rapport de bug intitulé “Connexion cassée” avec une gravité élevée. » Cursor appellera
create_bug_report.
Autre méthode : Cursor lit également ~/.cursor/mcp.json (Mac) ou %USERPROFILE%\.cursor\mcp.json (Windows). Ajoutez le même format JSON que celui présenté dans la section Claude Desktop.
Option 6 — VS Code avec l’extension Continue (Mac et Windows)
Si vous préférez VS Code, l’extension Continue prend en charge les serveurs MCP de manière native.
- Installez l’extension Continue depuis la marketplace VS Code.
- Ouvrez la configuration de Continue : palette de commandes (Cmd+Shift+P / Ctrl+Shift+P) → Continue: Open config.json. Le fichier se trouve ici :
- macOS :
~/.continue/config.json- Windows :
%USERPROFILE%\.continue\config.json
- Windows :
- macOS :
- Ajoutez une entrée
mcpServers:{ "mcpServers": [ { "name": "bugagent", "type": "streamable-http", "url": "https://mcp.bugagent.com/mcp", "requestOptions": { "headers": { "Authorization": "Bearer ba_live_YOUR_KEY_HERE" } } } ] } - Enregistrez. Continue se rechargera automatiquement et affichera les outils de l’Agent bug dans la barre latérale.
- Ouvrez le panneau de chat Continue et essayez : « Liste mes 5 rapports de bugs ouverts les plus récents. »
Autres extensions VS Code compatibles avec MCP : Cline, Roo Code et Windsurf (fork) suivent toutes des modèles de configuration JSON similaires, avec une clé mcpServers et le transport HTTP.
Option 7 — Hôtes compatibles avec OAuth (Claude.ai Web comme exemple)
Certains hôtes MCP s’authentifient via OAuth 2.0 et demandent à l’avance un client_id et un client_secret statiques, au lieu d’accepter une clé API Bearer. Générez une paire d’identifiants de connecteur depuis le tableau de bord de l’Agent bug et collez-la dans le formulaire de connexion de l’hôte. Cette paire identifie le client MCP ; après consentement, l’exécution des outils utilise l’utilisateur connecté et son espace de travail actif dans l’Agent bug. La procédure ci-dessous prend l’application Web Claude.ai comme exemple, car c’est le cas le plus courant.
i
OAuth lié à une ressource. L’identifiant de la ressource protégée est https://mcp.bugagent.com/mcp. Les hôtes compatibles avec les normes le découvrent via /.well-known/oauth-protected-resource/mcp et l’envoient comme paramètre RFC 8707 resource. L’Agent bug émet des jetons opaques liés à cette ressource, au client OAuth, à l’utilisateur connecté et aux portées accordées ; un jeton ne peut pas être réutilisé auprès d’un autre service ni échangé par un autre client.
- Dans bug Agent : ouvrez Settings → Developers → MCP Connectors. Cliquez sur Generate connector, donnez-lui un nom décrivant l’hôte (par ex. « Claude.ai (work) »), collez l’URI de redirection requise par votre hôte MCP (pour l’application web Claude.ai, il s’agit de
https://claude.ai/api/mcp/auth_callback— consultez la documentation des connecteurs de votre hôte pour les autres), puis choisissez Confidential comme méthode d’authentification. Copiez leclient_idet leclient_secretaffichés une seule fois sur l’écran de confirmation. - Dans les paramètres de connecteur / OAuth de votre hôte MCP, collez :
- URL du serveur :
https://mcp.bugagent.com/mcp- Client ID + Client Secret : ceux de l’étape 1
- URL d’autorisation :
https://mcp.bugagent.com/authorize - URL du jeton :
https://mcp.bugagent.com/token - Ressource protégée / audience, si demandé :
https://mcp.bugagent.com/mcpPour Claude.ai en particulier : accédez à claude.ai/customize/connectors et cliquez sur Add MCP connector.
- URL du serveur :
- Enregistrez. L’hôte vous redirige vers bug Agent pour vous connecter (avec Google ou par e-mail/mot de passe — selon la méthode utilisée pour le tableau de bord) et approuver le consentement, puis termine la négociation OAuth.
- Gérez les connecteurs générés depuis la même page Settings. Seul le créateur peut révoquer un connecteur du tenant ; les administrateurs de l’espace de travail ne peuvent pas révoquer l’enregistrement d’un autre membre. Une révocation confirmée supprime cet enregistrement de la liste active. Les enregistrements distincts portant le même nom restent séparés : comparez leurs Client IDs. Si la révocation ne peut pas être confirmée, la page affiche une erreur au lieu d’un message de réussite. La révocation bloque toute nouvelle authentification du connecteur. Les jetons d’accès déjà émis peuvent rester valides jusqu’à leur expiration.
Remarque : Claude Code, Cursor, VS Code et MCP Inspector n’ont pas besoin de cette procédure : ils gèrent automatiquement l’enregistrement dynamique des clients (RFC 7591) et s’authentifient par clé API, comme indiqué ci-dessus. Le formulaire MCP Connectors est réservé aux hôtes qui exigent des identifiants OAuth statiques.
Les valeurs d’accès et de renouvellement OAuth ne sont affichées qu’à l’hôte. Elles sont opaques, renouvelées lors de leur actualisation et stockées par bug Agent uniquement sous forme de hachages à sens unique ; l’identifiant d’actualisation de l’identité en amont est chiffré au repos. Ne copiez jamais un jeton OAuth dans une requête d’API REST ou vers un autre serveur MCP.
Option 8 — HTTP direct avec curl (Terminal)
Pour tester directement le serveur sans client ou l’intégrer à un script, vous pouvez appeler le point de terminaison HTTP avec curl. Le protocole MCP est du JSON-RPC 2.0 sur Streamable HTTP.
macOS / Linux
# Set your API key as a variable
export BUGAGENT_API_KEY="ba_live_YOUR_KEY_HERE"
# 1. Initialize the MCP connection
curl -N -s https://mcp.bugagent.com/mcp \
-H "Authorization: Bearer $BUGAGENT_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl-example","version":"1.0.0"}}}'
# 2. List tools visible to this key
curl -N -s https://mcp.bugagent.com/mcp \
-H "Authorization: Bearer $BUGAGENT_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# 3. Call a tool — list 5 reports from a specific project
curl -N -s https://mcp.bugagent.com/mcp \
-H "Authorization: Bearer $BUGAGENT_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc":"2.0",
"id":3,
"method":"tools/call",
"params":{
"name":"list_bug_reports",
"arguments":{"project":"bugagent","limit":5}
}
}'
Windows (PowerShell)
# Set your API key
$env:BUGAGENT_API_KEY = "ba_live_YOUR_KEY_HERE"
# Use Invoke-RestMethod (PowerShell's curl equivalent)
$headers = @{
"Authorization" = "Bearer $env:BUGAGENT_API_KEY"
"Content-Type" = "application/json"
"Accept" = "application/json, text/event-stream"
}
# 1. Initialize
$body = '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"powershell-example","version":"1.0.0"}}}'
Invoke-RestMethod -Uri "https://mcp.bugagent.com/mcp" \`
-Method Post -Headers $headers -Body $body
# 2. List tools visible to this key
$body = '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
Invoke-RestMethod -Uri "https://mcp.bugagent.com/mcp" \`
-Method Post -Headers $headers -Body $body
# 3. Call list_bug_reports for a specific project
$body = @{
jsonrpc = "2.0"
id = 3
method = "tools/call"
params = @{
name = "list_bug_reports"
arguments = @{ project = "bugagent"; limit = 5 }
}
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Uri "https://mcp.bugagent.com/mcp" \`
-Method Post -Headers $headers -Body $body
Les réponses peuvent être au format JSON ou Server-Sent Events. Chaque fragment SSE est une ligne préfixée par data:, suivie d’un objet JSON. Les clients conformes aux normes doivent envoyer Accept: application/json, text/event-stream ; bug Agent normalise actuellement les valeurs Accept manquantes ou incomplètes pour assurer la compatibilité.
ℹ️
Dépannage — 401 Unauthorized : vérifiez que votre clé API n’a pas été révoquée dans Settings → Developers. Les clés commencent par ba_live_. Si le problème persiste, générez une nouvelle clé et réessayez.
Modèle d’accès et portées de moindre privilège
Le catalogue OAuth complet contient 141 outils. Une clé API d’espace de travail ne voit que les outils associés à l’une de ses portées sélectionnées. La découverte sans authentification peut afficher les métadonnées des outils, mais tools/call exige toujours une clé API ou un jeton OAuth.
Lire les rapports de bogues et résoudre les projets reports:read
Créer et mettre à jour des rapports de bogues reports:read, reports:write
Moniteur d’utilisation usage:read
Vérifier l’état de synchronisation Jira jira:read
Synchroniser ou fusionner des rapports Jira jira:write
Créer des automatisations Web automations:write
Exécuter des automatisations Web et lire les exécutions automations:run
Observer les ressources et exécutions mobiles mobile:read
Gérer les ressources mobiles mobile:read, mobile:write
Exécuter l’automatisation mobile mobile:read, mobile:run
Gérer le catalogue de tests reports:read, test_cases:read, test_cases:write
Worker d’exécution de tests externe test_runs:read, test_runs:write
Les clés API sont liées à l’espace de travail dans lequel elles sont créées. Les paramètres d’un outil peuvent limiter un appel à un projet autorisé, mais ne peuvent pas faire basculer la clé vers un autre espace de travail. Résolvez les UUID de projet avec list_projects et rejetez les noms ambigus.
Titres et annotations des outils
Chaque outil renvoyé par tools/list comprend un titre lisible et des indications de lecture/écriture. Les indications de lecture manquantes proviennent d’une liste explicitement vérifiée, et non de préfixes de noms d’outils ou de portées de clés API. Les annotations explicites, notamment false, sont conservées.
readOnlyHint: truedécrit un outil qui ne modifie pas son environnement.readOnlyHint: falseavecdestructiveHint: falsedécrit des écritures additives, et non une opération en lecture seule.readOnlyHint: falseavecdestructiveHint: truedécrit des écritures potentiellement destructrices. Les outils non classés utilisent ces valeurs par défaut prudentes. L’indication de caractère destructeur n’a de sens que pour les écritures.
login n’est pas en lecture seule : en mode stdio, il enregistre les identifiants. analyze_fix_area et check_config_drift sont des écritures potentiellement destructrices, car elles remplacent des résultats d’analyse ou des références de configuration persistés.
Les annotations n’accordent pas d’accès et ne remplacent ni l’authentification, ni l’autorisation au niveau de l’espace de travail/du projet, ni les portées des clés API, ni les vérifications de droits. Les demandes de confirmation dépendent de la politique d’autorisations du client et des paramètres utilisateur ; les indications ne garantissent pas qu’un appel déclenchera une demande.
Pour la découverte et l’audit programmatiques, téléchargez le mcp-tool-index.json généré. Il répertorie les 141 outils d’exécution, l’accès par portée de clé API ou réservé à OAuth, la famille de droits, les noms des entrées, le mode du schéma de sortie et les annotations MCP explicitement déclarées. Une annotation null signifie qu’elle n’est pas déclarée au point d’appel ; utilisez la réponse tools/list du serveur connecté pour obtenir les annotations effectives après application des valeurs par défaut.
!
Outils réservés à OAuth : la gestion du compte, des clés API et de l’équipe, la gestion des connexions Jira, les autres intégrations, les commandes de test premium, les notes, le suivi du temps et les autres opérations interactives ne sont pas déverrouillés par l’ajout de portées de clé API. Les outils de vérification, de synchronisation et de fusion des rapports Jira constituent l’exception limitée via jira:read et jira:write.
À essayer — Prompts en langage courant
Une fois la connexion établie, vous n’avez pas besoin de connaître les noms des outils ni leurs paramètres. Décrivez ce que vous voulez en langage courant et votre assistant IA appellera automatiquement l’outil bug Agent approprié.
Les prompts concernant les rapports de bogues, la gestion des tests avec portée limitée, l’automatisation Playwright, l’automatisation mobile et l’utilisation sont accessibles aux clés API disposant des portées correspondantes. Les entrées liées à la sécurité, aux performances, à l’exploration, au compte, à l’équipe, aux notes, au suivi du temps et aux autres domaines sans portée de clé API nommée exigent une délégation OAuth et tout droit de forfait applicable.
Rapports de bogues
List my 5 most recent bug reports
Show all open critical bugs in the Auth project
Create a bug titled "Login broken on Safari" with severity s2
Update TEST-451 status to in-progress and assign it to me
Add a comment to TEST-451: "root cause confirmed — null check missing in auth middleware"
Show me everything filed this week, grouped by severity
Gestion des tests
Create a test suite called "Smoke Tests" with cases for login, checkout, and account settings
Run the Regression suite and list all failures
Use Hermes to execute the curated "Checkout smoke" suite and report every result to bugAgent
Show failing test cases from the last 7 days
Which test cases have never been run in the past 90 days?
Get a pass-rate trend for this month vs last month
Sécurité et performances
Run a security scan on https://app.example.com
Get this month's security scan results — show only high and critical findings
Create a performance test for the landing page and check Lighthouse scores
What are the Core Web Vitals for our checkout flow?
Automatisation Playwright
Create a Playwright script that logs in and verifies the dashboard loads
Run the checkout automation on iPhone 15 Pro on a real device
Optimize the login automation script
Show runs for the checkout automation — any failures?
Schedule the smoke test suite to run every weekday at 6 AM UTC
IA exploratoire
Run an exploratory AI session on https://app.example.com with 5 parallel agents
Get the latest exploration run results — list any bugs that were filed
What testing strategies did the agents use and which found the most issues?
Utilisation et statistiques
Check my plan usage for this month
Show team bug stats for this week broken down by severity and type
List all team members and their roles
How many security scans do I have left this month?
Référence rapide
Références de configuration pour les huit options de connexion. Les clients à clé API se connectent à https://mcp.bugagent.com/mcp avec l’en-tête Authorization: Bearer ba_live_YOUR_KEY_HERE sur Streamable HTTP ; les hôtes compatibles OAuth utilisent les identifiants de connecteur générés dans le tableau de bord.
Claude Desktop — macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop — Windows %APPDATA%\Claude\claude_desktop_config.json
Claude Code (CLI) claude mcp add --transport http bugagent https://mcp.bugagent.com/mcp --header "Authorization: Bearer ba_live_..."
Codex CLI ~/.codex/config.toml
Cursor — macOS Settings → MCP UI, ou ~/.cursor/mcp.json
Cursor — Windows %USERPROFILE%\.cursor\mcp.json
VS Code + Continue ~/.continue/config.json (macOS) / %USERPROFILE%\.continue\config.json (Windows)
Hôte compatible OAuth Settings → Developers → MCP Connectors — générez le client_id et le client_secret de l’hôte
HTTP direct (curl) curl / Invoke-RestMethod — incluez Accept: application/json, text/event-stream
Dépannage
401 Unauthorized La clé est incorrecte, expirée ou révoquée. Vérifiez Settings → Developers — les clés commencent par ba_live_. Générez-en une nouvelle si nécessaire.
Les outils n’apparaissent pas dans le client Les clients à clé API ne répertorient que les outils autorisés par les portées sélectionnées pour la clé. Vérifiez la clé dans Settings → Developers, puis quittez complètement le client et relancez-le après avoir modifié sa configuration. Dans Claude Desktop, utilisez Cmd+Q (ne vous contentez pas de fermer la fenêtre). Dans Cursor, vérifiez la présence d’un point vert dans Settings → MCP.
Champ manquant dans le client Comparez le schéma du client au tools/list brut du même point de terminaison. S’ils diffèrent, actualisez ou reconnectez le catalogue d’outils, puis démarrez une nouvelle conversation. Si le problème persiste, recueillez le point de terminaison, la version du client et la réponse brute tools/list ; un cache obsolète n’est qu’une cause possible.
Accept header required Envoyez Accept: application/json, text/event-stream pour Streamable HTTP conforme aux normes. bug Agent normalise actuellement les valeurs manquantes ou incomplètes, mais les intégrations ne doivent pas dépendre de ce comportement de compatibilité.
Données d’un mauvais espace de travail Chaque clé API est limitée à un seul espace de travail. Générez une nouvelle clé depuis l’espace de travail que vous souhaitez interroger dans Settings → Developers.
Les outils apparaissent, mais les appels échouent sans message Examinez la réponse pour repérer isError: true et le contenu renvoyé. Un outil visible peut tout de même être refusé en raison du forfait, du rôle, des droits de fonctionnalité, de l’appartenance au projet, de la propriété ou d’une entrée invalide. Ne vérifiez l’état du serveur qu’après avoir lu l’erreur de l’outil.
Erreur CORS de MCP Inspector Dans l’interface d’Inspector, sélectionnez Proxy (et non Direct) comme type de connexion. Inspector utilise un processus Node local comme proxy pour contourner les restrictions CORS du navigateur.
MCP Inspector v2 se ferme avec le code 5 Inspector v2 renvoie un code de sortie non nul lorsqu’une réponse d’outil contient isError: true. Lisez le message de réponse pour repérer une erreur de forfait, d’autorisation, d’entrée ou d’exécution ; Inspector v1 pouvait renvoyer le code de sortie 0 pour la même réponse d’outil en échec.
Codex CLI — outils non reconnus Vérifiez que ~/.codex/config.toml utilise [mcp_servers.bugagent], définissez bearer_token_env_var = "BUGAGENT_API_KEY" et exportez cette variable avant de démarrer Codex. Vérifiez codex --version si les outils n’apparaissent toujours pas.
Fonctionnalités MCP
Les sessions conversationnelles restent un projet pilote soumis aux restrictions de l’espace de travail. L’enregistrement d’un script généré par une session nécessite l’approbation explicite de son propriétaire dans Workbench via le point de terminaison d’enregistrement réservé aux sessions. Il n’existe aucun outil d’approbation MCP : demander à un agent de rédiger un script ne crée ni ne planifie une automatisation.
La conservation d’une capture d’écran du navigateur cloud crée uniquement un brouillon de constat via le point de terminaison de conservation réservé à la session du propriétaire. L’actualisation en direct ne remplace pas la capture d’écran sélectionnée ; l’enregistrement nécessite toujours un accès actuel du propriétaire, la génération de navigateur autorisée d’origine et une source disponible. Le propriétaire doit l’examiner et l’approuver dans Workbench avant qu’un bogue et ses éléments de preuve privés soient déposés. Aucun outil MCP ne permet de conserver des images ou de contourner cette approbation.
Le consentement au lancement du navigateur est également réservé au propriétaire du tableau de bord. Les clés API, les outils MCP et les réponses génériques du chat ne peuvent pas l’accorder. L’approbation couvre un navigateur en lecture seule et la capture privée de captures d’écran, mais pas la connexion, les actions sur les formulaires ni l’enregistrement de réunions. L’hôte de navigateur cloud de production n’est pas activé par ces contrôles de consentement.
Le catalogue interactif/OAuth complet contient 141 outils. Les clés API d’espace de travail ne découvrent que le sous-ensemble de moindre privilège autorisé par leurs portées sélectionnées ; les outils de compte, d’administration des clés API, d’administration de l’équipe, de tests premium, de notes et de suivi du temps sont réservés aux sessions interactives, sauf si une entrée indique explicitement une portée de clé API.
🐛
Gestion des rapports de bogues
Les mises à jour des rapports enregistrent atomiquement les valeurs réelles Avant/Après, y compris les champs de reproduction, les notes internes et les étiquettes. Les valeurs inchangées et les écritures échouées ne créent pas d’entrées dans l’historique des champs. Le journal des modifications du tableau de bord développe les différences textuelles et permet de parcourir les entrées plus anciennes. L’historique des pièces jointes conserve des métadonnées descriptives, et non des URL signées ou des fichiers supprimés. Les valeurs historiques manquantes ne sont pas complétées rétroactivement. Aucun outil MCP d’historique ni protocole de conflit de modification en direct n’est ajouté ; les clients autorisés peuvent utiliser le point de terminaison REST de l’historique des rapports.
update_bug_report accepte également les champs de chaîne steps_to_reproduce, expected_result et actual_result. Les champs omis sont conservés ; une chaîne vide efface le texte. Les mises à jour conservent les autorisations existantes de l’espace de travail/du projet et les exigences de portée reports:write.
Les imports de captures d’écran Google Sheets reprenables utilisent le point de terminaison REST distinct POST /api/reports/import-attachment avec reports:write, et GET pour consulter l’état avec reports:read. Aucun outil MCP d’import de captures d’écran n’est ajouté. Cette API réservée aux fichiers JPEG/PNG vérifie le stockage privé et le ticket Jira exact associé avant de signaler la fin de l’opération ; l’import de rapports hérité reste limité à la session.
Les liens privés vers les pièces jointes des rapports et des exécutions de tests revérifient l’appartenance active à l’espace de travail et les autorisations actuelles du projet à leur ouverture. Le téléchargement des exécutions de tests nécessite une session du tableau de bord, et non une clé API MCP. Les liens de stockage émis précédemment peuvent rester valides jusqu’à 60 secondes et ne doivent pas être partagés.
create_bug_report— Déposer un nouveau rapport avec classification automatique parmi 19 types — bugs, demandes de fonctionnalités, améliorations, dette technique et plus encore (titre : 3 à 500 caractères). Le tableau facultatifattachmentsaccepte des fichiers encodés en base64 jusqu’à 400 MB chacun : toute image, vidéo, fichier audio, PDF ou texte/JSON. Définissezformat_description: truepour reformater automatiquement la description en un modèle structuré à l’aide de l’IA. Transmetteztime_spent_secondspour suivre l’effort d’assurance qualité. Transmettezpriority(urgent/high/normal/low) pour définir l’urgence de correction indépendamment de la gravité. Transmettezis_epic: truepour créer une Epic, ouparent_epic_id(UUID/ID court) pour créer un enfant dans le même projet autorisé. La réponse inclut les champs de hiérarchie ainsi queproject_id,project,short_id,legacy_short_idetproject_short_id.list_bug_reports— Lister et filtrer les rapports (100 maximum par page). Les filtres de projet sont appliqués côté serveur avant la pagination. Filtrez parproject(UUID, slug, nom exact ou préfixe de ticket),project_id,project_slug,project_prefix,workspace(UUID, nom exact ou préfixe de ticket de l’espace de travail),workspace_id/team_id,is_epic,type,severity,status,resolution,root_causeoureporter_user_id. Le filtresearchrecherche dans le texte des rapports ; une entrée composée uniquement de chiffres, telle que366, effectue une recherche exacte dans les numéros de ticket hérités et ceux des projets, excluant ainsi les textes sans rapport contenant ces chiffres. Chaque résultat inclut des identifiants de personnes/projets limités au tenant, ainsi queis_epic,parent_epic_id,parent_epicetepic_progressavec une taille limitée. Les outils de lecture des rapports n’exposent pas les adresses e-mail des membres.pick_next_bug— Renvoie le ou les prochains bugs sur lesquels la boucle de l’agent doit travailler, par ordre de priorité (S1 → S2 → S3, du plus ancien au plus récent dans chaque catégorie). Portée automatiquement à votre espace de travail — renvoie les tickets de tous les projets de votre équipe avecstatusnew,awaiting-triageouconfirmedet une gravité S1-S3. Lecture seule — ne réserve pas les tickets de manière atomique.severityfacultatif (un seul niveau),limit(1-50, 1 par défaut). Renvoie un objet contenantcountetbugs; chaque bug est une ligne de file d’attente réduite, et non un objet complet de formelist_bug_reports. À associer àclaim_bugpour le modèle lecture puis réservation.claim_bug— Fait passer atomiquement un bug destatusnew,awaiting-triageouconfirmedàstatus='in-progress', définitassigned_tosur l’utilisateur appelant et horodateclaimed_at=NOW(). Sans risque de concurrence entre appels simultanés grâce au modèle UPDATE-WHERE-RETURNING de Postgres : si deux agents appellentclaim_bugsur le même identifiant à peu d’intervalle, un seul reçoitclaimed:trueavec le corps du bug, tandis que l’autre reçoitclaimed:falseavec une chaîne indiquant la raison. Les réponses réussies incluentreporter_user_id,reporter_name,assigned_toetassignee_name. Un processus pg_cron libère automatiquement les réservations obsolètes (status=in-progress+claimed_at> 30 minutes) et les remet ànew, afin que les tickets d’un agent ayant planté réintègrent la file sans intervention manuelle. Entrées :id(UUID ou ID court).get_bug_report— Obtenir les détails complets d’un rapport par UUID ou ID court d’espace de travail/projet. Renvoie les champs standard relatifs aux personnes, au projet et à la qualité, ainsi queis_epic, l’identité du parent, la progression agrégée et une première page limitée des enfants pour les Epics.- Tags natifs des rapports :
create_bug_reportetupdate_bug_reportacceptenttagssous forme de tableau de chaînes, par exemple{"tags":["login","regression"]}. Au maximum 20 éléments bruts sont acceptés avant déduplication. Les chaînes sont supprimées de leurs espaces de début et de fin, doivent être non vides et ne pas dépasser 50 points de code Unicode, et ne peuvent contenir de caractères de contrôle ASCII (U+0000 à U+001F ou U+007F). Les doublons exacts sont supprimés après suppression des espaces ; la casse est préservée etLogindiffère delogin. Lors d’une mise à jour, le tableau remplace tous les tags,[]les efface et l’omission les conserve. Lors de la création, l’omission signifie qu’il n’y a aucun tag.nullet les éléments non valides sont rejetés. Les résultats de création, de lecture, de liste et de mise à jour exposent lestagsnatifs. - Filtrage par tags : appelez
list_bug_reportsavec{"project":"bugagent","tags":["login","regression"]}pour rechercher TOUS les tags demandés, en respectant la casse, avant la pagination. Les mêmes limites de tags s’appliquent ; l’omission ou[]n’applique aucun filtre par tag. Les portées existantesreports:read/reports:writeet les autorisations de l’espace de travail/du projet restent inchangées. Cela n’ajoute aucune interface visuelle pour les tags ni import, synchronisation ou remplissage rétroactif automatique des libellés Jira. get_epic— Lire directement une Epic avecidobligatoire (UUID ou ID court d’espace de travail/projet). Renvoie uniquement l’enregistrement de l’Epic, sans charger implicitement les rapports enfants. Nécessite l’accès à son espace de travail et à son projet ; les appelants utilisant une clé API doivent disposer dereports:read. Utilisez séparémentlist_epic_childrenpour lire les enfants.list_epic_children— Parcourir les rapports enfants d’une Epic avecid,limit(1–100) etoffset. Renvoiechildren,total,has_moreetepic_progressagrégé par SQL, sans charger tous les rapports enfants.update_bug_report— Mettre à jour les champs standard d’un rapport ainsi queis_epicetparent_epic_id. Transmettezparent_epic_id: nullpour détacher ; le changement de parent ou le détachement est atomique et nécessite une autorisation pour le même espace de travail et le même projet. La promotion en Epic détache un parent existant, tandis qu’une Epic ayant des enfants ne peut pas être rétrogradée. Les règles existantes concernant le statut, la résolution, la cause racine et les notifications d’affectation restent applicables. Une modification destatussur un rapport lié à Jira est répercutée sur le ticket Jira via ses transitions de workflow lorsqu’une seule transition légale correspond au statut associé ; sinon, le ticket reste inchangé.add_comment— Ajouter un commentaire à un rapport de bug (UUID ou ID court, corps de 1 à 10 000 caractères). Si le rapport est synchronisé avec Jira, le commentaire est automatiquement envoyé au ticket Jira associé. Le Markdown de pièce jointe privée, tel que, devient un lien intelligent absolu et authentifié vers bugAgent dans Jira. Les personnes qui le consultent doivent se connecter à bugAgent et avoir accès à l’espace de travail et au projet du rapport ; l’affichage natif des aperçus intégrés de Jira n’est pas garanti.list_comments— Lister le fil de commentaires enregistré d’un rapport, du plus ancien au plus récent — chaque commentaire avec le nom de l’auteur,parentId(réponses en fil),createdAtetupdatedAt. Les commentaires ne font pas partie deget_bug_report; c’est donc ainsi que vous pouvez lire la discussion d’un ticket. Accepte un UUID ou un ID court. Cette lecture ne rafraîchit pas Jira. Les intégrations planifiées qui ont besoin de commentaires Jira à jour peuvent d’abord appeler POST /api/jira/comments-refresh avec une clé API autorisée appartenant à un gestionnaire. Utilisez les ID de commentaires et les révisions de contenu pour distinguer les nouveaux commentaires des modifications, et ne prétendez pas fournir un rapport d’activité complet si le rafraîchissement échoue.link_bug_reports— Créer un lien sémantique directionnel entre deux rapports du même projet autorisé. Pourparent-of, le rapport source doit être une Epic et le rapport cible un enfant standard. Privilégiezparent_epic_idlors de la création ou de la mise à jour pour affecter une Epic.unlink_bug_reports— Supprimer un lien de rapport de bug créé précédemment à l’aide de son UUID (link_id, renvoyé parlink_bug_reportsoulist_bug_report_links).list_bug_report_links— Lister tous les liens créés par les utilisateurs qui touchent un rapport de bug. Renvoie chaque lien tel qu’il apparaît depuis le point de vue du rapport fourni — par exemple, une ligneduplicate-ofenregistrée où ce rapport est la cible est affichée commeduplicated-by;parent-ofoù ce rapport est la cible est affiché commesubtask-of;depends-onoù ce rapport est la cible est affiché commeblocks;testing-blocked-byoù ce rapport est la cible est affiché commeblocks-testing.related-toest symétrique. Complète le champsimilar_reportsdétecté automatiquement et renvoyé parget_bug_report.classify_bug— Classer une description dans l’un des 19 types de rapports (bugs, fonctionnalités, améliorations, etc.) avec un score de confianceflush_reports— Supprimer en masse les anciens rapports (administrateurs uniquement)
📊
Utilisation et analyses
get_usage— Vérifier l’utilisation par rapport aux limites du forfait. Les appelants utilisant une clé API doivent disposer deusage:read.get_stats— Comptages quotidiens, répartitions par type, gravité et statut
📁
Gestion des projets
list_projects— Lister les projets accessibles avecid,name,slug,ticket_prefix, la description et le statut par défaut. Utilisez ces valeurs avec les outils de rapports de bugs et de catalogue de tests pour cibler le bon projet.create_project— Créer un projet (il devient automatiquement le projet par défaut s’il s’agit du premier)delete_project— Supprimer définitivement un projet et toutes les données associées (rapports de bugs, automatisations, cas de test, applications mobiles, planifications, captures géographiques, notes, entrées de temps). Réservé au propriétaire ou au gestionnaire. Impossible de supprimer le dernier projet. L’espace de stockage est libéré automatiquement.export_okf_bundle— Exporter les connaissances d’assurance qualité d’un projet — rapports de bugs, cas de test, automatisations et tests de performance, de sécurité et exploratoires — sous forme de lot Markdown OKF/OQA (le format Open Query Agent utilisé par oqa.ai). Le projet actif est utilisé par défaut ; transmettez le paramètre facultatifproject(slug ou nom) pour en exporter un autre. Renvoie la liste des fichiers du lot ainsi que le lot lui-même sous forme de fichier zip encodé en base64.
🔐
Authentification et compte
register_account— Créer un compte (mot de passe : 8 à 128 caractères, limité à 5 requêtes par 15 min)login— Se connecter et recevoir des jetons d’accès (limité à 5 requêtes par 15 min)update_profile— Mettre à jour le nom d’affichagechange_password— Modifier le mot de passe du compteget_settings— Lire le profil et les préférences de notification.update_settings— Mettre à jour les préférences de profil et de notification prises en charge. Modification réservée à OAuth.
🔑
Gestion des clés API
generate_api_key— Créer une clé API nomméelist_api_keys— Lister les clés actives (préfixe uniquement)regenerate_api_key— Révoquer et remplacer une clédelete_api_key— Révoquer définitivement une clé
👥
Gestion de l’équipe
list_workspaces— Lister les espaces de travail auxquels vous appartenez, votre rôle dans chacun et celui utilisé par défaut par la session. Les hôtes multi-espaces de travail peuvent épingler une requête avec l’en-têteX-BugAgent-Workspace(membres actifs uniquement)list_team_members— Lister tous les membres de votre espace de travail avec leurs rôles, leur statut et leurs indicateurs de boosterinvite_team_member— Inviter un utilisateur par e-mail (les gestionnaires peuvent inviter des contributeurs et des gestionnaires ; seuls les propriétaires peuvent inviter des administrateurs). Lien valable 5 jours
🎯
Intégrations
La synchronisation des rapports Jira Cloud est incluse dans les forfaits Free et Enterprise. Un gestionnaire de l’espace de travail doit d’abord connecter Jira dans le tableau de bord. Les clés API de l’espace de travail peuvent ensuite utiliser jira:read pour la comparaison et jira:write pour la synchronisation/fusion ; les limites de forfait et d’API d’Atlassian restent applicables.
sync_to_jira— Envoyer un rapport à Jira à l’aide de la connexion partagée de l’équipe. Le rapport est dirigé vers le projet Jira associé au projet bugAgent du rapport (avec le projet par défaut de l’espace de travail comme solution de repli), en utilisant sa correspondance de champs : la v2 sépare la priorité et la sévérité personnalisée, tandis que les correspondances sans version conservent la traduction historique de la sévérité en priorité. Le paramètre facultatifprojectKeypeut sélectionner uniquement cette correspondance configurée ou le projet par défaut de l’espace de travail ; les projets Jira arbitraires sont refusés. En général, vous n’en avez pas besoin : lorsque le mode de synchronisation du projet estauto_newouauto_all, les rapports que vous créez sont envoyés automatiquement — utilisez cet outil pour un envoi manuel en modemanual.check_jira_sync— Comparaison en lecture seule du titre et du statut, de la priorité et de la sévérité associés pour un rapport lié autorisé. Utilise le projet enregistré du rapport et la connexion Jira. La version 2 associe séparément la priorité Jira et un champ de sévérité personnalisé pris en charge ; les correspondances sans version conservent le comportement historique de conversion de la priorité en sévérité. Cet outil ne compare pas les commentaires, les pièces jointes, le type ni tous les champs Jira.merge_jira_sync— Fusionner ces champs associés en utilisantprefer: jirapour récupérer les valeurs Jira ouprefer: bugagentpour envoyer les valeurs locales. Les mises à jour du statut utilisent les transitions de workflow Jira autorisées. Les conflits sortants non associés, les échecs d’écriture à distance et les modifications locales concurrentes renvoient des erreurs au lieu de prétendre que tout est synchronisé. Les commentaires et les pièces jointes restent des workflows de synchronisation distincts du tableau de bord. Les écritures entre systèmes ne sont pas atomiques.push_to_claude— Générer (ou régénérer) les Notes du développeur d’un rapport de bogue — cause racine, correctif suggéré, étapes de vérification et évaluation des risques. Accepte un UUID ou un identifiant court (WRKID-545). Utilise les clés de la plateforme — aucune connexion Claude par équipe n’est nécessaire. Exécute une chaîne adaptative : trois étapes pour les boguess3/mediumous4/low(brouillon Sonnet → critique OpenAIgpt-5→ synthèse Sonnet), cinq étapes pour les deux catégories de sévérité les plus élevées —s1/criticalous2/high— (brouillon → critique → réfutation Sonnet → arbitre Claude Opus qui lit la transcription complète et rédige les notes finales en exerçant son propre jugement). La réponse expose chaque étape :analysis,draft,critique,rebuttal,challenger_model,adjudicator_modelet un indicateurdebated. En cas d’échec d’une étape, le processus passe à la meilleure réponse suivante. Déclenché automatiquement à la création d’un bogue ; généralement appelé uniquement pour une régénération manuelle.analyze_fix_area— Générer (ou régénérer) le sous-bloc « Likely Fix Area » des Notes du développeur — une réponse Sonnet ciblée qui indique où, dans la base de code, le correctif a le plus de chances de se trouver. Accepte un UUID ou un identifiant court. Utilise la clé Anthropic de la plateforme. Si l’équipe dispose d’une lignegithub_connectionset que le projet a ungithub_repoassocié, la réponse s’appuie sur des extraits réels de fichiers du dépôt connecté ; sinon, elle fournit des conseils généraux et suggère de connecter un dépôt. Renvoie le textelikely_fix_area,generated_at,repo_usedet un indicateurgrounded. Déclenché automatiquement à la création d’un bogue — les agents n’ont généralement besoin de l’appeler que pour une régénération manuelle.upgrade_plan— Obtenir le lien d’inscription Enterprise avec l’aide de l’équipe commerciale
⚡
Tests de performance
create_performance_test— Créer une configuration de test de performance avec une URL, un appareil, des utilisateurs virtuels, une durée, un seuil de score et une option de création automatique de bogues. Le paramètre facultatifprojectaccepte un UUID de projet, un slug, un nom exact ou un préfixe de ticket dans l’espace de travail actuel. S’il est omis, le projet par défaut de l’espace de travail est utilisé, puis le projet le plus ancien ; l’appelant doit y avoir accès. Utilisezlist_projectspour choisir un projet. Un projet vide, inconnu ou inaccessible est refusé.namene doit pas être vide et sa valeur est supprimée des espaces superflus. Les noms des tests de performance doivent être uniques dans l’espace de travail et le projet, sans tenir compte de la casse ni des espaces de début et de fin ; en cas de conflit, un autre nom vous sera demandé. Enterprise uniquementrun_performance_test— Lancer un audit de page et un test de charge pour un test de performance Web. Renvoie un ID d’exécution à interroger pour obtenir les résultats. Les exécutions de profilage d’applications mobiles sont lancées depuis le tableau de bordget_performance_results— Obtenir les résultats complets, notamment les scores Lighthouse (Performance, Accessibilité, Bonnes pratiques, SEO), les Core Web Vitals (LCP, FID, CLS, FCP, TTFB, INP, TBT, SI) et les métriques du test de charge (VU, requêtes, RPS, latences p50/p90/p95/p99)list_performance_tests— Répertorier toutes les configurations de test de performance de l’équipe actuelleget_performance_usage— Vérifier l’utilisation mensuelle des tests de performance. Les tests de performance sont réservés à Enterprise. Free=0, Enterprise=illimité
Exemple de workflow
get_performance_usage→ vérifier le quota restantcreate_performance_test→ configurer un test pour votre URLrun_performance_test→ lancer l’audit et le test de chargeget_performance_results→ examiner les scores et les indicateurs vitaux
🛡
Analyses de sécurité
create_security_scan— Créer une configuration d’analyse de sécurité. Les analyses Web utilisent Quick Scanner et Nuclei (plus de 4 000 modèles) avec trois niveaux de profondeur et une analyse authentifiée facultative. Les analyses mobiles utilisent MobSF pour l’analyse des fichiers binaires APK/IPA. Création automatique de bogues configurable avec seuils de sévérité. Le paramètre facultatifprojectaccepte un UUID de projet, un slug, un nom exact ou un préfixe de ticket dans l’espace de travail actuel. S’il est omis, le projet par défaut de l’espace de travail est utilisé, puis le projet le plus ancien ; l’appelant doit y avoir accès. Utilisezlist_projectspour choisir un projet. Un projet vide, inconnu ou inaccessible est refusé.namene doit pas être vide et sa valeur est supprimée des espaces superflus. Les noms des analyses de sécurité doivent être uniques dans l’espace de travail et le projet, sans tenir compte de la casse ni des espaces de début et de fin, indépendamment des noms des tests de performance ; en cas de conflit, un autre nom vous sera demandé. Enterprise uniquementrun_security_scan— Lancer une analyse de vulnérabilités. Les analyses Web nécessitent la vérification DNS du domaine. Les analyses mobiles nécessitent le téléversement d’une application. Renvoie un ID d’exécution à interroger pour obtenir les résultatsget_security_results— Obtenir les résultats complets, notamment le score de sécurité (0-100), les vulnérabilités classées par sévérité (Critique, Élevée, Moyenne, Faible, Info) avec références CWE, correspondances OWASP, éléments de preuve et conseils de correctionlist_security_scans— Répertorier toutes les configurations d’analyse de sécurité de l’équipe actuelle, avec le dernier score et des badges d’authentification/de profondeurget_security_usage— Vérifier l’utilisation mensuelle des analyses de sécurité. Les analyses de sécurité sont réservées à Enterprise. Enterprise=illimitélist_security_schedules— Répertorier toutes les analyses de sécurité planifiées de l’équipe, avec cron, fuseau horaire, état d’activation, prochaine exécution et paramètres de notification. Jointure avec la configuration d’analyse parente (name, scan_type, target_url)create_security_schedule— Créer une planification récurrente pour une analyse de sécurité. Nécessitescan_idetcron_expression. Une planification par configuration d’analyse. Paramètres facultatifstimezone,notify_on_fail(none/email/slack/both),notify_email,slack_channel_id. Chaque exécution est décomptée du plafond mensuel ; les utilisateurs administrateurs ne sont pas soumis à ce plafond. La profondeur d’analyse est toujours lue dans la configuration d’analyse au moment de l’exécutiondelete_security_schedule— Supprimer une analyse de sécurité planifiée. N’affecte ni la configuration d’analyse parente ni les exécutions terminées
Exemple de workflow
get_security_usage→ vérifier le quota restantcreate_security_scan→ configurer une analyse pour votre URL ou dépôtrun_security_scan→ lancer une analyse de vulnérabilités ponctuellecreate_security_schedule→ automatiser les exécutions récurrentes (par ex. SAST hebdomadaire sur la branche principale)get_security_results→ examiner les vulnérabilités et les corrections
📖
Revue de code
list_code_reviews— Répertorier les revues de code IA récentes de l’équipe. Renvoie les scores de qualité, le nombre de vulnérabilités par sévérité, les informations sur les PR et les horodatages. Enterprise uniquementget_code_review— Obtenir une revue de code avec toutes les vulnérabilités détectées. Chaque résultat comprend la sévérité, la catégorie (bug/sécurité/performance/style/logique/maintenabilité), le titre, la description, une suggestion de code, le chemin du fichier et les numéros de ligneget_code_review_usage— Vérifier l’utilisation des revues de code. La revue de code IA est réservée à Enterprise ; utilisation illimitée avec Enterpriseget_code_review_analytics— Obtenir les statistiques des revues : tendances, catégories/sources des résultats, répartition par sévérité, métriques de vélocité, principaux dépôts/auteurs. Prend en charge une période rétrospective de 7/30/90 jours
Exemple de workflow
get_code_review_usage→ vérifier le nombre de revues restantes- Examiner une PR dans le tableau de bord à l’adresse
/dashboard/code-review list_code_reviews→ consulter les revues récentesget_code_review→ obtenir les résultats et les suggestions
🔍
IA exploratoire
Outil autonome de recherche de bogues sur les sites Web, basé sur plusieurs agents, avec jusqu’à 10 agents parallèles, chacun utilisant une stratégie de test différente.
list_explorations— Répertorier les configurations d’IA exploratoire de l’équipecreate_exploration— Créer une exploration. Accepteagent_count(1–10, maximum 10) pour exécuter plusieurs agents en parallèle avec des stratégies distinctes : happy_path, edge_case, security, accessibility, error_path, performance, mobile, data_integrity, navigation, custom. Cet outil ne permet pas de configurer les identifiants ni le mode d’authentification. Configurez et lancez explicitement Test login flow only depuis le tableau de bord ou l’API REST, puis utilisezget_explorationetget_exploration_runpour examiner la configuration et les résultats. Ne déduisez jamais le mode à partir des instructions et ne transmettez pas d’identifiants dans les arguments MCP. L’exploration par défaut basée sur des identifiants nécessite toujours une session réutilisable.get_exploration— Obtenir la configuration d’exploration avec les paramètres des agents, les métadonnées d’authentification sécurisées et les exécutions récentes. Les mots de passe et les textes chiffrés ne sont jamais renvoyés.get_exploration_run— Obtenir les résultats d’exécution avec la progression de chaque agent, les données des phases, les résultats avec attribution aux agents (agent_index,agent_strategy) et les bogues associésget_exploration_usage— Vérifier l’utilisation mensuelle. L’IA exploratoire est réservée à Enterprise ; Enterprise : illimité (10 agents)
Exemple de workflow
create_explorationavecagent_count: 5→ configurer 5 agents parallèles- Lancer une exécution depuis le tableau de bord ou via
POST /api/explorations/run get_exploration_run→ suivre la progression et les résultats de chaque agent- Consulter dans le tableau de bord les résultats dédupliqués avec attribution aux agents
📝
Notes
list_notes— Répertorier les notes avec des filtres facultatifs par mot-clé, projet, visibilité, dossier, étiquette, archivage, wiki, plage de dates et tri. Renvoie les notes appartenant à l’utilisateur ou partagées avec lui.create_note— Créer une note dans l’un des 5 formats :markdown,plain,bugtemplate,checklist,outline. Définissezvisibilitysurprivateoushared. Si aucun titre n’est fourni, il est généré à partir des 30 premiers caractères. Le tableau facultatifattachmentsaccepte des fichiers encodés en base64 jusqu’à 400 MB chacun : toute image, vidéo, fichier audio, PDF ou fichier texte/JSON. Transmetteztime_spent_secondspour suivre l’effort d’assurance qualité.get_note— Obtenir tous les détails d’une note, y compris son contenu et ses pièces jointes. Nécessiteid.update_note— Mettre à jour le titre, le contenu, le format, la visibilité, le projet outime_spent_seconds. Transmettez un tableauattachmentspour ajouter de nouveaux fichiers (400 MB maximum chacun) aux pièces jointes existantes de la note, sans les remplacer. Seul l’auteur peut effectuer une mise à jour. Nécessiteid.delete_note— Supprimer définitivement une note et ses pièces jointes. Seul l’auteur peut la supprimer. Nécessiteid.list_note_folders— Répertorier les dossiers de notes/wiki, avec possibilité de limiter la recherche à un projet.create_note_folder— Créer un dossier de notes/wiki associé à un projet, avec des paramètres facultatifs de dossier parent, visibilité, favori et accès des coéquipiers.
Exemple de workflow
create_note→ commencer une note de session de testupdate_note→ ajouter des observations au fil des testslist_notes→ rechercher des notes antérieures par mot-clé ou projetget_note→ récupérer la note complète avec ses pièces jointes
🤖
Automatisation
create_automation— Créer une nouvelle automatisation avec un script Playwright personnalisé (aucun enregistrement FAB requis). Nécessitename. Facultatif :target_url(déduit automatiquement de la première URLpage.goto(...)du script si omis),script(Node.js/JavaScript/TypeScript ou Python — le langage est détecté automatiquement ; valeur par défaut : un espace réservé),status(draftouactive, valeur par défaut :draft),project_id. Renvoie l’automatisationid. Conseil — Dupliquer une automatisation : utilisezget_automationpour récupérer le script d’origine, puis appelezcreate_automationavecnamedéfini sur"[Copy] Original Name"et transmettez les valeurs d’originescript,target_urletproject_id. Le doublon démarre avec le statutdraftet sans historique de versions.list_automations— Lister les scripts d’automatisation Playwright. Filtrer parproject_idoustatus(draft,active,paused). Renvoie un tableau d’automatisations avec leur nom, target_url, last_run_status et run_count.get_automation— Obtenir tous les détails d’une automatisation, y compris le script Playwright et les exécutions récentes. Nécessiteid. Renvoie l’automatisation avec lescriptactif, une pilescript_versions(de la plus ancienne à la plus récente, jusqu’à 100 entrées précédentes, chacune{ script, source, timestamp }) et un tableaurecent_runsoù chaque exécution contient lescript_version_label/script_version_sourceutilisé. Appelez cet outil avantrun_automationsi vous devez choisir une version historique précise.run_automation— Déclencher immédiatement l’exécution d’un test Playwright. Nécessiteautomation_id. Locateurs auto-réparateurs (automatique) : lorsqu’une action sur un locateur expire, l’exécuteur demande à Claude un sélecteur fonctionnel et réessaie l’étape une fois — les assertions ne sont jamais réparées, de sorte que les régressions réelles échouent toujours — et chaque réparation est consignée dans la sortie standard de l’exécution. Mode émulation (par défaut) :devicefacultatif pour un profil d’appareil émulé (p. ex.desktop,iphone-15). Mode réel : définissezbrowserstack: trueavecbs_browser(chrome,firefox,safari,edge),bs_os(Windows,OS X) etbs_os_versionpour exécuter le test dans un navigateur de bureau réel. Mobile réel : définissezbs_os: "android"(appareils :"Samsung Galaxy S25 Ultra","Google Pixel 10","OnePlus 13R") oubs_os: "ios"(appareils :"iPhone 17 Pro Max","iPhone 16 Pro Max","iPhone 15 Pro Max") et transmettez le nom de l’appareil dansbs_os_version. Les deux modes s’exécutent en arrière-plan ; « réel » décrit l’environnement d’exécution, et non une session interactive visible. Les scripts Node.js passent parbrowserstack-node-sdk(prend en charge les ordinateurs de bureau, Android et iPhone). Les scripts Python passent parbrowserstack-sdk(pytest-playwright) et ne prennent en charge que les ordinateurs de bureau — l’exécution mobile réelle avec Python n’est pas prise en charge, car lebrowser_type.connect()de pytest-playwright ne peut pas piloter les points de terminaison mobiles réels de BrowserStack. Les vidéos et les journaux réseau sont capturés automatiquement ; les journaux de console sont réservés aux ordinateurs de bureau. Relecture de version : examinezscript_versionsavecget_automation, puis transmettez leversion_labeldurable de votre choix (par exemple"v103"). L’ancienversion_indexreste pris en charge, mais ne doit pas être combiné avecversion_label. Par défaut : si les deux sélecteurs sont omis, le script actuellement enregistré est exécuté. Les libellés supprimés et les indices non valides sont rejetés au lieu d’exécuter silencieusement la version actuelle. L’enregistrement de l’exécution conserve l’instantané exact qui a été exécuté, et tout rapport de bogue créé automatiquement à la suite d’un échec renvoie directement à cette version dans l’éditeur.list_automation_runs— Lister les exécutions récentes d’une automatisation. Nécessiteautomation_id. Renvoie les exécutions avec leur statut, duration_ms et error_message.list_schedules— Lister toutes les exécutions d’automatisations Web planifiées, aveccron_expressionnullable,run_atnullable,once_status, le fuseau horaire, l’appareil et les paramètres de notification. Les lignes récurrentes conserventrun_atetonce_statusà null ; les lignes ponctuelles ont cron à null. États ponctuels :pending,claimed,missed,dispatched,failed,uncertain. Il s’agit d’états de distribution, et non de résultats de test ; consultezlist_automation_runspour les résultats.- Planifications Web récurrentes :
create_schedulevalide cinq champs cron numériques et le fuseau horaire, puis renvoie unnext_run_atUTC futur. Les récurrences mensuelles et annuelles sont prises en charge. Par exemple,30 12 23 9 *dansAmerica/Torontosignifie le 23 septembre à 12 h 30 chaque année, et non une exécution ponctuelle. Les horaires non valides ou impossibles sont rejetés avant la création. Lorsque le jour du mois et le jour de la semaine sont tous deux restreints, les deux doivent correspondre. Les heures inexistantes dues au passage à l’heure d’été sont ignorées ; les heures répétées peuvent se produire deux fois. La distribution a lieu lors du prochain cycle de vérification du planificateur, pas nécessairement à la minute exacte. Le comportement récurrent existant reste inchangé. - Planifications Web ponctuelles : appelez
create_scheduleavec{ "automation_id": "AUTOMATION_UUID", "run_at": "2030-12-15T09:30:00-05:00", "timezone": "America/Toronto" }, en choisissant une date future et en omettantcron_expression. Fournissez exactement un champ de date et d’heure.run_atexige un horodatage ISO 8601 futur avec décalage horaire (décalage explicite ouZ) ; le fuseau horaire IANA sert à l’affichage. Une planification activée et en attente s’exécute au premier cycle cron après l’échéance ; si elle a plus d’une heure de retard, elle est marquéemissed. Elle est revendiquée de manière atomique et désactivée avant la distribution, et ne peut pas être réactivée une fois consommée. Les échecs de distribution définitifs sontfailed; une distribution dont l’issue est incertaine estuncertainet n’est jamais réessayée automatiquement. Vérifiez les exécutions avant de planifier une nouvelle tentative.dispatchedne signifie pas que l’exécution est terminée ou réussie. La création est réservée à l’API/MCP ; il ne s’agit pas d’un nouveau mode de création dans le tableau de bord. - Les fuseaux horaires des planifications Web sont des identifiants IANA tels que
America/Argentina/Buenos_Aires. Le sélecteur du tableau de bord inclut toutes les régions et villes prises en charge par le serveur et utilise par défaut le fuseau horaire de votre profil ; le fuseau horaire MCP par défaut resteUTC. create_schedule— Créer une exécution d’automatisation Web planifiée. Nécessiteautomation_idet exactement l’un decron_expressionourun_at. Prend en charge les paramètres facultatifs d’appareil, de fuseau horaire, de notification en cas d’échec, d’e-mail et de canal Slack. Connectez Slack via le tableau de bord au préalable et choisissez un canal auquel le bot appartient ; l’installation d’un webhook ne suffit pas. Consultez Configuration de Slack et découverte des canaux.- Déploiement et récupération des exécutions ponctuelles : appliquez la migration de base de données
374_one_time_web_schedules.sqlavant de déployer le code correspondant de l’API/MCP et du planificateur.claimedpeut persister après le plantage d’un processus de travail : consultez l’historique des exécutions avant de créer un remplacement pour une distribution revendiquée ou incertaine. Un horodatage ayant plus d’une heure de retard n’est jamais exécuté automatiquement. - Automatisations Web en brouillon : activez l’automatisation avant de créer une planification, de réactiver une planification ou de modifier son expression cron ou son fuseau horaire.
create_schedulevérifie l’accès à l’espace de travail et au projet avant de rejeter le statut Brouillon. Les planifications existantes ignorent les cycles pendant que l’automatisation est en brouillon ; la mise en pause, la suppression, l’épinglage et les modifications portant uniquement sur les notifications restent disponibles. Il n’existe pas d’outil MCP Webupdate_schedule; utilisez le tableau de bord pour ces mises à jour. delete_schedule— Supprimer une exécution d’automatisation Web planifiéelist_mobile_schedules— Lister toutes les exécutions d’automatisations mobiles planifiées, avec les appareils, cron, le fuseau horaire et les notificationscreate_mobile_schedule— Créer une exécution d’automatisation mobile planifiée sur des appareils réels. Nécessiteautomation_idetcron_expression;devicesest facultatif.delete_mobile_schedule— Supprimer une exécution d’automatisation mobile planifiéeoptimize_automation_script— Envoyer un script Playwright à Sonnet 4 pour l’optimiser avec l’IA. Applique une liste de contrôle en 12 points pour corriger les sélecteurs, les stratégies d’attente, les assertions, la gestion des erreurs, les modèles d’authentification, la compatibilité mobile et le mode strict. Nécessiteautomation_id. La version actuelle du script est enregistrée avant l’optimisation. Renvoie le script optimisé et un résumé des modifications.undo_automation_script— Rétablir la version précédente d’un script d’automatisation. Jusqu’à 100 versions précédentes sont conservées. Nécessiteautomation_id. Renvoie le script restauré et le nombre de versions restantes.
Exemple de flux de travail
create_automation→ créer un test avec un script personnalisélist_automations→ parcourir les tests disponiblesget_automation→ examiner le script Playwrightrun_automation→ déclencher le testlist_automation_runs→ vérifier les résultats et la durée
⏱️
Suivi du temps
list_time_entries— Lister les entrées de temps de l’équipe. Filtrer parperiod(today,week,month,all),project_id,categoryetsort(newest,oldest,most_time,least_time). Réservé au forfait Enterprise.create_time_entry— Consigner le temps consacré aux tâches d’assurance qualité. Nécessitedescription,categoryetduration_minutes. Vous pouvez également définirproject_idetentry_date(la valeur par défaut est aujourd’hui). Réservé au forfait Enterprise.update_time_entry— Mettre à jour une entrée de temps existante. Nécessiteid. Peut mettre à jourdescription,category,duration_minutes,project_idouentry_date. Réservé au forfait Enterprise.delete_time_entry— Supprimer définitivement une entrée de temps. Nécessiteid. Réservé au forfait Enterprise.
Exemple de flux de travail
create_time_entry→ consigner 45 minutes de tests de régressionlist_time_entries→ consulter les entrées de temps de cette semaineupdate_time_entry→ ajuster la durée ou la catégoriedelete_time_entry→ supprimer une entrée incorrecte
☑️
Cas de test
Gestion des tests avec des dossiers hiérarchiques, des suites imbriquées (jusqu’à 3 niveaux de profondeur, avec développement automatique des sous-suites lors des exécutions), le réordonnancement par glisser-déposer et un onglet Rapports analytiques avec les tendances des KPI, l’analyse des échecs, l’état des suites, la couverture et la productivité des testeurs. Tous les outils appellent directement Supabase — aucun aller-retour HTTP, latence identique à celle du tableau de bord.
Limites du forfait Free : 10 cas de test stockés, 1 suite, 3 dossiers, 128 Ko de contenu structuré par cas, 2 clés API d’espace de travail actives et 10 exécutions de test au total par mois civil UTC. Jusqu’à 3 de ces exécutions peuvent utiliser Hermes ou un autre agent externe, avec 1 exécution externe active et au maximum 10 cas dans chaque plan externe. Le trafic MCP Free via clé API est limité à 30 requêtes par clé et à 60 par espace de travail par minute. Le stockage des cas de test et les exécutions sont illimités avec le forfait Enterprise, sous réserve des protections générales de la plateforme.
La génération de cas de test par IA, les suggestions de balises par IA, l’importation Figma et les pièces jointes aux fichiers des cas de test nécessitent le forfait Enterprise. La limite de 128 Ko de contenu structuré du forfait Free est distincte des pièces jointes de fichiers du forfait Enterprise. Le forfait Free permet de stocker des références URL. Les outils MCP essentiels pour les cas de test restent disponibles avec le forfait Free, dans les limites indiquées ci-dessus.
Exécution mains libres : la page de révision des exécutions est un carrousel affichant un cas à la fois, avec des raccourcis clavier (P Réussite · F Échec · B Bloqué · S Ignorer) et la commande vocale. Cliquez sur le micro, puis dites « Réussite », « Échec », « Bloqué », « Ignorer », « Suivant », « Précédent », « Ajouter des notes » (transcrit le texte dans le champ des notes), « Enregistrer les notes » ou « Désactiver la commande vocale ». En cas de réussite, passe automatiquement au prochain cas non testé ; en cas d’échec, reste sur le cas pour permettre aux testeurs de dicter les détails et de créer un bogue. Fonctionne dans Chrome, Edge et Safari.
Cas et dossiers
list_test_cases— Répertorier les cas de test accessibles avec un sélecteurprojectfacultatif, ainsi que les filtressearch,priority,type,statusetsort. Ajouterfolder_id(null pour les cas non classés) ousuite_idpour l’appartenance directe, sans descendants. Les appelants utilisant une clé API doivent disposer detest_cases:read.limitvaut 50 par défaut (1-200) ;offsetvaut 0 par défaut (0-1000000). Le tableaucases, inchangé, est accompagné detotal/total_countpour toutes les correspondances autorisées, delimit,offset,has_moreet denext_offset, qui peut être null. Auparavant,totaldésignait à tort la longueur de la page. Suivez next_offset jusqu’à ce qu’il soit null ; ne déduisez pas que la liste est complète à partir de la longueur de la page. Une continuation au-delà de l’offset 1000000 échoue explicitement ; affinez plutôt les filtres au lieu de recevoir un curseur inutilisable ou de conclure à tort que la liste est complète. Les pages dépassant 1 MiB de données de cas échouent explicitement : réessayez avec une limite plus basse au lieu d’accepter des enregistrements omis. Un tri stable par ID est utilisé, mais des modifications concurrentes peuvent décaler les pages d’offset.- Exemple de pagination : appelez
list_test_casesavec{"project":"test-bed","limit":50,"offset":0}. Pour 55 correspondances, la réponse contienttotal:55, has_more:true, next_offset:50. Répétez avecoffset:50pour les cinq restantes ethas_more:false, next_offset:null. create_test_case— Créer un cas de test dans le sélecteurprojectrequis (UUID, slug, nom exact ou préfixe de ticket ; appelez d’abordlist_projects). Deux variantes de modèle :steps(par défaut) — grille{ action, expected }par étape via le tableausteps;text— description libre unique viatext_content. Les deux champs peuvent être envoyés dans le même appel. Le tableau facultatifurls(10 URL http/https maximum) permet d’ajouter des liens de référence et est disponible avec l’offre Free. Les pièces jointes nécessitent l’offre Enterprise et une session de tableau de bord. Les appelants utilisant une clé API doivent disposer detest_cases:write.- Récupération de la pagination : demander un offset de cas supérieur au nombre de résultats disponibles renvoie une erreur explicite ; recommencez à l’offset 0. Cela peut également se produire si des cas sont supprimés entre les requêtes. Suivez la continuation renvoyée au lieu de deviner l’offset suivant.
- Identifiants des cas :
list_test_cases,get_test_case,create_test_caseetupdate_test_caserenvoient l’UUIDid, leshort_idimmuable (par exempleTEST-BA-CASE-123) et lecase_numbernumérique, y compris dans les réponses compactes de mise à jour/sans modification. Les anciens cas sans projet utilisentTEST-CASE-123. Les identifiants manquants sont renvoyés sous la formenull; utilisez l’UUID comme solution de repli. La base de données attribue les identifiants ; les appelants ne peuvent ni les modifier ni les choisir lors de la création. Le renommage d’un préfixe ne réécrit pas les ID existants. - Recherche d’un cas unique :
get_test_caseetupdate_test_caseacceptent un UUID ou un ID court complet dansid;link_test_case_to_bugetlist_test_case_linksacceptent l’un ou l’autre danscase_id. Les espaces environnants, la casse des lettres et le remplissage numérique sont normalisés avant la recherche exacte dans l’espace de travail actif. L’autorisation repose sur l’espace de travail et le projet enregistrés, et non sur le préfixe de l’ID. Les nombres seuls, les ID partiels et les recherches avec caractères génériques ne sont pas acceptés. Les tableaux de cas groupés,case_iddes résultats d’exécution, les ID de bugs, les ID de dossiers et les ID de suites restent limités aux UUID. Les enregistrements de liens conservent l’UUIDcase_id. - Lacunes dans la numérotation : les numéros de cas ne sont pas nécessairement consécutifs. Modifier une URL ou incrémenter un numéro peut mener à un cas manquant ou inaccessible ; cela ne garantit pas l’accès au cas suivant. Découvrez les cas avec l’outil de liste et suivez sa pagination.
- Portée de l’espace de travail : un même ID court peut exister dans différents espaces de travail. MCP le résout uniquement dans l’espace de travail actif ; changez de contexte d’espace de travail avant d’utiliser l’ID court d’un autre espace de travail. Lorsque vous partagez une URL de tableau de bord avec un ID court, conservez
?team=<case.team_id>, par exemple/dashboard/test-cases/TEST-BA-CASE-123?team=<team-uuid>. Les permaliens UUID conservent le comportement existant d’accès autorisé entre espaces de travail. MCP ne construit pas de permalien. get_test_case— Obtenir l’enregistrement du cas autorisé, y compris les étapes et les identifiants. Ne charge pas l’historique des modifications ni l’historique d’exécution. Exemple :{"id":"TEST-BA-CASE-123"}.- Estimations d’exécution :
get_test_caserenvoieestimated_time_secondset l’alias de compatibilitéestimated_time, tous deux en secondes. Une valeur0enregistrée reste0; une estimation inconnue ou manquante vautnull. Le champ canonique prévaut lorsque les deux noms sont présents, y compris avec une valeurnullexplicite ; les valeursestimated_timeprésentes uniquement dans l’ancien champ sont considérées comme des secondes, sans conversion.list_test_casesutiliseestimated_time_seconds. L’entréecreate_test_caseresteestimated_time, également en secondes ; les requêtes et réponses REST utilisentestimated_time_seconds. list_test_case_folders— Répertorier les dossiers accessibles. Limite de 500 ; accepte un sélecteurprojectflexible et un filtreparent_folder_id(utilisez"root"pour les éléments de premier niveau uniquement). Les appelants utilisant une clé API doivent disposer detest_cases:read.get_test_case_folder— Lire directement un dossier de cas de test avec le champidrequis (UUID). Renvoie uniquement l’enregistrement du dossier, sans charger implicitement les dossiers descendants ni les cas de test. Nécessite l’accès à son espace de travail et à son projet ; les appelants utilisant une clé API doivent disposer detest_cases:read.- Valeurs de
typedes cas de test pourlist_test_cases,create_test_caseetbulk_update_test_cases:functional(valeur par défaut à la création),regression,smoke,integration,performance,security,usability,exploratory. Les types non valides sont rejetés avant toute écriture. Utilisezintegrationpour les flux de bout en bout ;e2e,accessibilityetotherne sont pas acceptés comme types de cas de test. Les types de scripts d’automatisation relèvent d’un contrat distinct. create_test_case_folder— Créer un dossier dans leprojectrequis, renvoyé parlist_projects(imbrication jusqu’à 3 niveaux viaparent_folder_id). Nécessite un accès à l’espace de travail de niveau contributeur ou supérieur, ainsi qu’un accès au projet. Les appelants utilisant une clé API doivent également disposer detest_cases:write.update_test_case_folder— Mettre à jour par UUID de dossier :id,namefacultatif (supprimé des espaces en début et fin, de 1 à 120 caractères),descriptionnullable (50000 caractères maximum),parent_folder_idnullable etcard_colornullable. Un UUID parent déplace le dossier et son sous-arbre au sein du même espace de travail et du même projet ;nullle déplace à la racine. La couleur accepte la palette en minuscules#1e293b, #7c2d12, #713f12, #14532d, #1e3a5f, #312e81, #581c87, #831843, #4a044e, #fef08a, #fca5a5, #93c5fd;nulll’efface. Les champs omis sont conservés. Au moins un champ de mise à jour est requis. Les champs inconnus, mal orthographiés ou non valides entraînent le rejet de toute la requête, sans enregistrer aucune modification. Les cycles impliquant le dossier lui-même ou ses descendants, les noms correspondant à un frère, au parent direct ou à un enfant direct (sans tenir compte de la casse ni des espaces environnants), ainsi que les profondeurs de sous-arbre supérieures à 3 (profondeur 0 à la racine) sont rejetés. Les profondeurs des descendants sont mises à jour de façon atomique ; les ID et l’appartenance des cas restent inchangés. Des modifications concurrentes conflictuelles peuvent échouer ; relisez le dossier avant de réessayer. Nécessite un accès actif au projet de niveau contributeur ou supérieur ettest_cases:writepour les clés API. Exemple :{"id":"folder-uuid","card_color":"#93c5fd"}. Renvoie les champs id, team_id, project_id, name, description, card_color, parent_folder_id, depth et updated_at mis à jour. Les lectures de dossiers avec les outils get/list incluent également card_color.update_test_case— Modifier un cas existant par UUID ou ID court complet dansid, avec au moins un champ :name(ou l’aliastitle),description,preconditions,steps,template_type,text_content,priority,type,statusoufolder_id. Les champs omis sont conservés ;stepsremplace le tableau complet ([]l’efface). Une valeurnullexplicite efface la description, les préconditions, text_content ou l’emplacement du dossier ; un text_content vide efface également le contenu. Si name et title sont tous deux envoyés, ils doivent correspondre. La priorité et le type utilisent les énumérations de création ; le statut estactive,draftoudeprecated. Un changement de type aligne type_tags sur le nouveau type, conformément à l’API PATCH. Aucun déplacement entre espaces de travail/projets ni aucune écriture de métadonnées de fichier. Les dossiers doivent appartenir exactement au même espace de travail et au même projet. Nécessitetest_cases:write. Renvoie le résumé du cas,id,short_id,case_numberetchanged; les valeurs inchangées produisentchanged: false. Une mise à jour confirmée dont l’entrée d’historique n’est pas confirmée renvoiewarnings; ne répétez pas la mise à jour pour corriger l’historique. En cas d’erreur de modification concurrente, relisez le cas avant de réessayer. L’appartenance aux suites est distincte : utilisez l’outil groupé ci-dessous, et nonsuite_iddans cet outil. Aucun outil de suppression n’est exposé.bulk_update_test_cases— Appliquer une action à 1–500 UUID de cas ; transmettez un seul ID pour un cas unique.set_folderprendparams.folder_id(UUID à déplacer, ounullexplicite pour retirer le classement).add_to_suiteetremove_from_suiteprennentparams.suite_id; l’ajout ne supprime aucune autre appartenance et ne déplace pas le dossier. Prend également en chargeset_priority,set_status,set_type,add_tags,remove_tags,pinetunpin. Les clés API nécessitenttest_cases:write. Renvoieapplied,skippedeterrors; les actions sur une organisation comptabilisent les lignes modifiées confirmées, dédupliquent les ID et ignorent les appartenances existantes.- Placement à la création :
create_test_caseacceptefolder_idetsuite_idfacultatifs. Découvrez les cibles aveclist_test_case_foldersetlist_test_suites(la découverte de suites nécessitetest_runs:readpour les clés API). Les dossiers constituent un emplacement unique dans le catalogue ; les suites sont des appartenances à des plans de test plusieurs-à-plusieurs. Les cibles doivent appartenir au même espace de travail autorisé et au même projet exact, y compris pour les cas anciens sans portée. Les ID de cas inaccessibles sont ignorés sans détails ; les cibles incompatibles sont rejetées. Les cibles de création non valides échouent avant la création d’un cas. - Création partielle : la création du cas et son ajout à une suite sont deux écritures distinctes. Si l’ajout échoue, la réponse renvoie l’ID du cas créé,
suite_id: nullet un tableauwarnings. Ne répétez pascreate_test_case; réessayezbulk_update_test_casesavecadd_to_suitepour l’ID renvoyé. link_test_case_to_bug— Établir la traçabilité entre un cas de test et un UUID de rapport de bug (verified_by,coversourelates). Les deux enregistrements doivent appartenir à l’espace de travail actif et à des projets auxquels l’appelant a accès.list_test_case_links— Répertorier tous les liens de traçabilité d’un cas de test.list_test_case_review_candidates— Indicateurs de tests obsolètes :never_run(90 jours ou plus depuis la création),always_passes(au moins 5 réussites consécutives en 90 jours),always_skipped(au moins 3 ignorés consécutifs).mark_test_case_review_flags— Enregistrer les indicateurs actuels de candidats à l’archivage danstest_cases.review_flag. S’exécute automatiquement tous les lundis à 09:00 UTC via pg_cron.
Imports
- Import Figma (Enterprise) (session de tableau de bord uniquement) : téléversez une archive zip d’export de frames Figma (jusqu’à 100 MiB) ; Claude analyse chaque écran et rédige des cas de test dans un dossier que vous choisissez ou créez. Avant le décodage, l’archive est limitée à 1 000 entrées, 20 MiB de données développées (décodées) par entrée et 100 MiB de données développées au total ; les fichiers et répertoires ignorés sont également comptabilisés. Les tampons de frames décodés doivent correspondre aux tailles déclarées. Les archives mal formées, les écarts de taille et les limites dépassées font échouer la tâche avant l’analyse par l’IA ; le téléversement d’origine est conservé en cas d’échec pour permettre une nouvelle tentative, sous réserve de la politique de nettoyage du stockage. Les archives valides passent par un pipeline en plusieurs étapes (classification → cas par écran → cas au niveau du flux couvrant les écrans partageant un préfixe → autocritique), avec mise en cache des invites, nouvelle tentative en cas de 429 et isolation des erreurs d’IA par frame. Les cas sont créés avec
status=active, étiquetésai_generated=true, tandis quesource='figma'etsource_frame_nameconservent un lien vers la frame d’origine. Utilise la clé Anthropic de la plateforme — aucune connexion Claude par équipe n’est requise.
Suites et exécutions
list_test_suites— Répertorier jusqu’à 50 suites de tests accessibles avec un filtre flexibleprojectfacultatif. Chaque suite inclut uncase_countentier exact : les cas directement assignés, tous statuts confondus, sans descendants et à l’exclusion des cas d’autres espaces de travail ou projets (les anciens cas sans projet restent inclus). Les décomptes ne sont pas limités par les lignes d’appartenance récupérées. Pour assurer la rétrocompatibilité avec les workers d’exécution, les appelants utilisant une clé API doivent disposer detest_runs:read.get_test_suite— Lire directement une suite de tests avec leidrequis (UUID). Renvoie uniquement l’enregistrement de la suite, sans charger implicitement les suites enfants ni les cas de test membres. Nécessite un accès à son espace de travail et à son projet ; les appelants utilisant une clé API doivent disposer detest_runs:read.create_test_suite— Créer une suite dans leprojectrequis, renvoyé parlist_projects. Imbrication jusqu’à 3 niveaux viaparent_suite_id. Les appelants utilisant une clé API doivent disposer detest_cases:write.update_test_suite— Mettre à jour par UUID de suite :id,namefacultatif (supprimé des espaces de début et de fin, de 1 à 120 caractères),descriptionnullable (50000 caractères maximum) etstatus(actif/archivé). Les champs omis et l’appartenance aux cas sont conservés. Nécessite un accès au projet de niveau contributeur actif ou supérieur ettest_cases:write. Les déplacements de parent et l’épinglage ne sont pas pris en charge ; les déplacements de parent nécessitent une mise à jour atomique de la profondeur des descendants. Renvoie id, team_id, project_id, name, description, parent_suite_id, depth, status et updated_at. Exemple :{"id":"suite-uuid","name":"Checkout regression","description":null}.list_test_runs— Répertorier les exécutions de tests avec le nom de la suite, la personne assignée et un récapitulatif des réussites et échecs. Les preuves d’exécution téléversées depuis le tableau de bord utilisent des liens privés qui nécessitent une session de tableau de bord et un accès à l’espace de travail et au projet de l’exécution ; une clé API MCP ne donne pas accès aux fichiers.create_test_run— Créer une exécution de suite gérée par le tableau de bord. L’exécution d’une suite parente inclut automatiquement chaque cas de toutes les sous-suites descendantes (un cas lié aux deux n’est ajouté qu’une seule fois). Chaque lignetest_run_resultsindique de quelle sous-suite d’origine provient le cas, afin que les pages de résultats puissent regrouper les cas par origine.
Exécution par un agent externe
Ces outils permettent à Hermes ou à un autre environnement d’exécution d’agent d’exécuter une suite approuvée sans devenir le système de référence de l’assurance qualité. Utilisez une clé limitée à l’espace de travail, avec uniquement test_runs:read et test_runs:write. La suite définit la limite du projet ; les appelants ne peuvent pas la remplacer.
start_test_plan— Démarrer ou reprendre un instantané de suite immuable avec unexternal_run_idstable. Un ID répété renvoie l’exécution correspondante existante et sa première page au lieu d’en créer une copie.get_test_run_plan— Lire l’état canonique de l’exécution et une page de plan stable. Transmettez lenext_cursorprécédent ; les pages contiennent 100 cas par défaut et sont limitées à 200.report_test_results— Soumettre de 1 à 200 résultats avec le statutpassed,failed,blockedouskipped. Les nouvelles tentatives exactes sont sans risque ; toute tentative de remplacer le statut d’un cas par un autre est rejetée.abort_test_run— Arrêter une exécution interrompue de manière idempotente, tout en conservant les résultats partiels acceptés et le récapitulatif canonique.
Comportement des quotas : réessayez start_test_plan avec le même external_run_id pour reprendre l’exécution correspondante sans consommer une exécution supplémentaire. La suppression de données ne réinitialise pas l’utilisation mensuelle des exécutions.
Limites de l’environnement d’exécution : les instantanés de cas excluent les identifiants, le contenu des fichiers et les chemins des pièces jointes privées. Dans la version MVP, les preuves de résultat sont du texte. Les identifiants de la cible restent dans l’environnement d’exécution. Les coûts liés au navigateur, au modèle et au réseau restent à la charge du client, qui doit limiter l’accès à la cible et les sorties réseau. Un humain reste responsable des décisions concernant les défauts et les mises en production.
Le guide de l’agent Hermes présente cette boucle sous la forme d’une compétence communautaire maintenue par bugAgent. Le kit de démarrage public contient une configuration prête à copier et une compétence installable. Il ne s’agit pas d’une intégration officielle de Nous Research.
Rapports (analyses de niveau 1 et 4)
get_test_reports_overview— Indicateurs clés pour une période (taux de réussite, exécutions terminées, cas exécutés) avec les variations par rapport à la période précédente équivalente. Il s’agit des mêmes chiffres que ceux affichés dans la bande des indicateurs clés de l’onglet Rapports. Cela ne crée pas de rapport de projet enregistré. Les rapports de projet XLSX Enterprise et leurs planifications sont gérés dans le tableau de bord ; aucun outil MCP n’est activé pour ces artefacts enregistrés dans cette version.- Commandes des rapports du tableau de bord : l’onglet Rapports peut combiner plusieurs suites (y compris leurs descendants) dans un rapport filtré unique. Une exécution terminée propose également une action Exporter en PDF, dont le dénominateur de couverture correspond aux cas inclus dans cette exécution. Ces commandes du tableau de bord n’ajoutent aucun paramètre aux outils MCP ; le téléchargement d’un PDF pour une seule exécution nécessite une session de tableau de bord.
- Filtres de cas du tableau de bord : l’exportation CSV respecte les filtres de cas actuels sur toutes les pages correspondantes. L’état des suites et la couverture par suite regroupent les enfants sous leurs véritables suites parentes dans le périmètre de suites sélectionné. Les suites parentes présentes uniquement dans la hiérarchie affichent des tirets, et non des métriques cumulées à partir des enfants. Les suites sans lien entre elles qui partagent les mêmes cas restent exclues. Ces corrections ne modifient pas les paramètres des outils MCP.
get_test_reports_failures— Quatre listes « que faut-il corriger ? » :failing_cases(≥50 % d’échecs, au moins 3 exécutions),flaky_cases(plus grand nombre d’alternances entre réussite et échec),failing_suites(≥30 % d’échecs, au moins 5 exécutions),regressed_cases(échec le plus récent précédé d’une réussite pendant la période).
Exemple de flux de travail
create_test_case_folder→ créer une arborescence de dossiers (par ex. Smoke → Auth). Utilisez l’ID de dossier renvoyé lors de la création d’un cas de test dans le même projet ; le formulaire Nouveau cas de test du tableau de bord permet également de créer un dossier à la volée.create_test_case→ définir les cas ; modifier leur contenu avecupdate_test_case, organiser l’appartenance aux suites avecbulk_update_test_cases- Exemple d’appel d’outil :
{"name":"update_test_case","arguments":{"id":"00000000-0000-4000-8000-000000000001","title":"Verify login rejection","steps":[{"action":"Submit an incorrect password","expected":"An error is shown; no session is created"}],"status":"active","folder_id":null}}. La priorité, le type et la description omis restent inchangés. create_test_suite→ créer un plan de test (les sous-suites sont facultatives, jusqu’à 3 niveaux de profondeur)create_test_run→ créer une exécution gérée par un humain ou le tableau de bord à partir d’une suite parente — les sous-suites sont incluses automatiquementstart_test_plan→ démarrer ou reprendre une exécution par un agent externe, avec des tentatives répétées sans risqueget_test_run_plan→ récupérer chaque page immuable du plan, puis l’exécuter dans l’environnement d’exécution sélectionnéreport_test_results→ renvoyer des lots de résultats limités ; appelezabort_test_runsi l’exécution ne peut pas se poursuivre en toute sécuritéget_test_reports_failures→ demander « que faut-il corriger cette semaine ? » une fois l’exécution terminéeget_test_reports_overview→ suivre l’évolution du taux de réussite d’une semaine à l’autre
⚡
Team Booster
scale_team— Augmentez instantanément la capacité de votre équipe d’assurance qualité grâce à des testeurs de renfort. Les comptes sont automatiquement créés avec un accès de testeur. Indiquezteam_size(1–10),location,duration,budgetet, facultativement,product_url,product_typesettech_levels. Disponible avec le forfait Enterprise. Aucun frais ne vous sera facturé avant l’approbation.
Exemple de flux de travail
scale_team→ recruter 5 testeurs seniors aux États-Unis pour 1 moislist_team_members→ vérifier que les nouveaux testeurs apparaissent dans votre équipelist_bug_reports→ examiner les rapports déposés par les testeurs de renfort
📱
Tests mobiles (Enterprise)
Les ressources mobiles sont limitées au projet. Transmettez project_id ou un sélecteur flexible project lors des créations, des importations et des listes filtrées. Les automatisations héritent du projet de l’application associée ; sinon, le serveur utilise le projet par défaut de l’espace de travail. Les listes sans filtre peuvent encore inclure des enregistrements hérités au niveau de l’espace de travail jusqu’à leur migration.
list_mobile_apps— Répertorier les applications téléversées, avec les filtres facultatifsproject_id/project,platformetlimit. Renvoie leproject_idde chaque application afin que les agents puissent conserver les opérations suivantes dans le même projet.upload_mobile_app— Enregistrer une application APK (Android) ou IPA (iOS) pour les tests sur des appareils réels. Nécessitename,platform(android/ios) etfile_url; transmettezproject_idpour l’affecter au projet actif. Pour iOS, téléversez l’IPA pour les exécutions sur appareil réel, puis utilisez le tableau de bord pour téléverser une version de simulateur.appà des fins d’enregistrement.update_mobile_app— Remplacer le binaire d’une application par une nouvelle version. Efface les URL mises en cache et les versions de simulateur afin que toutes les automatisations utilisent la nouvelle version lors de leur prochaine exécution. Nécessiteapp_idetfile_url. Facultatif :version. Les profils de connexion privés associés nécessitent leur créateur actif ; les profils partagés nécessitent un accès actif au même projet. Les planifications héritent du paramètre par défaut de l’automatisation protégée.list_mobile_automations— Répertorier les automatisations mobiles, avec les filtres facultatifsproject_id/project,app_id,statusetlimit. Les résultats incluentproject_idet l’ID de l’application associée.create_mobile_automation— Créer un script de test. Nécessitename,app_id,script_type(maestropour YAML,appiumpour Appium Python,appium_jspour Appium JavaScript) etscript; transmettezproject_idsi l’application n’est pas déjà associée à un projet. Pour un flux Maestro YAML autonome et validé de l’extérieur, définissezexecution_modesurbrowserstack_maestro; sinon, la valeur par défaut estappium_actions. LeappIdYAML doit correspondre à l’ID de package ou d’ensemble enregistré pour l’application associée ; si aucun n’est enregistré, le premier flux natif validé le définit. Les ID d’application fictifs et les ID de ressources Android obfusqués sont rejetés. LerunFlowintégré est pris en charge, mais les références à des fichiers de flux/script externes sont rejetées dans la v1. Maestro natif conserve les commandes telles queinputRandomTextetcopyTextFrom, ainsi que les expressions d’exécution telles que${maestro.copiedText}et${output.value}. Uncredential_iddu même projet peut fournir des valeursinputTextcomplètes de${USERNAME}/${PASSWORD}. Unvariable_profile_iddu même projet peut enregistrer la valeur par défaut des valeurs${DATA_*}référencées ; chaque clé référencée doit exister. Les profils de données ne contiennent que des données synthétiques non secrètes.import_mobile_script— Importer un script de test mobile existant et le convertir en automatisation exécutable, en conservant les sélecteurs propres au développeur afin que les exécutions résolvent précisément les éléments. Dialectes pris en charge : Appium‑Python, WebdriverIO, Maestro (flux YAML) et Playwright (mobile‑web). Les espaces réservés d’ID de ressources Android obfusqués sont ignorés et signalés dans lewarningsde mappage des sélecteurs. Applications Android uniquement. Nécessitename,app_idetscript;target_devicesetproject_idsont facultatifs. Renvoie l’automatisation, ainsi queaction_count, lesdialectdétectés et lewarningsde mappage des sélecteurs.run_mobile_automation— Lancer une automatisation mobile sur un appareil réel. Nécessiteautomation_id;device,os_version,credential_idet levariable_profile_idnatif de Maestro sont facultatifs. Pour les données, omettezvariable_profile_idpour hériter de la valeur par défaut de l’automatisation, transmetteznullpour n’utiliser aucun profil, ou transmettez un UUID du même projet pour remplacer la valeur. Chaque clé${DATA_*}référencée doit exister. Un profil de connexion privé nécessite son créateur actif ; un profil de connexion partagé nécessite un accès actif au même projet. Les valeurs d’identifiants connues exactes sont filtrées et les valeurs exactes des profils de données font l’objet d’un filtrage au mieux à partir des éléments textuels persistés ; les valeurs transformées, partielles, encodées ou dérivées de l’application peuvent subsister. Les vidéos et captures d’écran privées autorisées restent accessibles et peuvent afficher des valeurs rendues par l’application testée ; les profils de données doivent donc contenir uniquement des valeurs synthétiques non secrètes. Si le contexte de masquage des identifiants n’est pas disponible ou si l’innocuité de l’assainissement ne peut être démontrée, les textes détaillés contenant des identifiants sont masqués, tandis que l’état et les éléments visuels disponibles restent accessibles. Les diagnostics nécessitent une autorisation sur l’espace de travail et le projet ; les liens vers les médias expirent au bout de cinq minutes.list_mobile_runs— Obtenir les résultats d’exécution mobile autorisés (état, appareil, résumé des résultats, liens privés vers les vidéos et captures d’écran, session BrowserStack, journaux et échecs filtrés de Maestro natif avec identifiants lorsqu’ils sont disponibles en toute sécurité, ainsi que tout bug créé automatiquement). L’appartenance à l’espace de travail et l’accès au projet sont vérifiés pour les diagnostics d’exécution. Filtres facultatifs :project_id,automation_id,status(queued,running,passed,failed,error,archived) etlimit. Les exécutions archivées sont exclues par défaut.create_login_profile— Créer un profil chiffré en écriture seule contenant un nom d’utilisateur et un mot de passe, réutilisable par Mobile, Web Automation et Exploratory AI. Nécessiteproject_id,name,usernameetpassword;visibilityest facultatif et vautprivate(par défaut) oushared. Les profils privés sont réservés à leur créateur. Les profils partagés sont utilisables par les membres actifs ayant accès au même projet.create_mobile_credential— Nom de compatibilité pourcreate_login_profile; utilise les mêmes entrées et le même périmètre de sécurité.list_login_profiles— Répertorier uniquement les profils visibles par l’appelant, éventuellement pour un seulproject_id. Renvoie des métadonnées non secrètes, notammentvisibility; les profils privés appartenant à d’autres utilisateurs et les projets inaccessibles sont omis.list_mobile_credentials— Nom de compatibilité pourlist_login_profiles; ne renvoie jamais les secrets d’identification.update_login_profile— Renommer, renouveler ou modifiervisibility. Le créateur actif peut modifier n’importe quel champ. Un propriétaire ou administrateur actif de l’espace de travail peut renommer ou renouveler un profil partagé, mais ne peut pas en modifier la visibilité ; les profils privés restent réservés à leur créateur.update_mobile_credential— Nom de compatibilité pourupdate_login_profile; applique les mêmes vérifications de propriété et de projet.delete_login_profile— Suppression réversible par le créateur, avec récupération du cycle de vie par le propriétaire/l’administrateur uniquement pour les profils partagés. Les valeurs par défaut pour les utilisations futures sont effacées, mais l’historique d’audit est conservé.delete_mobile_credential— Nom de compatibilité pourdelete_login_profile; les références historiques sont conservées à des fins d’audit.create_mobile_variable_profile— Créer des données de test synthétiques réutilisables et limitées à un projet avecproject_id,nameet un objetvariablestel que{"DATA_EMAIL":"qa@example.test","DATA_REGION":"ca"}. Les clés doivent être des identifiantsDATA_*en majuscules. Les profils acceptent de 1 à 100 chaînes, 4096 octets UTF-8 par valeur et 65536 octets au total. Les noms réservés aux identifiants et à l’exécution sont rejetés. Ne stockez jamais d’identifiants, de jetons, de données personnelles de production ni d’autres secrets.list_mobile_variable_profiles— Répertorier les profils Mobile/Both et leurs valeurs non secrètes lisibles pour un seulproject_idautorisé. Les règles d’affectation des projets s’appliquent. Les profils existants et la création mobile utilisent par défautboth; la création et la mise à jour acceptentplatform(mobileouboth). Les profils Web uniquement sont exclus de l’accès au catalogue mobile et de l’exécution.update_mobile_variable_profile— Renommer un profil ou remplacer son objetvariablescomplet parid. Seul le créateur actif ou un propriétaire/administrateur actif de l’espace de travail peut le modifier.delete_mobile_variable_profile— Supprimer un profil de manière réversible parid. Seul le créateur actif ou un propriétaire/administrateur actif de l’espace de travail peut le supprimer ; les valeurs par défaut des automatisations sont effacées, mais les références des exécutions historiques sont conservées.list_mobile_schedules,create_mobile_schedule,delete_mobile_schedule— Répertorier, créer et supprimer des planifications sur appareil réel. Les planifications héritent du contexte du projet, du profil de connexion et du profil de variables non secrètes de l’automatisation sélectionnée. Les profils de connexion privés nécessitent leur créateur actif ; les profils de connexion partagés nécessitent un accès actif au même projet. Les profils de variables non secrètes conservent leur politique créateur ou propriétaire/administrateur. Les modifications et la suppression des planifications sont réservées au créateur actif de la planification ou à un propriétaire/administrateur actif de l’espace de travail.
Catalogue de données de test Web
Le même catalogue de projet non secret est disponible dans Automate Web. Ces outils nécessitent le droit automation de l’espace de travail et la portée de clé API automations:write, y compris pour les lectures. Ils ne nécessitent pas d’accès Mobile. Les valeurs ne partagent jamais d’enregistrements avec les profils de connexion chiffrés. Le catalogue ne permet pas encore d’associer des valeurs de profil aux exécutions Web ni de les y injecter.
create_web_variable_profile:project_id,nameetvariablessont obligatoires ;platformest facultatif (webouboth), valeur par défautweb. Utilise les mêmes limites DATA_* que Mobile. Renvoie le profil, y compris sonplatform.list_web_variable_profiles:project_idest obligatoire ; renvoie{ profiles: [...] }contenant uniquement les enregistrements Web/Both.get_web_variable_profile:idest obligatoire ; renvoie un profil Web/Both accessible et ses valeurs synthétiques.update_web_variable_profile:idest obligatoire ;name, le remplacement completvariablesouplatform(webouboth) sont facultatifs. Nécessite le créateur actif ou un propriétaire/administrateur actif de l’espace de travail. Pour restreindre Both à Mobile, utilisez le catalogue Mobile avec un accès Mobile.delete_web_variable_profile:idest obligatoire ; mêmes autorisations de gestion. Effectue une suppression réversible et renvoie{ deleted: true }, tout en conservant l’historique d’audit.
Exemple : résolvez un projet à l’aide de list_projects, appelez create_web_variable_profile avec {"project_id":"PROJECT_UUID","name":"Canadian checkout","platform":"both","variables":{"DATA_REGION":"CA"}}, puis vérifiez-le avec list_web_variable_profiles. Les projets/profils inaccessibles échouent sans exposer leurs valeurs ; les données non valides ou les noms en double à l’échelle du projet sont rejetés.
Exemple de flux de travail — Android
list_projects→ résoudre leproject_idcibleupload_mobile_app→ enregistrer l’APK dans ce projet- Enregistrer de manière sécurisée dans le tableau de bord, ou utiliser
import_mobile_script/create_mobile_automation list_mobile_automations→ résoudre l’automatisation dans le même projetrun_mobile_automation→ la lancer sur un appareil réel, éventuellement avec un profil de connexionlist_mobile_runs→ vérifier l’état, le résumé des résultats, les liens visuels privés et les métadonnées de session BrowserStack- Les échecs créent automatiquement des rapports de bug avec une capture de l’échec et le détail des étapes
Exemple de flux de travail — iOS
upload_mobile_app→ enregistrer votre IPA avecproject_idpour les exécutions sur appareil réel- Téléverser la version de simulateur
.appsur la page de détails de l’application (pour l’enregistrement) - Enregistrer le test dans le navigateur → les actions sont capturées depuis le simulateur
run_mobile_automation→ lancer l’automatisation enregistrée sur un iPhone (utilise l’IPA)update_mobile_app→ remplacer l’IPA par une nouvelle version lorsqu’elle est prête
Exemple de flux de travail — Maestro natif
upload_mobile_app→ enregistrer l’APK ou l’IPA dans le projet ciblecreate_mobile_credential→ créer éventuellement un profil du même projet pour un flux authentifiécreate_mobile_variable_profile→ créer éventuellement des valeurs synthétiquesDATA_*du même projet utilisées par le fluxcreate_mobile_automation→ transmettre un flux YAML fonctionnel connu avec le package/bundle exactappIdde l’application associée,script_type: maestroetexecution_mode: browserstack_maestro. Utilisez${USERNAME}/${PASSWORD}pour la connexion et des espaces réservés de type${DATA_EMAIL}pour les données synthétiques ; transmettez les ID de profil pour enregistrer les valeurs par défaut.run_mobile_automation→ sélectionner un appareil compatible et éventuellement remplacer le profil de connexion ou de variables. Omettez le profil de variables pour en hériter, ou transmetteznullpour le désactiver lors d’une exécution.list_mobile_runs→ examiner les résumés autorisés de réussite/échec, les vidéos et captures d’écran privées, les journaux filtrés, les noms réels des étapes, les échecs détaillés et les métadonnées de session. Si l’assainissement sûr d’une exécution avec identifiants ne peut être établi, les textes détaillés sont masqués, tandis que l’état et les éléments visuels disponibles restent accessibles.
Améliorer avec l’IA : la version bêta sur liste d’autorisation est disponible via le tableau de bord et les points de terminaison REST d’amélioration. Aucun outil MCP d’amélioration ne fait encore partie du catalogue public.
✅
Conformité et preuves (Enterprise)
collect_compliance_evidence— Déclenche la collecte automatisée de preuves à partir des services connectés (Cloudflare, GitHub, Sentry, Supabase, Railway). Renvoie un ID d’exécution. Collecte les paramètres SSL/TLS, l’état du WAF, les alertes Dependabot, les tendances des erreurs, l’historique des déploiements et bien plus.check_config_drift— Vérifie la dérive de configuration de sécurité par rapport aux références dans tous les services connectés (mode SSL, version TLS, HSTS, règles WAF, en-têtes de sécurité).generate_access_review— Crée un rapport trimestriel de revue des accès. Audite les membres de l’équipe, les rôles, l’état de la MFA et l’utilisation des clés API, puis génère des recommandations (par exemple, révoquer les clés inactives).get_security_events— Interroge la chronologie des événements de sécurité interservices. Filtre par source (cloudflare, sentry, github) et par gravité (critical, high, medium, low, info). Les événements sont automatiquement corrélés entre les services.
Couverture de conformité
Ces outils contribuent au respect des exigences de conformité SOC2 (CC4.1, CC6.1, CC7.2, CC8.1), ISO 27001 (A.5.18, A.8.8, A.8.9, A.8.15-16, A.8.29) et GDPR (Art. 5, 25, 32, 33).
Clients compatibles
bug Agent fonctionne avec tout client prenant en charge le Model Context Protocol. Voici des guides de configuration pour les clients populaires :
Ouvrez Settings → Developer → Edit Config, puis ajoutez :
{
"mcpServers": {
"bugagent": {
"type": "http",
"url": "https://mcp.bugagent.com/mcp",
"headers": {
"Authorization": "Bearer ba_live_YOUR_KEY_HERE"
}
}
}
}
Redémarrez Claude Desktop après l’enregistrement.
✳️
Cursor
Ouvrez Settings → MCP Servers → Add Server, ou modifiez .cursor/mcp.json à la racine de votre projet :
{
"mcpServers": {
"bugagent": {
"type": "http",
"url": "https://mcp.bugagent.com/mcp",
"headers": {
"Authorization": "Bearer ba_live_YOUR_KEY_HERE"
}
}
}
}
🌊
Windsurf
Ouvrez Settings → MCP → Add Server, ou modifiez votre fichier de configuration MCP :
{
"mcpServers": {
"bugagent": {
"type": "http",
"url": "https://mcp.bugagent.com/mcp",
"headers": {
"Authorization": "Bearer ba_live_YOUR_KEY_HERE"
}
}
}
}
Ajoutez bug Agent directement depuis le terminal :
claude mcp add --transport http bugagent https://mcp.bugagent.com/mcp --header "Authorization: Bearer ba_live_YOUR_KEY_HERE"
Cette méthode se connecte directement au serveur HTTP Streamable hébergé.
Pour les clients qui nécessitent stdio, utilisez le pont bugagent-mcp publié :
- Commande :
npx - Ligne de commande :
npx -y bugagent-mcp - Arguments :
["-y", "bugagent-mcp"] - Variables d’environnement :
BUGAGENT_API_KEY
Obtenir de l’aide
Besoin d’aide ? Nous sommes là pour vous aider.
Communauté Discord
Rejoignez notre Discord pour obtenir de l’aide en temps réel et participer aux discussions de la communauté.
Assistance par e-mail
support@bugagent.com — Nous répondons généralement sous 24 heures.