Model Context Protocol
NILmetrics for your AI assistant
Connect Claude, ChatGPT or Cursor to NILmetrics with one URL and an API key. Your assistant can look up players, read the market and work your watchlist and boards, with the same access your key has in the API.
The endpoint
NILmetrics hosts the MCP server for you, so there is nothing to install. It speaks the Streamable HTTP transport and authenticates every request with a NILmetrics API key sent as a Bearer token. A request without a valid key gets a 401.
https://nilmetrics.com/api/mcpAuthorization: Bearer YOUR_API_KEYGet an API key
API keys are issued by our team for each customer, with the scopes your work needs. The MCP server uses the same keys as the NILmetrics API. Already a customer? Ask for a key from Developer access in your account settings. New to NILmetrics? Request access or contact us.
Treat the key like a password. Each tool call counts as one API request against your key's rate limit and request quota.
Set up your client
Replace YOUR_API_KEY with your key in each example.
Claude Code
Run this once in a terminal. The server is then available in every Claude Code session.
claude mcp add --transport http nilmetrics https://nilmetrics.com/api/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Claude Desktop
Add the server to your Claude Desktop config (Settings, Developer, Edit Config), then restart Claude Desktop. The mcp-remote bridge sends your key as a header; it needs Node.js installed.
{
"mcpServers": {
"nilmetrics": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://nilmetrics.com/api/mcp",
"--header",
"Authorization:${NILMETRICS_AUTH}"
],
"env": {
"NILMETRICS_AUTH": "Bearer YOUR_API_KEY"
}
}
}
}The Custom Connector screen in Claude Desktop and claude.ai signs in with OAuth, which NILmetrics does not offer yet, so use the config file above.
Cursor
Add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project).
{
"mcpServers": {
"nilmetrics": {
"url": "https://nilmetrics.com/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}ChatGPT (OpenAI API)
Give a model the NILmetrics tools through the OpenAI Responses API by passing the endpoint as a remote MCP server.
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"input": "Who are the top-rated womens basketball players right now?",
"tools": [{
"type": "mcp",
"server_label": "nilmetrics",
"server_url": "https://nilmetrics.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" },
"require_approval": "never"
}]
}'Custom connectors inside the ChatGPT app sign in with OAuth, which NILmetrics does not offer yet. Use the API as shown.
Check your key
This lists the tools without spending a tool call.
curl https://nilmetrics.com/api/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Tools
21 tools, each backed by an API endpoint and checked against your key the same way. Tools marked "your account" read or change your own watchlist, notes and boards, so they need a key linked to your user account.
| Tool | What it does | Scope |
|---|---|---|
| nilmetrics_list_players | List scored players (cursor-paginated). Filters: gender, tier, conference_id, position, search, min_score, limit, cursor. | read:players |
| nilmetrics_get_player | Get one player's score, pillars, tier, and projection. | read:players |
| nilmetrics_player_history | A player's daily score history (up to 365 days). | read:players |
| nilmetrics_player_explanation | The model's plain-language explanation + top factors for a player. | read:players |
| nilmetrics_player_deals | A player's confirmed deals (brand / collective base / competing offers). | read:players |
| nilmetrics_list_conferences | List conferences with average score + team count. | read:players |
| nilmetrics_list_teams | List teams (filter by gender, conference_id). | read:players |
| nilmetrics_market_movers | Biggest 14-day score movers. | read:market |
| nilmetrics_market_signals | Decision signals + market pulse + NIL index. | read:market |
| nilmetrics_market_top | Top-rated athletes. | read:market |
| nilmetrics_get_watchlist | The caller's saved (starred) players. | read:watchlistyour account |
| nilmetrics_add_to_watchlist | Save a player to the caller's watchlist. | write:watchlistyour account |
| nilmetrics_remove_from_watchlist | Remove a player from the caller's watchlist. | write:watchlistyour account |
| nilmetrics_list_boards | The caller's boards (deal lists). | read:boardsyour account |
| nilmetrics_get_board | A board's detail + its players. | read:boardsyour account |
| nilmetrics_list_roster | The caller's signed deals (active roster). | read:boardsyour account |
| nilmetrics_get_note | The caller's private note for a player. | read:playersyour account |
| nilmetrics_set_note | Set/clear the caller's private note for a player (empty body clears). | write:notesyour account |
| nilmetrics_create_board | Create a board (deal list). Pass idempotency_key to make a retry safe (a repeat replays instead of duplicating). | write:boardsyour account |
| nilmetrics_add_board_player | Add a player to a board. | write:boardsyour account |
| nilmetrics_sign_board_player | Sign a board player into the active roster at a deal amount. keep_on_board keeps the board row (default true); idempotency_key makes a retry safe. | write:boardsyour account |
Scopes used: read:boards, read:market, read:players, read:watchlist, write:boards, write:notes, write:watchlist. A call your key is not scoped for returns a forbidden error naming the missing scope, and nothing runs.
Building directly on the API?
The API reference documents every endpoint behind these tools, with request and response shapes.
