futpicks-mcp
Provides football data and analytics for the Premier League, including probable lineups with player start probabilities, expected fantasy points, match analysis, model picks, and track records.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@futpicks-mcpWhat are the probable lineups for Real Madrid's next match?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FutPicks MCP Server
Model Context Protocol server for football data: probable lineups with a per-player start probability and expected fantasy points, match analysis, model picks and a public track record — LaLiga, Premier League, Serie A, Bundesliga, Ligue 1 and Primeira Liga.
Every tool calls the public futpicks.com REST API over HTTPS. No database access, no shell, no local secrets beyond the API tokens you put in the environment. The lineup, match and track-record tools need no key at all.
The lineups are graded in public against the confirmed XI, so the accuracy the tools report is measured, not claimed. Same data as futpicks.com/onces/la-liga.
Quick start
Add it to any MCP client (Claude Code shown here) — no install step, npx fetches it:
{
"mcpServers": {
"futpicks": {
"command": "npx",
"args": ["-y", "futpicks-mcp"]
}
}
}Then ask for a probable lineup: flab_teams to find a club, flab_matches_upcoming for the
fixtures, flab_match_details for the projected XI and the model's read of the match.
To unlock the Pro and admin tools, add the keys:
{
"mcpServers": {
"futpicks": {
"command": "npx",
"args": ["-y", "futpicks-mcp"],
"env": {
"FUTPICKS_API_KEY": "flab_live_…"
}
}
}
}Related MCP server: FotMoCP
Building from source
git clone https://github.com/Khavel/futpicks-mcp.git
cd futpicks-mcp
npm install
npm run build # compiles src/index.ts → dist/index.jsFor local development with hot reload: npm run dev.
Environment variables
Variable | Required for | Description |
| No | API base URL (default: |
| Data tools | Data-scope API key (ProTier policy) |
| Ops tools | Ops-scope API key (Admin policy, admin only) |
Public tools work with no token at all.
Where to get the tokens
Mint API keys from the web app: futpicks.com → Account → API Keys (Cuenta → Claves de API).
FUTPICKS_API_KEY— create a Data-scope key. It looks likeflab_live_…and satisfies the Pro-tier (ProTier) endpoints. Pro and admin users can mint these.FUTPICKS_OPS_TOKEN— create an Ops-scope key. It looks likeflab_ops_…and satisfies the admin (Ops) endpoints. Only admins can mint these.
The raw key is shown once at creation, so copy it into your environment immediately. Keys are
stored only as SHA-256 hashes, support optional expiry, and can be revoked from the same screen;
revoked or expired keys are rejected with 401.
Tools
Public (no auth)
Tool | Endpoint | Key params |
|
|
|
|
|
|
|
|
|
|
| — |
|
|
|
|
|
|
|
| — |
|
|
|
|
| — |
Data tools (require FUTPICKS_API_KEY)
Tool | Endpoint | Key params |
|
|
|
|
| — |
|
|
|
|
|
|
|
|
|
|
| — |
Ops tools (require FUTPICKS_OPS_TOKEN, admin-only)
Tool | Endpoint | Key params |
|
|
|
|
|
|
flab_ops_run kinds: ingestion-runs, scoring-runs, settlement-runs, calibration-runs,
intelligence-refreshes. The server auto-generates an Idempotency-Key per ops POST.
Claude Desktop configuration
Add to claude_desktop_config.json:
{
"mcpServers": {
"footballlab": {
"command": "node",
"args": ["C:/Users/ceja_/Desktop/Desarrollos/Furbov2/mcp-server/dist/index.js"],
"env": {
"FUTPICKS_API_URL": "https://futpicks.com",
"FUTPICKS_API_KEY": "your-pro-tier-token",
"FUTPICKS_OPS_TOKEN": "your-admin-token"
}
}
}
}Verify locally
npx @modelcontextprotocol/inspector node dist/index.jsThen call flab_health (no token needed) — it should return live system status.
Security
No tool reads DB connection strings, appsettings secrets, or shells into the VPS.
All inputs are validated with zod; page sizes and ranges are capped server-side.
Tokens are read from environment variables only and never logged.
Data/ops tools fail with a clear message when their token is missing — they never fall back to an unauthenticated call.
Ops mutations send a fresh
Idempotency-Keyso retries are deduplicated by the API.
Available Tools
17 toolsflab_backtest_runRun a BacktestA
Run a backtest over settled picks for a date range with optional rating/market/edge/league filters. Returns total picks, wins, losses, win rate, ROI, avg edge, and breakdowns. Requires Pro token. Range max 365 days.
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | End date YYYY-MM-DD (must be after dateFrom) | |
| market | No | Filter by market enum name (e.g. OU25, H2H3Way, BTTS) | |
| rating | No | Filter by rating | |
| minEdge | No | Minimum edge threshold | |
| dateFrom | Yes | Start date YYYY-MM-DD (inclusive) | |
| leagueId | No | Filter by league ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint as false, indicating this is not a pure read operation, and the description does not clarify side effects, execution model, or whether running a backtest consumes credits beyond the Pro token requirement. It does add useful constraints like 'Range max 365 days' and the Pro-token prerequisite, but does not fully compensate for the lack of side-effect disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: purpose, output summary, and key constraints. The most important operational details (Pro token, 365-day max) are included without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema, the description covers the essential inputs and return metrics well. The only notable gap is that 'breakdowns' is vague, and it does not say whether the backtest runs synchronously or returns immediately, but overall an agent can reasonably select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds the valuable constraint that the date range is capped at 365 days, which is not present in the schema, and it summarizes the optional filter groups (rating, market, edge, league) in a way that helps an agent understand the parameters at a glance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Run a backtest') and resource ('settled picks') with a clear scope: date range and filters. It is clear on its own, but it does not explicitly differentiate itself from the closely related sibling flab_track_record, which could serve a similar historical-results purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful context: backtests are over settled picks, require a Pro token, and are limited to 365 days. However, it does not state when to prefer this tool over alternatives like flab_track_record or flab_picks_history, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_data_catalogGet Data CatalogARead-onlyIdempotent
Browse the Data API catalog: available datasets, scopes, and resources for Sharp/Pro consumers. Requires Pro token.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds a meaningful behavioral constraint beyond those annotations: 'Requires Pro token,' which tells the agent that invocation may fail without proper authorization.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and resource, then states the scope and authorization requirement. There is no filler or redundant repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only catalog tool, the description is reasonably complete: it states what the catalog contains, who it is for, and the token requirement. It could go slightly deeper on response structure, but the low complexity and strong annotations do not demand much more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to document about inputs. The description instead clarifies what the response will cover, which is the useful semantic contribution here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Browse'), a concrete resource ('Data API catalog'), and enumerates what it exposes: datasets, scopes, and resources. This clearly differentiates it from the sibling tools, which are all domain-specific operations like matches, picks, or health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: to browse available catalog data for Sharp/Pro consumers. It does not explicitly name alternatives or exclusion conditions, but its scope is specific enough that an agent can select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_evaluate_matchEvaluate a MatchARead-onlyIdempotent
Score a match on demand through the scoring engine and return every market's pick with the full block breakdown. Requires Pro token.
| Name | Required | Description | Default |
|---|---|---|---|
| matchId | Yes | Match ID (from flab_evaluate_matches) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds valuable context beyond annotations: the Pro token requirement and the detailed return content (every market's pick and full block breakdown). No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the action is front-loaded, the output scope is concrete, and the access requirement is stated. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with strong annotations and no output schema, the description is largely complete: it states what is returned, the evaluation trigger, and the token requirement. It could be slightly stronger by explicitly routing to sibling tools for batch evaluation or alternative data views, but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage and already explains matchId, including its source from flab_evaluate_matches. The tool description does not add parameter-level meaning, but with full schema coverage the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Score a match') and defines the exact output ('every market's pick with the full block breakdown'). The phrase 'on demand' and the singular 'a match' distinguish this tool from batch-oriented siblings like flab_evaluate_matches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for scoring a single match immediately, and explicitly notes the Pro token requirement. However, it does not name alternatives or state when not to use this tool versus flab_evaluate_matches, flab_match_details, or flab_pick_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_evaluate_matchesList Evaluable MatchesARead-onlyIdempotent
List scheduled matches (next ~3 days) available for on-demand evaluation. Use the returned matchId with flab_evaluate_match. Requires Pro token.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: the ~3-day lookahead window, the fact that matches are evaluation-eligible, and the Pro token requirement. It handles the burden well for a simple read-only list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is front-loaded, and the follow-up sentence provides the most actionable next step (pairing with flab_evaluate_match) plus the auth requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter list operation, the description covers the essential facts: what is returned (matches with matchId), the time window, the prerequisite token, and how to use the result. The readOnly/idempotent annotations further reassure the agent that this is a safe call. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers parameter semantics and the description correctly adds no redundant parameter details. Per the rubric, a 0-parameter tool gets a baseline of 4 because there is nothing for the description to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'List' with a precise resource: scheduled matches in the next ~3 days that are available for on-demand evaluation. The phrase 'available for on-demand evaluation' distinguishes it from siblings like flab_matches_upcoming or flab_matches_today, which likely list matches for other purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by telling the agent to use the returned matchId with flab_evaluate_match, and it warns that a Pro token is required. It does not explicitly mention when not to use this tool versus sibling list tools, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_export_picksExport Picks (CSV)ARead-onlyIdempotent
Export settled/published picks as CSV for a date range with optional market/rating filters. Returns raw CSV text. Requires Pro token.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date YYYY-MM-DD | |
| from | No | Start date YYYY-MM-DD | |
| market | No | Filter by market | |
| rating | No | Filter by rating |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds meaningful context beyond annotations by stating that it returns raw CSV text and requires a Pro token, which are useful operational constraints not otherwise visible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The first sentence communicates the core action, scope, and filters; the second covers return type and auth. Essential information is front-loaded and every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the output format (raw CSV), the auth requirement (Pro token), and the core filtering dimensions. Without an output schema, stating the return format is important and handled well. Minor gap: since all parameters are optional, defaults for date range or filtering behavior are not specified, but this does not undermine the core call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents to, from, market, and rating. The description only summarizes these as 'date range with optional market/rating filters' without adding extra semantic detail, which is acceptable given the schema already carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (Export), a specific resource (settled/published picks), and a concrete output format (CSV). It clearly distinguishes this from sibling list/query tools by framing it as an export operation with date range and optional market/rating filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when you need settled/published picks as CSV within a date range, with optional filtering. It does not explicitly name alternative tools or exclusion conditions, but the export-oriented wording and raw CSV return signal a distinct use case from sibling tools such as flab_picks_history or flab_pick_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_healthGet System HealthARead-onlyIdempotent
Check the FutPicks API health and basic system status. Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds the useful 'Public — no auth' trait beyond annotations, but it does not disclose what the response contains (e.g., uptime, version, component status), which would be valuable given no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler. It leads with the action and resource, followed by the access qualifier, making it highly scannable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless health-check tool with safety annotations, the description covers the essentials: what it checks, that it is public, and that no auth is needed. The only gap is a bit more detail about what 'basic system status' means, but this is minor for a health endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% (empty schema). The description correctly avoids inventing parameter details, and the baseline for a no-parameter tool is a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and a clear resource ('FutPicks API health and basic system status'). It is immediately apparent what the tool does and it reads distinctly from its siblings, especially with the 'Public — no auth' qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage context ('Public — no auth'), implying it is safe for unauthenticated health checks. However, it does not explicitly contrast with similar siblings like flab_ops_status, so an agent must infer when to prefer this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_match_detailsGet Match DetailsARead-onlyIdempotent
Get a single match by ID. Set includeIntelligence=true to also fetch the sports-intelligence snapshot (form, H2H, context). Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Match ID | |
| includeIntelligence | No | Also fetch the /intelligence snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior; the description adds the auth posture ('Public — no auth') and clarifies that includeIntelligence pulls the form/H2H/context snapshot. It does not add rate-limit or pagination details, but for a simple public read with this annotation coverage that is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses in two sentences, front-loaded with the core action, then the optional parameter and auth note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple public read endpoint with two parameters and no output schema, this is complete: the agent knows exactly what to pass, what the optional flag does, and that no auth is required. The missing comparison to flab_evaluate_match is a usage-nuance gap, not a blocking invocation gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving a baseline of 3; the description goes beyond by explaining that includeIntelligence=true fetches the sports-intelligence snapshot and enumerates its content (form, H2H, context), which adds real value beyond the schema's '/intelligence snapshot'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description gives a specific verb ('Get'), resource ('a single match'), and lookup key ('by ID'), which cleanly separates it from list-style siblings like flab_matches_today. It does not explicitly contrast with sibling flab_evaluate_match, so it isn't fully differentiated among the single-match tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the tool is public and no auth is needed, and explains when to add includeIntelligence=true, but does not mention when to choose this over flab_evaluate_match or list endpoints. Usage is mostly implied by 'single match by ID' rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_matches_todayGet Today's MatchesARead-onlyIdempotent
Get today's matches with teams, league, kickoff, line snapshots, and any picks. Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior, lowering the bar for the description. The description adds the auth requirement and enumerates the returned content (teams, league, kickoff, line snapshots, picks), but it does not address edge cases such as empty results or data freshness. This is adequate but not deeply transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences that front-load the core purpose, list the key returned fields, and state the auth caveat. There is no filler, redundancy, or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values, and it does so by naming the entity types (teams, league, kickoff), the analytical data (line snapshots), and the picks association. It omits only explicit edge-case behavior, such as handling days with no matches, which is a minor gap for a simple read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema fully covers parameter semantics with 100% coverage. The description correctly avoids inventing parameter details, matching the baseline of 4 for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the exact resource 'today's matches' along with the included fields (teams, league, kickoff, line snapshots, picks). It implies differentiation from siblings like flab_matches_upcoming and flab_picks_today by temporal scope, but it does not explicitly name alternatives, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Public — no auth' provides clear access guidance, and 'today's' implies the temporal use case. However, there is no explicit when-to-use or when-not-to-use statement, nor any reference to alternative tools, leaving the agent to rely on inference rather than direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_matches_upcomingGet Upcoming MatchesARead-onlyIdempotent
Get scheduled matches for the next N days (1–30, default 7). Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days ahead (1–30, default 7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, so the bar is lower. The description adds a meaningful behavioral detail beyond annotations: 'Public — no auth,' clarifying authentication needs. It does not describe output shape or edge cases, but this is minor for such a simple read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence that front-loads the core action and scope, then provides the parameter constraint and auth context. Every clause earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional, fully described parameter, strong safety annotations, and no output schema, the description covers everything needed to invoke it correctly: purpose, time window, default, and auth. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the single 'days' parameter. The description's mention of 'next N days (1–30, default 7)' exactly mirrors the schema description and adds no new semantic information, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get scheduled matches') and a clear time scope ('next N days'), which makes its purpose easy to grasp. It differentiates from flab_matches_today by the 'next N days' framing, but it does not explicitly name or contrast any sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context ('Public — no auth') and a parameter range, from which an agent can infer when to use it. However, it does not explicitly state when to prefer this tool over flab_matches_today or other sibling tools, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_ops_runRun an Ops Operation (admin)A
Submit a pipeline operation. Returns 202 with an operation id to poll via flab_ops_status. Admin-only (FUTPICKS_OPS_TOKEN). Kinds: ingestion-runs (date?), scoring-runs (date?), settlement-runs (lastDays 1–30), calibration-runs (windowDays 7–365), intelligence-refreshes (matchId).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ISO date YYYY-MM-DD (ingestion/scoring; default today) | |
| kind | Yes | Operation kind | |
| matchId | No | Match ID (intelligence-refreshes only) | |
| lastDays | No | Settlement lookback days (1–30, default 3) | |
| windowDays | No | Calibration window days (7–365, default 90) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is a write operation (readOnlyHint=false) and not idempotent. The description adds useful context beyond that: the operation is asynchronous, returns a 202 with an operation id, and requires the FUTPICKS_OPS_TOKEN. No contradiction with annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose and async behavior first, then auth, then kind-to-parameter mapping. Every sentence earns its place with no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, it adequately explains the response shape (202 + operation id), how to follow up (poll flab_ops_status), the security prerequisite, and the kind-specific parameter usage. An agent has enough to call this tool correctly across all five operation kinds.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all five parameters, so the baseline is 3. The description adds value by mapping each operation kind to its relevant parameters (e.g., settlement-runs use lastDays 1–30, calibration-runs use windowDays 7–365, intelligence-refreshes use matchId), which is exactly the cross-parameter knowledge an agent needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Submit a pipeline operation') and immediately clarifies the asynchronous contract: returns 202 with an operation id. It also names flab_ops_status as the polling sibling, which distinguishes this tool from the related status tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool—to submit pipeline operations—and tells the agent to poll via flab_ops_status afterward, which is explicit routing guidance. It also notes the admin-only token requirement, but does not enumerate when not to use it or compare it with flab_backtest_run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_ops_statusGet Ops Operation Status (admin)ARead-onlyIdempotent
Poll an operation's lifecycle status by id. Set includeResult=true to also fetch its result payload once complete. Admin-only (FUTPICKS_OPS_TOKEN).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Operation id (from flab_ops_run) | |
| includeResult | No | Also fetch /result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond annotations: it explains polling lifecycle status, that includeResult fetches the result payload only once complete, and that admin credentials (FUTPICKS_OPS_TOKEN) are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences carry all essential information with front-loaded purpose, followed by optional behavior and auth requirement. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only status tool with rich annotations, the description covers purpose, result-fetching option, and auth context. It could be slightly more explicit about what lifecycle states to expect or that the result is unavailable until completion, but those are minor gaps with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond schema by clarifying that includeResult=true fetches the result payload after the operation completes, and frames id as the operation identifier being polled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Poll an operation's lifecycle status by id.' It also states the optional result payload behavior and admin-only access, making the tool's purpose immediately clear and distinct from sibling operations tools like flab_ops_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call it with an operation id to poll status, optionally including the result payload once complete. It does not explicitly state when to prefer this tool over alternatives or mention the related flow with flab_ops_run, though the schema's 'id (from flab_ops_run)' provides some implicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_pick_detailsGet Pick DetailsARead-onlyIdempotent
Get full detail for a single pick by ID: market, line, edge, score, rating, and the scoring-block breakdown. Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Pick ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive, and the description adds the useful context that it is 'Public — no auth.' It also clarifies the specific detail content returned, providing value beyond the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the operation and resource, then lists the returned fields and the auth context. Every clause contributes useful information, with no unnecessary repetition of schema or annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single required parameter, full schema coverage, and strong safety annotations, the description supplies the remaining essential context: public access and the fields returned. There is no output schema, but the field enumeration gives an agent enough information to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains 'id' as an integer 'Pick ID' with exclusiveMinimum 0. The description only repeats 'by ID,' adding no meaningful semantic information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full detail for a single pick by ID,' then enumerates the returned fields: market, line, edge, score, rating, and scoring-block breakdown. This makes the tool's purpose specific and distinguishes it from list-oriented sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear usage context: use this when you need comprehensive detail for one pick identified by an ID, rather than a list of picks. It does not explicitly name sibling alternatives or provide when-not conditions, which prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_picks_boardGet Picks BoardBRead-onlyIdempotent
Full picks board for a date with rich filters: edge/odds/data-quality ranges, lineup-confirmed flag, and preview inclusion. Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date YYYY-MM-DD (default: today UTC) | |
| league | No | Filter by league name | |
| market | No | Filter by market | |
| rating | No | Filter by rating | |
| maxEdge | No | Maximum edge | |
| maxOdds | No | Maximum decimal odds | |
| minEdge | No | Minimum edge (e.g. 0.02) | |
| minOdds | No | Minimum decimal odds | |
| includePreview | No | Include T-3h preview picks (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context with 'Public — no auth' and the notion of a 'full' board, but it does not disclose output shape, pagination, defaults beyond the schema, or why some described filters are absent from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. However, the second half lists filters that mismatch the schema, so not every statement earns its place; a cleaner version would either align the filter list with the actual schema or omit detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 optional parameters, no output schema, and many sibling tools, the description gives a reasonable high-level picture but does not fully equip an agent to know what the response looks like or when this board is preferred over related picks tools. The auth disclosure helps, but overall completeness is only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the description does not need to explain every parameter. The description adds some filter-range semantics for edge/odds and preview inclusion, but also references 'data-quality ranges' and a 'lineup-confirmed flag' that have no corresponding schema parameters, so it provides no clear added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific resource and scope: 'Full picks board for a date.' However, it does not differentiate the tool from siblings like flab_picks_today, flab_picks_history, or flab_pick_details, and it mentions filters such as 'lineup-confirmed flag' and 'data-quality ranges' that are not present in the input schema, which slightly muddies the intended capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a date' implies this is the date-scoped board tool, giving some usage context. But there is no explicit guidance on when to use this versus flab_picks_today, flab_picks_history, or flab_pick_details, and no exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_picks_historyGet Picks HistoryARead-onlyIdempotent
Paged history of past picks across all markets with filters. Requires Pro token (FUTPICKS_API_KEY).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date YYYY-MM-DD | |
| from | No | Start date YYYY-MM-DD | |
| page | No | Page number (default 1) | |
| isLive | No | Live (true, default) vs preview | |
| league | No | Filter by league name | |
| market | No | Filter by market | |
| rating | No | Filter by rating | |
| pageSize | No | Page size (1–100, default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a read-only, idempotent, non-destructive operation, lowering the disclosure burden. The description adds meaningful context beyond annotations: pagination behavior, historical scope, and the required Pro token. It does not describe failure modes or response shape, but for a read-only paged query this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence: 'Paged history of past picks across all markets with filters.' It immediately conveys the core behavior and follows with the important auth requirement. Every word earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only paged query tool, the description covers scope, filters, paging, and authentication, while the schema fully documents all parameters. It would be more complete if it mentioned the expected response shape or explicitly distinguished itself from siblings like flab_picks_today, but nothing essential is missing for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all eight optional parameters, including types, defaults, and the rating enum. The description's phrase 'with filters' adds no parameter-specific meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the resource ('history of past picks'), scope ('across all markets'), and behavior ('paged', 'filters'), so an agent can understand what the tool returns. It does not explicitly name sibling tools to differentiate them, but terms like 'past' and 'all markets' help separate it from tools like flab_picks_today or flab_pick_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need paginated historical picks with filters. It also adds a key prerequisite, 'Requires Pro token (FUTPICKS_API_KEY)'. However, it provides no explicit when-not-to-use guidance or mention of alternative sibling tools such as flab_picks_today or flab_track_record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_picks_todayGet Today's PicksARead-onlyIdempotent
Get FutPicks' published picks for a date (defaults to today UTC). Public board shows Good-rated picks by default. Markets: H2H, OU2.5, BTTS, AsianHandicap, DoubleChance, etc. Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date YYYY-MM-DD (default: today UTC) | |
| market | No | Filter by market, e.g. H2H, OU2.5, BTTS | |
| rating | No | Filter by rating (default: Good) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive traits. The description adds useful context beyond annotations: no authentication is required, the default rating is Good, and supported markets are enumerated. It does not describe pagination or return shape, but the annotation safety profile lowers the burden, and the added auth/default info earns a solid score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, information-dense sentences with no filler. The core purpose is front-loaded, followed by defaults, market examples, and access requirements. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only fetch with only three optional parameters and no output schema, the description covers the essential aspects: what is returned, date default, rating default, market filtering, and auth. A minor gap is that the return shape is not described, but the low complexity and clear purpose make the definition sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by stating the UTC date default, the Good rating default, and giving concrete market examples (H2H, OU2.5, BTTS, AsianHandicap, DoubleChance). This clarifies parameter usage beyond property descriptions alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('FutPicks' published picks') and clearly scopes the operation to a date, defaulting to today UTC. It does not explicitly contrast with siblings like flab_picks_board or flab_picks_history, but the date-based focus is evident from the name and description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: date defaults to today UTC, the public board defaults to Good-rated picks, and no auth is needed. It does not explicitly state when not to use this tool or name alternatives, but the context is strong enough for an agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_teamsGet TeamsARead-onlyIdempotent
List teams known to FutPicks. Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds value by explicitly stating 'Public — no auth', which is not present in the annotations, and by scoping the data to 'teams known to FutPicks'. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The primary purpose is front-loaded ('List teams known to FutPicks'), and the second sentence adds a key auth fact. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, simple listing tool with read-only/idempotent annotations, the description covers purpose and auth. It does not specify the exact return format (e.g., names, IDs), but the low complexity means an agent can infer the likely shape. Slightly more detail would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is no parameter information needed, and the description appropriately says nothing about parameters. The schema already covers this completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), resource ('teams'), and scope ('known to FutPicks'). It is immediately clear what the tool does, and since no sibling tool is team-focused, it distinguishes itself by topic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage—call this when you need the list of teams—but does not explicitly discuss when to use it versus alternatives or mention any exclusions. The 'Public — no auth' note provides useful context on when it can be called freely, but no comparative guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flab_track_recordGet Track RecordARead-onlyIdempotent
Historical settled-pick performance with AND-combined filters: market, league, rating, outcome (Won/Lost/Push), and date range. Returns hit rate, profit, and ROI. Public — no auth.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date YYYY-MM-DD | |
| from | No | Start date YYYY-MM-DD | |
| isLive | No | Live picks (true, default) vs preview/backtest (false) | |
| league | No | League name (exact) | |
| market | No | Market display name (H2H, OU2.5, TT) or enum name | |
| rating | No | Filter by rating | |
| outcome | No | Filter by settled outcome |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile with readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context: filters are AND-combined, data is historical and settled, and the tool is public with no auth. This exceeds what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the resource, filter semantics, return metrics, and auth status with no filler. The most distinguishing details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven optional parameters and no output schema, the description covers the core purpose and return metrics well. It doesn't specify default behavior when no filters are passed, but that gap is minor given schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters at 100%, so the baseline is 3. The description adds meaning by stating that filters are AND-combined, which is not evident from individual schema properties, and it clarifies the outcome enum values. It omits isLive in prose, but the schema documents it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as historical settled-pick performance and states it returns hit rate, profit, and ROI, which differentiates it from sibling tools like flab_picks_history. However, it is phrased as a noun phrase rather than an explicit verb-driven statement, and it doesn't name any sibling to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for performance metrics on settled picks, but it never explicitly says when to use it versus alternatives. With 16 siblings including flab_picks_history and flab_backtest_run, the guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
17 tool updates
v1.0.2- First observed
flab_backtest_run - First observed
flab_data_catalog - First observed
flab_evaluate_match - First observed
flab_evaluate_matches - First observed
flab_export_picks - First observed
flab_health - First observed
flab_match_details - First observed
flab_matches_today - First observed
flab_matches_upcoming - First observed
flab_ops_run - First observed
flab_ops_status - First observed
flab_pick_details - First observed
flab_picks_board - First observed
flab_picks_history - First observed
flab_picks_today - First observed
flab_teams - First observed
flab_track_record
TDQS
Most tools target distinct resources, but there is real overlap among match listing tools (flab_matches_today, flab_matches_upcoming, flab_evaluate_matches) and pick listing/performance tools (flab_picks_today, flab_picks_board, flab_track_record, flab_backtest_run). The descriptions provide helpful differentiators, yet an agent could easily select the wrong member of these clusters.
The consistent 'flab_' prefix and snake_case help readability, but naming conventions are mixed: some tools use verb-first (flab_evaluate_matches, flab_export_picks) while others use noun-first or noun-temporal forms (flab_matches_today, flab_picks_board, flab_backtest_run, flab_ops_run). This inconsistency makes the API slightly harder to predict.
At 17 tools, the server is on the heavier side, but the count is justified by three distinct access tiers: public data, Pro-only analytics, and admin operations. Each tool appears to serve a real workflow, so the size feels reasonable rather than bloated.
The tool surface covers the core domain thoroughly: match discovery and details, published picks and pick boards, historical performance, backtesting, CSV export, on-demand evaluation, health checks, and pipeline operations. There are no obvious dead ends or missing critical operations for a read-oriented sports-data API.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
API-Football MCP — comprehensive soccer/football data
Read-only fantasy analysis for ESPN, Yahoo, and Sleeper leagues via MCP
Sportsbook-derived no-vig fair value with confidence, provenance, and history over REST/MCP.
101AI-driven DFS lineup optimizer for MLB & NBA — build FanDuel & DraftKings lineups via MCP.
Related MCP Servers
- FlicenseAqualityDmaintenanceProvides live football data through MCP tools, enabling users to fetch today's matches and top scorers for competitions like the Premier League or World Cup.2-
- AlicenseAqualityCmaintenanceEnables MCP clients to access live football data from FotMob, including match stats, team form, injuries, and player workload, without making predictions.101MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that turns real NFL & fantasy data into a decisive edge, offering 70+ tools for draft assistance, start/sit recommendations, trade analysis, playoff odds, and more, with live league integration.MIT
- AlicenseAqualityCmaintenanceProvides MCP access to PlayerElo's football analytics, including player/coach Elo ratings, match predictions, value bets, and transfer fit scores.17MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Khavel/futpicks-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server