Skip to content

Public AI Agents ​

An MCP address for your visitors' own AI assistants: they search the shop's catalogue and hand the shopper a cart link. Read-only, no sign-in.

kitloom/public-agents · admins: kitloom/public-agents-filament, kitloom/public-agents-nova

Video lessons ​

Recorded in the Filament admin; the Nova admin works the same way.

Your shop in shoppers' AI assistants

An MCP address for your visitors' own AI assistants. A shopper who asks Claude, ChatGPT or another assistant "find me a linen dress under 100 on this site" gets an answer from your catalogue as it is right now — the categories, sizes and colours you sell, prices, stock — and a link that puts the chosen products into a cart on your site. The shopper checks the cart and pays there, as always.

The address is off until you open it. It reads only what any visitor may see, needs no sign-in and no key, and changes nothing on the site: no order, no account, no review is made through it. The admin is kitloom/public-agents-filament or kitloom/public-agents-nova.

This is not kitloom/ai. kitloom/ai is the door for your agents — the owner's and the staff's — with a key, the rights of a user and tools that write. This address is for everyone else, with nothing but the public tools.

Turning it on ​

Public AI Agents → Settings in the admin:

SettingWhat
Open the public addressOff by default. While it is off, the address answers 404
AddressThe URL to give out, https://your-site/mcp/public — ready to copy
Requests a minuteHow many requests one visitor's address (IP) may make a minute, 60 by default; past it the address answers 429 for the rest of the minute
What it servesThe tools the installed modules offer here

The page needs manage_public_agents (administrators have it). An AI agent working through kitloom/ai cannot change these settings: they are locked for agents (kitloom-ai.settings.locked).

How a shopper connects ​

The assistant needs the address only — no key, no sign-in:

  • Claude (claude.ai, the desktop and phone apps): Settings → Connectors → Add custom connector, the URL https://your-site/mcp/public, Authentication No sign-in.
  • ChatGPT: Settings → Connectors (developer mode) → Create, the same URL, no authentication.
  • Claude Code, Cursor, VS Code and other MCP clients: a remote (HTTP) server at the same URL, e.g. claude mcp add --transport http my-shop https://your-site/mcp/public.

Put the address where shoppers look for it: the footer, the help page, an "Ask your AI assistant" note on the shop page.

What the shop serves ​

With kitloom/shop installed (its kitloom-shop.public_ai.register switch, on by default):

ToolWhat the assistant gets
catalog_vocabularyThe shop's own words: the product categories as a tree with how many products each holds, the attributes (size, colour, material…) with every value, the price range and the currency. The assistant asks it first and turns "something blue for summer" into your categories and values
search_productsProducts by keywords (in the name, the descriptions, the SKU, the categories, tags and attribute values — products with every word first, then those with any) and by the shop's filters: a category with its subcategories, attribute values, a price range, on sale, in stock, a minimal rating, a sort order. Short cards: name, address, price, stock, rating, picture
product_detailsOne product: its descriptions as text, categories, tags, attributes, and for a variable product the variations a shopper can pick, with their prices and stock. The rating and the number of reviews, never the reviews' text
cart_linkA link to your site that puts up to 20 products into the shopper's cart and opens the cart page. It is signed by the site and works for 24 hours; a link changed by hand is refused. What sold out in between is said on the cart page, the rest is added

The catalogue is read exactly as a visitor reads it: published products only, not hidden from the catalogue, out-of-stock ones as the shop's Hide out of stock items says. Drafts, private products, prices of the admin, orders, customers and coupons never leave through this address.

Safety ​

  • Read-only: every tool is marked so for the assistant (readOnlyHint), and none writes. The cart link writes only into the cart of the person who opens it, in their own browser.
  • No personal data: the tools know nothing about who asks.
  • A limit per visitor (Requests a minute) and a separate one on cart links (30 a minute).
  • The text of products is what you published. An assistant reads it as data; still, nothing in a product's description should be meant for an assistant's eyes only.

For developers ​

A module offers a tool here with a Kitloom\WpSchema\Contracts\PublicAgentTool tagged PublicAgentTool::TAG: name(), module(), description(), schema() and handle($arguments) answering an array. It has no actor and no permission, as it is for anyone — so it reads what a visitor sees (the visibility scopes do that by themselves outside the admin) and writes nothing. A refusal the assistant should read is an InvalidArgumentException or a ValidationException. The shop's tools are in kitloom/shop, src/PublicAgent.

Kitloom\PublicAgents\PublicAgents says whether the address is open (enabled()), its url() and the tools(). The address is a laravel/mcp web server (Mcp\PublicServer), named after the site (blogname).

Configuration (config/kitloom-public-agents.php)DefaultWhat
path (KITLOOM_PUBLIC_AGENTS_PATH)mcp/publicWhere the address lives
routes.registertrueOff: no address at all, whatever the setting says
filament.register, nova.registertrueThe section in the admin

Tests ​

From the application that installs the package: php vendor/bin/phpunit --testsuite PublicAgents; the shop's tools are tested in kitloom/shop (tests/PublicAgent).

kitloom — modules and themes for Laravel.
Pricing · Services · License · Refunds · Privacy · Community · [email protected]