Skip to main content

How agent detection works

OpenHermit identifies AI agents in two ways:
  1. User-agent string — most crawlers and agents identify themselves in the HTTP User-Agent header. The script checks this against known patterns.
  2. Browser heuristics — headless browsers used by agents often expose navigator.webdriver = true or lack standard browser APIs.
When an agent is detected, its name is recorded with every interaction event, so you can see exactly which agents are visiting your site in the Analytics dashboard.

Detected agents

AgentCompanyUser-agent pattern
GPTBotOpenAIGPTBot
ChatGPT-UserOpenAIChatGPT-User
OAI-SearchBotOpenAIOAI-SearchBot
OperatorOpenAIopenai-operator
ClaudeAnthropicClaudeBot, Claude-Web, Anthropic
PerplexityPerplexity AIPerplexityBot
Gemini / GoogleGoogleGoogle-Extended, Googlebot-Extended
CopilotMicrosoftbingbot.*copilot, copilot
YouBotYou.comYouBot
CohereCoherecohere-ai
Headless AgentUnknownnavigator.webdriver = true, no Chrome/Safari globals
Automated BrowserUnknownnavigator.webdriver = true

How agents interact with your site

Manifest-reading agents (works today)

Any agent that can make HTTP requests can fetch your /.well-known/webmcp.json manifest and read your available actions, prompts, and field requirements. This works with:
  • API-based agents (no browser needed)
  • Curl, Python scripts, n8n automations
  • Any agent framework that checks for WebMCP manifests

Browser-based agents (works today, limited)

Agents like ChatGPT Operator, Claude Computer Use, and similar tools that control a real browser will see your WebMCP meta tags and link tags injected by the script. Forward-looking agents will follow these to discover your manifest. The W3C WebMCP spec proposes a native browser API for agents. When browsers ship this natively, agents will be able to discover and call actions directly from the page without any extension. OpenHermit-enabled sites will be compatible automatically.

What agents can do with your actions

Once an agent reads your manifest and finds an action, it can:
  1. Read the before prompt — understand what data it needs to collect first
  2. Identify the form — via selector (CSS selector) or page_url
  3. Fill the form — using the fields schema to know what each field expects
  4. Submit — and receive the success or failure prompt in response
  5. Follow the next action — if you’ve configured a next_action_url

Adding support for a new agent

If you see interactions from an agent listed as “Unknown” in your analytics, open an issue on GitHub with the agent’s user-agent string. We’ll add it to the detection list in the next script release.