Surveillance Power Automate avec FlowStudio MCP
Surveillez l'intégrité des flux, suivez les taux d'échec et inventoriez les actifs des locataires via le cached store FlowStudio MCP — lectures rapides, sans limites de débit PA API, enrichis avec métadonnées de gouvernance et conseils de remédiation.
⚠️ Abonnement Pro+ requis. Cette skill utilise les outils
store_*qui ne fonctionnent que pour FlowStudio for Teams ou les abonnés MCP Pro+.Si l'utilisateur n'a pas l'accès Pro+ : le premier appel d'outil
store_*retournera une erreur 403/404. Quand cela se produit :
- ARRÊTEZ d'appeler les outils store
- Dites à l'utilisateur que cette fonctionnalité nécessite un abonnement Pro+
- Dirigez-le vers https://mcp.flowstudio.app/pricing
- Si sa question peut être répondue avec des outils live (par ex. « lister les flux dans un environnement »), proposez d'utiliser la skill
power-automate-mcpà la placeDécouverte : chargez les schémas d'outils via
tool_searchplutôt quetools/list— appelez avecquery: "select:list_store_flows,get_store_flow_summary"pour les outils de surveillance courants, ou chargez l'ensemble complet avecquery: "skill:governance"(le bundle de gouvernance du serveur couvre aussi la plupart des lectures de surveillance — cette skill etpower-automate-governancepartagent la même famille d'outils sous-jacente). Cette skill couvre les formes de réponse, les notes comportementales et les motifs de workflow — des choses quetool_searchne peut pas vous dire. Si ce document contredit une réponse API réelle, l'API a raison.
Fonctionnement de la surveillance
Flow Studio analyse l'API Power Automate quotidiennement pour chaque abonné et met en cache les résultats. Il y a deux niveaux :
- Tous les flux obtiennent des métadonnées scannées : définition, connexions, propriétaires, type de
déclenchement, et statistiques d'exécution agrégées (
runPeriodTotal,runPeriodFailRate, etc.). Les environnements, applications, connexions et créateurs sont aussi scannés. - Flux surveillés (
monitor: true) obtiennent en plus le détail par exécution : enregistrements d'exécution individuels avec statut, durée, noms d'actions échouées, et conseils de remédiation. C'est ce qui peupleget_store_flow_runs,get_store_flow_errorsetget_store_flow_summary.
Fraîcheur des données : Vérifiez le champ scanned sur get_store_flow pour voir quand
un flux a été scanné pour la dernière fois. S'il est obsolète, le pipeline de scanning peut ne pas tourner.
Activation de la surveillance : Définez monitor: true via update_store_flow ou l'app
Flow Studio for Teams
(comment sélectionner les flux).
Désignation de flux critiques : Utilisez update_store_flow avec critical=true
sur les flux critiques pour l'entreprise. Cela permet à la skill de gouvernance de gérer les règles de notification
pour auto-configurer les alertes d'échec sur les flux critiques.
Outils
| Outil | Objectif |
|---|---|
list_store_flows |
Lister les flux avec taux d'échec et filtres de surveillance |
get_store_flow |
Enregistrement en cache complet : stats d'exécution, propriétaires, tier, connexions, définition |
get_store_flow_summary |
Stats d'exécution agrégées : taux de succès/échec, durée moy/max |
get_store_flow_runs |
Historique par exécution avec durée, statut, actions échouées, remédiation |
get_store_flow_errors |
Exécutions échouées uniquement avec noms d'actions et conseils de remédiation |
get_store_flow_trigger_url |
URL de déclenchement du cache (instantané, sans appel PA API) |
set_store_flow_state |
Démarrer ou arrêter un flux et synchroniser l'état au cache |
update_store_flow |
Définir flag monitoring, règles de notification, tags, métadonnées de gouvernance |
list_store_environments |
Tous les environnements Power Platform |
list_store_connections |
Toutes les connexions |
list_store_makers |
Tous les créateurs (développeurs citoyens) |
get_store_maker |
Détail créateur : counts de flux/app, licenses, statut de compte |
list_store_power_apps |
Toutes les Power Apps canvas |
Store vs Live
| Question | Utiliser Store | Utiliser Live |
|---|---|---|
| Combien de flux échouent ? | list_store_flows |
— |
| Quel est le taux d'échec sur 30 jours ? | get_store_flow_summary |
— |
| Afficher l'historique des erreurs pour un flux | get_store_flow_errors |
— |
| Qui a créé ce flux ? | get_store_flow → analyser owners |
— |
| Lire la définition complète du flux | get_store_flow la contient (chaîne JSON) |
get_live_flow (structuré) |
| Inspecter les entrées/sorties d'action d'une exécution | — | get_live_flow_run_action_outputs |
| Resoumettre une exécution échouée | — | resubmit_live_flow_run |
Les outils store répondent à « qu'est-ce qui s'est passé ? » et « quel est son état de santé ? » Les outils live répondent à « qu'est-ce qui n'a pas fonctionné exactement ? » et « réparez maintenant. »
Si
get_store_flow_runs,get_store_flow_errorsouget_store_flow_summaryretournent des résultats vides, vérifiez : (1)monitor: trueest-il activé sur le flux ? et (2) le champscannedest-il récent ? Utilisezget_store_flowpour vérifier les deux.
Formes de réponse
list_store_flows
Tableau direct. Filtres : monitor (bool), rule_notify_onfail (bool),
rule_notify_onmissingdays (bool).
[
{
"id": "Default-<envGuid>.<flowGuid>",
"displayName": "Stripe subscription updated",
"state": "Started",
"triggerType": "Request",
"triggerUrl": "https://...",
"tags": ["#operations", "#sensitive"],
"environmentName": "Default-26e65220-...",
"monitor": true,
"runPeriodFailRate": 0.012,
"runPeriodTotal": 82,
"createdTime": "2025-06-24T01:20:53Z",
"lastModifiedTime": "2025-06-24T03:51:03Z"
}
]
Format
id:Default-<envGuid>.<flowGuid>. Divisez au premier.pour obtenirenvironmentNameetflowName.
triggerUrlettagssont optionnels. Certaines entrées sont partielles (justeid+monitor) — ignorez les entrées sansdisplayName.Les tags sur
list_store_flowssont auto-extraits du champdescriptiondu flux (hashtags de créateur comme#operations). Les tags écrits viaupdate_store_flow(tags=...)sont stockés séparément et visibles uniquement surget_store_flow— ils n'apparaissent PAS dans la réponse de liste.
get_store_flow
Enregistrement en cache complet. Champs clés :
| Catégorie | Champs |
|---|---|
| Identité | name, displayName, environmentName, state, triggerType, triggerKind, tier, sharingType |
| Stats d'exécution | runPeriodTotal, runPeriodFails, runPeriodSuccess, runPeriodFailRate, runPeriodSuccessRate, runPeriodDurationAverage/Max/Min (millisecondes), runTotal, runFails, runFirst, runLast, runToday |
| Gouvernance | monitor (bool), rule_notify_onfail (bool), rule_notify_onmissingdays (nombre), rule_notify_email (chaîne), log_notify_onfail (ISO), description, tags |
| Fraîcheur | scanned (ISO), nextScan (ISO) |
| Cycle de vie | deleted (bool), deletedTime (ISO) |
| Chaînes JSON | actions, connections, owners, complexity, definition, createdBy, security, triggers, referencedResources, runError — tous nécessitent json.loads() pour analyser |
Les champs de durée (
runPeriodDurationAverage,Max,Min) sont en millisecondes. Divisez par 1000 pour les secondes.
runErrorcontient la dernière erreur d'exécution sous forme de chaîne JSON. Analysez-la :json.loads(record["runError"])— retourne{}quand pas d'erreur.
get_store_flow_summary
Stats agrégées sur une fenêtre de temps (défaut : 7 derniers jours).
{
"flowKey": "Default-<envGuid>.<flowGuid>",
"windowStart": null,
"windowEnd": null,
"totalRuns": 82,
"successRuns": 81,
"failRuns": 1,
"successRate": 0.988,
"failRate": 0.012,
"averageDurationSeconds": 2.877,
"maxDurationSeconds": 9.433,
"firstFailRunRemediation": null,
"firstFailRunUrl": null
}
Retourne tous les zéros quand aucune donnée d'exécution n'existe pour ce flux dans la fenêtre. Utilisez les paramètres
startTimeetendTime(ISO 8601) pour changer la fenêtre.
get_store_flow_runs / get_store_flow_errors
Tableau direct. get_store_flow_errors filtre à status=Failed uniquement.
Paramètres : startTime, endTime, status (tableau : ["Failed"],
["Succeeded"], etc.).
Les deux retournent
[]quand aucune donnée d'exécution n'existe.
get_store_flow_trigger_url
{
"flowKey": "Default-<envGuid>.<flowGuid>",
"displayName": "Stripe subscription updated",
"triggerType": "Request",
"triggerKind": "Http",
"triggerUrl": "https://..."
}
triggerUrlest null pour les déclencheurs non-HTTP.
set_store_flow_state
Appelle l'API PA live puis synchronise l'état au cache et retourne l'enregistrement complet mis à jour.
{
"flowKey": "Default-<envGuid>.<flowGuid>",
"requestedState": "Stopped",
"currentState": "Stopped",
"flow": { /* enregistrement gFlows complet, même forme que get_store_flow */ }
}
L'objet
flowintégré reflète le nouvel état immédiatement — aucun appelget_store_flowde suivi n'est nécessaire. Utile pour les workflows de gouvernance qui arrêtent un flux puis lisent ses métadonnées tags/monitor/owner dans le même tour.Fonctionnellement équivalent à
set_live_flow_statepour changer l'état, maisset_live_flow_stateretourne seulement{flowName, environmentName, requestedState, actualState}et ne synchronise pas le cache. Préférezset_live_flow_statequand vous avez juste besoin de basculer l'état et ne vous souciez pas de la fraîcheur du cache.
update_store_flow
Met à jour les métadonnées de gouvernance. Seuls les champs fournis sont mis à jour (fusion).
Retourne l'enregistrement complet mis à jour (même forme que get_store_flow).
Champs modifiables : monitor (bool), rule_notify_onfail (bool),
rule_notify_onmissingdays (nombre, 0=désactivé),
rule_notify_email (séparé par des virgules), description, tags,
businessImpact, businessJustification, businessValue,
ownerTeam, ownerBusinessUnit, supportGroup, supportEmail,
critical (bool), tier, security.
list_store_environments
Tableau direct.
[
{
"id": "Default-26e65220-...",
"displayName": "Flow Studio (default)",
"sku": "Default",
"type": "NotSpecified",
"location": "australia",
"isDefault": true,
"isAdmin": true,
"isManagedEnvironment": false,
"createdTime": "2017-01-18T01:06:46Z"
}
]
Valeurs
sku:Default,Production,Developer,Sandbox,Teams.
list_store_connections
Tableau direct. Peut être très volumineux (1500+ éléments).
[
{
"id": "<environmentId>.<connectionId>",
"displayName": "user@contoso.com",
"createdBy": "{\"id\":\"...\",\"displayName\":\"...\",\"email\":\"...\"}",
"environmentName": "...",
"statuses": "[{\"status\":\"Connected\"}]"
}
]
createdByetstatusessont des chaînes JSON — analysez avecjson.loads().
list_store_makers
Tableau direct.
[
{
"id": "09dbe02f-...",
"displayName": "Catherine Han",
"mail": "catherine.han@flowstudio.app",
"deleted": false,
"ownerFlowCount": 199,
"ownerAppCount": 209,
"userIsServicePrinciple": false
}
]
Les créateurs supprimés ont
deleted: trueet aucun champdisplayName/
get_store_maker
Enregistrement créateur complet. Champs clés : displayName, mail, userPrincipalName,
ownerFlowCount, ownerAppCount, accountEnabled, deleted, country,
firstFlow, firstFlowCreatedTime, lastFlowCreatedTime,
firstPowerApp, lastPowerAppCreatedTime,
licenses (chaîne JSON des SKUs M365).
list_store_power_apps
Tableau direct.
[
{
"id": "<environmentId>.<appId>",
"displayName": "My App",
"environmentName": "...",
"ownerId": "09dbe02f-...",
"ownerName": "Catherine Han",
"appType": "Canvas",
"sharedUsersCount": 0,
"createdTime": "2023-08-18T01:06:22Z",
"lastModifiedTime": "2023-08-18T01:06:22Z",
"lastPublishTime": "2023-08-18T01:06:22Z"
}
]
Workflows courants
Trouver les flux malsains
1. list_store_flows
2. Filtrer où runPeriodFailRate > 0,1 et runPeriodTotal >= 5
3. Trier par runPeriodFailRate descendant
4. Pour chacun : get_store_flow pour le détail complet
Vérifier l'intégrité d'un flux spécifique
1. get_store_flow → vérifier scanned (fraîcheur), runPeriodFailRate, runPeriodTotal
2. get_store_flow_summary → stats agrégées avec fenêtre de temps optionnelle
3. get_store_flow_errors → détail d'échec par exécution avec conseils de remédiation
4. Si diagnostic plus profond nécessaire → basculer vers outils live :
get_live_flow_runs → get_live_flow_run_action_outputs
Activer la surveillance sur un flux
1. update_store_flow avec monitor=true
2. Optionnellement définir rule_notify_onfail=true, rule_notify_email="user@domain.com"
3. Les données d'exécution apparaîtront après le prochain scan quotidien
Vérification quotidienne de l'intégrité
1. list_store_flows
2. Signaler les flux avec runPeriodFailRate > 0,2 et runPeriodTotal >= 3
3. Signaler les flux surveillés avec state="Stopped" (peut indiquer suspension auto)
4. Pour les échecs critiques → get_store_flow_errors pour conseils de remédiation
Audit de créateur
1. list_store_makers
2. Identifier les comptes supprimés possédant encore des flux (deleted=true, ownerFlowCount > 0)
3. get_store_maker pour le détail complet sur des utilisateurs spécifiques
Inventaire
1. list_store_environments → nombre d'environnements, SKUs, localisations
2. list_store_flows → nombre de flux par état, type de déclenchement, taux d'échec
3. list_store_power_apps → nombre d'apps, propriétaires, partage
4. list_store_connections → nombre de connexions par environnement
Skills connexes
power-automate-mcp— Skill de base : configuration de connexion, helper MCP, découverte d'outilspower-automate-debug— Diagnostic approfondi avec entrées/sorties au niveau des actions (API live)power-automate-build— Construire et déployer les définitions de fluxpower-automate-governance— Métadonnées de gouvernance, tagging, règles de notification, motifs CoE