From numerai-ql
This skill should be used when the user asks to "query numerai", "get model performance", "check leaderboard", "get round data", "fetch numerai scores", "query graphql api", "get numerai tournament data", "check model scores", "get payout data", "look up numerai model", "get corr score", "get mmc score", "check numerai rank", or wants to retrieve any data from the Numerai Tournament API.
How this skill is triggered — by the user, by Claude, or both
Slash command
/numerai-ql:numerai-qlThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill enables querying the Numerai Tournament GraphQL API at `https://api-tournament.numer.ai/` to retrieve tournament data, model performance, leaderboards, round information, and more.
This skill enables querying the Numerai Tournament GraphQL API at https://api-tournament.numer.ai/ to retrieve tournament data, model performance, leaderboards, round information, and more.
https://api-tournament.numer.ai/{"query": "...", "variables": {...}}Map user requests to the right query:
| User Wants | Query to Use |
|---|---|
| Model scores/performance | v2RoundModelPerformances |
| User profile or models | accountProfile |
| Leaderboard rankings | accountLeaderboard |
| Round info (open/closed) | rounds |
| Current NMR price | latestCurrencyPrice |
| Dataset links | listDatasets |
| Full round breakdown | roundDetails |
| Daily intra-round scores | v2RoundModelPerformances + intraRoundSubmissionScores |
Many performance queries require a model UUID, not a name. To get it:
curl -X POST -H "Content-Type: application/json" \
-d '{"query": "{ accountProfile(username: \"USERNAME\", tournament: 8) { models { id displayName tournament } } }"}' \
https://api-tournament.numer.ai/
Critical: Use displayName (not name) on ModelProfile objects returned by accountProfile.
Use the Bash tool to run curl commands against the API. Always use:
-X POST-H "Content-Type: application/json"-d '{"query": "...", "variables": {...}}'Extract the relevant fields from data.<queryName> in the JSON response.
curl -X POST -H "Content-Type: application/json" \
-d '{"query": "{ rounds(tournament: 8, limit: 1) { number openTime closeTime resolvedGeneral resolvedStaking } }"}' \
https://api-tournament.numer.ai/
curl -X POST -H "Content-Type: application/json" \
-d '{"query": "{ accountProfile(username: \"USERNAME\", tournament: 8) { models { id displayName tournament } } }"}' \
https://api-tournament.numer.ai/
curl -X POST -H "Content-Type: application/json" \
-d '{"query": "{ v2RoundModelPerformances(modelId: \"MODEL_UUID\", tournament: 8, lastNRounds: 20) { roundNumber corr mmc fnc tc corrPercentile mmcPercentile roundResolved payout } }"}' \
https://api-tournament.numer.ai/
curl -X POST -H "Content-Type: application/json" \
-d '{"query": "{ accountLeaderboard(tournament: 8, limit: 10, orderBy: \"corr\", direction: \"desc\") { username rank corr mmc nmrStaked return1y } }"}' \
https://api-tournament.numer.ai/
curl -X POST -H "Content-Type: application/json" \
-d '{"query": "query { latestCurrencyPrice(targetSymbol: \"USD\", baseSymbol: \"NMR\") { price lastUpdated } }"}' \
https://api-tournament.numer.ai/
curl -X POST -H "Content-Type: application/json" \
-d '{
"query": "query { v2RoundModelPerformances(modelId: \"MODEL_UUID\", roundNumber__eq: ROUND_NUM, tournament: 8) { roundNumber roundResolved atRisk intraRoundSubmissionScores { displayName value percentile day date payoutPending } } }"
}' \
https://api-tournament.numer.ai/
| Context | Type | Use field |
|---|---|---|
account.models | Model | name |
model(modelId) | Model | name |
accountProfile.models | ModelProfile | displayName |
tournament: 12 to accountProfile to get crypto modelssubmissionScores array (not top-level fields):
submissionScores { displayName value }
# displayName: "corr", "mmc", "canon_corr", "canon_mmc", "season_score"
GraphQL errors appear in the errors array alongside data. Always check:
response = response.json()
if "errors" in response:
# handle error
data = response.get("data", {})
For multi-step workflows, use httpx or requests:
import httpx
API_URL = "https://api-tournament.numer.ai/"
def gql(query, variables=None):
resp = httpx.post(API_URL, json={"query": query, "variables": variables or {}})
return resp.json()
# Get model ID
result = gql('{ accountProfile(username: "myuser", tournament: 8) { models { id displayName } } }')
model_id = result["data"]["accountProfile"]["models"][0]["id"]
# Get performance
perf = gql(
"{ v2RoundModelPerformances(modelId: $id, lastNRounds: 10) { roundNumber corr mmc payout } }",
{"id": model_id}
)
references/api-reference.md — Full query reference with all parameters and field definitionsreferences/crypto-tournament.md — Crypto tournament (ID 12) specific patternsreferences/intra-round.md — Daily intra-round score queries and data structureexamples/get_model_performance.py — Complete Python script for fetching model performanceexamples/leaderboard_query.sh — Shell script examples for common queriesscripts/query.sh — Reusable curl wrapper for the Numerai APISearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub lingster/numerai --plugin numerai-ql