football-docs 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/data/docs.db +0 -0
- package/dist/index.js +4 -4
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Searchable football data provider documentation for AI coding agents. Like [Context7](https://context7.com) for football data.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Who it's for:** Developers and analysts who use AI coding tools (Claude Code, Cursor, VS Code Copilot, Windsurf) to work with football data. Works with any tool that supports MCP.
|
|
6
|
+
|
|
7
|
+
**What it does:** Gives your AI agent a searchable index of documentation for 16 football data providers — event types, qualifier IDs, coordinate systems, API endpoints, data models, and cross-provider comparisons. Your agent looks up the real docs instead of guessing from training data.
|
|
8
|
+
|
|
9
|
+
**Why not just let the AI figure it out?** LLMs get football data specifics wrong constantly — Opta qualifier IDs, StatsBomb coordinate ranges, API endpoint URLs, library method signatures. These are mutable facts that change across versions. football-docs gives the agent verified, sourced documentation with provenance tracking so you know where every answer came from.
|
|
6
10
|
|
|
7
11
|
MCP ([Model Context Protocol](https://modelcontextprotocol.io)) is a standard for connecting AI coding tools to external data sources.
|
|
8
12
|
|
package/data/docs.db
CHANGED
|
Binary file
|
package/dist/index.js
CHANGED
|
@@ -79,7 +79,7 @@ server.tool("search_docs", "Search football data provider documentation. Use for
|
|
|
79
79
|
.optional()
|
|
80
80
|
.default(10)
|
|
81
81
|
.describe("Maximum number of results to return (default 10)"),
|
|
82
|
-
}, async ({ query, provider, max_results }) => {
|
|
82
|
+
}, { readOnlyHint: true, destructiveHint: false, openWorldHint: false }, async ({ query, provider, max_results }) => {
|
|
83
83
|
const db = openDb();
|
|
84
84
|
try {
|
|
85
85
|
const safeQuery = sanitiseFtsQuery(query);
|
|
@@ -131,7 +131,7 @@ server.tool("search_docs", "Search football data provider documentation. Use for
|
|
|
131
131
|
}
|
|
132
132
|
});
|
|
133
133
|
// Tool: list_providers
|
|
134
|
-
server.tool("list_providers", "List all indexed football data providers, their document count, and coverage categories. Use to understand what documentation is available.", {}, async () => {
|
|
134
|
+
server.tool("list_providers", "List all indexed football data providers, their document count, and coverage categories. Use to understand what documentation is available. Call this first to see what providers are indexed before searching.", {}, { readOnlyHint: true, destructiveHint: false, openWorldHint: false }, async () => {
|
|
135
135
|
const db = openDb();
|
|
136
136
|
try {
|
|
137
137
|
const rows = db
|
|
@@ -167,7 +167,7 @@ server.tool("list_providers", "List all indexed football data providers, their d
|
|
|
167
167
|
server.tool("compare_providers", "Compare what two or more providers offer for a specific data type or concept. For example: 'How do Opta and StatsBomb represent shot events differently?'", {
|
|
168
168
|
topic: z.string().describe("The concept to compare across providers. Examples: 'shot events', 'coordinate systems', 'xG', 'pass types'"),
|
|
169
169
|
providers: z.array(z.string()).optional().describe("Providers to compare. If omitted, compares all indexed providers."),
|
|
170
|
-
}, async ({ topic, providers }) => {
|
|
170
|
+
}, { readOnlyHint: true, destructiveHint: false, openWorldHint: false }, async ({ topic, providers }) => {
|
|
171
171
|
const db = openDb();
|
|
172
172
|
try {
|
|
173
173
|
const safeTopic = sanitiseFtsQuery(topic);
|
|
@@ -225,7 +225,7 @@ server.tool("request_update", "Request that a provider's documentation be added,
|
|
|
225
225
|
provider: z.string().max(100).describe("Provider name (existing or proposed). Examples: 'statsbomb', 'mplsoccer', 'floodlight'"),
|
|
226
226
|
reason: z.string().max(2000).describe("Why this update is needed. Be specific: version bump, missing event types, new API endpoints, etc."),
|
|
227
227
|
suggested_urls: z.array(z.string().url().max(500)).max(10).optional().describe("URLs for documentation sources (readthedocs, GitHub, llms.txt, etc.)"),
|
|
228
|
-
}, async ({ type, provider, reason, suggested_urls }) => {
|
|
228
|
+
}, { readOnlyHint: false, destructiveHint: false, openWorldHint: false }, async ({ type, provider, reason, suggested_urls }) => {
|
|
229
229
|
const qdb = openQueueDb();
|
|
230
230
|
try {
|
|
231
231
|
// Hard cap on queue size
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "football-docs",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Searchable football data provider documentation for AI coding agents. Like Context7 for football data.",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"mcpName": "io.github.withqwerty/football-docs",
|
|
6
7
|
"bin": {
|
|
7
8
|
"football-docs": "bin/serve.js"
|
|
8
9
|
},
|