Skip to main content
Glama

slate_health

Slate Health

Pre-flight diagnostic for a slate. Returns whether odds, projections, matchup, and FD master-session are ready BEFORE the agent invokes /v1/generate.

Either slate_id or date is required. When slate_id is given, the slate metadata is also returned (games list, lock times). When only date is given, the data-pillar checks still run but game coverage cannot be computed (returned as null).

READING THE PROJECTION FRESHNESS (MLB especially): stokastic.age_min is the age of the cached snapshot FILE, NOT a data-quality signal. For MLB the cache is refreshed only twice a day, so mid-afternoon it routinely reads several hours old AND THAT IS FINE — a user-facing generate fetches projections LIVE (refresh_data=true), and stokastic.generate_fetches_live=true flags this. A stale age_min with a loaded, populated pool is NOT "projections broken / aces at 0 / no edge": probable pitchers are set days ahead (non-zero), and only confirmed BATTING lineups firm up ~1-2h before lock. Do NOT treat a stale cache age as a blocker or tell the user to wait/re-refresh — check the actual pool (get_slate_players) for non-zero pitcher projections instead.

BLOCKERS vs WARNINGS: a blocker means generation will not work (slate closed) or the slate has a PARTIAL odds gap (some games cached, some not). Nothing cached at all is a WARNING, not a blocker: generate fetches odds/projections live. data_store_ok=false / degraded=true means the cache store could not be read: degraded service, builds still fetch live, do not report the data as unavailable and do not tell the user to wait.

Responses:

200: Successful Response (Success Response) Content-Type: application/json 422: Validation Error Content-Type: application/json

Example Response:

{
  "detail": [
    {
      "loc": [],
      "msg": "Message",
      "type": "Error Type",
      "ctx": {}
    }
  ]
}

Input Schema

NameRequiredDescriptionDefault
dateNo
siteNofd
sportNoNBA
slate_idNo
include_snapshotNo
last_known_fingerprintNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so unusually well: it distinguishes blocker from warning conditions, explains that nothing-cached is a warning because generation fetches live, and explains that degraded=true means a read failure rather than unavailable data. It also warns that a stale cache age is not a data-quality signal — precisely the misinterpretation an agent would otherwise make.

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

Conciseness3/5

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

Purpose and the slate_id/date rule are front-loaded, and the ALL-CAPS section headers aid scanning. But the text repeats the same anti-instruction twice ('do not tell the user to wait', once for stale cache and again for degraded store), and it carries boilerplate HTTP response/example blocks that describe a 422 error envelope rather than the tool's actual result.

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?

With no output schema and no annotations, the description does substantial work: it names the readiness pillars, explains when game coverage returns null, and identifies specific response fields (stokastic.age_min, stokastic.generate_fetches_live, data_store_ok, degraded). It falls short only on include_snapshot and last_known_fingerprint, which likely alter the response shape but are never explained.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, and it only covers two of six parameters: it states the either/or requirement for slate_id and date and the divergent return behavior for each. The remaining four — site, sport, include_snapshot, and especially last_known_fingerprint — get no explanation at all, leaving the fingerprint/snapshot caching semantics opaque.

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 a specific verb and resource — 'Pre-flight diagnostic for a slate' — and enumerates exactly what it reports (odds, projections, matchup, FD master-session readiness). It also positions itself relative to a downstream action (/v1/generate) and is clearly distinguishable from siblings like health_check, slate_diff, and slate_refresh.

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

Usage Guidelines5/5

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

Explicitly says to run this BEFORE invoking /v1/generate, and adds concrete when-not guidance: do not treat stale stokastic.age_min as a blocker, do not tell the user to wait or re-refresh, and instead check the pool via get_slate_players. It also defines the blocker-vs-warning rule and what to conclude when data_store_ok=false.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources