Skip to main content

Supported agents

The complete list of AI agents AgentXP detects by default.
AgentXP uses two independent signals to identify AI agent traffic:
  1. Accept: text/markdown header — any client that explicitly requests markdown is treated as an agent, regardless of its User-Agent string.
  2. User-Agent pattern matching — requests whose User-Agent header matches a known bot pattern are detected automatically.
Any client that sends Accept: text/markdown is detected as an agent regardless of its User-Agent string. The table below only covers User-Agent-based detection.

Built-in agents

The following agents are recognized out of the box via User-Agent pattern matching:
Agent nameOrganizationDetection pattern
GPTBotOpenAI/GPTBot/i
ChatGPT-UserOpenAI/ChatGPT-User/i
OAI-SearchBotOpenAI/OAI-SearchBot/i
ClaudeBotAnthropic/ClaudeBot/i
AnthropicAnthropic/anthropic-ai/i
PerplexityBotPerplexity/PerplexityBot/i
BytespiderByteDance/Bytespider/i
CohereCohere/cohere-ai/i
GoogleOtherGoogle/GoogleOther/i
Google-ExtendedGoogle/Google-Extended/i
Meta-ExternalAgentMeta/Meta-ExternalAgent/i
Meta-ExternalFetcherMeta/Meta-ExternalFetcher/i
CCBotCommon Crawl/CCBot/i
Applebot-ExtendedApple/Applebot-Extended/i
AmazonbotAmazon/Amazonbot/i
AI2BotAllen Institute for AI/AI2Bot/i
DiffbotDiffbot/Diffbot/i
FacebookBotMeta/FacebookBot/i
YouBotYou.com/YouBot/i
Webzio-ExtendedWebz.io/Webzio-Extended/i

Adding custom agents

To detect agents beyond the built-in list, pass a customAgents array to withAgentXP. Each entry requires a name string and a pattern regex.
withAgentXP({
  detection: {
    customAgents: [
      { name: 'MyBot', pattern: /MyBot\/\d+/i }
    ]
  }
})
Custom patterns are checked after the built-in list. The first match wins. For a full walkthrough including per-agent response customization, see the custom agents guide.