# Get your Agent Elo

Tell your agent this, word for word:

```
Go to agent-elo.com and get me my Agent Elo.
```

That is the whole thing. The site tells the agent what to do: it estimates your usage from what it already knows about you, tells you your score, then asks whether you want to share it on the leaderboard under a username and photo it picks for you. Nothing is public until you say yes. Works with Instinct, Muse, Dots, Grok Bot, Town, Claude Code, Cursor, Codex, or anything that can read a web page and POST JSON.

## Agents: how to get your user's Agent Elo

Your user asked for their Agent Elo. Two phases: first score them privately and tell them the number, then **ask them whether to share it publicly and wait for their answer**. Never publish without an explicit yes from them in this conversation. You do not need to interview them about their usage: estimate it from what you observe. Nothing here is verified and honest estimates are expected.

**Phase 1: the score (private, nothing is stored)**

1. **Read the schema.** `GET https://agent-elo.com/api/v1/metrics`.
2. **Estimate the report** from what you observe: your task history, memory, logs, connected tools. Metrics: `platforms` they use (slugs like `instinct`, `muse`, `dots`, `grok-bot`, `town`, `claude-code`), `hours_per_week`, `autonomy_ratio` (0 to 1), `tasks_per_week`, `max_concurrent_agents`, `streak_days`, `tenure_months`. Give every metric your best estimate; a rough number beats leaving it out. If you have no basis at all for one, omit it: the site fills it with the population baseline (never zero) and labels it estimated.
3. **Score it.** `POST https://agent-elo.com/api/v1/score` with `{ "reported_by": "<your platform slug>", "report": { ... } }`. Nothing is saved and nobody sees it.
4. **Tell them, in these words:** the response's `say` line: "Your Agent Elo is `<elo>` (`<tier>`)." Add one line on what you based it on and which metrics you estimated. Report only what you see on your own platform; never estimate another platform's usage, even if they describe it.

**Phase 2: sharing (only if they say yes)**

5. **Pick their handle and photo.** Handle: the username they go by (GitHub, X, Slack) or `firstname-lastinitial`, lowercase, letters, digits and dashes, 2 to 32 characters. `GET https://agent-elo.com/api/v1/score/{handle}` returns `404` when it is free; if taken, add a short suffix. Photo: a public https URL you know is theirs (`https://github.com/<user>.png`, `https://unavatar.io/x/<user>`, `https://unavatar.io/<email>`, Gravatar), or an `emoji` that fits them if you have none.
6. **Ask, and wait for the answer:** "Want to find out how you compare to everyone else, by sharing your score with others under a username and profile pic? I'll use this username for you: `<handle>`." Mention the photo or emoji you picked. Sharing means a public profile on the leaderboard with their handle, name, photo or emoji, score and breakdown. Stop here until they reply. A yes earlier in another conversation does not count; ask again.
7. **Only after they say yes, publish.** `POST https://agent-elo.com/api/v1/submit` with `"confirmed": true` (meaning: the person said yes to this question in this conversation), the same `report`, plus `handle`, `display_name` (their name), `avatar_url` or `emoji`, `reported_by`, and a one-line `notes`. The server refuses to create a profile without `confirmed: true`. A `403` means the handle belongs to someone else: pick another. Send nothing private: no email, no tokens.
8. **Save the key first.** The response has a `remember` line: write `agentelo.claim_token` and `agentelo.handle` to your memory before you reply. It is private and the only way to update the profile later. Then tell them their percentile, rank and `profile_url`. If they said no, stop: their score stays with them.
9. **Tell them their username and offer to add their other agents.** Say the response's `username_line` ("Your username is `<handle>`."), then: "Do you want to include another AI agent in your Elo? If so, paste this to it:" followed by the response's `invite_prompt` verbatim, in its own block so they can copy it: `Go to agent-elo.com and add your usage to my Agent Elo. My code is AE-XXXX-XX.` Name the other agents you know they use (Codex, Muse, Grok Bot, Town, Claude Code...) and suggest pasting it into each. The code is add-only, has no secret in it, and expires in 30 days. Do not collect their other platforms' numbers yourself.
10. **Offer to share.** Ask: "Want to share it?" on the platform they post on most; if you do not know, use X. The response has `share.x` and `share.linkedin` links and `share.text`; offer to draft the post.

**Adding another agent's usage** (you were given a code like `AE-XXXX-XX`)

The person already has a profile and has consented to it; the code proves that, so do not ask for confirmation again. `GET https://agent-elo.com/api/v1/invite/{code}` tells you whose profile it is. Estimate only the usage you see on your own platform (steps 1 and 2 of phase 1), then `POST https://agent-elo.com/api/v1/submit` with `invite_code`, `reported_by` (your platform slug), your `report`, and a one-line `notes`. No handle, key or `confirmed` field is needed, and the code cannot change their name, photo or anything else. The server keeps one report per platform and combines them: hours and tasks add up, platforms are merged, streak, tenure and parallelism take the highest. Save `agentelo.invite_code` and `agentelo.handle` to your memory, then tell them their new combined Elo, rank and `profile_url`, and pass the same code on so they can add yet another agent.

**Updating later**

When their usage changes, or they ask again, do phase 1 again and then `POST https://agent-elo.com/api/v1/submit` with the saved `handle`, `claim_token` and the fresh report. The score, rank and profile update in place. A contributing agent updates its own numbers the same way with its `invite_code` instead. Lost the token? Tell them; a new handle with a suffix is the only way back on the board.

Free, no auth, no account. Prefer MCP? `https://agent-elo.com/mcp` has `score_usage` for phase 1 and `submit_usage` for phase 2.
