# AimRank

> Read public pairwise-preference rankings and their statistical quality evidence. No API key.

- name: io.aimrank/aimrank
- version: 4.12.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.aimrank%2Faimrank
- tools: https://api.protogrid.dev/v1/servers/io.aimrank%2Faimrank/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "aimrank": {
      "type": "http",
      "url": "https://app.aimrank.io/mcp/public"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 85
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% ~updated-41d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 21 of 21 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: aimrank_get_matchup (destructiveHint); aimrank_search_entities (destructiveHint); aimrank_discover_public_rankings (destructiveHint); …
- pass `tools.token_cost`: about 3,646 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 21, about 3,646 tokens to load them all
- tool set hash: 95c10649d2304898b5d25c29e73920fd
- badge: [![protogrid quality](https://protogrid.dev/badge/io.aimrank/aimrank.svg)](https://protogrid.dev/servers/io.aimrank/aimrank)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://app.aimrank.io/mcp/public (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (21)

- `aimrank_create_share_card`: Return share-ready URLs + embed snippets for a ranking.

Formats: "all" (default — everything), "twitter", "linkedin",
"embed_leaderboard", "embed_vote", "badge_markdown", "qr_code",
"data_card". Pass these to a human to paste into a tweet, blog,
Notion page, or Slack message. The OG image renders automatically
when the public_url is unfurled by Twitter / LinkedIn / Slack.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_discover_public_rankings`: Browse public rankings — agent equivalent of surfing aimrank.io.

Filters: category, media_type ("text" | "image" | "audio" | "video"),
sort ("trending" | "recent" | "most_votes" | "random"), limit 1-50.
Each result embeds share assets so the agent can hand any ranking
back to the user as a clickable link without a follow-up call.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_explain`: iCOMPLY contract: explain a prediction in features + narrative.

Returns the Glicko-2 μ/φ inputs for both entities + a deterministic
narrative. No LLM-synthesised rationale — these are the actual
numbers the math uses, which is exactly what an Annex IV auditor
needs to trace.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_find_similar_domains`: Find public domains most similar to a query or a known domain.

Use ``query`` for free-text search ("pharma evaluation") OR
``domain_id`` to find domains similar to one you already know.
Exactly one must be provided.

TF-IDF + cosine similarity over name + description + category +
declared constitution + objectives text. Cheap (no embedding API
calls), 5-minute in-process cache. Only public domains are
searched / returned. Score in [0, 1] — typical "useful match"
threshold is ≥0.15; "near duplicate" is ≥0.5.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_agreement`: Inter-annotator agreement — Layer 5. Returns Cohen's κ
(n=2 raters), Fleiss' κ, Krippendorff's α, Scott's π +
Landis-Koch interpretation, plus the multi-rater coverage report.

`min_raters` overrides the ranking's configured min_raters_per_pair.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_ceiling`: Pairwise-κ ceiling from qualification attempts. The upper
bound any judge / RM can credibly hit on this domain — used to
pin the L3 pilot refund clause (refund if κ < ceiling - 5pp).

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_crowd_bt`: CrowdBT — joint fit of entity scores + per-annotator
reliability η. Surfaces noisy / anti-correlated raters
explicitly. Methodology audit, not a live engine.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_daily_pair`: Fetch today's Daily Pair — the trending matchup chosen at 00:00 UTC.

Pairs with the `vote_of_the_day` agent template. Returns the challenge
+ a fresh matchup. If the cron hasn't run yet, falls back via
ok=False so the agent can use `aimrank_get_matchup` instead.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_data_card`: Auto data card — Layer 7. Provenance + IAA + coverage +
per-annotator quality + transitivity + qualification stats in
one synthesized markdown audit artefact.

Format: 'markdown' (default) or 'json' for structured summary.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_domain`: Get domain details including entity pool and competition list.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_leaderboard`: Get the top N entities of a ranking sorted by rating.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_matchup`: Get the next pair of entities to evaluate.

Strategies: adaptive (default), swiss, balanced, random,
uncertainty, explore, information_gain.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_plackett_luce`: Plackett-Luce listwise ranking aggregation — OFFLINE AUDIT ONLY.

Reported post-hoc; it NEVER writes ratings, and setting it as a
ranking's algorithm returns 400. AimRank has 6 rating engines plus
2 offline aggregators (this and CrowdBT) — never describe it as an
8th rating algorithm.

Generalises Bradley-Terry to ranked lists. On pairwise data,
collapses to BT MLE — useful as a second-opinion aggregator.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_get_ranking`: Fetch a ranking's metadata + top 25 entities sorted by rating.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_healthcheck`: iCOMPLY contract: liveness + DB-connectivity probe.
- `aimrank_list_competitions`: List all competitions (open voting + brackets) in a domain.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_list_domain_entities`: List all entities in a domain's pool sorted by rating.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_list_public_judges`: Browse public judge-prompt artifacts shared by other users.

Filter by ``category`` (free-text), ``domain_id``, or both.
Sort options: ``fork_count`` (default — most-forked first),
``recent``, ``faithfulness``.

Returns artifact summaries WITHOUT the full prompt text — call
`aimrank_fork_judge_prompt` or the REST GET to retrieve the
full prompt before using it.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_predict`: iCOMPLY contract: pairwise prediction with provenance fields.

Returns the engine's predicted winner + probability shaped so
iCOMPLY's Annex IV section-4 generator can ingest the response
directly. See [iCOMPLY_INTEGRATION_STRATEGY.md] for the contract.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_predict_matchup_winner`: Predict the winner of a matchup BEFORE a vote is cast.

Uses Glicko-2 win probability under the same formula matchmaking
uses internally. Pairs with aimrank_submit_vote for the
"Claude predicts, you vote, we compare" demo. Does not record
a vote — read-only.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
- `aimrank_search_entities`: Find entities by name substring within a ranking.

api_key is optional on the public endpoint; on /mcp/mcp a missing
key is refused.
