Daredevil NBA Sports Data
Use this skill in two ways:
- Raw data — When the user asks for NBA schedule, scores, boxscore, standings, injuries, team roster, or player stats, request data from the Daredevil seller. Each request is paid via x402 (small fee per query).
- Analysis / prediction — When the user asks for an opinion, recommendation, or "what do you think?" about a game or matchup (e.g. "What do you think about the LAL and CHI game?"), first retrieve the necessary raw data via this skill, then synthesize an answer using your LLM. Synthesis runs on your side (the buyer); the seller only returns raw data.
Base URL
https://daredevil-acp-seller-production.up.railway.app
- Health check (no payment):
GET /health
- Data (payment required):
POST /v1/data with JSON body and x402 payment headers
Request (POST /v1/data)
Send a JSON body with:
| Field |
Required |
Description |
dataType |
Yes |
One of: schedule, next_game, boxscore, live_score, play_by_play, standings, injuries, team_roster, player_stats |
teamName |
No |
Team alias (e.g. LAL, BOS) or full name (Lakers, Celtics) |
date |
No |
Date in YYYY-MM-DD format |
endDate |
No |
End date for schedule range (YYYY-MM-DD) |
daysAhead |
No |
For schedule: number of days ahead (e.g. 7 for one week) |
maxDaysAhead |
No |
For next_game: max days to look ahead (default 14) |
nextGameLimit |
No |
For next_game: max number of games to return (default 1) |
gameId |
No |
Sportradar game ID when you need a specific game (boxscore, live_score, play_by_play) |
Data types
- schedule — NBA games for a date or range (use
date, endDate, or daysAhead; optional teamName to filter).
- next_game — Next upcoming game(s) for a team (
teamName required; optional nextGameLimit, maxDaysAhead).
- boxscore — Full boxscore for a game (
gameId or teamName for today’s game).
- live_score — Live score for a game (
gameId or teamName for today’s game).
- play_by_play — Play-by-play for a game (
gameId or teamName for today’s game).
- standings — NBA standings (optional
date).
- injuries — Current injury report.
- team_roster — Team roster (
teamName required).
- player_stats — Player stats (typically requires
gameId or context from a game).
Payment (x402)
The server requires payment for POST /v1/data. Use an x402-capable HTTP client:
- First request without payment → server responds 402 Payment Required with payment details in the
Payment-Required header (or equivalent).
- Create payment payload and sign with the user’s wallet (same network as server: Base Sepolia testnet
eip155:84532 or Base mainnet eip155:8453).
- Retry
POST /v1/data with the same body plus the x402 payment header(s). On success you get 200 and a JSON body with dataType, result (JSON string), and timestamp.
If your environment has a tool or script that performs x402-paid HTTP requests, use it with the base URL and request body above. Otherwise you may need to use bash with a CLI or script that supports x402 (e.g. Node script using @x402/core client).
Response
Success (200) body shape:
{
"dataType": "schedule",
"result": "<JSON string of the actual data>",
"timestamp": "2025-02-21T...",
"gameStatus": "optional for live games"
}
Parse result as JSON to get the underlying schedule, boxscore, standings, etc.
Examples (raw data)
- "What's the Lakers schedule this week?" →
dataType: "schedule", teamName: "LAL", daysAhead: 7
- "When is the Celtics' next game?" →
dataType: "next_game", teamName: "BOS"
- "NBA standings" →
dataType: "standings"
- "Lakers roster" →
dataType: "team_roster", teamName: "LAL"
- "Current NBA injuries" →
dataType: "injuries"
Analysis and synthesis workflow
When the user asks for an analysis, prediction, or opinion (e.g. "What do you think about the LAL and CHI game?", "Who do you think will win Lakers vs Celtics?", "Should I bet on the Bulls tonight?"):
- Determine required data — For a matchup or game question, typically fetch:
next_game for each team (or schedule with teamName and daysAhead) to get game time and matchup.
standings for context on team records.
injuries for key absences (optional but recommended).
boxscore or live_score if the game is today and you need current state.
team_roster only if roster context is relevant.
- Request that data — Call
POST /v1/data (with x402 payment) for each needed dataType. Parse each result as JSON.
- Synthesize — Using your LLM, produce a short analysis or prediction based only on the retrieved data. Do not invent stats or facts. Use the prompt template below (or see
prompts/analyze-game.md) with the user's question and the concatenated/summarized retrieved data.
Synthesis prompt template
After you have the raw data, call your LLM with a prompt like this (fill in the placeholders):
You are an NBA analyst. The user asked: "{{user_question}}"
Below is raw data from the Daredevil NBA API (schedule, boxscore, standings, injuries, etc.). Use only this data to produce a short, clear analysis or prediction. Do not invent facts or stats.
---
{{retrieved_data}}
---
Provide your analysis or prediction in a few sentences.
{{user_question}} — The user's exact question (e.g. "What do you think about the LAL and CHI game?").
{{retrieved_data}} — The JSON or a concise summary of the API responses you received (schedules, standings, injuries, boxscore, etc.). If large, summarize key fields (teams, dates, scores, records, notable injuries) rather than pasting entire payloads.
Then return the LLM's synthesized answer to the user.
Examples (analysis)
- "What do you think about the LAL and CHI game?" → Fetch
next_game for LAL and CHI, standings, and optionally injuries; then run the synthesis prompt with that data.
- "Who wins Lakers vs Celtics?" → Same: next games / schedule for both, standings, injuries; then synthesize.
- "Give me a pick for tonight's games" → Fetch
schedule for today (or daysAhead: 1), standings, injuries; then synthesize picks from the data.
Always use the base URL above and include x402 payment when calling POST /v1/data.
1---2name: daredevil-nba-sportsdata3description: Request NBA sports data (schedule, boxscore, standings, injuries, roster, etc.) from the Daredevil seller. Payment per request via x402.4---5
6# Daredevil NBA Sports Data
7
8Use this skill in two ways:
9
101. **Raw data** — When the user asks for NBA schedule, scores, boxscore, standings, injuries, team roster, or player stats, request data from the Daredevil seller. Each request is paid via x402 (small fee per query).
112. **Analysis / prediction** — When the user asks for an opinion, recommendation, or "what do you think?" about a game or matchup (e.g. "What do you think about the LAL and CHI game?"), first retrieve the necessary raw data via this skill, then **synthesize** an answer using your LLM. Synthesis runs on your side (the buyer); the seller only returns raw data.
12
13## Base URL
14
15**https://daredevil-acp-seller-production.up.railway.app**
16
17- Health check (no payment): `GET /health`
18- Data (payment required): `POST /v1/data` with JSON body and x402 payment headers
19
20## Request (POST /v1/data)
21
22Send a JSON body with:
23
24| Field | Required | Description |
25|-------|----------|-------------|
26| `dataType` | Yes | One of: `schedule`, `next_game`, `boxscore`, `live_score`, `play_by_play`, `standings`, `injuries`, `team_roster`, `player_stats` |
27| `teamName` | No | Team alias (e.g. LAL, BOS) or full name (Lakers, Celtics) |
28| `date` | No | Date in YYYY-MM-DD format |
29| `endDate` | No | End date for schedule range (YYYY-MM-DD) |
30| `daysAhead` | No | For schedule: number of days ahead (e.g. 7 for one week) |
31| `maxDaysAhead` | No | For next_game: max days to look ahead (default 14) |
32| `nextGameLimit` | No | For next_game: max number of games to return (default 1) |
33| `gameId` | No | Sportradar game ID when you need a specific game (boxscore, live_score, play_by_play) |
34
35## Data types
36
37- **schedule** — NBA games for a date or range (use `date`, `endDate`, or `daysAhead`; optional `teamName` to filter).
38- **next_game** — Next upcoming game(s) for a team (`teamName` required; optional `nextGameLimit`, `maxDaysAhead`).
39- **boxscore** — Full boxscore for a game (`gameId` or `teamName` for today’s game).
40- **live_score** — Live score for a game (`gameId` or `teamName` for today’s game).
41- **play_by_play** — Play-by-play for a game (`gameId` or `teamName` for today’s game).
42- **standings** — NBA standings (optional `date`).
43- **injuries** — Current injury report.
44- **team_roster** — Team roster (`teamName` required).
45- **player_stats** — Player stats (typically requires `gameId` or context from a game).
46
47## Payment (x402)
48
49The server requires payment for `POST /v1/data`. Use an x402-capable HTTP client:
50
511. First request without payment → server responds **402 Payment Required** with payment details in the `Payment-Required` header (or equivalent).
522. Create payment payload and sign with the user’s wallet (same network as server: Base Sepolia testnet `eip155:84532` or Base mainnet `eip155:8453`).
533. Retry `POST /v1/data` with the same body plus the x402 payment header(s). On success you get **200** and a JSON body with `dataType`, `result` (JSON string), and `timestamp`.
54
55If your environment has a tool or script that performs x402-paid HTTP requests, use it with the base URL and request body above. Otherwise you may need to use `bash` with a CLI or script that supports x402 (e.g. Node script using `@x402/core` client).
56
57## Response
58
59Success (200) body shape:
60
61```json
62{
63 "dataType": "schedule",
64 "result": "<JSON string of the actual data>",
65 "timestamp": "2025-02-21T...",
66 "gameStatus": "optional for live games"
67}
68```
69
70Parse `result` as JSON to get the underlying schedule, boxscore, standings, etc.
71
72## Examples (raw data)
73
74- "What's the Lakers schedule this week?" → `dataType: "schedule", teamName: "LAL", daysAhead: 7`
75- "When is the Celtics' next game?" → `dataType: "next_game", teamName: "BOS"`
76- "NBA standings" → `dataType: "standings"`
77- "Lakers roster" → `dataType: "team_roster", teamName: "LAL"`
78- "Current NBA injuries" → `dataType: "injuries"`
79
80## Analysis and synthesis workflow
81
82When the user asks for an **analysis**, **prediction**, or **opinion** (e.g. "What do you think about the LAL and CHI game?", "Who do you think will win Lakers vs Celtics?", "Should I bet on the Bulls tonight?"):
83
841. **Determine required data** — For a matchup or game question, typically fetch:
85 - `next_game` for each team (or `schedule` with `teamName` and `daysAhead`) to get game time and matchup.
86 - `standings` for context on team records.
87 - `injuries` for key absences (optional but recommended).
88 - `boxscore` or `live_score` if the game is today and you need current state.
89 - `team_roster` only if roster context is relevant.
902. **Request that data** — Call `POST /v1/data` (with x402 payment) for each needed `dataType`. Parse each `result` as JSON.
913. **Synthesize** — Using your LLM, produce a short analysis or prediction based **only** on the retrieved data. Do not invent stats or facts. Use the prompt template below (or see `prompts/analyze-game.md`) with the user's question and the concatenated/summarized retrieved data.
92
93### Synthesis prompt template
94
95After you have the raw data, call your LLM with a prompt like this (fill in the placeholders):
96
97```
98You are an NBA analyst. The user asked: "{{user_question}}"
99
100Below is raw data from the Daredevil NBA API (schedule, boxscore, standings, injuries, etc.). Use only this data to produce a short, clear analysis or prediction. Do not invent facts or stats.
101
102---
103{{retrieved_data}}
104---
105
106Provide your analysis or prediction in a few sentences.
107```
108
109- `{{user_question}}` — The user's exact question (e.g. "What do you think about the LAL and CHI game?").
110- `{{retrieved_data}}` — The JSON or a concise summary of the API responses you received (schedules, standings, injuries, boxscore, etc.). If large, summarize key fields (teams, dates, scores, records, notable injuries) rather than pasting entire payloads.
111
112Then return the LLM's synthesized answer to the user.
113
114### Examples (analysis)
115
116- "What do you think about the LAL and CHI game?" → Fetch `next_game` for LAL and CHI, `standings`, and optionally `injuries`; then run the synthesis prompt with that data.
117- "Who wins Lakers vs Celtics?" → Same: next games / schedule for both, standings, injuries; then synthesize.
118- "Give me a pick for tonight's games" → Fetch `schedule` for today (or `daysAhead: 1`), `standings`, `injuries`; then synthesize picks from the data.
119
120Always use the base URL above and include x402 payment when calling `POST /v1/data`.