Identifying agents
Sill tells you which AI agents and crawlers visit your store. Each visit’s User-Agent is matched against a registry of known agents from Anthropic, OpenAI, Google and others, and the visit is recorded in your signed audit log with the result. Where your install allows it, Sill also checks whether the agent really is who it claims to be.
A User-Agent is a claim, not proof: anyone can send GPTBot. Read a match as “says it is GPTBot” unless the visit is marked verified (see How Sill verifies an agent). Orders and refunds never rely on it; they need a signed mandate.
Known agents
Section titled “Known agents”Sill recognises these agents by the token in their User-Agent:
| Organization | Agent id | Matches |
|---|---|---|
| Anthropic | agent_anthropic_claude | ClaudeBot (training crawler) |
| Anthropic | agent_anthropic_claude_user | Claude-User (user-initiated fetch) |
| Anthropic | agent_anthropic_claude_searchbot | Claude-SearchBot |
| OpenAI | agent_openai_gpt | GPTBot (training crawler) |
| OpenAI | agent_openai_chatgpt_user | ChatGPT-User (fetches for a ChatGPT user) |
| OpenAI | agent_openai_chatgpt | ChatGPT/... (mobile app fetch) |
| OpenAI | agent_openai_searchbot | OAI-SearchBot (ChatGPT search) |
| OpenAI | agent_openai_adsbot | OAI-AdsBot |
agent_google_searchbot | Googlebot | |
agent_google_image_bot | Googlebot-Image | |
agent_google_video_bot | Googlebot-Video | |
| Perplexity | agent_perplexity | PerplexityBot |
| Perplexity | agent_perplexity_user | Perplexity-User |
| Microsoft | agent_microsoft_bingbot | bingbot (also grounds Copilot) |
| Meta | agent_meta_externalagent | meta-externalagent |
| Meta | agent_meta_externalfetcher | meta-externalfetcher (Meta AI user fetch) |
| Meta | agent_meta_webindexer | meta-webindexer |
| Meta | agent_meta_externalads | meta-externalads |
| Apple | agent_apple_applebot | Applebot |
| DuckDuckGo | agent_duckduckgo_assistbot | DuckAssistBot |
| Mistral | agent_mistral_user | MistralAI-User |
| Common Crawl | agent_commoncrawl | CCBot |
| Reflection AI | agent_reflection_bot | Reflectionbot |
| Amazon | agent_amazonbot | Amazonbot |
| Amazon | agent_amazon_searchbot | Amzn-SearchBot |
| Amazon | agent_amazon_user | Amzn-User (fetches for an assistant user) |
| ByteDance | agent_bytespider | Bytespider |
| Exa | agent_exa_searchbot | ExaSearchBot (signs its requests) |
| Linkup | agent_linkup_bot | LinkupBot |
| Parallel | agent_parallel_shapbot | ShapBot |
| Parallel | agent_parallel_shap_user | Shap-User (fetches for an AI agent) |
| Moonshot AI (Kimi) | agent_moonshot_kimibot | KimiBot |
| Moonshot AI (Kimi) | agent_moonshot_kimi_searchbot | Kimi-SearchBot |
| Moonshot AI (Kimi) | agent_moonshot_kimi_user | Kimi-User (fetches for a Kimi user) |
| You.com | agent_you_youbot | YouBot (signs its requests) |
| X (Twitter) | agent_x_twitterbot | Twitterbot (link preview) |
| Meta | agent_meta_facebook_external | facebookexternalhit (link preview) |
| Meta | agent_meta_facebot | Facebot (link preview) |
agent_linkedin_bot | LinkedInBot (link preview) | |
| Slack | agent_slack_link_expander | Slackbot and Slackbot-LinkExpanding (link unfurl) |
| Discord | agent_discord_bot | Discordbot (embed preview) |
Link-preview bots are included so that a shared link does not show up as an unknown agent. The list above is built in; Sill also adds new bots it sees across sites. Each new name is reviewed daily, with help from an AI that says what kind of visitor it is and which company runs it, and only names with consistent traffic over several days are added. You do not need to do anything.
Adding a name only labels the visit. It never marks a visit as verified: that still needs the checks in How Sill verifies an agent. The built-in names always take precedence over added ones, and names that ordinary browsers send are never added.
Names that are only robots.txt settings. Google-Extended and Applebot-Extended are switches you set in robots.txt to allow or refuse AI training. Google and Apple never send them as the visitor name: their real crawlers are Googlebot and Applebot. A visit that calls itself Google-Extended or Applebot-Extended is therefore not from Google or Apple, and Sill flags it as a likely impersonator. Your robots.txt rules for these names still work as intended.
Some AI services do not publish the name their crawler sends (or say they do not run one). Sill does not add those names to the registry, because a visit using them cannot be told apart from an impersonator.
Matching is case-sensitive on the token and works inside longer strings such as Mozilla/5.0 (compatible; bingbot/2.0; …). A Sec-CH-UA-Sill-Agent value that exactly matches a registered agent is checked first. If several tokens match, the most specific one wins.
Browser-based agents such as ChatGPT Atlas send an ordinary Chrome User-Agent. They look like a person unless they sign their requests (see below).
Agents, bots and people
Section titled “Agents, bots and people”- An agent acts for a person in real time: someone asked an AI assistant to open your page (for example
ChatGPT-User,Claude-User,Perplexity-User). - A bot works on its own schedule: AI crawlers collecting content for training or an index, AI search, search engines, SEO tools, uptime monitors, feed readers and link previews.
- A person uses an ordinary browser.
Sill’s own tools
Section titled “Sill’s own tools”Sill visits sites too: when it scans a site you asked it to analyse, checks agent-readiness files, fetches an operator’s keys or address list to verify an agent, delivers a webhook, calls a connected store, or when the Sill Cloudflare Worker or WordPress plugin fetches its settings. These requests send a User-Agent that starts with Sill- (for example Sill-Analyzer, Sill-Readiness, Sill-Verify, Sill-Webhook, Sill-WP-Plugin). In the visits panel they show with the Sill logo and read Sill · tool, for example Sill · Site scanner, under SEO & TOOLS. Sill does not count them as agent traffic in your reports. Like any name, it can be copied, so treat it as a label.
How each visit is classed
Section titled “How each visit is classed”Every recorded visit gets one of three classes:
| Class | Meaning |
|---|---|
matched_agent | Matched a known agent above. |
unknown_agent | Looks like a bot but is not in the registry, or sent a Sec-CH-UA-Sill-Agent value Sill could not match. Worth a look. |
human_likely | A normal browser User-Agent (Chrome, Safari, Firefox, Edge, Opera) with no bot token. |
When in doubt, Sill picks unknown_agent rather than human_likely, so a real bot is not hidden among people. The class is stored with the visit; if the rules change later, past visits keep the class they were given.
For many bots, Sill also shows a short description of who likely operates it and what it does, under its name in the visits panel. The description is Sill’s best guess, not a verified fact.
How Sill verifies an agent
Section titled “How Sill verifies an agent”In the visits panel, a visit Sill proved carries a Confirmed mark, and one that used a known name with evidence against it carries a Mismatch mark; everything else carries no mark. On the Agents view, each agent carries one of these identity labels:
| Label | Meaning |
|---|---|
| Verified · signature | Its requests carried a Web Bot Auth signature that matched the operator’s published key. |
| Cloudflare-verified | Your Cloudflare Worker install reported that Cloudflare recognised this operator’s network. |
| Unverified | It uses a known name, but sent nothing Sill can check it against. |
| Likely impersonator | It uses a known bot’s name but tried to read secret or admin files, used a misspelled bot name, sent an invalid signature, came from outside the network its operator publishes, used a robots.txt-only name, or was one of many AI names sent from changing addresses within the same minute (one scanner trying names in turn). |
| No known name | It did not identify itself and did not claim to be a known bot. |
| Person | A plain browser with no bot token: a person, or a browser-mode agent that does not identify itself. |
The checks need access to the raw request, so they depend on your install. Signature checks run on Cloudflare Worker and WordPress plugin installs. The published-network check runs on Cloudflare Worker installs, and on WordPress plugin installs when the site is behind Cloudflare. The Cloudflare network check needs a Cloudflare plan with Bot Management: the Cloudflare Worker reads it directly, and the WordPress plugin reads it when the site is behind Cloudflare with bot protection headers turned on. Sill shows what your install reports here; it does not check the Cloudflare result itself. With the script tag alone, agents show as Unverified at best. See What each install covers.
Requests for secret or admin files under a known bot’s name are what earn the Likely impersonator label.
What is recorded
Section titled “What is recorded”Each visit becomes a record in your signed, append-only audit log. Sill stores what it saw alongside each record; the identity part looks like this:
{ "identification_match": { "matched": true, "agent_id": "agent_openai_chatgpt_user", "match_signal": "user_agent_pattern", "visitor_class": "matched_agent" }, "identification_input": { "surface": "embed", "user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot", "referrer_origin": "https://northwind-coffee.example", "page_path": "/products/ethiopia-guji" }}match_signal is sec_ch_ua_sill_agent, user_agent_pattern or none. surface says where the visit was seen: embed (the script tag) or mcp (a call to your MCP server). Visits seen by a Cloudflare Worker or WordPress plugin also carry via (worker, plugin or server). Records also keep the Cloudflare data center and a coarse country code for the visit.
These details, the page path, the search query and the bot description are stored and shown alongside the record but are not covered by its signature.
Common questions
Section titled “Common questions”Can someone pretend to be a known agent?
Yes, by copying its User-Agent. Being in the registry does not make a visit trusted: visits show Unverified unless a signature or Cloudflare check confirms them, and suspicious behaviour is flagged as Likely impersonator. For operators that publish the addresses their crawler uses (for example OpenAI, Perplexity, Google, Apple, Common Crawl, DuckDuckGo, Kimi, Linkup and Parallel), a visit from elsewhere under their name is flagged too. This needs the visitor’s real address: it works on Cloudflare Worker installs, and on WordPress plugin installs when the site is behind Cloudflare.
A new agent is not in the list. What happens?
It is recorded as unknown_agent, often with a short description of what it is. When Sill adds it to the registry, new visits are matched by name.
Does Sill keep operators’ published address lists up to date? Yes. Sill keeps its own copy of every address list an operator publishes for its crawlers and refreshes it daily. If an operator’s list cannot be fetched on a given day, Sill keeps using the last good copy, so a temporary outage on their side does not turn their real crawler into a suspect.
Why is bingbot listed as an AI agent? Bing’s crawler also supplies the web results behind Microsoft Copilot, so it is how Copilot learns about your store.