{"slug": "ai-agents-edit-your-shop-where-approval-belongs", "title": "AI agents edit your shop: where approval belongs", "summary": "Aimeos, an open-source e-commerce framework for Laravel and other PHP frameworks, has added tools letting AI agents work with shop data and recommends that shops withhold the save tool from agents, routing drafts through a \"propose change\" tool into a review queue that the application saves from only after a human approves. The Aimeos maintainers warn that an instruction like \"show me the results before saving\" does not stop an agent from saving, and that supplier-imported product text can carry hidden instructions that steer an agent with write access. Each proposal should be stored as a versioned record with approval tied to that specific version, and the agent must have no tool or credential that can set the approved status.", "body_md": "An AI agent may turn “blue cotton T-shirt” into “organic cotton, gentle on sensitive skin.” The description sounds convincing but your product data supports neither claim.\n\nWhen you copy text from an AI assistant into your shop, you have a chance to catch mistakes before saving. A connected agent can look up products, write descriptions and save them, all from one request in plain language. Without a review step in your application, those descriptions can reach the shop before anyone has read them.\n\nWe maintain [Aimeos](https://aimeos.org/), an open-source e-commerce framework for Laravel and other PHP frameworks, and recently added tools that let AI agents work with shop data. Designing them made us think about where the approval step should live.\n\nA typical request to a connected agent might look like this:\n\n*Find ten products missing English descriptions. Draft descriptions using their existing attributes, and show me the results before saving.*\n\n“Show me the results before saving” tells the agent what you want, but it doesn’t stop the agent from saving. An agent can misread the instruction, lose track of it in a long conversation or decide that a small change doesn’t need review. If nothing else checks the save call, approval depends on the agent following your instruction.\n\nThe agent also reads text it didn’t write. Product data imported from a supplier feed can contain sentences that try to steer the agent, for example an instruction hidden in a description. With write access, the agent could follow those instructions and change shop data. Removing that access prevents direct writes, but the instructions can still influence its drafts. A reviewer may miss the result, especially if it sounds plausible.\n\nAgents can connect to a shop through the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/learn/architecture), an open standard that gives AI agents tools they can discover and call.\n\nLeave the save tool out of the tools the agent can call. The agent reads the product data with search tools and passes each draft to a “propose change” tool, which puts it into a review queue together with the product it belongs to. Your application shows the queue to a reviewer and calls the save tool itself once the reviewer approves.\n\nThis only holds if no other tool or credential the agent can reach is able to write shop data.\n\nShow the product, the proposed text and the source attributes together. With the attributes next to the draft, the reviewer can check whether “organic cotton” is supported. Without them, they have to look up each product or trust the text.\n\nThen, the reviewer can remove “organic” and “gentle on sensitive skin” and approve the corrected description. Afterwards, the application saves that text.\n\nIf the agent later shortens or rewrites that description, the revised text needs approval again. Store every proposal as a record, with approval tied to a specific version. The application saves the approved content from that record and never asks the agent to supply it again. A record can be as simple as this:\n\nEditing the draft creates a new version with the status “proposed” again. Only an authorized reviewer can mark a proposal as approved. The agent must have no tool or credential that lets it set that status.\n\nPermissions determine which operations a caller may perform but approval determines whether a particular proposed change should be applied.\n\nAn agent drafting product descriptions doesn’t need access to orders so exposing only the tools a task needs limits the damage a mistake can do.\n\nApproval rules can differ by task. Some shops will want a person to check every change. Others may let an agent update stock levels from a supplier feed on its own while every customer-facing text goes through review.\n\nA reviewer can still miss an unsupported claim, especially in a long batch of similar descriptions. Approval only gives you a chance to catch it and small batches with attributes shown next to each draft improve the odds.\n\nProduct data can also change while a proposal waits in the queue. Make the write conditional on the product still having the version recorded in the proposal. The version check and the write must happen atomically. A separate check before saving leaves time for another update to slip in. If the version no longer matches, return the proposal for review against the current product data.\n\nReview also adds delay and work. Whether that work is justified depends on how likely an error is and what it would cost.\n\nIn the [ai-admin-mcp package](https://github.com/aimeos/ai-admin-mcp#readme), we kept shop operations separate from review policy. The package provides the tools. Your application implements the MCP integration, review queue and approval workflow, including the version checks described above.\n\nThe shared [tool execution method](https://github.com/aimeos/ai-admin-mcp/blob/2026.10.1/src/Tool.php) validates input and checks the configured user permissions before running an operation.\n\nKeeping the save tool away from the agent comes down to which tools you register with your MCP server, or which ones you list in the admin/mcp/tools setting. The tool catalog implementation uses that list to replace the default catalog. It also accepts your own tools, such as a tool that proposes changes for review:\n\n``` js\n'admin/mcp/tools' => [    \\Aimeos\\Admin\\Mcp\\Tool\\Product\\Get::class,    \\Aimeos\\Admin\\Mcp\\Tool\\Product\\Search::class,    \\Aimeos\\Admin\\Mcp\\Tool\\Text\\Search::class,    \\MyApp\\Mcp\\Tool\\Text\\Propose::class,],\n```\n\nHere, MyApp\\Mcp\\Tool\\Text\\Propose is a tool you implement to store drafts in the review queue.\n\nYour application can create and call Product\\Save directly after approval. Then, the call still validates input and checks the permissions of the user it runs as.\n\nFor the version check, every Aimeos item has a modification time (mtime), so a proposal can store the modification times of the product and the attributes the draft used. Compare them and save inside one database transaction that locks those rows, so no other update can change them in between.\n\nIf you try this in your own shop, start with a few products that lack descriptions. Compare the drafts with the product data, approve the ones that hold up and check the results in the shop.\n\nBefore expanding the batch, check that the agent cannot approve its own proposal or save an unapproved draft. Changing an approved draft must require a new approval, and changed source data must block the save until the proposal has been reviewed again.\n\n[AI agents edit your shop: where approval belongs](https://pub.towardsai.net/ai-agents-edit-your-shop-where-approval-belongs-35f8b26f0366) was originally published in [Towards AI](https://pub.towardsai.net) on Medium, where people are continuing the conversation by highlighting and responding to this story.", "url": "https://wpnews.pro/news/ai-agents-edit-your-shop-where-approval-belongs", "canonical_source": "https://pub.towardsai.net/ai-agents-edit-your-shop-where-approval-belongs-35f8b26f0366?source=rss----98111c9905da---4", "published_at": "2026-10-30 13:01:03+00:00", "updated_at": "2026-10-30 13:21:22.965729+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "ai-safety"], "entities": ["Aimeos", "Laravel", "PHP", "Model Context Protocol", "MCP"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/ai-agents-edit-your-shop-where-approval-belongs", "markdown": "https://wpnews.pro/news/ai-agents-edit-your-shop-where-approval-belongs.md", "text": "https://wpnews.pro/news/ai-agents-edit-your-shop-where-approval-belongs.txt", "jsonld": "https://wpnews.pro/news/ai-agents-edit-your-shop-where-approval-belongs.jsonld"}}