See your site the way AI agents see it.

Check how ChatGPT, Claude, Perplexity and 19 other agents treat any URL.

$ brew install tragent-io/tap/acurl
$ acurl shop.example/products/wool-runnerFetching https://shop.example/products/wool-runner with 22 profiles... PROFILE            STATUS  TIME    RESULT             DETAILSChrome (Browser)   200     412ms   allowed            Wool Runner | Example StoreChatGPT-User       403     51ms    challenged         challenge: CloudflareClaude-User        200     388ms   allowed            OKPerplexity-User    200     402ms   allowed            product: price 89.00 vs browser 98.00OAI-SearchBot      200     97ms    cloaked            31% similar to browserPerplexityBot      200     371ms   allowed            OKGPTBot             200     365ms   robots-disallowed  robots.txt: disallowedGoogle-Extended    -       -       robots-disallowed  robots.txt token (not fetched)Googlebot          200     390ms   allowed            OK AI readiness 71/100 (C)  ✗ AI assistants can fetch the page            16.7/25  ChatGPT-User (challenged)  ✗ AI search crawlers can fetch the page       10.0/20  OAI-SearchBot (cloaked)  ✓ Content is in the HTML without JavaScript   15.0/15  ✓ Product structured data is present          10.0/10 How to improve  1. Allow ChatGPT-User, Claude-User and Perplexity-User in your WAF's verified-bot rules.  2. Serve OAI-SearchBot the same product content as browsers. Run with --diff OAI-SearchBot.

One verdict per agent.

allowedThe agent got the same page as the browser.
blockedAn error status (403, 401, 404, 5xx) instead of the page.
challengedA WAF or CAPTCHA challenge page.
rate-limitedA 429, with the Retry-After delay.
cloakedThe visible text differs substantially from what the browser got.
robots-disallowedrobots.txt tells this agent to stay out.
errorThe request failed: DNS, TLS, timeout or connection reset.

Scripts, CI and AI assistants.

$ acurl -f json shop.example/products/wool-runner
{
  "url": "https://shop.example/products/wool-runner",
  "results": [
    {
      "profile": "ChatGPT-User",
      "category": "ai-assistant",
      "status_code": 403,
      "duration_ms": 51,
      "bot_challenge": "Cloudflare",
      "classification": "challenged"
    },
    {
      "profile": "Perplexity-User",
      "status_code": 200,
      "product": { "source": "json-ld", "price": "89.00", "currency": "USD" },
      "product_issue": "price 89.00 vs browser 98.00",
      "classification": "allowed"
    }
  ],
  "summary": { "total": 22, "allowed": 16, "challenged": 1, "cloaked": 1 },
  "score": {
    "value": 71, "grade": "C",
    "checks": [ { "id": "assistants-allowed", "points": 16.7, "weight": 25 } ]
  }
}

Commands

acurl <url>Fetch a URL as every agent, classify each response and score the page.
acurl robots <url>robots.txt verdict per agent, Content Signals, sitemaps and llms.txt.
acurl batch [file]Check URL lists, CSV files, stdin or whole sitemaps.
acurl watch <url>...Re-check on a schedule and alert on changes.
acurl report <file>Render a saved JSON report as HTML, Markdown, SARIF, JUnit or CSV.
acurl serveLocal web UI and JSON API.
acurl mcpMCP server for AI assistants.
acurl profiles list | showBrowse the agent profile catalog.
acurl keygenCreate an Ed25519 key for Web Bot Auth signing.
acurl initWrite a commented .acurl.yaml config file.
acurl completionShell completions for bash, zsh, fish and PowerShell.

Full command reference