Skip to content

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.

Sill recognises these agents by the token in their User-Agent:

OrganizationAgent idMatches
Anthropicagent_anthropic_claudeClaudeBot (training crawler)
Anthropicagent_anthropic_claude_userClaude-User (user-initiated fetch)
Anthropicagent_anthropic_claude_searchbotClaude-SearchBot
OpenAIagent_openai_gptGPTBot (training crawler)
OpenAIagent_openai_chatgpt_userChatGPT-User (fetches for a ChatGPT user)
OpenAIagent_openai_chatgptChatGPT/... (mobile app fetch)
OpenAIagent_openai_searchbotOAI-SearchBot (ChatGPT search)
OpenAIagent_openai_adsbotOAI-AdsBot
Googleagent_google_searchbotGooglebot
Googleagent_google_image_botGooglebot-Image
Googleagent_google_video_botGooglebot-Video
Perplexityagent_perplexityPerplexityBot
Perplexityagent_perplexity_userPerplexity-User
Microsoftagent_microsoft_bingbotbingbot (also grounds Copilot)
Metaagent_meta_externalagentmeta-externalagent
Metaagent_meta_externalfetchermeta-externalfetcher (Meta AI user fetch)
Metaagent_meta_webindexermeta-webindexer
Metaagent_meta_externaladsmeta-externalads
Appleagent_apple_applebotApplebot
DuckDuckGoagent_duckduckgo_assistbotDuckAssistBot
Mistralagent_mistral_userMistralAI-User
Common Crawlagent_commoncrawlCCBot
Reflection AIagent_reflection_botReflectionbot
Amazonagent_amazonbotAmazonbot
Amazonagent_amazon_searchbotAmzn-SearchBot
Amazonagent_amazon_userAmzn-User (fetches for an assistant user)
ByteDanceagent_bytespiderBytespider
Exaagent_exa_searchbotExaSearchBot (signs its requests)
Linkupagent_linkup_botLinkupBot
Parallelagent_parallel_shapbotShapBot
Parallelagent_parallel_shap_userShap-User (fetches for an AI agent)
Moonshot AI (Kimi)agent_moonshot_kimibotKimiBot
Moonshot AI (Kimi)agent_moonshot_kimi_searchbotKimi-SearchBot
Moonshot AI (Kimi)agent_moonshot_kimi_userKimi-User (fetches for a Kimi user)
You.comagent_you_youbotYouBot (signs its requests)
X (Twitter)agent_x_twitterbotTwitterbot (link preview)
Metaagent_meta_facebook_externalfacebookexternalhit (link preview)
Metaagent_meta_facebotFacebot (link preview)
LinkedInagent_linkedin_botLinkedInBot (link preview)
Slackagent_slack_link_expanderSlackbot and Slackbot-LinkExpanding (link unfurl)
Discordagent_discord_botDiscordbot (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).

  • 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 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.

Every recorded visit gets one of three classes:

ClassMeaning
matched_agentMatched a known agent above.
unknown_agentLooks 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_likelyA 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.

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:

LabelMeaning
Verified · signatureIts requests carried a Web Bot Auth signature that matched the operator’s published key.
Cloudflare-verifiedYour Cloudflare Worker install reported that Cloudflare recognised this operator’s network.
UnverifiedIt uses a known name, but sent nothing Sill can check it against.
Likely impersonatorIt 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 nameIt did not identify itself and did not claim to be a known bot.
PersonA 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.

GPTBot detail page marked Likely impersonator after requests for /.env, /wp-login.php and /.git/config Requests for secret or admin files under a known bot’s name are what earn the Likely impersonator label.

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.

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.