Skip to main content
Glama
dumkoder

Statos MCP Server

by dumkoder

@statospro/mcp

A Model Context Protocol server that connects AI assistants — Claude Desktop, Claude Code, claude.ai — to your Statos account.

Statos is a football analytics platform: it models match outcomes across ten markets and prices them against live bookmaker odds. This package wraps the api.statos.pro REST surface in an API-key-authenticated, AI-friendly tool layer, so an assistant can answer "what does the model like today?" without you writing a single HTTP call.

npx -y @statospro/mcp@latest --api-key statos_sk_live_xxxxxxxx

Tools

v0.3.0 — full read surface plus admin controls.

Tool

Wraps

Required scope

list_picks

GET /api/v1/suggestions

read:suggestions

get_match_picks

GET /api/v1/suggestions (client-side match filter)

read:suggestions

list_leagues

GET /api/v1/leagues

read:leagues

get_account

GET /api/v1/auth/me

read:account

suppress_market

POST /api/v1/admin/market-suppressions

admin:market_suppressions + admin role

list_suppressions

GET /api/v1/admin/market-suppressions

admin:market_suppressions + admin role

unsuppress_market

DELETE /api/v1/admin/market-suppressions/:id

admin:market_suppressions + admin role

The four read tools are available to any account. The three market-suppression tools are an operational kill switch — they let an admin stop the engine emitting a (league × market) combination for a time window without shipping a deploy. They require an admin-role key carrying the admin:market_suppressions scope, which is not in the default scope set.

Upgrading from v0.1? API keys minted before the v0.2 release carry only read:suggestions. Regenerate your key to pick up read:leagues and read:account, or list_leagues and get_account will 403.

Related MCP server: kicktipp-agent

Quick start

1. Get a Statos API key

Log in at https://statos.pro/account, open the API keys card, and create a key. Copy the statos_sk_live_… token — Statos shows it once.

2a. Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "statos": {
      "command": "npx",
      "args": ["-y", "@statospro/mcp@latest"],
      "env": {
        "STATOS_API_KEY": "statos_sk_live_xxxxxxxx"
      }
    }
  }
}

Restart Claude Desktop. The tools appear in the tools picker.

2b. Claude Code

claude mcp add statos -- npx -y @statospro/mcp@latest --api-key statos_sk_live_xxxxxxxx

2c. Test against sandbox first (optional)

claude mcp add statos-sandbox -- npx -y @statospro/mcp@latest \
  --api-key statos_sk_test_xxxxxxxx \
  --api-base https://api.sandbox.statos.pro

Tool reference

list_picks

List the model's current suggestions, optionally filtered.

param

type

default

notes

league_id

integer

Single league. Omit for all visible leagues.

markets

string[]

1x2, over_under, btts, asian_handicap, corners, cards, draw_no_bet, double_chance, goal_range, team_to_score. Omit for all.

min_edge_pct

number

0

Suggestions without odds attached are always kept.

quality

string

all

all (no floor), strong (≥65%), elite (≥85%).

limit

integer

50

Max 200.

Returns an array of BetSuggestion objects (match info, market, selection, suggested_prob, best_odds, edge, confidence) plus filter metadata and any truncation notes.

get_match_picks

Every suggestion for a single match — for "what does the model think about match X?" queries.

param

type

notes

match_id

integer

The match_id field from a list_picks response.

list_leagues

Discover league IDs to filter list_picks against. Returns the leagues the key holder's plan can see.

param

type

default

notes

continent

string

Europe, South America, North America, Africa, Asia, Oceania, International. Omit for all.

specialized_only

boolean

false

Only is_specialized=true leagues (the curated set the engine biases toward).

limit

integer

200

Max 500.

get_account

Read-only account info: email, role, subscription status, and effective role (trial-elevated while a trial is active). Useful for "what plan am I on" and for working out which leagues are visible.

No input. Returns { account, effective_role, notes? }.

suppress_market / list_suppressions / unsuppress_market

Admin-only. suppress_market takes league_id (0 = all leagues), market, and duration_hours; the others take nothing and an id respectively. Requires backend ≥ v1.16.

Configuration

Env var

CLI flag

Default

Notes

STATOS_API_KEY

--api-key <key>

Required.

STATOS_API_BASE

--api-base <url>

https://api.statos.pro

Point at https://api.sandbox.statos.pro for sandbox.

Troubleshooting

  • 401: invalid or revoked API key — the key was deleted in the Statos UI, or the token was truncated on copy. Regenerate at /account → API keys.

  • 401: missing or malformed Authorization header — the env var or --api-key flag isn't reaching the server process. Restart your MCP client after editing config files.

  • 403 on list_leagues / get_account — your key predates v0.2 and lacks the scopes. Regenerate it.

  • No picks for any filter — either a quiet day for the model, or your plan's league entitlements exclude what you asked for. Try list_picks with no filters first.

Versioning

The package version is independent of the Statos API version. The server sends User-Agent: @statospro/mcp/<version> so backend logs can correlate. Breaking changes to the /suggestions schema trigger a major bump; additive changes (new fields) are minor. See CHANGELOG.md.

Roadmap

  • v0.2 — list_leagues + get_account ✓ shipped

  • v0.3 — market-suppression tools ✓ shipped

  • v0.4 — backend match_id filter on /suggestions, so get_match_picks stops fetching and filtering client-side

  • v0.x — friendlier zod-error rendering (currently the raw issue array — readable, but verbose)

  • v1.0 — remote SSE/HTTP transport for one-click connect, no npx step

Requirements

Node.js ≥ 20. A Statos account with an API key.

License

MIT — see LICENSE.

Available Tools

7 tools
get_accountA

Return the API-key holder's account info: email, role (silver/gold/diamond/admin), subscription status, and the effective role (trial-elevated while a trial is active). Useful for an AI assistant to explain what plan the user is on and which leagues they have access to. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and explicitly states 'Read-only,' a key behavioral trait. It also discloses the nuanced 'effective role (trial-elevated while a trial is active)' behavior, which goes beyond a simple field list. It lacks details on auth specifics or rate limits, but the core safety profile is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main purpose, and every clause adds value (field list, usage context, read-only status, role nuance). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is fully self-contained: it explains what is returned, the key nuance of trial elevation, and the use case. The sibling context shows clear differentiation, and no additional information is needed for an agent to decide when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing to document for invocation. The description instead enriches the return semantics by detailing the meaning of 'role' and 'effective role', which adds value beyond the empty input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb+resource ('Return the API-key holder's account info') and enumerates the exact fields returned, making the purpose unmistakable. It clearly distinguishes from sibling tools like list_picks or suppress_market, which deal with other domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use it ('Useful for an AI assistant to explain what plan the user is on and which leagues they have access to'), effectively indicating the tool's role among siblings. However, it doesn't explicitly state when not to use it or name alternative tools, though the domain separation from siblings is implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_match_picksA

Fetch every suggestion the Statos engine has emitted for a single match. Useful for per-match analysis: 'what does Statos think about match X across every market?'. Returns the same BetSuggestion shape as list_picks but scoped to one match.

ParametersJSON Schema
NameRequiredDescriptionDefault
match_idYesMatch ID (from a previous list_picks call's `match_id` field) to fetch picks for.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the scope ('every suggestion', 'single match'), the return shape ('same BetSuggestion shape as list_picks'), and the relationship to sibling list_picks. While it doesn't explicitly call out read-only or pagination, the behavior is sufficiently transparent for a simple fetch-by-ID tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main action, and zero filler. Every clause adds value: the action, the use case, and the output shape comparison.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema, the description provides enough context: it explains the scope, the return shape, and the use case. The reference to list_picks covers the missing output schema details, and the tool is simple enough that no additional edge-case disclosure is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with match_id already described in the schema. The tool description adds no further parameter details beyond referring to 'a single match,' so the minimum viable baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Purpose is explicitly stated: 'Fetch every suggestion the Statos engine has emitted for a single match.' The verb 'Fetch' identifies the action, the resource is clearly the predictions for one match, and the phrase 'scoped to one match' directly distinguishes it from sibling list_picks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear use case is given: 'Useful for per-match analysis' with an illustrative question. It also contrasts with list_picks by noting the same shape but scoped to one match, implicitly guiding the agent to choose this when a single match is of interest. Explicit exclusion of when not to use is absent, so not a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_leaguesA

List the soccer leagues the Statos engine tracks (filtered to what the API-key holder's plan permits). Each league carries an id you can pass to list_picks for filtering, plus name, country, continent, and an is_specialized flag indicating leagues the engine biases toward. Useful for discovery: 'which European leagues can I see?' or 'show me the specialized leagues only'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum leagues to return (default 200, max 500).
continentNoFilter to one continent. Omit for all leagues the API key can see.
specialized_onlyNoIf true, return only is_specialized=true leagues — the curated set the suggestion engine biases toward.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses plan-based access restrictions and explains that the is_specialized flag indicates leagues the engine biases toward, adding meaningful behavioral context beyond the schema. It does not explicitly state read-only behavior, but 'List' strongly implies it, and the additional context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main action, and every sentence provides value—from the plan filter to the output fields to example queries. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description thoroughly covers what the tool returns (id, name, country, continent, is_specialized flag), notes plan-based restrictions, and even mentions the integration point with list_picks. It is fully sufficient for an agent to understand and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with clear parameter descriptions, so the baseline is 3. The description adds extra meaning by explaining the is_specialized flag and how the id relates to list_picks, enriching the semantics of the specialized_only parameter and the output's utility.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists soccer leagues tracked by the Statos engine and explicitly mentions plan-based filtering. It differentiates itself from siblings by noting that league IDs can be used with list_picks, making the tool's role in the ecosystem clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete use-case examples ('which European leagues can I see?') and explains how to filter for specialized leagues. It does not explicitly contrast with alternative tools, but the discovery-oriented framing and reference to list_picks give clear guidance on when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_picksA

List Statos's current betting suggestions, optionally filtered by league, market type, minimum edge, or quality tier. Each pick carries the model's claimed probability, best available odds (where attached), implied edge, and a confidence label (low/medium/high). Picks are computed live from upcoming fixtures; volumes vary by day. Use this for 'what does Statos suggest today?' type queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum picks to return (default 50, max 200).
marketsNoFilter to specific market types. Omit for all. '1x2'=match winner, 'over_under'=goal totals, 'btts'=both teams to score, etc.
qualityNoQuality tier: 'all'=no floor, 'strong'=≥65% suggested_prob, 'elite'=≥85%.all
league_idNoSingle league ID to filter to. Omit for all leagues visible to the API-key holder.
min_edge_pctNoMinimum edge percentage. Default 0. Picks without odds attached are always kept.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It adds valuable context that picks are 'computed live from upcoming fixtures' and 'volumes vary by day', and it lists the data fields included. It doesn't discuss side effects (not needed for a list) or auth/rate limits, which keeps it at a solid mid-range.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: three sentences with clear logical flow (purpose → return contents → usage cue). No redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's function, the pick data contents, and the usage context. With 5 optional params and no output schema, it sufficiently describes what the agent needs to know. It omits pagination/sorting details, but these are not critical for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description doesn't need to explain parameters. It mentions the filter dimensions (league, market, min edge, quality tier) but doesn't add details beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('List') and resource ('Statos's current betting suggestions'). It distinguishes from siblings like get_match_picks by emphasizing 'current' suggestions and the filter dimensions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit usage cue: 'Use this for "what does Statos suggest today?" type queries.' It doesn't explicitly name alternatives or mention when not to use it, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_suppressionsA

List the currently active market suppressions (the kill switches in effect). Read-only; same admin scope as suppress_market.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description takes on the burden of disclosing behavior: it clearly states the operation is read-only and restricted to admin scope, and limits results to 'currently active' suppressions. It doesn't describe response fields or error behavior, but for a zero-parameter list tool the key behavioral traits are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences; the first is front-loaded with the core action and object, the second adds essential safety/authorization context. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list tool with no output schema, the description covers purpose, scope, and authorization clearly. It lacks an explicit note about the shape of returned entries, but that is largely inferable from the tool name and sibling context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties, so schema coverage is vacuously 100% and there are no parameters to explain. Baseline 4 applies because the description needs no parameter elaboration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States it 'List the currently active market suppressions' with a clarifying parenthetical '(the kill switches in effect)'. This is a specific verb+resource combination that distinguishes it from the mutating siblings suppress_market and unsuppress_market.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly identifies itself as read-only and scopes authorization to 'same admin scope as suppress_market', signaling when it is safe/appropriate to call and under what permissions. It doesn't explicitly name alternatives or exclusion cases, but in context the sibling tools are clearly the mutating counterparts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suppress_marketA

ADMIN kill switch: stop Statos emitting a (league × market) for a time window WITHOUT a deploy — e.g. during the World Cup if 'cards' starts firing 30% below claimed hit rate. Requires an admin key with the admin:market_suppressions scope. league_id 0 = all leagues. Reversible via unsuppress_market or expiry. Use sparingly.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoActive window in hours (default 24, max 720).
reasonNoFree-text rationale, e.g. 'cards 30% below claimed hit rate on n=18'.
league_idNoLeague to scope to. 0 (default) = wildcard, all leagues. Use a specific id (e.g. the WC league) to scope.
market_typeYesMarket to suppress, e.g. 'cards', 'corners', 'over_under', '1x2', 'asian_handicap', 'draw_no_bet'.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behavioral aspects: it is an 'ADMIN kill switch' (high impact), requires a specific scope ('admin:market_suppressions'), clarifies that league_id 0 is a wildcard, and indicates reversibility. It also implies a time-windowed effect via 'for a time window' and 'expiry'. This provides substantial behavioral transparency beyond the bare minimum.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the primary action, and uses a dash to present an illustrative example. The subsequent sentences cover auth, wildcard scope, reversibility, and a caution in a logical order. Every sentence 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations or output schema, the description provides a strong overall context: what it does, when to use it, what permissions are needed, how scope works, and that it is reversible. It does not detail the response format or side effects on existing picks, but for a suppression tool these are less critical and the description still gives sufficient operational guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description doesn't need to restate parameter purposes. It does reinforce league_id semantics ('league_id 0 = all leagues') and gives an example of market_type, but these are already present in the schema. The description adds no novel parameter insights beyond the schema, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'stop Statos emitting a (league × market) for a time window WITHOUT a deploy'. It uses a specific verb ('suppress'), names the resource ('market'), and delivers a clear scope (league × market). It is distinguished from siblings by explicitly referencing the reverse operation (unsuppress_market) and framing itself as an 'ADMIN kill switch'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a concrete use case ('during the World Cup if 'cards' starts firing 30% below claimed hit rate') and states reversibility ('Reversible via unsuppress_market or expiry'). It also notes the admin prerequisite and advises 'Use sparingly.' While it doesn't explicitly compare to list_suppressions, it gives clear context for when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unsuppress_marketA

Cancel an active market suppression by id, immediately restoring emission (within ~60s). Requires the admin:market_suppressions scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSuppression id to cancel.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It reveals the timing ('within ~60s'), the active-state requirement ('active market suppression'), and the authorization scope ('admin:market_suppressions'). This goes beyond the bare action and gives useful behavioral context, though it doesn't describe error cases or return values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the primary action in the first sentence and a supplementary scope note in the second. Every word earns its place; it is front-loaded with the verb and resource. No wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no annotations and no output schema, the description covers the essential aspects: what it does, the timing effect, and the required scope. It does not explain behavior for non-existent or already-canceled suppressions, but for a simple one-parameter mutation tool, this is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage for the single parameter 'id', with its own description 'Suppression id to cancel.' The tool description adds no additional semantic value beyond restating 'by id'. Baseline of 3 is appropriate given the schema's strong coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action: 'Cancel an active market suppression by id'. The verb 'Cancel' is unambiguous, the resource is 'market suppression', and the method 'by id' is explicit. It distinguishes itself from the sibling tool 'suppress_market' which performs the opposite action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this tool is used to cancel an active suppression, with the effect described. It does not explicitly mention alternatives or exclusions, but the presence of the inverse sibling 'suppress_market' makes the intended usage obvious. The scope requirement also hints at conditions for use.

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.

  1. 7 tool updatesv0.3.0
    • First observedget_account
    • First observedget_match_picks
    • First observedlist_leagues
    • First observedlist_picks
    • First observedlist_suppressions
    • First observedsuppress_market
    • First observedunsuppress_market

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: account retrieval, suppression listing, pick listing, per-match pick retrieval, league listing, and suppression creation/cancellation. The only potential overlap (list_picks vs get_match_picks) is clearly differentiated by scope and description.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (get_account, list_suppressions, list_picks, get_match_picks, list_leagues, suppress_market, unsuppress_market). Verb choice and structure are predictable throughout.

Tool Count5/5

Seven tools is well-scoped for a betting suggestions server: read operations for account, leagues, and picks, plus admin suppression management. Each tool earns its place with no redundancy.

Completeness5/5

The server covers account info, discovery (leagues), picks retrieval (global and per-match), and a full suppression lifecycle (list, create, cancel). No obvious gaps exist for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    MCP-compatible server that gives AI agents access to alternative sports data across 30+ leagues — odds, events, probabilities, settlement, and futures for prediction markets, DFS platforms, and sportsbooks.
    29
    15
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for kicktipp.com that enables AI assistants to view match data, leaderboards, and place bets through natural language.
    382
    8
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An open-source MCP server that turns any AI assistant into a football data analytics and scouting platform, enabling natural language queries over 40+ stats, 20+ leagues, and 10,000+ players.
    1
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for RapidOddsAPI that provides bookmaker odds, live scores, arbitrage and value bets to AI assistants. It supports querying sports, odds, results, and betting opportunities with credit-based usage.
    5
    MIT

Appeared in Searches

Latest Blog Posts

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/dumkoder/statos-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server