{"id":81432,"date":"2026-07-14T12:09:29","date_gmt":"2026-07-14T16:09:29","guid":{"rendered":"https:\/\/memberpress.com\/docs\/ai-foundation-safety-measures\/"},"modified":"2026-07-14T12:09:29","modified_gmt":"2026-07-14T16:09:29","slug":"ai-foundation-safety-measures","status":"publish","type":"ht_kb","link":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/","title":{"rendered":"Mesures de s\u00e9curit\u00e9 relatives aux agents de la plateforme MemberPress AI Foundation"},"content":{"rendered":"<p>MemberPress AI Foundation applique quatre mesures de s\u00e9curit\u00e9 aux op\u00e9rations d'\u00e9criture du Model Context Protocol (MCP). Ces mesures prot\u00e8gent un site contre toute modification involontaire ou non autoris\u00e9e lorsqu'un client IA se connecte via le serveur MCP. Elles fonctionnent de mani\u00e8re conjointe. Un simple appel d\u2019\u00e9criture peut passer par des v\u00e9rifications de port\u00e9e, des valeurs par d\u00e9faut d\u2019aper\u00e7u, une \u00e9tape de confirmation et le \u00ab kill switch \u00bb avant de modifier les donn\u00e9es.<\/p>\n\n\n\n<p>Ce document explique chaque mesure, ce contre quoi elle prot\u00e8ge et comment le serveur MCP la met en \u0153uvre. Deux mesures s'appliquent lorsqu'un client IA appelle un outil : les jetons de confirmation et les param\u00e8tres par d\u00e9faut en mode simulation. Une mesure r\u00e9git le vocabulaire de port\u00e9e que transporte un jeton de connexion : les port\u00e9es granulaires. Une mesure permet \u00e0 un administrateur d'interrompre instantan\u00e9ment toute \u00e9criture destructive : le \u00ab kill switch \u00bb.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-the-safety-layer-works\"><a href=\"#how-the-safety-layer-works\">Fonctionnement de la couche de s\u00e9curit\u00e9<\/a><\/h2>\n\n\n\n<p>Ces quatre mesures correspondent \u00e0 quatre questions distinctes concernant une op\u00e9ration d'\u00e9criture :<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Mesure<\/th><th>Nom<\/th><th>La question \u00e0 laquelle elle r\u00e9pond<\/th><\/tr><\/thead><tbody><tr><td>A<\/td><td>Jetons de confirmation<\/td><td>Que peut FAIRE un jeton lorsqu'un outil destructeur s'ex\u00e9cute ?<\/td><\/tr><tr><td>B<\/td><td>Param\u00e8tres par d\u00e9faut du test \u00e0 blanc<\/td><td>Quel est le mode par d\u00e9faut d'un outil d'\u00e9criture lorsqu'il est lanc\u00e9 ?<\/td><\/tr><tr><td>C<\/td><td>Port\u00e9es granulaires<\/td><td>Quelle \u00e9tendue de vocabulaire un jeton de connexion couvre-t-il ?<\/td><\/tr><tr><td>D<\/td><td>Interrupteur d'arr\u00eat d'urgence<\/td><td>Un administrateur peut-il bloquer d'un seul coup toutes les op\u00e9rations d'\u00e9criture destructrices ?<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Les mesures A, B et D s'appliquent au moment de l'appel de l'outil. Le serveur MCP les \u00e9value \u00e0 l'int\u00e9rieur de <strong><code>Server::handle_tool_call<\/code><\/strong> \u00e0 chaque requ\u00eate d'\u00e9criture. La mesure C intervient \u00e0 deux niveaux. Au moment de l'appel d'un outil, le serveur compare la port\u00e9e requise par l'outil aux port\u00e9es accord\u00e9es par le jeton. Au moment de l'\u00e9mission du jeton, le plafond d'acc\u00e8s par d\u00e9faut limite les port\u00e9es attribu\u00e9es \u00e0 une nouvelle connexion.<\/p>\n\n\n\n<p>Ces quatre mesures figurent dans le <strong><code>MemberPressAI\\MCP<\/code><\/strong> espace de noms et s'ex\u00e9cutent c\u00f4t\u00e9 serveur. Un client IA ne peut pas les contourner en modifiant la formulation de sa requ\u00eate, car la validation s'effectue une fois que la requ\u00eate a atteint le serveur, et non au niveau du client.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"measure-a-confirmation-tokens\"><a href=\"#measure-a-confirmation-tokens\">Mesure A \u2014 Jetons de confirmation<\/a><\/h2>\n\n\n\n<p>Les jetons de confirmation prot\u00e8gent les op\u00e9rations destructives gr\u00e2ce \u00e0 un flux obligatoire en deux \u00e9tapes. Un outil destructif ne peut pas s'ex\u00e9cuter en un seul appel. Le premier appel renvoie un aper\u00e7u ainsi qu'un jeton \u00e0 usage unique ; le deuxi\u00e8me appel doit inclure ce jeton pour pouvoir s'ex\u00e9cuter.<\/p>\n\n\n\n<p>Il existe toutefois une exception limit\u00e9e : <strong>Les actions r\u00e9versibles ne passent pas par la case \u00ab porte \u00bb.<\/strong> <code>memberpress_g\u00e9rer_l'abonnement<\/code> avec <code>action : \" reprendre \"<\/code> et <code>memberpress_g\u00e9rer_compte_secondaire<\/code> avec <code>action : \" ajouter \"<\/code> annuler plut\u00f4t que d\u00e9truire, et s'ex\u00e9cuter sans jeton. Une seule liste blanche partag\u00e9e r\u00e9git l'exemption \u00e0 la fois au niveau du point de terminaison MCP et de l'interface WordPress Abilities, de sorte que les deux contr\u00f4les ne peuvent pas diverger. Tout autre appel destructeur n\u00e9cessite le jeton.<\/p>\n\n\n\n<p>Six outils sont destructifs et n\u00e9cessitent ce processus :<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Outil<\/th><th>Fonctionnalit\u00e9s<\/th><\/tr><\/thead><tbody><tr><td><strong><code>memberpress_delete_member<\/code><\/strong><\/td><td>Supprime un membre<\/td><\/tr><tr><td><strong><code>memberpress_remboursement_transaction<\/code><\/strong><\/td><td>Rembourse une transaction<\/td><\/tr><tr><td><strong><code>memberpress_delete_webhook<\/code><\/strong><\/td><td>Supprime un webhook<\/td><\/tr><tr><td><strong><code>memberpress_reset_course_progress<\/code><\/strong><\/td><td>R\u00e9initialise la progression d'un apprenant dans le cours<\/td><\/tr><tr><td><strong><code>memberpress_g\u00e9rer_compte_secondaire<\/code><\/strong><\/td><td>G\u00e8re un sous-compte d'entreprise<\/td><\/tr><tr><td><strong><code>memberpress_g\u00e9rer_l'abonnement<\/code><\/strong><\/td><td>G\u00e8re un abonnement<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-the-two-call-flow-works\"><a href=\"#how-the-two-call-flow-works\">Fonctionnement du flux \u00e0 deux appels<\/a><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Le client IA appelle l'outil de destruction en lui transmettant ses arguments. Le serveur renvoie un aper\u00e7u de l'effet ainsi qu'un jeton de confirmation.<\/li>\n\n\n\n<li>Le client IA appelle \u00e0 nouveau cet outil avec les m\u00eames arguments, auxquels s'ajoute un <strong><code>confirmer<\/code><\/strong> param\u00e8tre d\u00e9fini sur la valeur du jeton. Le serveur v\u00e9rifie le jeton et ex\u00e9cute l'op\u00e9ration.<\/li>\n<\/ol>\n\n\n\n<p>Le jeton comporte trois mesures de s\u00e9curit\u00e9. Il expire apr\u00e8s <strong>60 secondes<\/strong> (le <strong><code>TTL<\/code><\/strong> constante dans <strong><code>Jetons de confirmation<\/code><\/strong>). Il s'agit d'un jeton \u00e0 usage unique : le serveur le consomme lors de l'ex\u00e9cution de l'appel. Le serveur l'associe \u00e0 la combinaison pr\u00e9cise du nom de l'outil, des arguments et de l'identifiant de l'utilisateur. Un jeton \u00e9mis pour une op\u00e9ration ne peut pas autoriser une autre op\u00e9ration.<\/p>\n\n\n\n<p>Justification de la conception, selon l'\u00e9quipe de d\u00e9veloppement : \u201c Le simple fait de transmettre une valeur bool\u00e9enne ne constitue pas un consentement suffisamment ferme pour une action irr\u00e9versible. \u201d Un jeton de confirmation prouve que l'utilisateur a pris connaissance de l'aper\u00e7u sp\u00e9cifique \u00e0 l'op\u00e9ration en question avant de s'engager.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-alert\"><strong>Important :<\/strong> Les outils de destruction n'acceptent pas un <strong><code>ex\u00e9cuter<\/code><\/strong> param\u00e8tre. Le flux de jetons de confirmation est le seul moyen de les ex\u00e9cuter. Le passage de <strong><code>ex\u00e9cuter : true<\/code><\/strong> n'a aucun effet sur un outil destructeur.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-first-call-response\"><a href=\"#the-first-call-response\">La r\u00e9ponse \u00e0 la premi\u00e8re intervention<\/a><\/h3>\n\n\n\n<p>Le premier appel renvoie un aper\u00e7u de l'effet, \u00e0 usage unique <strong><code>jeton_de_confirmation<\/code><\/strong>, ainsi que la dur\u00e9e de validit\u00e9 restante du jeton. Voici la r\u00e9ponse fournie par un <strong><code>memberpress_remboursement_transaction<\/code><\/strong> appel de pr\u00e9visualisation :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"preview\" : {\n    \"dry_run\" : true,\n    \"action\" : \"refund_transaction\",\n    \"preview\": {\n \"transaction_id\": 432,\n \"amount\": \"100,00\",\n \"total\": \"100,00\",\n      \"user_id\": \"\",\n \"product_id\": 2332,\n \"subscription_listing_may_show_inactive\": true,\n \"subscription_listing_note\": \" Si cette transaction \u00e9tait la derni\u00e8re \u00e0 avoir aliment\u00e9 l\u2019abonnement, la liste des abonnements dans l\u2019interface d\u2019administration WordPress affichera l\u2019abonnement comme \" Actif : Non \" \u2014 cette colonne est d\u00e9riv\u00e9e du statut de la derni\u00e8re transaction, et non de l\u2019enregistrement de l\u2019abonnement lui-m\u00eame. L\u2019enregistrement de l\u2019abonnement reste inchang\u00e9, sauf si vous choisissez d\u2019annuler l\u2019abonnement dans le cadre de ce remboursement.\"\n    }\n  },\n  \"confirmation_token\": \"ct_\",\n  \"expires_in\": 60,\n  \"next_step\": \"Appelez \u00e0 nouveau la fonction memberpress_refund_transaction avec les m\u00eames arguments, en ajoutant le param\u00e8tre \" confirm \" : \" ct_ \u00bb pour l'ex\u00e9cuter.\"\n}<\/code><\/pre>\n\n\n\n<p>Le jeton arrive dans <strong><code>jeton_de_confirmation<\/code><\/strong>. Les <strong><code>expires_in<\/code><\/strong> Ce champ indique la dur\u00e9e de vie restante en secondes. Le <strong><code>\u00e9tape suivante<\/code><\/strong> Le champ indique pr\u00e9cis\u00e9ment comment proc\u00e9der. Le bloc interne <strong><code>aper\u00e7u.aper\u00e7u<\/code><\/strong> Cet objet d\u00e9crit l'effet de l'op\u00e9ration ; ses champs varient selon l'outil. Le <strong><code>liste_des_abonnements_*<\/code><\/strong> Les champs pr\u00e9sent\u00e9s ici concernent sp\u00e9cifiquement les remboursements ; les documents \u00ab R\u00e9f\u00e9rence des outils \u00bb et \u00ab Erreurs \u00bb fournissent des informations d\u00e9taill\u00e9es sur les r\u00e9ponses relatives aux remboursements.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"when-a-token-is-invalid\"><a href=\"#when-a-token-is-invalid\">Lorsqu'un jeton n'est pas valide<\/a><\/h3>\n\n\n\n<p>Un jeton dont la validit\u00e9 a expir\u00e9, qui a d\u00e9j\u00e0 \u00e9t\u00e9 utilis\u00e9 ou qui est pr\u00e9sent\u00e9 avec des arguments modifi\u00e9s g\u00e9n\u00e8re une seule erreur. Le serveur ne fait pas la distinction entre ces trois causes :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"code\": -32603,\n  \"message\": \"Le jeton de confirmation n'est pas valide, a expir\u00e9 ou les arguments ont chang\u00e9. Appelez l'outil sans `confirm` pour obtenir un nouvel aper\u00e7u et un nouveau jeton.\",\n  \"data\": {\n    \"mp_error_code\": \"CONFIRMATION_INVALID\"\n  },\n  \"request_id\": \"req_\"\n}<\/code><\/pre>\n\n\n\n<p>Match le <strong><code>data.mp_error_code<\/code><\/strong> (<strong><code>CONFIRMATION_NON_VALIDE<\/code><\/strong>), et non le JSON-RPC g\u00e9n\u00e9rique <strong><code>-32603<\/code><\/strong> code. La proc\u00e9dure de r\u00e9cup\u00e9ration est toujours la m\u00eame : relancez l'outil sans <strong><code>confirmer<\/code><\/strong> pour obtenir un nouvel aper\u00e7u et un nouveau jeton.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"measure-b-dry-run-defaults\"><a href=\"#measure-b-dry-run-defaults\">Mesure B \u2014 Param\u00e8tres par d\u00e9faut du test de simulation<\/a><\/h2>\n\n\n\n<p>Les outils d'\u00e9criture sont configur\u00e9s par d\u00e9faut en mode aper\u00e7u. Un outil d'\u00e9criture ne modifie pas les donn\u00e9es \u00e0 moins que l'appelant ne choisisse explicitement de lancer l'ex\u00e9cution. Cela permet d'\u00e9viter qu'un client IA n'ex\u00e9cute une mutation qu'il avait uniquement l'intention d'inspecter.<\/p>\n\n\n\n<p>Les outils d'\u00e9criture se pr\u00e9sentent sous deux formes :<\/p>\n\n\n\n<p><strong>\u00c9critures non destructives (9 outils)<\/strong> avoir sur soi un <strong><code>ex\u00e9cuter<\/code><\/strong> param\u00e8tre. L'outil g\u00e9n\u00e8re par d\u00e9faut un aper\u00e7u et renvoie une charge utile d'aper\u00e7u sans la sauvegarder. En transmettant <strong><code>ex\u00e9cuter : true<\/code><\/strong> g\u00e8re l'op\u00e9ration en temps r\u00e9el. Ces outils comprennent notamment <strong><code>memberpress_create_member<\/code><\/strong>, <strong><code>memberpress_update_member<\/code><\/strong>, <strong><code>memberpress_create_coupon<\/code><\/strong>, <strong><code>memberpress_create_subscription<\/code><\/strong>et <strong><code>memberpress_create_webhook<\/code><\/strong>entre autres.<\/p>\n\n\n\n<p><strong>\u00c9critures destructrices (6 outils)<\/strong> ne porter ni l'un ni l'autre <strong><code>ex\u00e9cuter<\/code><\/strong> ni un param\u00e8tre de simulation h\u00e9rit\u00e9. Ils s\u2019affichent par d\u00e9faut en aper\u00e7u et n\u00e9cessitent l\u2019ex\u00e9cution du flux de jetons de confirmation \u00ab Measure A \u00bb. Le m\u00e9canisme \u00e0 deux appels constitue leur seul moyen d\u2019ex\u00e9cution.<\/p>\n\n\n\n<p>Cette distinction permet au lecteur de d\u00e9terminer le niveau de risque d'un outil \u00e0 partir de ses param\u00e8tres. Un outil avec <strong><code>ex\u00e9cuter<\/code><\/strong> est r\u00e9versible ; un outil qui n'a pas <strong><code>ex\u00e9cuter<\/code><\/strong> et l'obligation de confirmation est n\u00e9faste.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\"><strong>Remarque :<\/strong> Ce document d\u00e9crit le point de terminaison MCP (<code>\/wp-json\/mp-mcp\/v1\/mcp<\/code>). Les outils d'\u00e9criture sur le point de terminaison MCP n'exposent pas de <strong><code>simulation<\/code><\/strong> param\u00e8tre. Les outils non destructifs utilisent <strong><code>ex\u00e9cuter<\/code><\/strong>; les outils destructeurs utilisent le flux de jetons de confirmation. Il n'existe aucun autre moyen d'effectuer une \u00e9criture via MCP. L'interface \u00ab Capacit\u00e9s \u00bb de WordPress permet d'effectuer les m\u00eames op\u00e9rations selon un m\u00e9canisme diff\u00e9rent \u2014 voir <strong><a href=\"#the-wordpress-abilities-surface\">Les possibilit\u00e9s de WordPress se r\u00e9v\u00e8lent<\/a><\/strong> ci-dessous.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-non-destructive-preview-shape\"><a href=\"#the-non-destructive-preview-shape\">La forme de pr\u00e9visualisation non destructive<\/a><\/h3>\n\n\n\n<p>Un outil d'\u00e9criture non destructif appel\u00e9 \u00ab sans \u00bb <strong><code>ex\u00e9cuter : true<\/code><\/strong> renvoie une charge utile d'aper\u00e7u au format plat. Voici la r\u00e9ponse obtenue \u00e0 partir d'un <strong><code>memberpress_create_member<\/code><\/strong> appel de pr\u00e9visualisation :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"dry_run\" : true,\n  \"action\" : \"create_member\",\n  \"preview\" : {\n    \"email\" : \"mcp-preview-test@example.com\",\n    \"username\": \"mcppreviewtest\",\n    \"first_name\": \"MCP\",\n    \"last_name\": \"PreviewTest\"\n  },\n  \"validation\": \"passed\"\n}<\/code><\/pre>\n\n\n\n<p>Cette enveloppe est plate : <strong><code>simulation<\/code><\/strong>, <strong><code>action<\/code><\/strong>, <strong><code>aper\u00e7u<\/code><\/strong>et <strong><code>validation<\/code><\/strong> se trouve au niveau sup\u00e9rieur, et il n'y a pas de jeton de confirmation. Cela diff\u00e8re d'un aper\u00e7u destructif, o\u00f9 le <strong><code>aper\u00e7u<\/code><\/strong> l'objet est imbriqu\u00e9 un niveau plus bas (<strong><code>aper\u00e7u.aper\u00e7u<\/code><\/strong>) et un <strong><code>jeton_de_confirmation<\/code><\/strong> est pr\u00e9sent. Le <strong><code>validation<\/code><\/strong> Ce champ indique si la saisie pr\u00e9visualis\u00e9e serait valid\u00e9e lors de l'ex\u00e9cution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"measure-c-granular-scopes\"><a href=\"#measure-c-granular-scopes\">Mesure C \u2014 Champs d'application d\u00e9taill\u00e9s<\/a><\/h2>\n\n\n\n<p>Les jetons de connexion sont associ\u00e9s \u00e0 des p\u00e9rim\u00e8tres d'acc\u00e8s sp\u00e9cifiques plut\u00f4t qu'\u00e0 un acc\u00e8s illimit\u00e9. Un jeton dont le p\u00e9rim\u00e8tre d'acc\u00e8s est limit\u00e9 \u00e0 la lecture des membres ne permet pas d'\u00e9crire des donn\u00e9es de facturation. Cela limite la port\u00e9e d'une connexion donn\u00e9e aux seules op\u00e9rations autoris\u00e9es par son p\u00e9rim\u00e8tre d'acc\u00e8s.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"scope-vocabulary\"><a href=\"#scope-vocabulary\">Vocabulaire relatif au champ d'application<\/a><\/h3>\n\n\n\n<p>Le serveur MCP d\u00e9finit les port\u00e9es suivantes dans <strong><code>ScopeMatcher<\/code><\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Champ d'application<\/th><th>Subventions<\/th><\/tr><\/thead><tbody><tr><td><strong><code>lire<\/code><\/strong><\/td><td>Acc\u00e8s en lecture \u00e0 toutes les donn\u00e9es via des outils de lecture<\/td><\/tr><tr><td><strong><code>\u00e9crire : contenu<\/code><\/strong><\/td><td>Droit d'\u00e9criture sur le contenu : r\u00e8gles d'acc\u00e8s et coupons<\/td><\/tr><tr><td><strong><code>\u00e9crire : membres<\/code><\/strong><\/td><td>Acc\u00e8s en \u00e9criture aux membres<\/td><\/tr><tr><td><strong><code>\u00e9crire : facturation<\/code><\/strong><\/td><td>Droit d'\u00e9criture sur la facturation : gestion des abonnements et remboursements des transactions<\/td><\/tr><tr><td><strong><code>\u00e9crire : importations<\/code><\/strong><\/td><td>Acc\u00e8s en \u00e9criture aux importations de membres<\/td><\/tr><tr><td><strong><code>\u00e9crire : webhooks<\/code><\/strong><\/td><td>Droit d'\u00e9criture sur les webhooks et les rappels par e-mail<\/td><\/tr><tr><td><strong><code>\u00e9crire : cours<\/code><\/strong><\/td><td>Acc\u00e8s en \u00e9criture aux op\u00e9rations li\u00e9es aux cours<\/td><\/tr><tr><td><strong><code>complet<\/code><\/strong><\/td><td>Toutes les port\u00e9es d'\u00e9criture (r\u00e9pond \u00e0 toute condition sp\u00e9cifique <strong><code>\u00e9crire :*<\/code><\/strong> (condition)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Les <strong><code>lire<\/code><\/strong> La port\u00e9e est implicite pour chaque jeton. Le serveur compare la port\u00e9e requise par un outil aux port\u00e9es accord\u00e9es au jeton avant la distribution via <strong><code>Server::current_token_has_scope<\/code><\/strong>.<\/p>\n\n\n\n<p>La port\u00e9e n'est pas le seul crit\u00e8re. Chaque outil de r\u00e9daction d\u00e9clare \u00e9galement la capacit\u00e9 WordPress dont il a besoin (par exemple, <strong><code>create_users<\/code><\/strong> ou <strong><code>modifier_utilisateurs<\/code><\/strong>), et le serveur v\u00e9rifie cette capacit\u00e9 avant l'envoi. Un jeton avec <strong><code>complet<\/code><\/strong> Le scope ne peut toujours pas cr\u00e9er d'utilisateurs si le propri\u00e9taire du jeton ne dispose pas de l'autorisation <strong><code>create_users<\/code><\/strong> capacit\u00e9. Les deux portes renvoient des erreurs distinctes, et la porte de port\u00e9e s'ex\u00e9cute en premier : une port\u00e9e manquante entra\u00eene une erreur avec <strong><code>SCOPE_INSUFFISANT<\/code><\/strong>; une fonctionnalit\u00e9 manquante entra\u00eene un \u00e9chec avec <strong><code>CAPACIT\u00c9_INSUFFISANTE<\/code><\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"default-access-ceiling\"><a href=\"#default-access-ceiling\">Plafond d'acc\u00e8s par d\u00e9faut<\/a><\/h3>\n\n\n\n<p>Le plafond d'acc\u00e8s par d\u00e9faut limite les port\u00e9es que le serveur peut attribuer \u00e0 une nouvelle connexion. Un administrateur le configure via le fichier <strong>\u201c Niveau d'acc\u00e8s maximal pour les nouvelles connexions \u201d<\/strong> r\u00e9glage sur le <strong>Param\u00e8tres MCP<\/strong> onglet. Ce plafond d\u00e9termine la port\u00e9e maximale de tout nouveau jeton, quelle que soit la requ\u00eate du client qui s'y connecte.<\/p>\n\n\n\n<p>Ce param\u00e8tre propose deux options : <strong>Lecture seule<\/strong> et <strong>Acc\u00e8s complet<\/strong>.<\/p>\n\n\n\n<p>Lorsqu'il est r\u00e9gl\u00e9 sur <strong>Lecture seule<\/strong>, l'assistant masque compl\u00e8tement les cases \u00e0 cocher relatives \u00e0 la port\u00e9e d'\u00e9criture \u2014 elles n'apparaissent pas en gris \u2014 et le serveur limite chaque nouvelle connexion \u00e0 la port\u00e9e de lecture. L'\u00e9tape \u00ab Acc\u00e8s \u00bb de l'assistant n'affiche que la port\u00e9e de lecture, qui est toujours accord\u00e9e, accompagn\u00e9e de la remarque suivante :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>L'administrateur du site a d\u00e9fini le niveau d'acc\u00e8s maximal sur \u00ab Lecture seule \u00bb. Aucune nouvelle connexion ne pourra disposer de droits d'\u00e9criture tant que ce niveau n'aura pas \u00e9t\u00e9 relev\u00e9 dans les param\u00e8tres MCP.<\/p>\n<\/blockquote>\n\n\n\n<p>Lorsqu'il est r\u00e9gl\u00e9 sur <strong>Acc\u00e8s complet<\/strong>, l'\u00e9tape \u00ab Acc\u00e8s \u00bb de l'assistant affiche les cases \u00e0 cocher relatives aux droits d'\u00e9criture, qui sont coch\u00e9es par d\u00e9faut, et l'administrateur d\u00e9coche celles dont une connexion n'a pas besoin. Une nouvelle connexion se voit alors attribuer des droits d'\u00e9criture \u00e0 hauteur de ce que permettent les capacit\u00e9s WordPress de l'utilisateur qui se connecte.<\/p>\n\n\n\n<p>La limite est appliqu\u00e9e c\u00f4t\u00e9 serveur au niveau des quatre voies d'\u00e9mission de jetons. Une requ\u00eate personnalis\u00e9e ne peut pas contourner l'interface de l'assistant pour demander une port\u00e9e plus large :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Cr\u00e9ation d'un jeton d'assistant ;<\/li>\n\n\n\n<li>OAuth <strong><code>\/autoriser<\/code><\/strong>;<\/li>\n\n\n\n<li>OAuth <strong><code>\/token<\/code><\/strong> \u00e9change ;<\/li>\n\n\n\n<li>Enregistrement dynamique des clients (RFC 7591).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-alert\"><strong>Important :<\/strong> Le plafond s'applique uniquement au moment de l'\u00e9mission. Le resserrement du plafond n'affecte pas la port\u00e9e des jetons d\u00e9j\u00e0 \u00e9mis. Pour restreindre la port\u00e9e d'une connexion existante, il convient de la r\u00e9voquer et d'en \u00e9mettre une nouvelle.<\/p>\n\n\n\n<p>Le plafond constitue une extension du vocabulaire des port\u00e9es, et non un m\u00e9canisme distinct. Il n'existe que parce que la mesure C d\u00e9finit les port\u00e9es auxquelles il s'applique.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"measure-d-kill-switch\"><a href=\"#measure-d-kill-switch\">Mesure D \u2014 \u00ab Kill Switch \u00bb<\/a><\/h2>\n\n\n\n<p>Le \u00ab kill switch \u00bb permet \u00e0 un administrateur d'interrompre instantan\u00e9ment toute op\u00e9ration d'\u00e9criture destructive. Lorsqu'il est activ\u00e9, le serveur rejette tout appel \u00e0 un outil destructeur et renvoie le <strong><code>\u00c9CRITURE_SUSPENDUE<\/code><\/strong> erreur, quels que soient les champs d'application du jeton d'appel ou l'existence d'un jeton de confirmation valide.<\/p>\n\n\n\n<p>Un administrateur bascule l'interrupteur de la position <strong>Clients connect\u00e9s \u00e0 MCP<\/strong> page d'administration. Le contr\u00f4le est un <strong>Suspendre toutes les op\u00e9rations d'\u00e9criture<\/strong> bouton. Tant que les \u00e9critures destructives sont actives, la page affiche cet \u00e9tat :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Les op\u00e9rations d'\u00e9criture destructrices sont actives \u2014 Les remboursements, annulations, suppressions et importations en masse sont suspendus pour tous les clients connect\u00e9s. Les outils de lecture continuent de fonctionner.<\/p>\n<\/blockquote>\n\n\n\n<p>Ce param\u00e8tre est conserv\u00e9 lors des sauvegardes r\u00e9guli\u00e8res des param\u00e8tres ; ainsi, une mise \u00e0 jour de routine des param\u00e8tres ne le d\u00e9sactive pas sans avertissement. Le serveur enregistre <strong><code>admin.writes_paused<\/code><\/strong> et <strong><code>admin.writes_resumed<\/code><\/strong> enregistre les \u00e9v\u00e9nements dans le journal d'audit lorsque le commutateur change d'\u00e9tat.<\/p>\n\n\n\n<p>Le \u00ab kill switch \u00bb est la mesure la plus radicale. Les mesures A, B et C limitent certaines op\u00e9rations sp\u00e9cifiques ; le \u00ab kill switch \u00bb, quant \u00e0 lui, les annule toutes d'un seul coup en cas d'appels destructeurs. C'est la r\u00e9ponse appropri\u00e9e lorsqu'un administrateur soup\u00e7onne qu'une connexion se comporte de mani\u00e8re inhabituelle et souhaite mettre fin \u00e0 toute activit\u00e9 destructrice avant de mener une enqu\u00eate.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\"><strong>Remarque :<\/strong> Le \u00ab kill switch \u00bb suspend uniquement les \u00e9critures destructives. Les outils de lecture et les aper\u00e7us d'\u00e9criture non destructifs continuent de fonctionner tant qu'il est actif.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-writespaused-response\"><a href=\"#the-writespaused-response\">La r\u00e9ponse WRITES_PAUSED<\/a><\/h3>\n\n\n\n<p>Tant que le \u00ab kill switch \u00bb est actif, tout appel \u00e0 un outil destructeur \u00e9choue avec cette r\u00e9ponse, quels que soient les champs d'application du jeton appelant ou l'existence d'un jeton de confirmation valide :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"code\" : -32603,\n  \"message\" : \"Les \u00e9critures destructives ont \u00e9t\u00e9 suspendues par un administrateur. Veuillez r\u00e9essayer plus tard ou contacter le propri\u00e9taire du site.\",\n  \"data\": {\n    \"mp_error_code\": \"WRITES_PAUSED\"\n  },\n  \"request_id\": \"req_\"\n}<\/code><\/pre>\n\n\n\n<p>Ce commutateur contr\u00f4le l'ensemble du chemin d'\u00e9criture destructive : m\u00eame le premier appel (aper\u00e7u) d'un outil destructif renvoie <strong><code>\u00c9CRITURE_SUSPENDUE<\/code><\/strong>, ce qui emp\u00eache le processus de confirmation de d\u00e9marrer. Comme pour toutes les erreurs li\u00e9es aux outils, il faut v\u00e9rifier la correspondance avec <strong><code>data.mp_error_code<\/code><\/strong> (<strong><code>\u00c9CRITURE_SUSPENDUE<\/code><\/strong>), et non le g\u00e9n\u00e9rique <strong><code>-32603<\/code><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"related-capabilities\"><a href=\"#related-capabilities\">Fonctionnalit\u00e9s associ\u00e9es<\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-wordpress-abilities-surface\"><a href=\"#the-wordpress-abilities-surface\">Les possibilit\u00e9s de WordPress se r\u00e9v\u00e8lent<\/a><\/h3>\n\n\n\n<p>\u00c0 partir de WordPress 6.9, AI Foundation enregistre \u00e9galement des outils via l\u2019API WordPress Abilities, accessible par l\u2019interm\u00e9diaire de l\u2019adaptateur MCP de WordPress.org. Il s\u2019agit d\u2019une deuxi\u00e8me interface de programmation qui donne acc\u00e8s aux m\u00eames op\u00e9rations sous-jacentes que le point de terminaison MCP, avec trois diff\u00e9rences techniques :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Commande d'aper\u00e7u.<\/strong> Les op\u00e9rations d'\u00e9criture sur la surface \u00ab Abilities \u00bb exposent un <strong><code>simulation<\/code><\/strong> param\u00e8tre : l'aper\u00e7u est activ\u00e9 par d\u00e9faut, et l'appelant transmet <strong><code>dry_run : false<\/code><\/strong> pour une ex\u00e9cution en direct \u2014 o\u00f9 le point de terminaison MCP utilise <strong><code>ex\u00e9cuter : true<\/code><\/strong> au lieu de cela ;<\/li>\n\n\n\n<li><strong>\u00c9criture dans la porte.<\/strong> L'acc\u00e8s en \u00e9criture via l'interface \u00ab Abilities \u00bb est soumis \u00e0 des restrictions sur le <strong><code>mpai_use_mcp_write<\/code><\/strong> capacit\u00e9 ;<\/li>\n\n\n\n<li><strong>Couverture.<\/strong> La surface r\u00e9pertorie les familles d'outils principales ; les surfaces d'outils compl\u00e9mentaires ne sont accessibles que via MCP.<\/li>\n<\/ul>\n\n\n\n<p>Le mod\u00e8le de s\u00e9curit\u00e9 reste inchang\u00e9 : la surface impose les m\u00eames exigences en mati\u00e8re de capacit\u00e9s WordPress par outil, les op\u00e9rations destructrices n\u00e9cessitent le m\u00eame processus de jeton de confirmation (y compris la m\u00eame exemption pour les actions r\u00e9versibles), et le \u00ab kill switch \u00bb suspend les \u00e9critures destructrices des capacit\u00e9s de la m\u00eame mani\u00e8re qu\u2019il suspend les \u00e9critures MCP. Le fait d\u2019acc\u00e9der \u00e0 ces op\u00e9rations via un protocole diff\u00e9rent n\u2019assouplit en rien ces contraintes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"activity-log\"><a href=\"#activity-log\">Journal d'activit\u00e9<\/a><\/h3>\n\n\n\n<p>Le journal d'activit\u00e9 consigne les \u00e9v\u00e9nements li\u00e9s \u00e0 l'outil MCP \u00e0 des fins d'audit et de d\u00e9pannage. Il se trouve dans le <strong>Clients connect\u00e9s \u00e0 MCP<\/strong> onglet et pr\u00e9sente chaque \u00e9v\u00e9nement sous forme de tableau \u00e0 quatre colonnes : <strong>Temps<\/strong>, <strong>Client<\/strong>, <strong>Outil<\/strong>et <strong>R\u00e9sultat<\/strong>. Les <strong>R\u00e9sultat<\/strong> Cette colonne indique le code de r\u00e9sultat enregistr\u00e9 pour chaque appel \u2014 <code>succ\u00e8s<\/code>, <code>erreur<\/code>, <code>confirmation_requise<\/code>, <code>confirmation_non_valide<\/code>, <code>confirmation_course_perdue<\/code>, <code>scope_insuffisant<\/code>, <code>capacit\u00e9_insuffisante<\/code>, <code>\u00e9criture_suspendue<\/code>, ainsi qu'une petite s\u00e9rie de codes d'erreur li\u00e9s \u00e0 la pr\u00e9visualisation et \u00e0 l'encodage.<\/p>\n\n\n\n<p>Le journal permet de garantir la tra\u00e7abilit\u00e9 du processus de confirmation des op\u00e9rations destructrices : journaux des appels de pr\u00e9visualisation d'un outil destructeur <code>confirmation_requise<\/code>, ainsi que ses journaux d'ex\u00e9cution <code>succ\u00e8s<\/code> \u2014 ces deux appels sont distincts. L'aper\u00e7u et l'ex\u00e9cution en temps r\u00e9el d'un outil non destructif g\u00e9n\u00e8rent tous deux des journaux <code>succ\u00e8s<\/code>; les arguments des appels ne sont d\u00e9lib\u00e9r\u00e9ment jamais consign\u00e9s dans le journal ; ainsi, celui-ci n'indique pas si <code>ex\u00e9cuter<\/code> a \u00e9t\u00e9 adopt\u00e9e. La dur\u00e9e de conservation des donn\u00e9es est r\u00e9gie par la <strong>Conservation des journaux<\/strong> r\u00e9glage sur le <strong>Param\u00e8tres MCP<\/strong> onglet (par d\u00e9faut <strong>30 jours<\/strong>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"a-note-on-ai-client-behavior\"><a href=\"#a-note-on-ai-client-behavior\">Remarque sur le comportement des clients IA<\/a><\/h3>\n\n\n\n<p>Certains clients MCP effectuent automatiquement le processus de confirmation en deux appels sans afficher l'\u00e9tape de confirmation \u00e0 l'utilisateur. Un client peut afficher un aper\u00e7u, puis effectuer le deuxi\u00e8me appel en interne, de sorte que l'op\u00e9ration semble s'ex\u00e9cuter en une seule \u00e9tape. Il s'agit d'un comportement du flux de travail c\u00f4t\u00e9 client, et non d'une faille dans la couche de s\u00e9curit\u00e9. Le serveur continue d'imposer l'exigence des deux appels, et le client fournit un jeton valide lors du deuxi\u00e8me appel.<\/p>\n\n\n\n<p>Pour observer directement la porte de confirmation, utilisez un outil qui envoie chaque requ\u00eate de mani\u00e8re explicite, tel que Postman ou <strong><code>boucle<\/code><\/strong>. Un client qui abstrait le flux masque ces deux appels, mais le serveur a toujours besoin des deux.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"related-documentation\"><a href=\"#related-documentation\">Documentation associ\u00e9e<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-overview\/\" target=\"_blank\" rel=\"noopener\">Pr\u00e9sentation et guide d'installation de MemberPress AI Foundation<\/a><\/strong> \u2014 ce qu\u2019est AI Foundation, comment l\u2019installer et comment y connecter des clients IA ;<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/memberpress.com\/fr\/docs\/mcp-tools-reference\/\" target=\"_blank\" rel=\"noopener\">R\u00e9f\u00e9rence des outils MCP de la certification \u00ab AI Foundation \u00bb MemberPress<\/a><\/strong> \u2014 le catalogue complet des outils, pr\u00e9cisant notamment lesquels sont destructifs et quelle est la port\u00e9e de chacun ;<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/memberpress.com\/fr\/docs\/mcp-errors-troubleshooting\/\" target=\"_blank\" rel=\"noopener\">Erreurs et d\u00e9pannage de la certification MCP \u00ab AI Foundation \u00bb MemberPress<\/a><\/strong> \u2014 le catalogue complet des erreurs, comprenant notamment <strong><code>\u00c9CRITURE_SUSPENDUE<\/code><\/strong> et <strong><code>CAPACIT\u00c9_INSUFFISANTE<\/code><\/strong>;<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/memberpress.com\/fr\/docs\/connecting-ai-clients\/\" target=\"_blank\" rel=\"noopener\">Connexion des clients IA \u00e0 MemberPress<\/a><\/strong> \u2014 comment le serveur \u00e9tablit les connexions et attribue les port\u00e9es lors de la configuration.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>MemberPress AI Foundation enforces four safety measures on Model Context Protocol (MCP) write operations. These measures protect a site from unintended or unauthorized changes when an AI client connects through the MCP server. They operate together. A single write call can pass through scope checks, preview defaults, a confirmation gate, and the kill switch before [\u2026]<\/p>\n","protected":false},"author":62252,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"_strive_editorial_status":"not-started","_strive_copy_of":0,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","_FSMCFIC_featured_image_caption":"","_FSMCFIC_featured_image_nocaption":"","_FSMCFIC_featured_image_hide":"","_strive_checklists":"\"\"","_strive_active_checklist":"62291e2bb2422","footnotes":""},"ht-kb-category":[1581],"ht-kb-tag":[],"class_list":{"0":"post-81432","1":"ht_kb","2":"type-ht_kb","3":"status-publish","4":"format-standard","6":"ht_kb_category-mcp","7":"entry"},"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 4.9.6.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"MemberPress AI Foundation enforces four safety measures on Model Context Protocol (MCP) write operations. These measures protect a site from unintended or unauthorized changes when an AI client connects through the MCP server. They operate together. A single write call can pass through scope checks, preview defaults, a confirmation gate, and the kill switch before\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Nikola M\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 4.9.6.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"MemberPress\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"MemberPress AI Foundation Agent Safety Measures | MemberPress\" \/>\n\t\t<meta property=\"og:description\" content=\"MemberPress AI Foundation enforces four safety measures on Model Context Protocol (MCP) write operations. These measures protect a site from unintended or unauthorized changes when an AI client connects through the MCP server. They operate together. A single write call can pass through scope checks, preview defaults, a confirmation gate, and the kill switch before\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1650\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1275\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-07-14T16:09:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-14T16:09:29+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/memberpress\/\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@memberpress\" \/>\n\t\t<meta name=\"twitter:title\" content=\"MemberPress AI Foundation Agent Safety Measures | MemberPress\" \/>\n\t\t<meta name=\"twitter:description\" content=\"MemberPress AI Foundation enforces four safety measures on Model Context Protocol (MCP) write operations. These measures protect a site from unintended or unauthorized changes when an AI client connects through the MCP server. They operate together. A single write call can pass through scope checks, preview defaults, a confirmation gate, and the kill switch before\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#article\",\"name\":\"MemberPress AI Foundation Agent Safety Measures | MemberPress\",\"headline\":\"MemberPress AI Foundation Agent Safety Measures\",\"author\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/blog\\\/author\\\/nikolacaseproof-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/memberpress.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/mp-icon-RGB_Icon-01.jpg\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#articleImage\",\"width\":1650,\"height\":1275,\"caption\":\"memberpress logo icon\"},\"datePublished\":\"2026-07-14T12:09:29-04:00\",\"dateModified\":\"2026-07-14T12:09:29-04:00\",\"inLanguage\":\"fr-FR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#webpage\"},\"articleSection\":\"MCP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/memberpress.com\\\/fr\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/doc-categories\\\/developer-docs\\\/#listItem\",\"name\":\"Developer Documentation\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/doc-categories\\\/developer-docs\\\/#listItem\",\"position\":2,\"name\":\"Developer Documentation\",\"item\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/doc-categories\\\/developer-docs\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/doc-categories\\\/mcp\\\/#listItem\",\"name\":\"MCP\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/doc-categories\\\/mcp\\\/#listItem\",\"position\":3,\"name\":\"MCP\",\"item\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/doc-categories\\\/mcp\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#listItem\",\"name\":\"MemberPress AI Foundation Agent Safety Measures\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/doc-categories\\\/developer-docs\\\/#listItem\",\"name\":\"Developer Documentation\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#listItem\",\"position\":4,\"name\":\"MemberPress AI Foundation Agent Safety Measures\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/doc-categories\\\/mcp\\\/#listItem\",\"name\":\"MCP\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#organization\",\"name\":\"MemberPress\",\"description\":\"The All-In-One WordPress Membership Plugin\",\"url\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/memberpress.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/mp-icon-RGB_Icon-01.jpg\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#organizationLogo\",\"width\":1650,\"height\":1275,\"caption\":\"memberpress logo icon\"},\"image\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/memberpress\\\/\",\"https:\\\/\\\/www.pinterest.com\\\/memberpressplugin\\\/\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/MemberPressPlugin\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/memberpress\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/blog\\\/author\\\/nikolacaseproof-com\\\/#author\",\"url\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/blog\\\/author\\\/nikolacaseproof-com\\\/\",\"name\":\"Nikola M\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/memberpress.com\\\/wp-content\\\/litespeed\\\/avatar\\\/1edf820c48f9c430f380efe81887b154.jpg?ver=1785423180\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#webpage\",\"url\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/\",\"name\":\"MemberPress AI Foundation Agent Safety Measures | MemberPress\",\"description\":\"MemberPress AI Foundation enforces four safety measures on Model Context Protocol (MCP) write operations. These measures protect a site from unintended or unauthorized changes when an AI client connects through the MCP server. They operate together. A single write call can pass through scope checks, preview defaults, a confirmation gate, and the kill switch before\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/docs\\\/ai-foundation-safety-measures\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/blog\\\/author\\\/nikolacaseproof-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/blog\\\/author\\\/nikolacaseproof-com\\\/#author\"},\"datePublished\":\"2026-07-14T12:09:29-04:00\",\"dateModified\":\"2026-07-14T12:09:29-04:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/\",\"name\":\"MemberPress\",\"description\":\"The All-In-One WordPress Membership Plugin\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>MemberPress AI Foundation Agent Safety Measures | MemberPress<\/title>\n\n","aioseo_head_json":{"title":"Mesures de s\u00e9curit\u00e9 relatives \u00e0 l'agent MemberPress AI Foundation | MemberPress","description":"MemberPress AI Foundation applique quatre mesures de s\u00e9curit\u00e9 aux op\u00e9rations d'\u00e9criture du Model Context Protocol (MCP). Ces mesures prot\u00e8gent un site contre toute modification involontaire ou non autoris\u00e9e lorsqu'un client IA se connecte via le serveur MCP. Elles fonctionnent de mani\u00e8re conjointe. Un seul appel d'\u00e9criture peut passer par les v\u00e9rifications de port\u00e9e, les valeurs par d\u00e9faut d'aper\u00e7u, une \u00e9tape de confirmation et le \u00ab kill switch \u00bb avant","canonical_url":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#article","name":"MemberPress AI Foundation Agent Safety Measures | MemberPress","headline":"MemberPress AI Foundation Agent Safety Measures","author":{"@id":"https:\/\/memberpress.com\/fr\/blog\/author\/nikolacaseproof-com\/#author"},"publisher":{"@id":"https:\/\/memberpress.com\/fr\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg","@id":"https:\/\/memberpress.com\/fr\/#articleImage","width":1650,"height":1275,"caption":"memberpress logo icon"},"datePublished":"2026-07-14T12:09:29-04:00","dateModified":"2026-07-14T12:09:29-04:00","inLanguage":"fr-FR","mainEntityOfPage":{"@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#webpage"},"isPartOf":{"@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#webpage"},"articleSection":"MCP"},{"@type":"BreadcrumbList","@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr#listItem","position":1,"name":"Home","item":"https:\/\/memberpress.com\/fr","nextItem":{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/doc-categories\/developer-docs\/#listItem","name":"Developer Documentation"}},{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/doc-categories\/developer-docs\/#listItem","position":2,"name":"Developer Documentation","item":"https:\/\/memberpress.com\/fr\/doc-categories\/developer-docs\/","nextItem":{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/doc-categories\/mcp\/#listItem","name":"MCP"},"previousItem":{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/doc-categories\/mcp\/#listItem","position":3,"name":"MCP","item":"https:\/\/memberpress.com\/fr\/doc-categories\/mcp\/","nextItem":{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#listItem","name":"MemberPress AI Foundation Agent Safety Measures"},"previousItem":{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/doc-categories\/developer-docs\/#listItem","name":"Developer Documentation"}},{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#listItem","position":4,"name":"MemberPress AI Foundation Agent Safety Measures","previousItem":{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/doc-categories\/mcp\/#listItem","name":"MCP"}}]},{"@type":"Organization","@id":"https:\/\/memberpress.com\/fr\/#organization","name":"MemberPress","description":"The All-In-One WordPress Membership Plugin","url":"https:\/\/memberpress.com\/fr\/","logo":{"@type":"ImageObject","url":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg","@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#organizationLogo","width":1650,"height":1275,"caption":"memberpress logo icon"},"image":{"@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#organizationLogo"},"sameAs":["https:\/\/www.instagram.com\/memberpress\/","https:\/\/www.pinterest.com\/memberpressplugin\/","https:\/\/www.youtube.com\/c\/MemberPressPlugin","https:\/\/www.linkedin.com\/company\/memberpress\/"]},{"@type":"Person","@id":"https:\/\/memberpress.com\/fr\/blog\/author\/nikolacaseproof-com\/#author","url":"https:\/\/memberpress.com\/fr\/blog\/author\/nikolacaseproof-com\/","name":"Nikola M","image":{"@type":"ImageObject","url":"https:\/\/memberpress.com\/wp-content\/litespeed\/avatar\/1edf820c48f9c430f380efe81887b154.jpg?ver=1785423180"}},{"@type":"WebPage","@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#webpage","url":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/","name":"MemberPress AI Foundation Agent Safety Measures | MemberPress","description":"MemberPress AI Foundation enforces four safety measures on Model Context Protocol (MCP) write operations. These measures protect a site from unintended or unauthorized changes when an AI client connects through the MCP server. They operate together. A single write call can pass through scope checks, preview defaults, a confirmation gate, and the kill switch before","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/memberpress.com\/fr\/#website"},"breadcrumb":{"@id":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/#breadcrumblist"},"author":{"@id":"https:\/\/memberpress.com\/fr\/blog\/author\/nikolacaseproof-com\/#author"},"creator":{"@id":"https:\/\/memberpress.com\/fr\/blog\/author\/nikolacaseproof-com\/#author"},"datePublished":"2026-07-14T12:09:29-04:00","dateModified":"2026-07-14T12:09:29-04:00"},{"@type":"WebSite","@id":"https:\/\/memberpress.com\/fr\/#website","url":"https:\/\/memberpress.com\/fr\/","name":"MemberPress","description":"The All-In-One WordPress Membership Plugin","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/memberpress.com\/fr\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"MemberPress","og:type":"article","og:title":"MemberPress AI Foundation Agent Safety Measures | MemberPress","og:description":"MemberPress AI Foundation enforces four safety measures on Model Context Protocol (MCP) write operations. These measures protect a site from unintended or unauthorized changes when an AI client connects through the MCP server. They operate together. A single write call can pass through scope checks, preview defaults, a confirmation gate, and the kill switch before","og:url":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/","og:image":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg","og:image:secure_url":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg","og:image:width":1650,"og:image:height":1275,"article:published_time":"2026-07-14T16:09:29+00:00","article:modified_time":"2026-07-14T16:09:29+00:00","article:publisher":"https:\/\/www.facebook.com\/memberpress\/","twitter:card":"summary_large_image","twitter:site":"@memberpress","twitter:title":"MemberPress AI Foundation Agent Safety Measures | MemberPress","twitter:description":"MemberPress AI Foundation enforces four safety measures on Model Context Protocol (MCP) write operations. These measures protect a site from unintended or unauthorized changes when an AI client connects through the MCP server. They operate together. A single write call can pass through scope checks, preview defaults, a confirmation gate, and the kill switch before","twitter:image":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg"},"aioseo_meta_data":{"post_id":"81432","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-07-14 16:55:28","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"open_ai":null,"ai":null,"created":"2026-07-14 16:09:29","updated":"2026-07-14 16:55:28"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/memberpress.com\/fr\" title=\"Home\">Home<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/memberpress.com\/fr\/doc-categories\/developer-docs\/\" title=\"Developer Documentation\">Developer Documentation<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/memberpress.com\/fr\/doc-categories\/mcp\/\" title=\"MCP\">MCP<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\tMemberPress AI Foundation Agent Safety Measures\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/memberpress.com\/fr"},{"label":"Developer Documentation","link":"https:\/\/memberpress.com\/fr\/doc-categories\/developer-docs\/"},{"label":"MCP","link":"https:\/\/memberpress.com\/fr\/doc-categories\/mcp\/"},{"label":"MemberPress AI Foundation Agent Safety Measures","link":"https:\/\/memberpress.com\/fr\/docs\/ai-foundation-safety-measures\/"}],"_links":{"self":[{"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/ht-kb\/81432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/users\/62252"}],"replies":[{"embeddable":true,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/comments?post=81432"}],"version-history":[{"count":0,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/ht-kb\/81432\/revisions"}],"wp:attachment":[{"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/media?parent=81432"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/ht-kb-category?post=81432"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/ht-kb-tag?post=81432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}