GetPicked

Developers

Keep your site visible to AI search, from CI

One robots.txt line, a stray noindex or a new firewall rule can hide your site from ChatGPT search, Claude and Perplexity. Nobody notices until signups dip. Check it on every deploy, and read your weekly pick rates where you already work.

Terminal: no account needed
npx @getpicked/cli check example.com

What the check looks at

  • Blocking: a search or user crawler (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, PerplexityBot, Bingbot and others) blocked in robots.txt or answered with pay-per-crawl 402; noindex; nosnippet; a homepage that does not load.
  • Warnings: a firewall or CDN refusing a crawler's user agent (it may still allow the verified crawler by IP), text that only appears after JavaScript runs, no sitemap.
  • Training crawlers (GPTBot, ClaudeBot, CCBot, Google-Extended) are listed but never fail the check. Blocking them is your call.

The check reads your site the way those crawlers do; it does not ask any AI engine, so it takes seconds and costs nothing. How we measure picks →

CLI

@getpicked/cli has no dependencies and runs on Node 18+. It exits 1 when the check fails, 2 on errors.

With an API key
export GETPICKED_API_KEY=gp_live_…
npx @getpicked/cli sites

Commands: check, sites, site <host> --min-pick-rate 0.2, recheck --wait, verify <ticket>. Add --json for machine output.

GitHub Action

Run after each successful deployment and once a day. The job summary lists every crawler and each fix.

.github/workflows/getpicked.yml
name: AI search check
on:
  deployment_status:
  schedule:
    - cron: "17 6 * * *"
jobs:
  getpicked:
    if: github.event_name == 'schedule' || github.event.deployment_status.state == 'success'
    runs-on: ubuntu-latest
    steps:
      - uses: getpicked/check-action@v1
        with:
          url: https://example.com
          api-key: ${{ secrets.GETPICKED_API_KEY }}

MCP server for Claude, Claude Code and Cursor

Ask "did that robots.txt change hide us from ChatGPT?" or "what should I fix so Claude picks us?". The server speaks MCP over HTTP at /api/mcp, and you connect by signing in with your GetPicked account; no key to copy.

Claude (web, desktop, mobile): Settings → Connectors → Add custom connector, and paste:

Connector URL
https://www.getpicked.app/api/mcp
Claude Code
claude mcp add --transport http getpicked https://www.getpicked.app/api/mcp
# then run /mcp in Claude Code and choose "Authenticate" to sign in

For CI or other tools that cannot sign in, send an API key instead:

Claude Code with an API key
claude mcp add --transport http getpicked https://www.getpicked.app/api/mcp \
  --header "Authorization: Bearer $GETPICKED_API_KEY"
Cursor: .cursor/mcp.json
{
  "mcpServers": {
    "getpicked": {
      "url": "https://www.getpicked.app/api/mcp",
      "headers": { "Authorization": "Bearer gp_live_…" }
    }
  }
}
  • check_readiness: Can AI crawlers reach and index a URL? Works without signing in.
  • list_sites: Your monitored sites and how often each engine picked them.
  • get_site: Rates, cited sources, index status and fix tickets with copy-ready fixes.
  • recheck_site: Ask every engine again now.
  • verify_fix: Confirm a fix is live after you ship it.

check_readiness works before you sign in; the others ask you to sign in the first time you use them.

REST API

JSON over HTTPS. Send your key as Authorization: Bearer gp_live_…. Errors look like {"error":{"code","message"}}.

curl
curl -s https://www.getpicked.app/api/v1/readiness \
  -H "content-type: application/json" \
  -d '{"url":"https://example.com"}'
EndpointAuthWhat
POST /api/v1/readinessOptionalCan AI search crawlers reach and index a URL? Verdict pass, warn or fail, with fixes.
GET /api/v1/sitesKey + MonitorYour monitored sites with the latest per-engine pick counts, index coverage and open fixes.
GET /api/v1/sites/{id or host}Key + MonitorOne site: rates with ranges, history, cited sources, key-page index status, fix tickets.
POST /api/v1/sites/{id or host}/checksKey + MonitorRe-run ChatGPT, Claude, Gemini, Perplexity and Grok now (once per 12 hours).
GET /api/v1/jobs/{jobToken}KeyStatus of a re-check: pending, running, complete or failed.
POST /api/v1/tickets/{id}/verifyKey + MonitorRe-crawl the live site to confirm a fix, like the dashboard's verify button.

Keys and limits

  • Without a key: 3 readiness checks per site per day from one IP address.
  • With a key: 200 readiness checks a day across all sites, plus your monitored sites' data.
  • Keys come with Pick Monitor. Create up to 5 under API keys on your dashboard; we store only a hash, so copy the key when it is shown.

Get an API key →