docs(personal): restructure bourdain docs to separate system prompt

Refactor documentation to distinguish character reference from AI
system prompt. Removed user context and persona definitions.
System prompt instructions moved to prompts/personal/bourdain.md.
This commit is contained in:
2026-05-21 06:53:04 -04:00
parent d556ef9409
commit b7e0dc927f
22 changed files with 1851 additions and 2541 deletions

118
docs/tools/nike.md Normal file
View File

@@ -0,0 +1,118 @@
# Nike
> Live football (soccer) data — teams, players, fixtures, results, standings.
- **MCP server name:** `nike`
- **Prompt snippet:** [prompts/tools/nike.md](../../prompts/tools/nike.md)
## What It Is
Nike is the live football data source — backed by [TheSportsDB](https://www.thesportsdb.com/). All tools are **read-only**: team profiles, rosters, player info, fixtures, results, standings, match detail, live scores. Transport is HTTP Streamable at `/mcp/`.
Named for the Greek goddess of victory, fitting for a tool whose job is to track who's winning.
Nike sits next to Cristiano's Neo4j domain rather than overlapping with it. Nike provides the **canonical live data** — current standings, who's playing tomorrow, who scored on what date. Cristiano's Neo4j `Match`, `Team`, `Player` nodes hold the **interpretation** — what Robert thought of a match, which players he's following, tactical observations. The two stores serve different purposes.
## MCP Tools
All tools are read-only. The set below reflects what's currently exposed.
### Teams and rosters
| Tool | Purpose |
|---|---|
| `get_team_info` | Team profile — stadium, capacity, location, founded year, colors, short description |
| `get_roster` | Current squad grouped by position (Goalkeepers → Defenders → Midfielders → Attackers) |
### Players
| Tool | Purpose |
|---|---|
| `get_player_info` | Player profile — position, nationality, DOB, current team, status; with premium key adds height, weight, squad number, biography |
### Fixtures and results
| Tool | Purpose |
|---|---|
| `get_fixtures` | Recent results and upcoming matches for a team (filter: `all`, `upcoming`, or `past`) |
| `get_match_result` | Result of a match for a team on a specific date — score, venue, referee, attendance, status |
| `get_match_detail` | Full match detail — statistics, lineups, substitutes, minute-by-minute timeline (goals, cards, subs). **Premium required.** |
### Standings and live scores
| Tool | Purpose |
|---|---|
| `get_standings` | League table — points, goal difference, current form. League aliases supported (see below). |
| `get_livescores` | Live scores worldwide, grouped by league. **Premium required.** |
### Prompts
| Prompt | Purpose |
|---|---|
| `football_analyst` | Primes the assistant with football analyst context — platform description, followed teams, tool summary. Use at session start to skip manual setup. |
## League Aliases
`get_standings` accepts league aliases — useful when the underlying name is verbose.
| Alias | League |
|---|---|
| `MLS`, `Major League Soccer`, `American Major League Soccer` | MLS (ID 4346) |
| `EPL`, `Premier League`, `English Premier League` | Premier League (ID 4328) |
For other leagues, pass the full name and Nike will attempt to resolve it automatically.
## Season Format
Season format varies by league:
- **MLS:** single year — `"2026"`
- **European leagues (Premier League, etc.):** hyphenated season — `"2025-2026"`
Get this wrong and the standings call returns nothing useful.
## Premium vs. Free Tier
Nike uses a TheSportsDB API key set via the `SPORTSDB_KEY` environment variable. The free key is `3`. Some tools require a premium key.
| Tool | Free tier | Premium required |
|---|---|---|
| `get_team_info` | ✓ | |
| `get_roster` | Cached data only | Live V2 squad |
| `get_player_info` | Basic profile | Height, weight, number, bio |
| `get_fixtures` | ✓ | |
| `get_standings` | ✓ | |
| `get_match_result` | ✓ | |
| `get_match_detail` | — | ✓ (required) |
| `get_livescores` | — | ✓ (required) |
When a premium-required tool is called on a free key, it returns an error message rather than silently degrading.
## Who Uses Nike
- **Cristiano** — exclusive. Football is Cristiano's domain; Nike is his live-data source.
Other agents reference football work through Cristiano (via the messaging system) rather than calling Nike directly.
## What It's Good For
- Looking up the actual current standings before talking about a league
- Pulling fixtures for a team to know what's coming up
- Confirming a match result rather than relying on training data (which may be stale)
- Walking through a specific match in detail — lineups, timeline, statistics (premium)
- Live scores during active match windows (premium)
## What It's Not Good For
- Storage — Nike is read-only; what Robert thought of a match goes in Cristiano's Neo4j `Match` node, not back into Nike
- Cross-team or cross-domain reads — Nike is single-purpose for football
- Tactical analysis — Nike returns the data; Cristiano interprets it
- Anything beyond football
## Known Gotchas
- **Get the season format right.** MLS uses `"2026"`; European leagues use `"2025-2026"`. Wrong format → empty results.
- **Free tier limits.** `get_match_detail` and `get_livescores` return errors on the free key. Don't try to work around it — surface the limitation to Robert.
- **`get_match_detail` requires an event ID.** Workflow: `get_fixtures` first to find the event ID, then `get_match_detail` with that ID.
- **TheSportsDB data quality varies by league.** Top European leagues are well-covered; smaller leagues may have gaps or stale data. If something looks wrong, sanity-check against another source via Argos.
- **Rosters are cached on the free tier.** If a transfer just happened, the free-tier roster may not reflect it yet. Premium has the live V2 squad data.
- **Default `team_name` is `"Toronto FC"`.** Several tools default to TFC if no team name is given. Be explicit when asking about other teams.