{"id":401695,"date":"2026-11-10T20:55:21","date_gmt":"2026-11-10T20:55:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tillkeeper\/"},"modified":"2026-11-10T20:54:59","modified_gmt":"2026-11-10T20:54:59","slug":"tillkeeper","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tillkeeper\/","author":23447193,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"Tillkeeper \u2013 AI Agent Approvals & MCP Security for WooCommerce","header_author":"CognitoLab","header_description":"Keeps AI agents honest in your WooCommerce store: every agent action is logged, and deleting products or finalising orders waits for a person to approve it.","last_updated":"2026-11-10 20:54:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/cognitolab.net\/products\/tillkeeper","header_author_uri":"https:\/\/cognitolab.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":72,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"lukystile","date":"2026-11-10 20:54:59","revision":3795252}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3795252,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3795252,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3795252,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3795252,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3795252,"resolution":"1","location":"assets","locale":"","width":1400,"height":680},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3795252,"resolution":"2","location":"assets","locale":"","width":1240,"height":435},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3795252,"resolution":"3","location":"assets","locale":"","width":1240,"height":470}},"screenshots":{"1":"Requests waiting for approval, with Approve and Reject, and the protection settings.","2":"Store abilities agents can use and how each one is protected.","3":"The agent activity log."}},"plugin_section":[],"plugin_tags":[256265,232494,242115,600,286],"plugin_category":[45,54],"plugin_contributors":[256726],"plugin_business_model":[],"class_list":["post-401695","plugin","type-plugin","status-publish","hentry","plugin_tags-abilities-api","plugin_tags-ai-agent","plugin_tags-mcp","plugin_tags-security","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-security-and-spam-protection","plugin_contributors-lukystile","plugin_committers-lukystile"],"banners":{"banner":"https:\/\/ps.w.org\/tillkeeper\/assets\/banner-772x250.png?rev=3795252","banner_2x":"https:\/\/ps.w.org\/tillkeeper\/assets\/banner-1544x500.png?rev=3795252","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tillkeeper\/assets\/icon-128x128.png?rev=3795252","icon_2x":"https:\/\/ps.w.org\/tillkeeper\/assets\/icon-256x256.png?rev=3795252","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tillkeeper\/assets\/screenshot-1.png?rev=3795252","caption":"Requests waiting for approval, with Approve and Reject, and the protection settings."},{"src":"https:\/\/ps.w.org\/tillkeeper\/assets\/screenshot-2.png?rev=3795252","caption":"Store abilities agents can use and how each one is protected."},{"src":"https:\/\/ps.w.org\/tillkeeper\/assets\/screenshot-3.png?rev=3795252","caption":"The agent activity log."}],"raw_content":"<!--section=description-->\n<p>AI agents such as ChatGPT, Claude or your own bots can now work with a WooCommerce store directly, through the WordPress Abilities API and MCP. WooCommerce itself registers abilities that let an agent <strong>delete products<\/strong> and <strong>change order statuses<\/strong> - and they run immediately, with no confirmation.<\/p>\n\n<p><strong>Tillkeeper<\/strong> is an AI agent guard for WooCommerce. It sits between the agent and your store:<\/p>\n\n<ul>\n<li><strong>Approval for dangerous actions.<\/strong> When an agent tries to delete a product or move an order to Completed, Cancelled or Refunded, nothing happens. The request waits on the Tillkeeper page until a store manager clicks Approve or Reject. The agent gets \"pending approval\" back and has no way to approve it itself - so even a confused or manipulated agent cannot do damage on its own.<\/li>\n<li><strong>A log of everything agents do.<\/strong> Every call to a WooCommerce ability - reads and changes - is recorded: which ability, which product or order, which user, and what happened. The log stores IDs only, never customer names, emails or addresses.<\/li>\n<li><strong>A clear picture of what agents can do.<\/strong> The Tillkeeper page lists every store ability available to agents, which ones change data, and which ones are protected.<\/li>\n<li><strong>Your choice of strictness.<\/strong> Require approval for every order status change, only for final statuses, or not at all; turn product deletion protection on or off.<\/li>\n<li><strong>Works with any agent.<\/strong> Tillkeeper protects WooCommerce's own standard abilities, so any agent or MCP client that calls them is covered without learning anything new.<\/li>\n<\/ul>\n\n<p>Tillkeeper also adds two read abilities WooCommerce does not have yet: <code>tillkeeper\/list-customers<\/code> and <code>tillkeeper\/get-customer<\/code>, available only to users who can list site users.<\/p>\n\n<h4>Tillkeeper Pro<\/h4>\n\n<p><a href=\"https:\/\/cognitolab.net\/products\/tillkeeper\">Tillkeeper Pro<\/a> goes deeper on the same protection: a preview of every change before it is applied, limits for discounts and stock changes (anything over them goes to the approval queue), protection for product edits, an hourly limit on agent changes, a before\/after history, and one-click rollback for price and stock changes.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not connect to any external service. No data leaves your site. It only watches and guards abilities that software already running on your site (an MCP server, the REST API or an AI-agent integration) may call.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>tillkeeper<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins screen.<\/li>\n<li>Activate it. WooCommerce must be active, on WordPress 6.9 or later. The guard covers the abilities WooCommerce registers for agents (tested with WooCommerce 11.0).<\/li>\n<li>Open <strong>Tillkeeper<\/strong> in the admin menu. Protection is on from the start: product deletion and final order statuses need approval.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20it%20safe%20to%20connect%20chatgpt%20or%20claude%20to%20my%20woocommerce%20store%20through%20mcp%3F\"><h3>Is it safe to connect ChatGPT or Claude to my WooCommerce store through MCP?<\/h3><\/dt>\n<dd><p>Only with guardrails. WooCommerce's own abilities let a connected agent delete products and change order statuses at once, with no confirmation. With Tillkeeper active, those actions wait for a store manager's approval, and every agent call to a WooCommerce ability is logged.<\/p><\/dd>\n<dt id=\"does%20an%20agent%20need%20to%20know%20about%20tillkeeper%3F\"><h3>Does an agent need to know about Tillkeeper?<\/h3><\/dt>\n<dd><p>No. Tillkeeper wraps WooCommerce's own <code>product-delete<\/code> and <code>order-update-status<\/code> abilities. Any agent calling those standard abilities is protected automatically.<\/p><\/dd>\n<dt id=\"can%20an%20agent%20approve%20its%20own%20request%3F\"><h3>Can an agent approve its own request?<\/h3><\/dt>\n<dd><p>No. Approving happens only on the Tillkeeper page in wp-admin, by a logged-in user who can manage WooCommerce. The agent never receives anything it could use to approve.<\/p><\/dd>\n<dt id=\"who%20can%20see%20customer%20data%20through%20the%20customer%20abilities%3F\"><h3>Who can see customer data through the customer abilities?<\/h3><\/dt>\n<dd><p>Only users with the <code>list_users<\/code> capability (administrators and, by default, shop managers). An agent acting as a user without it gets a permission error. The activity log records the customer ID only.<\/p><\/dd>\n<dt id=\"does%20tillkeeper%20slow%20my%20store%20down%3F\"><h3>Does Tillkeeper slow my store down?<\/h3><\/dt>\n<dd><p>No. It does nothing on the storefront. It only runs when an ability is called, and adds one small database write per call.<\/p><\/dd>\n<dt id=\"what%20is%20not%20protected%3F\"><h3>What is not protected?<\/h3><\/dt>\n<dd><p>Tillkeeper guards the abilities WooCommerce registers for deleting products and changing order status. Product edits (prices, stock) are logged; guarding them with limits and previews is part of Tillkeeper Pro. Abilities registered by other plugins are not touched.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Approval queue for <code>woocommerce\/product-delete<\/code> and <code>woocommerce\/order-update-status<\/code> (final statuses by default).<\/li>\n<li>Activity log of every WooCommerce ability call, IDs only.<\/li>\n<li>Overview of store abilities and their protection.<\/li>\n<li>Read abilities for customers: <code>tillkeeper\/list-customers<\/code>, <code>tillkeeper\/get-customer<\/code>.<\/li>\n<\/ul>","raw_excerpt":"AI agent and MCP security for WooCommerce: log every agent action, and approve before agents delete products or finalise orders.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/401695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=401695"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lukystile"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=401695"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=401695"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=401695"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=401695"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=401695"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=401695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}