For agents & developers

Pickrate, for agents

Everything an AI agent or developer needs to read and call Pickrate — no human, no login. Pick a surface below. All of them return the same data: Pick Rate, the share of the time an agent picks a tool over its competitors.

At a glance
  • Register — create an account on your user’s behalf, no signup form (auth.md).
  • Set up — an agent-executable prompt to install Pickrate on a project.
  • MCP server — call Pick Rate tools from any MCP client.
  • ARD — a publisher manifest (what Pickrate offers) plus a registry that answers “what tool for this task?” ranked by Pick Rate.
  • REST API — one GET for a tool report or a category leaderboard.
  • WebMCP — in-browser tools via navigator.modelContext.
  • Markdown — clean .md for any page.
  • Discovery files — llms.txt, ai-catalog, robots, sitemap, security.txt.
  • What agents read here — live log of which agents actually fetch these surfaces.

Register a user (auth.md)

You don't need to send anyone to a signup form. Pickrate implements auth.md, the open agent-registration profile: register, get a workspace and a collector key, instrument the site, and let the human claim the account whenever they want to look at it. Start with the skill document — it has the whole recipe.

curl -s https://pickrate.io/auth.md

# or start from discovery
curl -s https://pickrate.io/.well-known/oauth-protected-resource
curl -s https://pickrate.io/.well-known/oauth-authorization-server

# the fast path: an anonymous workspace you can write into immediately
curl -sX POST https://pickrate.io/api/agent/identity \
  -H 'content-type: application/json' -d '{"type":"anonymous"}'

Three identity types: anonymous (no user identity — write-only until a human claims it), service_auth (you have the user's email; a claim ceremony confirms it), and identity_assertion (your provider signs an ID-JAG, trusted issuers only). Pre-claim access is deliberately write-only — an agent can set up tracking, but nobody reads a workspace until a person owns it.

Set up Pickrate (self-install)

Pickrate is analytics for AI agents — so an agent can install it. Fetch the setup prompt and follow it: it installs the server-side collector (agent traffic → Pickrate) and connects the MCP, without a human. Also registered in the ARD catalog as urn:air:pickrate.io:setup:prompt.

curl -s https://pickrate.io/setup.md

MCP server

Remote Model Context Protocol server (Streamable HTTP, stateless). Point any MCP client at it — Claude Desktop, Cursor, the MCP Inspector, or your own agent.

Endpoint: https://pickrate.io/api/mcp   (transport: streamable-http)

Tools:
  getPickRate   — headline Pick Rate + rank for one tool
  getLeaderboard — ranked tools for a category (omit category to list categories)
  lookupTool    — resolve a name / slug / domain / package to its report
# List the tools over JSON-RPC
curl -s https://pickrate.io/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

ARD (Agentic Resource Discovery)

Pickrate speaks Agentic Resource Discovery on both sides of the standard, and they do different jobs:

Registry: ask for a tool

Send a task in natural language and get back the tools that fit — each carrying its Pick Rate. The score is query relevance (per the spec); the selection signal lives in metadata.pickRate, and results are ordered by it.

# "What should my agent use for this?"
curl -s https://pickrate.io/api/ard/search \
  -H 'content-type: application/json' \
  -d '{"query":{"text":"an issue tracker my agent can drive"},"pageSize":3}'
# Response (trimmed)
{
  "results": [
    {
      "identifier": "urn:air:pickrate.io:saas:linear",
      "displayName": "Linear",
      "type": "application/mcp-server-card+json",
      "url": "https://linear.app/docs",
      "score": 83,                       // query relevance (0-100)
      "metadata": { "pickRate": 0.23, "rank": 1, "leaderboardUrl": "..." }
    }
  ],
  "pageToken": "..."
}

Also on the registry side: POST /api/ard/explore (facets over type / category / domain) and GET /api/ard/agents (the full measured catalog, paginated).

REST API

No key, no login. Two GETs cover most of it; the full contract is in the OpenAPI spec.

# One tool's Pick Rate
curl -s "https://pickrate.io/api/public/report?q=stripe"

# A category leaderboard (omit ?category= to list categories)
curl -s "https://pickrate.io/api/public/leaderboard?category=work-management"

OpenAPI 3 spec: openapi.json.

WebMCP

A WebMCP-aware browser agent finds Pickrate's tools in-page via navigator.modelContext, or reads the static manifest without running any script.

Manifest: https://pickrate.io/.well-known/webmcp

Markdown for any page

Append .md to any URL, or send Accept: text/markdown, to get a clean Markdown rendering — no nav, no chrome.

curl -s https://pickrate.io/leaderboard/work-management.md
curl -s https://pickrate.io/ -H 'Accept: text/markdown'

Discovery files

Building with this? The developer docs go deeper on the API and on Agent Attribution.


What agents actually read here

Pickrate measures which tools AI agents pick. So we watch the other side too: which agents read these surfaces. Every row below is a real AI crawler or assistant fetching a Pickrate page, file, or endpoint — the awareness layer of the Agent Funnel, live. It's the whole argument made concrete: machine-readable files get read by machines.

34,907 agent visits from 19 distinct agents · last seen 08-17 22:40 UTC.

Volume

08-04last 14 days08-17

By agent

AI agents and assistants, split out from legacy search crawlers (Google, Bing, Apple). Bar length is shared across both groups, so counts compare directly.

AI agents & assistants24,508
OpenAI GPTBot18187
OpenAI SearchBot1746
Anthropic ClaudeBot1112
Perplexity1090
Meta920
Amazon628
OpenAI ChatGPT-User550
Agent Tools144
Google-Extended63
Anthropic Claude-User22
Common Crawl21
ByteDance12
DuckDuckGo6
You.com4
Applebot-Extended3
Search crawlers6,418
Googlebot4922
Bingbot1400
Applebot96
Unclassified3,981
unknown3981

Most-read paths

/robots.txt1916
/sitemap.xml1189
/474
/leaderboard/object-storage/cloudflare-r2333
/leaderboard/ai-sdk/vercel-ai-sdk308
/leaderboard/feature-flags/statsig230
/leaderboard/sms/messagebird225
/leaderboard/docs-platforms/docusaurus222
/leaderboard/ai-sdk/langchain220
/leaderboard/ai-sdk/anthropic-sdk220
/leaderboard/ci-cd/github-actions217
/leaderboard/docs-platforms/nextra216

Recently

Anthropic ClaudeBot/for-agents08-17 22:40 UTCAnthropic ClaudeBot/robots.txt08-17 22:40 UTCGooglebot/leaderboard/sms08-17 22:17 UTCGooglebot/leaderboard/cdn/akamai08-17 22:11 UTCMeta/robots.txt08-17 22:07 UTCGooglebot/leaderboard/observability08-17 21:47 UTCGooglebot/leaderboard08-17 21:46 UTCAnthropic ClaudeBot/sitemap.xml08-17 21:39 UTCAnthropic ClaudeBot/robots.txt08-17 21:39 UTCGooglebot/08-17 21:34 UTC

Same data as JSON: /api/public/agent-activity. Counts cover both crawler fetches of these pages and calls to the agent endpoints (/api/mcp, /api/ard/*) — attributed by crawler user-agent, MCP client name, or unknown; a per-day rollup, not raw request logs.