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.

69,974 agent visits from 21 distinct agents · last seen 10-02 01:38 UTC.

Volume

09-19last 14 days10-02

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 & assistants47,110
OpenAI GPTBot24316
OpenAI SearchBot11328
Meta3297
Amazon1948
Perplexity1831
Anthropic ClaudeBot1826
OpenAI ChatGPT-User1461
Agent Tools279
Anthropic Claude-User232
You.com192
Google-Extended140
Perplexity-User92
ByteDance63
DuckDuckGo51
Common Crawl44
Applebot-Extended5
Cohere5
Search crawlers11,287
Googlebot9188
Bingbot1897
Applebot202
Unclassified11,577
unknown11577

Most-read paths

/robots.txt4080
/1583
/sitemap.xml1561
/.well-known/agent-card.json1223
/.well-known/agent.json1211
/.well-known/oauth-protected-resource663
/.well-known/oauth-authorization-server527
/.well-known/ai-catalog.json505
/leaderboard/object-storage/cloudflare-r2490
/leaderboard/ai-sdk/vercel-ai-sdk487
/leaderboard/ai-sdk/langchain415
/features390

Recently

Anthropic ClaudeBot/for-agents10-02 01:38 UTCunknown/.well-known/oauth-authorization-server10-02 01:10 UTCunknown/.well-known/openid-configuration/api/mcp10-02 01:10 UTCunknown/.well-known/oauth-authorization-server10-02 01:10 UTCunknown/.well-known/oauth-authorization-server/api/mcp10-02 01:10 UTCunknown/.well-known/openid-configuration/api/mcp10-02 01:10 UTCunknown/.well-known/openid-configuration10-02 01:10 UTCunknown/.well-known/oauth-authorization-server/api/mcp10-02 01:10 UTCunknown/.well-known/oauth-authorization-server10-02 01:10 UTCunknown/.well-known/openid-configuration10-02 01:10 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.