BankrollSZN
Server Details
DFS projections, ownership, optimizers and model picks for NFL, MLB, NBA, NHL, PGA, MMA and more.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 117 tools
Most tools are separated by sport and action, but there is substantial overlap between projection, player-pool, optimizer, showdown and sim-pick tools within each sport (e.g., mlb_projections vs mlb_player_pool, mma_fight_sim vs mma_sim_picks vs mma_projections). The detailed descriptions usually clarify the intended use, but the agent still has many similar choices and must know whether it wants raw projections, a pool, a lineup builder, or a simulation.
The main tool set follows a clear sport_action or sport_entity_action snake_case convention, and nearly all primary tools use the invoke_ prefix. Minor deviations are the meta tools (bankrollszn_call, bankrollszn_tools) and the unrelated testimonial CRUD tools (create/query/update/delete_testimonial), but the overall pattern is predictable.
117 tools is an extreme volume for a single MCP server, even one covering many sports. The surface is sprawling across MLB, NFL, NBA, NHL, WNBA, MMA, PGA, LoL and generic bankroll tools, so discovery and selection become unwieldy despite the detailed descriptions.
Coverage is broad for a DFS and betting research server: projections, pools, optimizers, showdown tools, injuries, weather, odds, simulations and slate listings are present across most major sports. Some gaps remain, such as NBA showdown/slate tools and WNBA props/odds/sim-pick tools, but agents can work around many of these using adjacent tools.
Available Tools
117 toolscreate_testimonialCInspect
Create a Testimonial record.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | No | Sport the review relates to (optional) | |
| rating | Yes | Star rating from 1 to 5 (minimum: 1; maximum: 5) | |
| status | No | Approval status set by an admin | pending |
| comment | Yes | Review text written by the user (minLength: 10; maxLength: 400) | |
| featured | No | Whether an admin has featured this review on the home page | |
| photo_url | No | Optional win screenshot uploaded by the user | |
| reviewed_at | No | When an admin approved or rejected the review (format: "date-time") | |
| display_name | Yes | Display name shown on the review (minLength: 2; maxLength: 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=false, so the description carries the burden. It says nothing about side effects, whether creation is user-facing or admin-gated, what defaults are applied (status defaults to pending, featured to false), or what happens on validation failure. For a mutation tool this is a substantial gap.
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 single sentence is front-loaded and free of waste, but it is under-specified rather than concise -- six words cannot adequately frame an 8-parameter mutation tool.
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 8 parameters, no output schema, and only a destructiveHint annotation, the definition should explain required inputs, default behavior, and the admin-controlled fields embedded in the create schema. None of that is present, leaving the agent under-informed.
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 all 8 parameters (including required display_name, comment, rating and the admin-oriented status/featured/reviewed_at fields) are documented in the schema. The description adds no parameter meaning beyond that, so the baseline of 3 applies.
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?
"Create a Testimonial record" states a verb and resource, but it is essentially a restatement of the tool name create_testimonial and adds no distinguishing detail. It does not differentiate from siblings like query_testimonial, update_testimonial, or delete_testimonial.
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?
There is no guidance on when to use this tool versus the sibling testimonial tools, no mention of prerequisites, and no indication of who should call it (e.g., user vs. admin). The description provides no usage context at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_testimonialCInspect
Delete a Testimonial record by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and discloses almost nothing. It implies destruction via the verb 'delete' but never states whether the deletion is permanent or soft, whether it cascades to related data, what authorization is needed, or what the response looks like.
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 tight sentence with no filler and the action front-loaded. It is efficiently sized, though its brevity is partly under-specification rather than pure conciseness.
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 destructive tool with no annotations, no output schema, and zero parameter description coverage, this one-liner is not complete enough. An agent is not told about irreversibility, authorization, id format, or error behavior before committing a delete.
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 0% and only one parameter exists. The phrase 'by id' confirms the id identifies the target record, but adds nothing about format (UUID, slug, integer-as-string) or whether the id comes from query_testimonial. The description does not compensate for the empty schema.
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 ('Delete') and resource ('a Testimonial record'), scoped by 'by id'. The action is unambiguous and distinguishable from create_testimonial, query_testimonial, and update_testimonial, though it never names those alternatives explicitly.
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?
There is no guidance on when to use this versus query_testimonial or update_testimonial, and no prerequisites such as permissions or confirmation requirements. For a destructive operation, the absence of any 'when to use / when not to use' context is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_bankrollszn_accountAccount and limitsARead-onlyIdempotentInspect
Shows your BankrollSZN plan, calls used today, the daily limit, and when each data set was last rebuilt.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it as a read-only, idempotent, non-destructive operation, so the safety profile is covered. The description adds useful behavioral context by specifying the returned account data, including daily call usage, the daily limit, and per-data-set rebuild times, which helps an agent judge quota status and data freshness.
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, well-formed sentence that front-loads the verb and lists the exact information returned. Every phrase earns its place with no boilerplate 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?
With no output schema and no parameters, the description carries the burden of explaining what the tool returns, and it does so by enumerating the plan, usage, limit, and data rebuild times. Annotations cover the safety profile, so an agent has everything needed to call 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?
The tool takes zero parameters, so there are no parameter semantics to document. Per the rubric, a zero-parameter tool receives a baseline of 4 even when the schema provides no additional parameter detail.
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 ('Shows') and names the exact resource: the user's BankrollSZN plan, calls used today, daily limit, and data set rebuild times. This clearly distinguishes it from the many sport-specific data-fetch siblings in the tool list.
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 content implies the tool is for checking account status and quota limits, but it never explicitly says when to use it, when not to, or what alternative to call instead. Usage is inferable from the listed outputs, matching the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_bankrollszn_articlesBankrollSZN articlesARead-onlyIdempotentInspect
The BankrollSZN playbook articles. Without a slug it lists the latest articles with date and sport. With a slug it returns the full text of that article, so you can read today's playbook and quote it.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Article slug from the list, for example 9-22-2026-mlb-dfs-playbook. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sport | No | Sport filter: mlb, nfl, nba, wnba, nhl, pga, lol, or mma (UFC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's value is in disclosing the two distinct response shapes: a list with date and sport versus full article text. It adds no permission, rate-limit, or pagination context (the schema mentions a plan limit that the description never echoes).
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 sentences, front-loaded with the resource and then the two mode branches. Every clause carries information (what is listed, what extra fields appear, what full text enables) and there is 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?
With zero required parameters and no output schema, the description must carry the return-shape burden, and it does for both modes. It is slightly thin on the optional limit/sport filters and on whether list results are paginated, but nothing essential to a correct call 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 baseline is 3, but the description adds real semantic value the schema cannot: presence of slug switches the tool from list mode to full-text retrieval. It adds nothing for limit or sport beyond what the schema already documents.
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 (invoke/read) and resource (BankrollSZN playbook articles) and splits the behavior into two clearly-described modes based on whether a slug is supplied. It does not name or differentiate itself from sibling BankrollSZN tools (account, call, tools), so it stops 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?
Usage is implied rather than stated: 'so you can read today's playbook and quote it' hints at the intended scenario, and the slug/no-slug branches imply a browse-then-read workflow. There is no explicit when-not guidance, no prerequisites, and no named alternative among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_bankrollszn_callRun any BankrollSZN toolBRead-onlyIdempotentInspect
Runs any BankrollSZN tool by name with its arguments, including tools added after you connected. Get the names and input schemas from bankrollszn_tools.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Tool name from bankrollszn_tools. | |
| arguments | No | Arguments for the tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, but the description explicitly says it runs ANY BankrollSZN tool, and the sibling list includes destructive operations such as delete_testimonial. A tool that can execute destructive siblings cannot honestly be labeled read-only/non-destructive; the description contradicts the annotations.
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 tight sentences, front-loaded with the core capability and followed by the discovery pointer. No wasted wording.
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 dispatcher with a fully covered 2-param schema and no output schema, the description covers what it does and how to find callable names. It misses the safety caveat that the invocation can reach destructive tools, which matters given the mislabeled annotations.
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 both 'tool' and 'arguments' are already documented in the schema. The description only reinforces that the name comes from bankrollszn_tools and does not add format or constraint detail beyond it, so the baseline 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?
States a specific verb and resource: it 'Runs any BankrollSZN tool by name with its arguments.' An agent can grasp that this is the generic dispatcher versus the specific invoke_* siblings. It stops short of explicitly contrasting with those siblings.
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 tells the agent where to find tool names and schemas (bankrollszn_tools), which implies a discovery-then-invoke workflow. However it never states when to prefer this generic invoker over the many specific invoke_* siblings, leaving that choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_bankrollszn_toolsBankrollSZN tool directoryARead-onlyIdempotentInspect
Lists every BankrollSZN tool with its description and input schema, including tools added after you connected. Use it when a tool you need is not in your tool list, then run it with bankrollszn_call.
| Name | Required | Description | Default |
|---|---|---|---|
| sport | No | Prefix filter on tool name, for example nfl, mlb, nhl, nba, wnba, pga, lol, odds. |
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 genuinely new context: results include tools registered after the session connected, explaining the discovery value. It does not describe output size or pagination, minor gaps for a directory listing.
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 zero waste. The what (list all tools with schemas) is front-loaded before the when-to-use and follow-up routing, which is the correct ordering for a discovery tool.
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?
No output schema exists, and the description states what is returned (each tool's description and input schema). Combined with the explicit pointer to invoke_bankrollszn_call for execution, an agent has everything needed to use this discovery 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 coverage is 100%, so the single 'sport' prefix filter is fully documented in the schema. The description says 'every' tool without mentioning the optional filter, so it adds nothing beyond the schema and slightly understates the filtering capability; baseline 3 applies.
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 and resource: it lists every BankrollSZN tool along with its description and input schema. This clearly distinguishes it from the ~110 sibling invoke_* tools, which execute specific data operations, and from invoke_bankrollszn_call, which executes a named 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?
Explicitly gives the trigger condition ('when a tool you need is not in your tool list') and names the follow-up tool ('then run it with bankrollszn_call'), so an agent knows both when to discover and what to do with the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_lol_eloLeague of Legends Elo and matchesARead-onlyIdempotentInspect
BankrollSZN League of Legends Elo. view matches (default) gives today's series with each team's Elo, the Elo win chance next to the market moneyline and implied chance, series type and start time. view teams gives the Elo table (adjusted Elo with the league strength bonus, raw Elo, peak, games and league). Higher Elo is better.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team name or tricode. | |
| view | No | Default matches. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| league | No | League code, for example LCK, LPL, LEC or LCS. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive behavior, and the description stays consistent with them. It adds genuine value beyond the annotations by explaining how to read the results, e.g. 'Higher Elo is better' and that the teams view uses both adjusted and raw Elo.
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?
It is a single dense paragraph that front-loads the primary purpose and then details each view. Nothing is wasted, though the run-on packing of fields into one sentence is slightly harder to scan.
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 return-shape burden and does so adequately for both views. An agent has enough to invoke and interpret the tool; only cross-tool routing and pagination behavior remain unaddressed.
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, but the description earns extra credit by explaining what the 'teams' view actually contains (adjusted Elo with league strength bonus, raw Elo, peak, games, league), which the terse 'Default matches.' enum description does not convey.
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 resource (League of Legends Elo) and spells out the two output modes, matches and teams, along with exactly which fields each returns. An agent can distinguish this from invoke_lol_optimizer, invoke_lol_projections, and invoke_lol_player_pool without inspecting any schema.
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 makes the default explicit ('view matches (default)') and clarifies the purpose of each view, which tells the agent how to choose between them. It stops short of naming when-not-to-use conditions or pointing to a sibling tool for related data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_lol_optimizerLoL DraftKings lineup optimizerARead-onlyIdempotentInspect
Builds DraftKings League of Legends lineups from the BankrollSZN projections. Classic: CPT (1.5x points and salary), TOP, JNG, MID, ADC, SUP and TEAM under $50,000, at most 4 players from one team and 2 or more games. Showdown: 2 CPT and 2 FLEX. gpp scores the ceiling, cash scores the projection. Supports a captain, locks, excludes, several unique lineups, a salary floor, a per-team cap and a team stack. Returns DK ids in slot order. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | Player names that must be in every lineup. | |
| mode | No | Default gpp. | |
| captain | No | The player to use at CPT. | |
| exclude | No | Player names to leave out. | |
| lineups | No | Number of lineups, 1 to 5. The free plan gets 1. | |
| slate_id | No | DraftKings slate_id. Default: the main slate. | |
| min_salary | No | Least salary to use. Default 0. | |
| min_unique | No | Players each lineup must differ from every lineup before it. Default 2. | |
| stack_size | No | Players from stack_team. Default 3. | |
| stack_team | No | Team tricode: require at least stack_size players from this team. | |
| max_per_team | No | Most players from one team. Default 4 (the DraftKings rule). |
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, and the description adds useful context beyond that: 'Data refreshes every 30 minutes' (data freshness) and 'Returns DK ids in slot order' (output format). It does not discuss the free-plan lineup restriction's behavior or failure modes, but the annotations carry the safety burden well.
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?
Front-loaded with the core purpose, then efficiently enumerates format rules, modes, supported options and output/refresh behavior. Dense and largely waste-free, with only minor redundancy in the option list.
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 an 11-parameter tool with no output schema, the description covers formats, modes, supported modifiers, the returned value and data-refresh cadence. It lacks explicit auth/quota notes and edge-case behavior, but is otherwise complete enough for an agent to invoke 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 coverage is 100%, so the schema already documents all 11 parameters, setting a baseline of 3. The description goes further by tying the parameters to concrete constraints ('under $50,000', 'at most 4 players from one team', '2 or more games') and clarifying mode semantics that the schema leaves as 'Default gpp'.
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 and resource ('Builds DraftKings League of Legends lineups') and names the data source (BankrollSZN projections), cleanly distinguishing it from siblings like invoke_lol_projections and invoke_lol_player_pool. It even spells out the supported roster formats (Classic vs Showdown), so an agent knows exactly what it produces.
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?
Explains both the format choice (Classic vs Showdown) and the game-type choice ('gpp scores the ceiling, cash scores the projection'), giving clear context for when to pick each mode. It stops short of explicitly naming alternative sibling tools or stating when NOT to use this optimizer, so it falls just short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_lol_player_poolLoL DraftKings player poolARead-onlyIdempotentInspect
The DraftKings League of Legends pool for one slate: name, position (TOP, JNG, MID, ADC, SUP, TEAM), team, opponent, league, salary and CPT salary, projection and CPT projection (1.5x), floor, ceiling, value, win chance, series type, projected maps and both DK ids. Without slate_id it returns the main slate and lists the other slates. Classic is CPT, TOP, JNG, MID, ADC, SUP, TEAM; showdown is CPT, CPT, FLEX, FLEX. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team tricode. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| offset | No | Paid plans: when an answer carries page.next_offset, call again with the same arguments plus this offset to get the next rows. Default 0. Ignored on the free plan. | |
| sort_by | No | Default proj_fpts. | |
| position | No | Position. | |
| slate_id | No | DraftKings slate_id. Default: the main slate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description is credited for what it adds beyond them: a 30-minute refresh cadence, the default main-slate behavior when slate_id is omitted, DraftKings scoring, and the classic vs showdown roster structures. Useful operational context an agent could not get 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 long field enumeration is dense and reads as one run-on sentence, but it is front-loaded with the resource definition and every clause carries information (fields, defaults, roster formats, refresh rate). Minimal waste, slightly list-heavy rather than prose.
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?
No output schema exists, so the description must carry the return-shape burden, and it does by naming the returned fields. Pagination and limit semantics are documented in the schema rather than the description, which is acceptable. Complete enough for a 0-required-param read 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?
With 100% schema description coverage the baseline is 3, but the description goes further by fixing the domain meaning of the position enum values, the CPT salary 1.5x multiplier, and the slate_id default. It adds real semantics rather than restating the schema.
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 concrete resource with its scope: 'The DraftKings League of Legends pool for one slate', and enumerates the exact fields returned (salary, CPT salary, projections, DK ids), which separates it from a generic projections tool. It never names a sibling to route against, so the agent must infer the difference from invoke_lol_projections rather than being told.
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?
'Without slate_id it returns the main slate and lists the other slates' gives real default behavior context, and the classic/showdown roster strings suggest when each format applies. However there is no explicit when-to-use-this-vs-an-alternative guidance, no note on chaining with invoke_lol_optimizer, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_lol_projectionsLeague of Legends DFS projectionsBRead-onlyIdempotentInspect
BankrollSZN League of Legends DraftKings projections for the latest slate: salary, points per series, floor, ceiling, value, kills, deaths, assists, CS, maps, win probability and team implied kills by role.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| league | No | ||
| player | No | ||
| sort_by | No | ||
| position | No |
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 fully covered. The description adds the returned metric set, which is useful return-shape context, but says nothing about plan/credit limits, pagination, slate freshness or auth - all relevant for a paid data endpoint.
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 front-loaded sentence naming the product, sport, platform and slate, followed by the field list. No filler, though the trailing stat enumeration reads like a return-value list crammed into a description that could have been a clause shorter.
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, enumerating returned fields (salary, floor, ceiling, value, kills/deaths/assists, CS, maps, win probability) is genuinely useful and fills the biggest gap. However, six parameters at 17% coverage and zero guidance on filtering or alternates leave the definition only partially complete for calling 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 only 17%: just one of six parameters (limit) is documented, and even that defers to an unexplained 'plan limit'. The description hints at role-based filtering ('by role', which maps loosely to the position enum) but never explains team, league, player or sort_by semantics, so it does not compensate for the coverage gap.
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+resource: DraftKings League of Legends projections for the latest slate, with the stat set enumerated. It is clearly distinguishable in the abstract from siblings like invoke_lol_optimizer or invoke_lol_player_pool, though it never names those siblings to contrast scope.
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 the latest slate' implies a DFS/lineup-building context but there is no explicit when-to-use, no prerequisites, and no routing to alternatives such as invoke_lol_player_pool, invoke_lol_elo or invoke_lol_optimizer. The agent gets no help choosing between the several LoL siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_bullpenMLB bullpen formCRead-onlyIdempotentInspect
Each MLB bullpen over the last 30 days: innings, ERA, FIP, xFIP, WHIP, strikeout and walk rates, home runs per nine, ground ball and hard hit rates.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | Sort field. | |
| sort_dir | No | Sort direction: desc or asc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful 30-day rolling window scope, but discloses nothing further about rate limits, the plan limit, or refresh cadence.
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 compact sentence that front-loads the scope and enumerates the metrics without padding. It is efficient, though the metric list borders on a schema dump rather than a purpose statement.
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 usefully enumerates the returned metrics, which is its main value. It nonetheless omits any indication of row granularity, default sort, or how the team filter behaves, leaving the picture only partially complete for a data-retrieval 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 description coverage is 100% with four well-documented parameters (team, limit, sort_by, sort_dir) and two enums. The description adds no parameter meaning beyond what the schema already provides, so the baseline 3 applies.
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 conveys the resource (MLB bullpens) and a scope (last 30 days) plus the metrics returned, so an agent can infer it retrieves bullpen-form data. However, it uses no verb and offers no differentiation from the many adjacent MLB stat tools (e.g. invoke_mlb_team_splits, invoke_mlb_pitcher_splits), leaving its precise purpose ambiguous.
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?
There is no when-to-use guidance, no mention of alternatives among the large MLB sibling set, and no note on prerequisites or the plan-limit interaction hinted at by the schema. The agent must guess when this is preferable to other splits/stats tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_eloMLB strikeout EloBRead-onlyIdempotentInspect
BankrollSZN MLB Elo on the strikeout track: pitcher ratings and team offense ratings. 1500 is average, and a higher pitcher rating means more strikeouts.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Rating group: pitcher or team_offense. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example Aaron Judge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds useful domain context by explaining the 1500 baseline and that higher pitcher ratings mean more strikeouts. However, it does not explain output fields, player-filter behavior, or how team_offense ratings should be interpreted; with annotations already covering read-only/idempotent safety, this is a moderate addition.
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 compact clauses, front-loaded with the resource and track. There is no filler or repetition.
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?
No output schema exists, and the description does not specify the return shape beyond mentioning ratings or how to combine this with other MLB tools. It is minimally adequate given full schema coverage and read-only annotations, but leaves an agent with gaps about output.
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 enum and parameter docs already carry the detail. The description only echoes the pitcher/team offense concepts without adding syntax, filtering, or limit behavior beyond the schema.
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 that the tool returns MLB Elo ratings for pitcher and team offense on the strikeout track. The resource and scope are clear, though it does not explicitly contrast itself with siblings such as projections or splits.
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?
Offers no explicit when-to-use or when-not-to-use guidance, and does not mention alternatives like invoke_mlb_projections or invoke_mlb_pitcher_splits. The only usage-adjacent content is the rating scale explanation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_game_oddsMLB game totals and oddsBRead-onlyIdempotentInspect
Today's MLB market lines by game: total with over and under prices, moneylines, no-vig win probability, team implied runs, run line, and the move since the opening line.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context by specifying that the data is todays/current market lines and enumerating the returned fields, which matters since there is no output schema, but it omits freshness guarantees, refresh cadence, and auth or rate-limit behavior.
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 front-loaded sentence leads with the essential scope (todays MLB market lines by game) before listing the data fields. It is slightly dense with field enumeration but every element earns its place as return-value content given no output schema.
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 only two well-documented parameters and annotations covering safety, the main gap would be return content, and the description fills it by listing total, moneylines, no-vig probability, implied runs, run line, and line movement. Minor omissions remain (timezone definition of today, game-level pagination behavior) but the definition is largely complete for a read 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 description coverage is 100%, so both the team and limit parameters are already documented in the schema. The description mentions grouping by game but adds no syntax, format, or filtering semantics beyond what the schema provides, so the baseline of 3 applies.
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 resource (todays MLB market lines by game) and enumerates the exact data content returned, so the agent knows precisely what the tool yields. However, it does not differentiate itself from siblings like invoke_mlb_line_movement or invoke_odds_comparison, which overlap on line-movement and odds content.
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?
There is no explicit when-to-use guidance, no prerequisites, and no alternative tool named. The word Today's implies a recency scope but does not tell the agent when to prefer this tool over invoke_mlb_line_movement or invoke_odds_comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_hitter_splitsMLB hitter splitsARead-onlyIdempotentInspect
Hitter performance against left handed and right handed pitching. window season is the full season (40+ PA), window l30 is the last 30 days (20+ PA). Returns wOBA, wRC+, ISO, OPS, strikeout and walk rates, hard hit and fly ball rates.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| split | No | Platoon split: vs_LHP or vs_RHP. | |
| player | No | Player name, for example Aaron Judge. | |
| window | No | Time window: season or l30. | |
| sort_by | No | Sort field. | |
| sort_dir | No | Sort direction: desc or asc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds real behavioral context by listing returned metrics and the sample-size floors that make each window meaningful. It omits default behavior when optional filters are omitted, which is the one remaining behavioral gap.
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 dense sentences, front-loaded with the core purpose, then window semantics, then return payload — no filler. The metric list is long but each item is informative, so it stays close to optimal.
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 7 optional parameters and no output schema, the description does the right work by enumerating return metrics and window thresholds. It falls short of complete because all parameters are optional and the description never states defaults for split, window, or sort, leaving the agent to guess the no-argument behavior.
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 baseline is 3, but the description goes beyond the enums by attaching a concrete meaning to 'season' (40+ PA) and 'l30' (20+ PA), which affects how an agent should interpret and trust the output. It does not explain sort_by/sort_dir or limit semantics beyond the schema.
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 first sentence states a specific resource and verb-like scope: hitter performance against LHP/RHP, i.e. platoon splits for batters. That implicitly distinguishes it from invoke_mlb_pitcher_splits and invoke_mlb_team_splits, but neither sibling is named, so differentiation requires inference.
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 explains the two window options and their minimum PA thresholds, which is parameter help rather than usage guidance. It never says when to reach for this instead of invoke_mlb_pitcher_splits, invoke_mlb_matchup, or invoke_mlb_probable-style teammates, and gives no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_hr_boardMLB home run boardBRead-onlyIdempotentInspect
Today's Dinger Detector home run board: calibrated HR probability, our odds against the DraftKings price, edge, barrel rate, park factor and weather boost.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| limit | No | Maximum rows to return. The plan limit applies on top. |
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 context by enumerating the returned fields and noting the board is 'Today's'. It does not disclose ordering, pagination behavior, or how the plan limit constrains results.
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 front-loaded sentence with no filler. It is dense with feature names but every clause maps to actual board content, so it earns its place. Slightly list-like rather than prioritized, which keeps it from a 5.
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 and only two optional parameters, the description usefully doubles as a return-value explanation by naming the metrics an agent will receive. It omits row ordering and slate/date scoping context, but for a simple read-only board tool this is close to 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 description coverage is 100% for both parameters (team abbreviation and row limit), so the schema carries the parameter documentation. The description adds no filtering or format detail beyond it. Baseline 3 is appropriate when the schema does the heavy lifting.
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: a daily MLB home run board with a defined set of metrics (calibrated HR probability, edge vs. DraftKings price, barrel rate, park factor, weather boost). An agent knows what data it yields. It stops short of 5 because there is no explicit verb and no sibling is named (e.g. invoke_mlb_props) to differentiate the HR board from adjacent MLB prop/market 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?
No when-to-use guidance, no prerequisites, and no named alternative among the many invoke_mlb_* siblings. The agent must infer on its own whether this supersedes invoke_mlb_props, invoke_mlb_park_factors, or invoke_mlb_weather, all of which overlap with the listed columns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_line_movementMLB line movementARead-onlyIdempotentInspect
MLB game line movement for today: the opening and current total, moneylines and team implied runs, the change since open and the recent price history per game. Use it to see where the market moved (for example a total dropping from 9 to 8.5). Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | Default total_move (largest absolute change first). | |
| include_series | No | Include the price history points. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds genuine behavioral context beyond that: a 30-minute refresh cadence and a worked example of what a movement signal looks like. It does not address pagination or how far back the price history goes.
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, zero waste. The data payload is front-loaded, the usage cue and refresh cadence follow, and the parenthetical example earns its place by disambiguating 'movement'.
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 return-value burden and does so by naming the returned fields. All four params are optional and fully schema-documented, and refresh cadence is disclosed. Missing only a note on history depth / pagination behavior.
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 already documents team, limit, sort_by and include_series fully, including the sort_by default and enum. The description adds no parameter-level syntax or semantics beyond that, so the baseline 3 applies.
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+resource ('MLB game line movement for today') and enumerates exactly what is returned: opening/current total, moneylines, implied runs, change since open, price history. The concept of movement over time is naturally distinct from a static odds feed, though it never explicitly names sibling invoke_mlb_game_odds to sharpen the boundary.
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?
'Use it to see where the market moved' gives clear when-to-use context, reinforced with a concrete example (total dropping from 9 to 8.5). No exclusions or named alternatives are provided, so it does not reach the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_list_slatesMLB DraftKings slatesARead-onlyIdempotentInspect
Today's DraftKings MLB slates: the classic slates with slate_id, name, game count, start time and salary cap and which one is the main slate, plus a showdown list of the single-game captain slates. Use a classic slate_id with mlb_player_pool and mlb_optimizer, and a showdown slate_id with mlb_showdown and mlb_showdown_optimizer.
| 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 by detailing the returned slate fields (slate_id, name, game count, start time, salary cap, main slate flag) and the showdown list, though it does not discuss pagination or error handling.
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 compact sentences: the first front-loads what the tool returns, and the second provides downstream routing. Every clause earns its place with no redundant restatement.
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 list tool with no output schema, the description sufficiently covers output fields and downstream usage. An agent has what it needs to call the tool and use its results 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?
The tool has zero input parameters, so there is no parameter semantics to clarify. The description mentions slate_id as returned data rather than an input, and the empty schema already makes the call signature clear.
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 and resource: lists today's DraftKings MLB slates, with classic vs showdown types and the returned fields. Names the main slate and distinguishes this tool from downstream siblings by explaining which slate_id feeds which optimizer/pool 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?
Explicitly says to use a classic slate_id with mlb_player_pool and mlb_optimizer, and a showdown slate_id with mlb_showdown and mlb_showdown_optimizer. This routes the agent clearly to the correct follow-up tools based on slate type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_matchupMLB pitcher vs lineup matchupARead-onlyIdempotentInspect
Today's MLB starting pitcher vs opposing lineup matchups. Without pitcher or team it lists every starter with hand, opponent, opponent implied runs, strikeout prop line, 2026 and last 30 day K%, BB%, xFIP, SIERA and Stuff+, and the opponent team split vs that hand. With pitcher or team it adds the opposing lineup in batting order with each hitter's matchup score, HR rating, 2026 and last 30 day stats, the pitcher splits vs LHH and RHH, the bullpen behind him and the park HR index by side. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | The pitcher's team or the hitting team, for example LAD. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| pitcher | No | Pitcher name, or part of a name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful behavioral context beyond that: the exact payload changes by mode, the breadth of returned fields, and the 'refreshes every 30 minutes' data-currency note.
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, front-loaded with the tool's identity, then mode behavior, then refresh cadence. Dense field enumerations make it long, but each clause carries information an agent needs to predict the response shape.
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?
There is no output schema, so the description carries the full burden of describing returns, and it does so thoroughly for both modes (hand, implied runs, K props, splits, lineup order, matchup scores, park HR index). An agent can predict the response without guessing.
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 documents team, pitcher, and limit on its own, setting a baseline of 3. The description adds real meaning by spelling out how the presence or absence of pitcher/team toggles between list mode and full-lineup detail mode.
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+resource ('starting pitcher vs opposing lineup matchups') and precisely scopes it to 'Today's' MLB slate. It does not explicitly name or contrast with siblings such as invoke_mlb_pitcher_splits or invoke_mlb_hitter_splits, which it partially overlaps, so an agent must infer differentiation from content alone.
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 clearly explains the two invocation modes: 'Without pitcher or team it lists every starter...' versus 'With pitcher or team it adds the opposing lineup...'. That is genuine when-to-use guidance for the parameters, though it offers no exclusions or pointers to alternative tools for narrower needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_optimizerMLB DraftKings lineup optimizerARead-onlyIdempotentInspect
Builds DraftKings MLB classic lineups under the $50,000 cap from the BankrollSZN pool: 2 P, C, 1B, 2B, 3B, SS, 3 OF. contest_type loads the BankrollSZN preset (20max, 150max, 3max, single) and the preset's own lineup count: up to 20 for 20max and 150 for 150max. Stacks a primary and a secondary team, limits hitters against its own pitchers, and supports locks, excludes, an ownership cap, exposure caps per player, a stack plan per team and unique lineups. Every lineup has dk_upload (DK ids in slot order) and the result has csv: a DraftKings upload file in the site export format (P,P,C,1B,2B,3B,SS,OF,OF,OF, one "Name (DK id)" cell per slot). A big portfolio is built over several calls: when the result has next_call, call again with its prior_lineups and total_lineups until remaining is 0, then use the last csv. Postponed games are removed. Classic only. For Showdown use mlb_showdown_optimizer.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | Player names that must be in every lineup. | |
| mode | No | Default gpp. | |
| stack | No | Stack shape, primary-secondary. For example 4-2 (default), 4-3, 5-2, 5-3, 3-3, or 5. | |
| exclude | No | Player names to leave out. | |
| lineups | No | Number of new lineups. Up to the preset count: 20 for 20max, 150 for 150max, 3 for 3max, 5 for single. The free plan gets 1. | |
| slate_id | No | Slate ID from mlb_list_slates. Defaults to the main slate. | |
| team_caps | No | Most lineups with a team as the primary stack, for example {"LAD": 6}. Below 1 is a share of the lineups. | |
| min_salary | No | Minimum total salary. | |
| min_unique | No | Players each lineup must differ from the ones before it. Default 3. | |
| own_lambda | No | Override the gpp ownership penalty. Default comes from contest_type. | |
| stack_plan | No | Primary stack team per lineup as counts, for example {"LAD": 6, "TB": 6, "MIL": 5}. The lineups are interleaved across the run. | |
| stack_teams | No | Teams allowed as the primary stack. Default: the top 6 teams by TeamROO score. | |
| contest_type | No | DraftKings contest type. 20max is the base projection. | |
| exposure_caps | No | Most lineups for a player, for example {"Drew Rasmussen": 0.55, "Robbie Ray": 3}. Below 1 is a share of the lineups, 1 or more is a lineup count. Replaces the preset cap for that player. | |
| max_total_own | No | Cap on the summed ownership of the 10 players, in percent. | |
| prior_lineups | No | dk_upload strings of lineups already built in this portfolio (from next_call). They count toward exposure, caps and uniqueness and are not built again. | |
| total_lineups | No | The portfolio size the caps are computed on, from next_call. | |
| confirmed_only | No | Only use players in confirmed lineups. | |
| secondary_teams | No | Teams allowed as the secondary stack. | |
| pitcher_own_line | No | Ownership line for pitchers, in percent, used with max_pitchers_over_line. Example 40. | |
| max_batting_order | No | Stack hitters must bat at or above this spot. Default 9. | |
| max_low_owned_hitters | No | Most hitters under 3 percent ownership in a lineup. Default from the preset. | |
| max_hitters_vs_pitcher | No | Most hitters allowed against your own pitchers. Default 1. | |
| max_pitchers_over_line | No | Most pitchers above pitcher_own_line in one lineup. Example 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds substantial behavior: contest_type loads preset lineup counts (20 for 20max, 150 for 150max), stacks limit hitters against own pitchers, postponed games are removed, and the result carries dk_upload plus a csv in DK's export format. Nothing here contradicts the annotations.
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?
Front-loaded with purpose then constraints, and essentially every sentence earns its place (roster shape, preset counts, stacking rules, continuation protocol, export format). It is dense run-on prose rather than cleanly segmented, which slightly hurts scanability but wastes no words.
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 24 parameters and no output schema, the description carries the return-value burden and does: it documents dk_upload, the csv slot order and cell format, and the next_call/remaining pagination fields. For a 24-param optimizer with two enums and nested objects, an agent has everything needed to call and iterate 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 coverage is 100%, so the baseline is 3, but the description adds real meaning on top: preset-driven lineup counts per contest_type, the 4-2 default stack shape with the primary/secondary concept, and the prior_lineups/total_lineups continuation semantics that the schema only names. A few numeric parameters (min_salary, own_lambda) are left entirely to the schema.
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 and resource ("Builds DraftKings MLB classic lineups") and immediately fixes the scope: $50,000 cap, BankrollSZN pool, and the exact roster shape (2 P, C, 1B, 2B, 3B, SS, 3 OF). It explicitly differentiates from the closest sibling: "Classic only. For Showdown use mlb_showdown_optimizer."
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?
Names the alternative tool and the condition that selects it (Showdown), and gives an explicit orchestration protocol for large portfolios: when the result has next_call, call again with prior_lineups and total_lineups until remaining is 0, then use the last csv. That is when-to-use guidance the agent cannot infer from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_ownership_by_contestMLB ownership by contest typeARead-onlyIdempotentInspect
Projected DraftKings ownership for one slate adjusted to a contest type (20-Max base, 150-Max, 3-Max, Single Entry) with the measured multipliers from graded contests. Shows the 20-Max number, the contest number and the change.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | Sort field. | |
| position | No | P for pitchers, or a hitter position such as OF or SS. | |
| slate_id | No | Slate ID from mlb_list_slates. Defaults to the main slate. | |
| contest_type | Yes | DraftKings contest type. 20max is the base projection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds useful method context — the numbers are 'adjusted' via 'measured multipliers from graded contests' — and names the returned fields (20-Max number, contest number, change). It does not cover auth, rate limits, or whether contest_type changes recompute or merely rescale.
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 tightly written sentences; the purpose is front-loaded and the output summary follows. The parenthetical contest-type list mildly duplicates the schema enum, but it is brief and never buries the lead.
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 partially compensates by naming what is shown (base number, contest number, change). For a six-parameter read-only retrieval tool with full schema coverage, that is close to sufficient, though it stops short of describing sort/limit interplay or pagination.
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 all six parameters are already documented, including enum meanings and the slate_id default. The description only glosses the contest_type enum ('20-Max base' etc.), adding no new syntax or format meaning beyond the schema — the baseline 3 applies when the schema does the heavy lifting.
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 and resource — projected DraftKings ownership for one slate adjusted to a contest type — and enumerates the adjustment modes (20-Max base, 150-Max, 3-Max, Single Entry). The 'MLB' + ownership + contest qualifier cleanly separates it from sibling invoke_nfl_ownership_by_contest and from invoke_mlb_projections.
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?
Usage is implied by the domain (retrieve ownership projections for a slate/contest type), and the schema points at mlb_list_slates for slate_id, but the description itself gives no explicit when-to-use vs when-not guidance or alternative tools. An agent must infer that this supplements rather than replaces invoke_mlb_projections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_park_factorsMLB park factorsARead-onlyIdempotentInspect
Park factors for every MLB stadium, split by batter handedness. 100 is league average. Covers wOBA, runs, home runs, hits, doubles, triples, strikeouts, walks and hard hit rate.
| Name | Required | Description | Default |
|---|---|---|---|
| park | No | Venue name or part of it, for example Coors. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| split | No | Batter side: L or R. | |
| sort_by | No | Sort field. |
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 interpretation context beyond annotations: 100 is league average, results split by batter handedness, and metric coverage. It does not describe pagination or default limit behavior, but it substantially helps interpret the data.
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 front-loaded sentences with no filler: purpose/scope first, then the scale, then the metric list. The metric list is dense but earns its place by telling the agent what the tool returns.
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 tool with no output schema and fully documented parameters, the description gives enough to invoke and interpret the result: scope, normalization scale, and covered metrics. It could be more complete by describing row structure or pagination, but those gaps are minor for this lookup.
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. The description loosely relates to the split and metric/sort concepts, but it does not add syntax, defaults, or meaning beyond what the schema already provides for park, limit, split, and sort_by.
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 identifies the resource (park factors), scope (every MLB stadium), and segmentation (batter handedness), with a list of covered metrics. It is specific enough to distinguish this from other MLB tools, though it does not state an explicit verb or directly route against siblings.
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?
No when-to-use guidance, prerequisites, or alternatives are provided. The description only defines the dataset; an agent must infer that this is the tool for park-factor queries rather than being told explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_pitcher_healthMLB pitcher velocity and health flagsARead-onlyIdempotentInspect
MLB starting pitcher health check for today: fastball velocity and peak velocity over the last 2 starts against the season and the prior 10 starts, z-scores, spin and release point drift, a changepoint flag, starts in a row below normal, the trend, a flag level (red, yellow or green) with the reasons, and bet angles. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| flag | No | Flag level. | |
| team | No | Team abbreviation. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, or part of a name. | |
| starting_today | No | Only pitchers who start today. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond annotations: a 30-minute data refresh cadence and a full accounting of the computed fields (changepoint flag, consecutive-below-normal starts, reasons), which tells the agent how fresh and how derived the output is.
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?
Purpose is front-loaded and the long metric enumeration is dense rather than padded, with the refresh cadence saved for the end. It is somewhat list-heavy, but every clause adds signal about the returned 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?
With no output schema, the description carries the burden of describing return values, and it does so thoroughly, plus it discloses data freshness. Nothing critical is missing for correct invocation, though it could note filtering/pagination semantics for the limit parameter.
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 already documents all five parameters including the red/yellow/green enum and the starting_today default. The description adds marginal meaning (what 'flag level' represents) but does not extend parameter syntax or behavior, so the baseline 3 applies.
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 and resource (pitcher health check) and enumerates the exact metrics returned: velocity, z-scores, spin/release drift, changepoint flag, trend, flag level, bet angles. It is clearly a velocity/health tool, but it never distinguishes itself from the close sibling invoke_mlb_pitcher_splits, so it stops 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 implies usage by specifying 'starting pitcher health check for today' and the schema default starting_today=true, so the agent can infer when it applies. However, there is no explicit when-to-use/when-not guidance and no pointer to alternatives such as pitcher_splits or starters, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_pitcher_splitsMLB pitcher splitsARead-onlyIdempotentInspect
Pitcher performance against left handed and right handed hitters. window season is the full season (50+ batters faced), window l30 is the last 30 days (20+ batters faced). Returns ERA, FIP, xFIP, SIERA, strikeout and walk rates, swinging strike rate and ground ball rate.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| split | No | Split filter: vs_LHH, vs_RHH, SP_overall, or RP_overall. | |
| player | No | Player name, for example Aaron Judge. | |
| window | No | Time window: season or l30. | |
| sort_by | No | Sort field. | |
| sort_dir | No | Sort direction: desc or asc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely useful behavioral context beyond that: minimum sample thresholds (50+ batters faced for season, 20+ for l30), which tells the agent about data reliability and why rows may be missing for some pitchers.
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 tightly packed sentences with no filler: purpose first, then window semantics, then the return fields. Slightly list-like at the end, but every clause carries information an agent needs.
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 takes on the burden of naming returned metrics (ERA, FIP, xFIP, SIERA, K/BB rates, SwStr, GB rate) and does so. All 7 parameters are documented in the schema, so the remaining gap is only defaults and how pitchers are identified, which is minor for a filterable list 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 earns extra credit by explaining semantics the schema does not: the schema only says 'Time window: season or l30', while the description defines what each window actually means and its sample-size floor, and ties vs_LHH/vs_RHH to the LHH/RHH framing.
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?
Opening sentence states a specific resource and scope: pitcher performance split by handedness of opposing hitters. An agent can infer this differs from invoke_mlb_hitter_splits, but the description never explicitly names or contrasts with that sibling, leaving the differentiation implicit.
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?
Usage is implied through the split/window explanations rather than stated: the description never says when to pick this over invoke_mlb_matchup, invoke_mlb_starters, or invoke_mlb_team_splits. Context is present but the agent must infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_player_poolMLB player pool for lineup buildingARead-onlyIdempotentInspect
The DraftKings MLB pool for one slate: player, position, team, opponent, salary, projected points, floor, ceiling, projected ownership, value per $1K, batting order, lineup status, implied team total and dk_player_id (the DraftKings id for this slate; upload format "Name (dk_player_id)"). Use it to build a lineup under the $50,000 cap. Defaults to the main slate.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | Sort field. | |
| position | No | P for pitchers, or a hitter position such as OF or SS. | |
| slate_id | No | Slate ID from mlb_list_slates. | |
| confirmed_only | No | Keep only confirmed lineups. Default false. | |
| min_projection | No | Drop players projected below this. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds genuinely useful behavior: the main-slate default and the exact upload string format 'Name (dk_player_id)'. It does not cover pagination or how the plan limit interacts with results.
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?
Front-loaded with the core payload, and the field enumeration substitutes for a missing output schema, so it earns its length. The run-on field list is dense but not padded with 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?
With no output schema, listing the returned columns is essential and done well, and the slate default plus cap context orient the agent. Only minor gaps remain (result limits, how the pool relates to the optimizer sibling), which is strong for a seven-parameter read 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 and the schema already documents all seven filters. The description adds only the main-slate default (relevant to slate_id) and the meaning of the returned dk_player_id; it adds no syntax or filter interaction detail beyond the schema.
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 resource ('the DraftKings MLB pool for one slate') and enumerates the returned fields, so an agent knows exactly what data it retrieves. It does not explicitly distinguish itself from the close siblings invoke_mlb_projections or invoke_mlb_optimizer, which also feed lineup building.
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 a usage context ('Use it to build a lineup under the $50,000 cap') and a default ('Defaults to the main slate'), and the schema points to mlb_list_slates for slate_id. However, there is no when-not guidance or explicit routing between this pool and the projections/optimizer siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_postponementsMLB postponements and rain riskARead-onlyIdempotentInspect
Games postponed today and the active postponement risk alerts (weather risk percent and detail). Check this before you stack a team.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the useful fact that it returns both a postponed-games list and risk-alert records with a percent and detail field, which partially compensates for the missing output schema, but it says nothing about auth needs, freshness/latency, or whether results are team-scoped when the parameter is omitted.
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, no filler, and the payload contents are front-loaded before the call-to-action. Slightly tight to the point of leaving the omitted-parameter behavior unstated, but nothing is wasted.
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, single-optional-parameter lookup with no output schema, the description covers what the tool returns and when to reach for it. The remaining gap is behavioral edge cases (empty team parameter, data staleness) rather than anything that would cause a mis-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?
Schema description coverage is 100% for the single optional team parameter, so the schema already carries the parameter meaning. The description adds no filtering semantics of its own, not even what an omitted team returns (all games vs. none), which is the one ambiguity the schema leaves open.
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 resource (games postponed today) plus a second output class (active postponement risk alerts with weather risk percent and detail), so the agent knows this is not a generic weather tool. It never names the sibling it differs from (e.g. invoke_mlb_weather), so sibling disambiguation is left to inference.
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?
"Check this before you stack a team" gives a concrete moment to use the tool, which is more than nothing. But there is no when-not guidance and no alternative tool is named for the overlapping weather/forecast case, so usage is only implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_projectionsMLB DFS projectionsCRead-onlyIdempotentInspect
Today's BankrollSZN MLB DFS projections: DK and FD points, floor, ceiling, ownership, plate appearances, home runs, strikeouts and innings for pitchers, implied total and lineup status.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | ||
| position | No | P for pitchers, or a hitter position. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description's contribution is the 'Today's' recency signal plus the enumeration of returned stat families, which is genuinely useful because no output schema exists. It still says nothing about slate scope, refresh cadence, or whether stats are per-game or per-slate.
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 dense sentence that front-loads the source and recency before listing fields; nothing is wasted. It is a bit list-heavy, but for a data-feed tool that list is the payload description and 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?
With no output schema, the description partially compensates by enumerating returned fields, which is the most valuable part. It remains incomplete on the points an agent needs to call it correctly: which slate/day the projections cover, how team/position filters behave, and how the result relates to sibling projection sets.
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 75%, just under the high-coverage baseline, and the schema itself documents team, limit, and position. The description implicitly maps its stat list to the sort_by enum values (proj_own, proj_hr, proj_k) but never explains the team or position filters or the interaction between the row limit and the plan limit noted in the schema.
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 identifies the resource ('Today's BankrollSZN MLB DFS projections') and enumerates the stat categories returned, so an agent knows roughly what comes back. However it is a noun phrase with no verb, and nothing distinguishes it from closely related siblings such as invoke_mlb_player_pool, invoke_mlb_ownership_by_contest, or invoke_mlb_props, several of which overlap the listed fields (ownership, HR, K).
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?
There is no statement of when to use this tool versus the many alternative MLB endpoints in the sibling list. The only implied usage is that it is a DFS projections feed; nothing tells the agent whether to reach for this instead of invoke_mlb_player_pool or invoke_mlb_ownership_by_contest, or what prerequisites (e.g., a slate) apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_propsMLB pitcher props vs BankrollSZN projectionsARead-onlyIdempotentInspect
Today's MLB pitcher props next to the BankrollSZN projection: strikeouts and pitcher outs. Each row shows the consensus main line, our projection, the gap, the lean, our chance of the over, the no-vig book chance, the odds and the books. Pass player for one pitcher. Without player it lists the biggest gaps. Games that already started are left out.
| Name | Required | Description | Default |
|---|---|---|---|
| lean | No | Keep only props where our projection leans this way. | |
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| market | No | One prop market. | |
| player | No | Pitcher name, or part of a name. | |
| sort_by | No | edge (default) uses diff_pct. | |
| min_books | No | Keep only props priced by at least this many books. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine behavioral context the annotations don't: games already started are excluded, and the no-player default ranks by biggest gaps.
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?
Purpose is front-loaded in the first sentence, followed by output columns, then the player-mode and started-game rules. The column enumeration is slightly listy but each element is informative, so no sentence is wasted.
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 describing return values and does so by enumerating the row fields. Modes and the started-game filter are covered; pagination/rate details are only implied via the schema's plan-limit note.
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 and the schema documents all seven params. The description adds real meaning beyond the schema by explaining the `player` param's dual behavior (one pitcher vs. default gap listing), lifting it above baseline.
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 and resource (lists today's MLB pitcher props next to BankrollSZN projections) and names the two covered markets (strikeouts, pitcher outs). An agent can distinguish this from the broad invoke_mlb_projections sibling purely from the text.
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?
Gives clear operational context: pass `player` to target one pitcher, omit it to get the biggest gaps by default. It does not name a sibling alternative or an explicit when-not-to-use, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_showdownMLB showdown poolARead-onlyIdempotentInspect
DraftKings MLB Showdown (captain mode) pool for one game: FLEX and CPT salary, projection, CPT projection (1.5x), ceiling, CPT and FLEX ownership, both DK ids, batting order, and the relievers with their chance to pitch (rp_p_appear). Includes the opener and bulk arms DraftKings tags (dk_tag PO or PLR). slots true returns one CPT row and one FLEX row per player. Pass slate_id or a game like PHI@ATL.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | A game like PHI@ATL, instead of slate_id. | |
| role | No | pitcher means starters and relievers. | |
| team | No | Team abbreviation, for example PHI. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| slots | No | One CPT row and one FLEX row per player. Default false. | |
| sort_by | No | ||
| slate_id | No | Showdown slate_id from mlb_list_slates (the showdown list). Default: the first showdown slate of the day. | |
| include_bullpen | No | Also list the arms projected under 1 point. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the safety profile is covered. The description adds real behavioral context beyond that: the full field payload, the 1.5x CPT projection multiplier, the rp_p_appear reliever probability, the DK opener/bulk tags (dk_tag PO or PLR), and the row-shape change when slots=true. No auth or rate-limit notes, keeping it at a solid 4.
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 purpose leads the paragraph and the enumerated field list is justified because there is no output schema. It is a long single block, but almost every clause carries informational weight; only the dense mid-sentence field run slightly hurts scanability.
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 correctly compensates by listing the returned fields. Slate selection, the slots behavior, and the bullpen inclusion toggle are all covered, leaving only sort semantics and the difference from the showdown optimizer unaddressed.
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 already 88%, so a 3 is the floor. The description goes further by explaining the slots flag's row expansion and the slate_id-versus-game targeting choice, adding meaning the schema entries only gesture at. It does not clarify sort_by semantics or the interaction of limit with the plan limit beyond what the schema says.
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 resource and mode: 'DraftKings MLB Showdown (captain mode) pool for one game', then enumerates the exact fields produced (salary, projection, CPT projection 1.5x, ceiling, ownership, DK ids, batting order). It is clearly a single-game captain-mode pool, but it never names the siblings it must be distinguished from (e.g. invoke_mlb_showdown_optimizer or the season-long invoke_mlb_player_pool), leaving the boundary implicit.
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?
'Pass slate_id or a game like PHI@ATL' gives concrete input guidance, and 'slots true returns one CPT row and one FLEX row per player' tells the agent how to shape output. However there is no when-to-use versus when-not guidance and no routing to invoke_mlb_showdown_optimizer for lineup construction, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_showdown_optimizerMLB showdown lineup optimizerARead-onlyIdempotentInspect
Builds DraftKings MLB Showdown lineups: 1 CPT (1.5x points and salary) plus 5 FLEX under $50,000, with both teams in the lineup. gpp scores ceiling minus an ownership penalty; own_lambda 0 removes ownership. cash scores the projection. Supports a captain, locks, excludes, several unique lineups, a salary floor, an ownership cap, a per-team cap, a reliever switch and a cap on hitters facing your pitchers. The search is exact unless it says it hit the node limit. Returns DK ids in slot order.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | A game like PHI@ATL, instead of slate_id. | |
| lock | No | Player names that must be in every lineup. | |
| mode | No | Default gpp. | |
| captain | No | The player to use at CPT. | |
| exclude | No | Player names to leave out. | |
| lineups | No | Number of lineups, 1 to 5. The free plan gets 1. | |
| slate_id | No | Showdown slate_id from mlb_list_slates (the showdown list). Default: the first showdown slate of the day. | |
| min_appear | No | Drop relievers whose chance to pitch (rp_p_appear) is below this, 0 to 1. Default 0. | |
| min_salary | No | Least salary to use. Default 45,000. | |
| min_unique | No | Slots each lineup must differ from every lineup before it. A captain swap counts. Default 2 for gpp, 1 for cash. | |
| own_lambda | No | Ownership penalty in points per ownership percent for gpp. Default 0.15. 0 removes ownership. | |
| max_per_team | No | Most players from one team. Default 5. | |
| max_total_own | No | Cap on the summed CPT and FLEX ownership of the lineup, in percent. | |
| include_relievers | No | Allow relievers. Default true. | |
| max_hitters_vs_pitcher | No | Most hitters allowed against a starter or opener in your lineup. Default no cap. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly/idempotent/non-destructive), so the bar is lower, and the description still adds real behavior: the search is exact unless the node limit is hit, plus the return contract (DK ids in slot order) and the scoring model per mode. It stops short of noting runtime or plan limits, but this is well beyond what the annotations give.
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?
Front-loaded with the lineup format, then mode behavior, then supported knobs, then the solver caveat and return format. Dense but every clause carries information; minor redundancy in restating the CPT 1.5x and both-teams constraint.
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 15 optional params and no output schema, the description compensates well: it explains the return value, the optimization modes, and the solver's exact-vs-node-limit behavior. It doesn't restate the slate_id prerequisite from mlb_list_slates, but that lives in the 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 3 is the baseline, but the description goes further by explaining the semantics the schema only labels: gpp scores ceiling minus an ownership penalty, cash scores projection, own_lambda 0 removes ownership, and it ties the listed knobs (captain, locks, excludes, per-team cap, reliever switch, hitter cap) together meaningfully.
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 (Builds) and resource (DraftKings MLB Showdown lineups) and pins down the exact format: 1 CPT at 1.5x plus 5 FLEX under $50,000 with both teams required. This distinguishes it cleanly from the sibling invoke_mlb_optimizer (classic format) and invoke_mlb_showdown.
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 explains what gpp vs cash does and how key knobs behave (own_lambda 0 removes ownership), which is implied guidance for mode selection. However, it never states when to reach for this tool versus invoke_mlb_optimizer or the other showdown siblings, and offers no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_sim_picksMLB model picks and graded recordCRead-onlyIdempotentInspect
The BankrollSZN MLB Monte Carlo picks for the day with edge, model chance, no-vig market chance and stake, the game sim numbers, and the graded record (season, last 30 and last 7 days, by bet type, in units, with closing line value). Each pick shows the blended chance it was published at, the raw sim chance, the market weight, and the starters the sim had when it wrote the pick.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| bet_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds rich context about the returned data — edge, model chance, no-vig market chance, stake, sim numbers, graded record, and per-pick fields — which is valuable beyond annotations, though it omits auth or rate limit details.
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 front-loaded with the tool's purpose and return content, and every sentence carries useful detail since there is no output schema. However, the long comma-separated lists are dense and could be easier to parse with structure.
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?
While return values are described thoroughly enough to substitute for a missing output schema, the two input parameters remain completely unexplained. An agent cannot know how to filter by team or bet_type, leaving a significant gap for a tool with optional filters.
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 has 0% description coverage for team and bet_type, and the description never mentions either parameter. No format, allowed values, or effect of filtering is given, so the description does not compensate for the schema gap.
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 resource — daily BankrollSZN MLB Monte Carlo picks — and lists the output fields, so an agent knows what it returns. It does not explicitly distinguish itself from other MLB siblings like invoke_mlb_projections or invoke_mlb_game_odds, keeping it from 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?
No when-to-use guidance or alternatives are provided. The description implies daily picks retrieval but never says when to choose this over other MLB tools or whether filters are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_startersMLB starting pitchers todayARead-onlyIdempotentInspect
Today's confirmed and probable MLB starting pitchers by game, with team, opponent, venue, handedness and first pitch time in Central.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example Aaron Judge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint, so safety is covered. With no output schema, the description usefully discloses the returned fields (team, opponent, venue, handedness, first pitch time) and that times are in Central, adding real value beyond structured data.
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, front-loaded sentence that names the resource and enumerates the payload fields with zero filler. Nothing could be trimmed without losing 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 zero-required-parameter read tool with no output schema and fully documented parameters, the description covers scope and returned fields adequately; only finer points, such as how confirmed vs probable status is represented, are 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 coverage is 100%, so team, limit and player are already documented in the input schema. The description adds no parameter-level meaning (e.g., how team and player filters interact), so the baseline of 3 applies.
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 clear resource and scope: today's confirmed and probable MLB starting pitchers by game. An agent can tell this returns today's pitching probables rather than historical splits or health data. It does not explicitly name sibling tools like invoke_mlb_pitcher_health to sharpen differentiation.
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 'Today's confirmed and probable' implies the usage window, but there is no explicit when-to-use, when-not-to-use, or named alternative such as invoke_mlb_pitcher_splits or invoke_mlb_pitcher_health. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_stolen_basesMLB stolen base boardBRead-onlyIdempotentInspect
Today's stolen base model board: steal probability per runner, our odds, the DraftKings line and the edge, plus sprint speed, catcher pop time and pitcher time to the plate.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example Aaron Judge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real value by naming the columns returned (probability, odds, DK line, edge, sprint speed, pop time, time to plate), which matters because there is no output schema. It does not disclose freshness guarantees, auth, or rate limits.
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 compact sentence that front-loads the resource and then lists the payload fields. No filler sentences; the only mild redundancy is the subtitle-like 'model board' phrasing.
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 and annotations covering safety, the description's enumeration of returned fields is exactly the missing piece an agent needs to judge relevance. Filter behavior for the three params is left implicit, which is the main remaining 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 description coverage is 100%, so team, limit, and player are already documented with examples in the schema. The description adds nothing about filtering semantics (e.g., whether team/player act as filters or whether limit interacts with the plan limit). Baseline 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 names a specific resource (today's stolen base model board) and enumerates its contents, so an agent can tell it is a stolen-base prop/edge board rather than a generic props feed. It does not explicitly contrast itself with adjacent siblings like invoke_mlb_props or invoke_mlb_hr_board, but the topic is unambiguous.
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?
There is no explicit when-to-use, when-not-to-use, or named alternative. The word 'Today's' implies it is a daily snapshot for stolen-base betting/DFS, but the agent must infer that. No prerequisites or routing guidance are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_team_splitsMLB team splitsBRead-onlyIdempotentInspect
Team offense against left handed and right handed pitching for the season: wRC+, wOBA, OPS, ISO, strikeout and walk rates.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| split | No | Platoon split: vs_LHP or vs_RHP. | |
| sort_by | No | Sort field. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and non-destructive behavior, so the safety profile is settled. The description usefully clarifies that these are season-long team aggregates vs LHP/RHP, but adds nothing about return shape, pagination, or the interaction with the plan limit noted in 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?
A single front-loaded sentence with no filler; the core resource is stated first and the metric list is compact. It is efficient, though the metric enumeration is somewhat redundant with the sort_by enum values.
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 helpfully names the returned metrics, which is the most important missing piece for a stats endpoint. However, it omits usage context and any note on filtering/split semantics, leaving the description adequate but not complete for an agent deciding among many MLB siblings.
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%, with both enums (split, sort_by) fully documented, so the schema carries parameter meaning. The description lists the metric vocabulary that maps to sort_by keys but adds no syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: team-level offense split by opposing pitcher handedness, naming the exact metrics returned (wRC+, wOBA, OPS, ISO, K%, BB%). It implies distinction from invoke_mlb_hitter_splits via 'team offense' but never names that sibling explicitly.
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?
No when-to-use guidance is given. There are obvious alternatives in the family (invoke_mlb_hitter_splits for individual hitters, invoke_mlb_pitcher_splits, invoke_mlb_team_stacks), and the description provides no conditions for choosing this one over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_team_stacksMLB team stack rankingsBRead-onlyIdempotentInspect
Team stack board for today: BankrollSZN TeamROO score, implied and expected runs, boom and bust chance, ceiling runs, leverage tag, opposing starter, the stack sim ceiling, and the summed ownership of each team's top 4 hitters on the slate. leverage_gap above 0 means the field owns the stack less than its boom rank.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | Sort field. | |
| slate_id | No | Slate ID from mlb_list_slates. Defaults to the main slate. | |
| contest_type | No | DraftKings contest type. 20max is the base projection. |
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 domain semantics for leverage_gap (above 0 = field owns the stack less than its boom rank) but says nothing about pagination, plan limits, or how 'today' and the default slate interact.
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?
Front-loads the resource ('Team stack board for today') and puts the leverage_gap interpretation in a compact second sentence. The metric enumeration is long but each item maps to a returned column, so it 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?
There is no output schema, so the description must convey what comes back, and it does by listing the returned metrics. Remaining gaps are minor: no mention of row ordering defaults (sort_by is optional with no stated default) or how limit interacts with the plan limit.
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 all five parameters are already documented in the schema; baseline 3 applies. The description's leverage_gap note adds interpretation for one sort_by enum value but no syntax, format, or per-parameter behavior beyond the schema.
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 the resource precisely ('Team stack board for today') and enumerates the metrics it returns (TeamROO score, implied/expected runs, boom/bust chance, ceiling runs, opposing starter, ownership). This lets an agent distinguish it from siblings like invoke_mlb_optimizer or invoke_mlb_ownership_by_contest, though the verb is only implicit ('board', not 'returns/lists').
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?
No when-to-use or when-not guidance and no alternatives named. 'For today' and the leverage_gap definition imply context, but nothing tells the agent when this board is preferable to invoke_mlb_sim_picks, invoke_mlb_optimizer, or invoke_nfl_team_stacks (the sibling variant).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_weatherMLB game weather and park impactBRead-onlyIdempotentInspect
Today's first pitch weather for each MLB game and the BankrollSZN impact on home runs, runs and extra base hits, split by batter handedness.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYY. | |
| limit | No | Maximum rows to return. The plan limit applies on top. |
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 data-freshness context ('Today's first pitch') and clarifies the proprietary impact split, but does not discuss auth, rate limits, pagination, or return format.
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 with no wasted wording. Weather is stated first, followed by the impact metrics, which is efficient and appropriate for a low-complexity data retrieval tool.
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-required-parameter, read-only MLB data tool with full schema coverage and no output schema, the description identifies the returned subject matter well. It is slightly incomplete on usage context and parameter behavior, but sufficient 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?
Schema description coverage is 100%, so the schema already defines both parameters. The description adds no parameter meaning, such as whether team filters the result set or how limit interacts with the plan cap. The baseline is 3 when the schema carries parameter semantics.
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 resource and scope: today's first pitch weather for each MLB game plus BankrollSZN impact on HR, runs and extra base hits split by handedness. It is clear enough to distinguish this from generic weather or park-factor tools, though it does not explicitly name an alternative sibling.
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 says what data is returned but gives no when-to-use guidance, prerequisites, or alternatives. It does not tell an agent when to choose this over invoke_mlb_park_factors, invoke_mlb_hr_board, or other MLB stat tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mlb_zone_pitch_mixMLB zone and pitch mix matchupsARead-onlyIdempotentInspect
BankrollSZN zone and pitch mix tool for today. view hitters (default) scores each hitter against the opposing starter's pitch mix and zone locations (combined, pitch_mix and zone_overlap, 0 to 100, higher favors the hitter). view pitchers gives each starter's vulnerability (combined, pitch mix and zone) with the opponent implied total. view teams gives each lineup ranked by the average hitter score. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation. | |
| view | No | Default hitters. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, or part of a name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the safety profile is covered. The description still adds substantive behavior beyond that: the 0-100 scoring scale, the fact that higher favors the hitter, the three sub-metrics (combined/pitch_mix/zone_overlap), opponent implied total for pitchers, and the 30-minute refresh cadence.
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?
Four sentences, each carrying distinct information (purpose, three views, refresh), with the primary purpose front-loaded. Slightly dense but no filler sentences; every clause 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?
With no output schema, the description does the work of describing returns (combined/pitch_mix/zone_overlap scores, opponent implied total, lineup ranking) and refresh timing, so an agent knows what comes back. It stops short of explaining how the team/player/limit filters interact, but is otherwise complete for a read-only scoring 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, but the description meaningfully expands the 'view' enum by explaining what each value returns (hitter scores, starter vulnerability, lineup ranking), which the terse schema text ('Default hitters.') does not. Team, player and limit are not elaborated beyond the schema, keeping it short of a 5.
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 resource and outcome: it scores hitters against the opposing starter's pitch mix and zone locations, and enumerates three distinct views (hitters/pitchers/teams). This is far more specific than a tautology, but it never explicitly contrasts itself with similarly-themed siblings such as invoke_mlb_matchup, invoke_mlb_hitter_splits or invoke_mlb_pitcher_splits.
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 real guidance for choosing among the tool's own views (hitters is the default, pitchers covers vulnerability, teams ranks lineups) and implies 'today' freshness. However, it never says when to reach for this tool versus the many adjacent MLB matchup/split tools, so cross-tool selection 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.
invoke_mma_eloUFC fighter Elo ratingsARead-onlyIdempotentInspect
BankrollSZN UFC Elo for every active fighter (rebuilt each morning from every UFC fight since 2016; K 64, finishes count 1.5x): rating, peak, UFC fights, last fight date, change from the last fight and weight class. view card gives each bout on the next card with both ratings, the Elo win probability and the market win probability. Elo alone is weaker than the betting market (log loss 0.671 vs 0.590), so projections use it only when no odds exist.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Default fighters. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| fighter | No | Fighter name or part of it. | |
| weight_class | No | Weight class, for example Lightweight or Women's Strawweight. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: nightly rebuild, data window since 2016, K=64, 1.5x finish weighting, the exact fields returned, and a candid accuracy limitation. This is more behavioral disclosure than most read-only tools 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?
Front-loaded and dense with no filler sentences; the mechanics parenthetical and the log-loss caveat each earn their place. Only minor density cost from packing multiple facts into one sentence.
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 fully compensates by enumerating returned fields for both views, plus data provenance and a fitness-for-purpose caveat. Nothing needed to call it correctly 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 coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that 'view: card' returns each bout with both ratings, the Elo win probability and the market win probability, and that 'fighters' returns rating/peak/fights/last date/change/weight class. This clarifies what each view actually yields rather than just echoing the enum.
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 and resource: UFC Elo ratings for every active fighter, with the two view modes (fighters vs card) distinguished by content. An agent can separate it from siblings like invoke_mma_projections or invoke_mma_fight_sim without opening the schema.
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?
Gives explicit conditional guidance: because Elo is weaker than the market (log loss 0.671 vs 0.590), it is used only when no odds exist, and the 'card' view is scoped to the next card. It stops short of naming sibling tools such as invoke_mma_odds as the preferred alternative, so routing still takes a small inference step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_fight_simUFC fight simulation and betting edgesARead-onlyIdempotentInspect
Monte Carlo simulation (4,000 runs) of every bout on the next UFC card: win probability, KO / submission / decision for each fighter, chance of each round ending the fight, chance it goes the distance, expected significant strikes, takedowns and control time, DK and FD projections with floor and ceiling, sportsbook prop lines next to the model, and the best price per market with model probability and expected value (edges). Projections start from the betting market (DraftKings and FanDuel sportsbook moneyline, method of victory and round odds, de-vigged), then add each fighter's strike, takedown and control rates against what the opponent allows. Backtest on 2,267 UFC fights 2021-2026: DraftKings mean miss 30.9 points vs 35.6 for a last-5 average.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| min_ev | No | Only return edges with expected value at or above this, for example 0.03 for +3 percent. Default all. | |
| fighter | No | Fighter name or part of it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: it discloses the data sources (de-vigged DraftKings/FanDuel moneyline, method and round odds), the modeling approach, and a backtest benchmark (30.9 vs 35.6 points on 2,267 fights), which tells an agent how much to trust the output.
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?
Front-loaded with the core operation ("Monte Carlo simulation (4,000 runs) of every bout on the next UFC card"), and the long output enumeration is dense but each item is a distinct capability. The second sentence on methodology is a run-on but earns its place by grounding the projections.
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 return-value burden and does so thoroughly, listing every output family including props and model-vs-market edges. It is slightly incomplete on scope (which card(s), one or many) and does not explain how filters interact, but an agent has enough to call it 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 limit, min_ev and fighter are already documented in the schema, which sets the baseline at 3. The description gestures at the edge/EV concept but adds no parameter-specific syntax or defaults beyond what the schema states.
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 gives a precise verb+resource: a 4,000-run Monte Carlo simulation of every bout on the next UFC card, then enumerates the exact outputs (win probability, method, round, distance, props, edges). It never distinguishes itself from near-identical siblings such as invoke_mma_sim_picks, invoke_mma_projections, or invoke_mma_odds, so an agent cannot route between them from the text alone.
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?
There is no when-to-use guidance, no prerequisites, and no named alternative. A reader can infer this is a simulation/edge tool, but nothing tells them when to pick it over invoke_mma_sim_picks or invoke_mma_projections, or that it targets only the next card.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_injuriesUFC injury report and withdrawal watchARead-onlyIdempotentInspect
Every fighter booked on a UFC card in the next 14 days with a watch level (Out, Watch, Context, Clear), the slate lock time (first fight), DraftKings and FanDuel status, the latest injury, withdrawal, weight or travel news story that names him (last 21 days, with the headline), odds moved 8+ points against him since open, a new opponent, a weight class move, late cancellations on record in the last 3 years, months since his last fight, his last result and age, plus bouts pulled from the card. History flags were tested on 7,169 bookings 2019-2026: a prior late cancellation 6.3 percent withdrew vs 2.2, a 1 year+ layoff 4.9 vs 2.3, a KO loss in the last fight 3.7 vs 2.3; out of sample they separated risk only weakly, so they are context, not a forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Only this watch level. flagged = everything except Clear. Default flagged. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| fighter | No | Fighter name or part of it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly/idempotent/non-destructive), but the description adds real behavioral context: the source and sample of the history flags (7,169 bookings, 2019-2026), the effect sizes, and the honest caveat that they separated risk only weakly out of sample. That tells the agent how much weight to place on the flags, going beyond anything structured.
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 purpose is front-loaded, but the bulk is a dense run-on enumeration of return fields that reads as a wall of text rather than tight prose. It is informative yet heavier than necessary, so it lands below the concise ideal.
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 thoroughly — field-by-field including bouts pulled from the card. It is nearly complete for a data-heavy tool; only the when-to-use framing is thin.
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. The description adds no extra meaning to level/limit/fighter beyond the schema, which already defines 'flagged' as everything except Clear. Baseline applies.
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 resource (UFC fighters booked in the next 14 days) and enumerates the exact data returned — watch level, slate lock, DK/FD status, injury news, odds movement, etc. It is clearly distinguishable from siblings like invoke_mma_late_changes or invoke_mma_odds, so an agent can tell what this tool is without opening the schema.
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?
Usage is only implied by the content described; there is no explicit 'use this when' statement and no routing against the neighboring invoke_mma_* tools (late_changes, odds, matchups). The one interpretive note — that history flags are context not a forecast — guides reading results rather than choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_late_changesUFC late changes and scratch riskARead-onlyIdempotentInspect
Scratch risk board for every fighter on UFC cards in the next 14 days, plus the log of card changes. view fighters (default) gives each fighter with scratch_pct (chance he does not fight on this card; base 1.8 percent from a logistic fit on 7,854 UFC bookings 2019-2026, raised by live news, site status and odds moves), hist_pct, DK salary and projection, UFC fights in 3 years, withdrawals in 1 and 3 years with events, days since last fight, last result, not100 flags (short-notice replacement, new opponent, weight class change, catchweight, weight or injury news, recent KO loss, long layoff, quick turnaround, age 36+), the news headlines and lock time. view changes gives each detected change: new opponent, bout off card, DraftKings or FanDuel out, weight class move. Checked every hour.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Default fighters. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| fighter | No | Fighter name or part of it. | |
| min_scratch_pct | No | Only fighters at or above this scratch percent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description goes well beyond that by disclosing how scratch_pct is computed (base 1.8% from a logistic fit, raised by live news, site status, and odds moves), what the not100 flags mean, and that data is refreshed hourly.
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 front-loaded with the tool's purpose in the first sentence and then details the two views. It is dense but every sentence adds substantive information about output fields, with no filler or repetition of the schema.
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?
There is no output schema, so the description carries the burden of explaining return values. It thoroughly enumerates the fields for both views, explains the scratch_pct methodology, defines the not100 flags, and notes the hourly refresh cadence, leaving no major gaps for an agent to invoke 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 structured field descriptions already define each parameter. The description adds value by detailing exactly what the fighters view and changes view return, which helps an agent pick the correct view enum, and by contextualizing scratch_pct for min_scratch_pct filtering.
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 resource: a scratch risk board for UFC fighters over the next 14 days plus a log of card changes. It is highly specific and an agent can tell it apart from generic MMA tools, but it never names or contrasts with any sibling tool, so it falls short of full sibling differentiation.
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 by describing the scratch risk board and its 14-day horizon, and it explains what each view returns. However, it never says when to choose this tool over alternatives like invoke_mma_injuries or invoke_mma_projections, and it provides no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_list_slatesUFC DFS slatesARead-onlyIdempotentInspect
UFC / MMA DFS slates for the next card on DraftKings (Classic, 6 fighters, $50,000 cap) and FanDuel (MVP at 1.5x plus 5 fighters, $100 cap): slate_id, site, date, number of fights, first fight start time and the event name and venue. Use the slate_id with mma_projections and mma_optimizer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful behavioral context beyond annotations: it is limited to the next card, distinguishes DraftKings and FanDuel formats, and lists the returned slate fields.
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 front-loaded with the resource and scope, then adds only relevant details about site formats, returned fields, and downstream use. It is dense but 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 zero-parameter read-only listing tool with no output schema, the description provides enough detail: what it lists, which sites and formats are covered, what fields are returned, and how to use the slate_id. Nothing essential for correct invocation appears to be 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 there are no parameter semantics to document. With an empty input schema, the baseline score is 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 states exactly what the tool returns: UFC/MMA DFS slates for the next card, with site-specific DraftKings and FanDuel formats plus the fields included. It is specific enough that an agent can distinguish this as the slate-listing tool among the many MMA 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?
It gives clear downstream usage: use the returned slate_id with mma_projections and mma_optimizer. It does not explicitly state when not to use this tool or name alternatives, but the next-card scope and downstream handoff make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_matchupsUFC fighter matchupsBRead-onlyIdempotentInspect
Side by side profile for each bout on the next UFC card: age, height, reach, stance, Elo, UFC record by method (KO, submission, decision wins and losses), significant strikes landed and absorbed per minute, striking and takedown accuracy and defense, takedowns, submissions and knockdowns per 15 minutes, control time, average fight length, DK and FD career average points and the last 5 fights with DK points, plus the simulated outcome table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| fighter | No | Fighter name or part of it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds the meaningful scope constraint that this is limited to the next UFC card (not historical bouts), but omits pagination, freshness or how the simulated outcome table is produced. This is moderate added context over the structured 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 purpose is front-loaded in the opening clause before the field inventory. The single long sentence is dense, but with no output schema the field enumeration substitutes for one and largely earns its length; it could still be split for readability.
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 correctly compensates by spelling out the returned payload in detail, and parameters plus safety annotations are handled in structured fields. The one real gap is the absence of usage/routing guidance against the crowded mma_* sibling set.
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% for both parameters (limit with its plan-limit caveat, and fuzzy fighter name matching), so the schema does the heavy lifting. The description adds no parameter guidance of its own, 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 names the resource precisely — a side-by-side bout profile for the next UFC card — and enumerates the exact data fields returned, so an agent knows this is a stat-heavy per-bout lookup. It stops short of distinguishing itself explicitly from overlapping siblings like invoke_mma_elo, invoke_mma_fight_sim or invoke_mma_projections, which the field list partially (but not explicitly) overlaps.
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?
There is no when-to-use or when-not-to-use guidance and no alternative is named. The description implies usage by describing the payload, but with nine sibling mma_* tools an agent gets no routing help for choosing this over invoke_mma_elo or invoke_mma_fight_sim.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_oddsUFC odds comparisonARead-onlyIdempotentInspect
DraftKings and FanDuel sportsbook prices for every bout on the next UFC card: moneyline, method of victory, goes the distance, total rounds, round betting and fighter props (significant strikes, takedowns), with the time each price was pulled. Each bout also carries the BankrollSZN model probabilities (win, KO, submission, decision, distance). For the best price and expected value per market use mma_fight_sim. Prices refresh several times a day.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| market | No | Only this market. | |
| fighter | No | Fighter name or part of it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/idempotentHint/destructiveHint already declaring a safe read, the description adds genuinely new context: prices refresh several times a day (freshness expectations) and each price carries the time it was pulled. It does not discuss auth, plan limits beyond the schema's 'plan limit applies,' or pagination, so 4 rather than 5.
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, front-loaded with what the tool returns, then enrichment (model probabilities), then the routing hint and freshness note. Dense but every sentence carries information; the market enumeration is slightly long but justified for a comparison tool.
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?
No output schema exists, and the description compensates well by enumerating the returned markets, the accompanying BankrollSZN model probabilities, and price timestamps. Only freshness pagination behavior and the meaning of 'plan limit' remain unaddressed, which is minor.
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 schema fully documents limit, market, and fighter, including the enum. The description's list of markets echoes the enum values and adds no syntax or formatting detail beyond the schema, so the baseline 3 applies.
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-and-resource: retrieves DraftKings and FanDuel prices for every bout on the next UFC card, and enumerates the exact markets returned. This clearly separates it from invoke_odds_comparison and invoke_mma_projections, which an agent can distinguish without opening any schema.
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?
Explicitly routes the agent: 'For the best price and expected value per market use mma_fight_sim,' naming the alternative and the condition that selects it. It stops short of stating when NOT to use this tool or how it relates to invoke_odds_comparison, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_optimizerUFC DFS lineup optimizerARead-onlyIdempotentInspect
Builds the highest projected UFC lineups for a DraftKings or FanDuel slate with an exact solver. DraftKings: 6 fighters under $50,000. FanDuel: the top fighter in each lineup is the MVP (1.5x points), 5 more fighters, under $100. Options: number of lineups, minimum unique fighters between lineups, maximum fighters from the same bout, lock and exclude by name, objective (projection, ceiling or a blend) and a cap on total ownership. Returns each lineup with salary, projection, ceiling and total ownership, plus the exposure of each fighter.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | Fighter names that must be in every lineup. | |
| site | No | dk = DraftKings, fd = FanDuel. Picks that site's main slate when slate_id is not given. | |
| count | No | Number of lineups, 1 to 20. Default 5. | |
| exclude | No | Fighter names to leave out. | |
| slate_id | No | Slate id from mma_list_slates, for example dk:154571 or fd:552. Default: the DraftKings main slate of the next card. | |
| objective | No | proj (default, cash games), ceil (85th percentile, tournaments) or blend (65 percent projection, 35 percent ceiling). | |
| min_salary | No | Minimum salary used, in site units (dollars on DK, FanDuel dollars on FD). | |
| min_unique | No | Minimum different fighters between any two lineups, 1 to 6. Default 2. | |
| contest_type | No | Contest type for projected ownership. Default 150max. | |
| max_per_fight | No | Maximum fighters from one bout, 1 or 2. Default 1. | |
| max_total_own | No | Maximum sum of projected ownership in a lineup, in percent (0 = off). For tournaments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral value beyond that: it discloses the exact solver, the platform-specific lineup rules (DK 6 under $50k; FD MVP 1.5x, 5 more under $100), and the returned fields, which matters since there is 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?
Three dense sentences, front-loaded with the core action and platform rules, with no filler. The platform-rules sentence is long but each clause carries usable constraint 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 an 11-parameter solver with no output schema and no required params, the description covers the domain rules, the option set, and the return payload (lineup salary/projection/ceiling/ownership plus fighter exposure). Nothing an agent needs to invoke it correctly 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 coverage is 100%, so the baseline is 3. The description goes further by tying parameters to domain meaning the schema omits — lock/exclude by name, the objective blend ratio, ownership cap semantics, and the DK/FD lineup structures that govern count and min_unique behavior.
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 (Builds) and resource (UFC lineups) with an exact solver, and names the two supported platforms. It is clearly the MMA member of the optimizer sibling family (invoke_lol_optimizer, invoke_nba_optimizer, etc.) without needing to open a schema.
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?
Gives clear usage context: objective=proj is for cash games, ceil for tournaments, and max_total_own is flagged 'For tournaments'. However, it never names an alternative tool (e.g. invoke_mma_projections or invoke_mma_sim_picks) or states when NOT to use it, so it stops short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_projectionsUFC DFS projections and ownershipARead-onlyIdempotentInspect
UFC DraftKings and FanDuel projections for the next card. Each fighter: salary, projection, floor (15th percentile), ceiling (85th) and 95th percentile, chance of 100+ DK points, value per $1K, projected ownership for the chosen contest type, win / KO / submission / decision / round 1 probabilities, chance the fight goes the distance, expected significant strikes, takedowns and control seconds, moneyline, Elo and odds basis. Projections start from the betting market (DraftKings and FanDuel sportsbook moneyline, method of victory and round odds, de-vigged), then add each fighter's strike, takedown and control rates against what the opponent allows. Backtest on 2,267 UFC fights 2021-2026: DraftKings mean miss 30.9 points vs 35.6 for a last-5 average. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | dk = DraftKings, fd = FanDuel. Picks that site's main slate when slate_id is not given. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| fighter | No | Fighter name or part of it. | |
| sort_by | No | Default proj. leverage = ceiling rank minus ownership rank. | |
| slate_id | No | Slate id from mma_list_slates, for example dk:154571 or fd:552. Default: the DraftKings main slate of the next card. | |
| contest_type | No | Contest type for projected ownership. Default 150max. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, and the description layers on meaningful extra context beyond them: the data refresh cadence (every 30 minutes), the derivation method (de-vigged sportsbook market plus opponent-adjusted strike/takedown/control rates), and a backtest benchmark (30.9 vs 35.6 mean miss). This is well beyond the annotation-implied safety profile.
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?
Front-loaded with a one-line statement of what the tool returns, followed by context. The field enumeration and methodology/backtest sentences are dense but each carries information an agent needs (returned columns, provenance, freshness). Slightly long, but no clear waste.
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?
No output schema exists, so the description must convey the return shape — and it lists the per-fighter fields (projection, floor, ceiling, ownership, win/KO/submission probabilities, etc.) plus data source and refresh cadence. For a read-only projection tool this is complete enough to call 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 all six parameters (site, limit, fighter, sort_by, slate_id, contest_type) are already documented in the schema, including enum meanings and defaults. The description adds nothing parameter-specific beyond a passing reference to 'the chosen contest type', so the baseline 3 applies.
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 and resource: UFC DraftKings/FanDuel projections for the next card. The DFS-specific fields it enumerates (salary, value per $1K, projected ownership, leverage-adjacent metrics) clearly set it apart from sibling tools like invoke_mma_odds, invoke_mma_elo and invoke_mma_fight_sim, which cover the betting and simulation angles separately.
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?
Usage is only implied: it says 'for the next card' and mentions the slate/contest-type defaults, so an agent can infer this is the DFS-projection tool. However, there is no explicit when-to-use versus alternatives (e.g., invoke_mma_odds, invoke_mma_fight_sim, invoke_mma_optimizer) and no prerequisites or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_sim_picksUFC fight sim picks and graded recordBRead-onlyIdempotentInspect
BankrollSZN UFC fight sim: every bout on the next card simulated 20,000 times round by round. Win, KO, submission and decision chances for each fighter, the round the fight ends in, goes the distance and total rounds chances next to the de-vigged DraftKings and FanDuel prices, the model picks (moneyline and method props live, total rounds paper) and the graded record with closing line value. view card (default) or history.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| fighter | No | Fighter name or part of it. | |
| include_paper | No | Include paper (non-published) picks like total rounds. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds useful context that moneyline and method props are 'live' while total rounds picks are 'paper' (non-published), which exceeds the annotations. Beyond that it largely enumerates output content rather than disclosing freshness, limits, or auth needs.
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?
It opens with the core identity, but the bulk is a single long run-on sentence with heavy comma enumeration of outputs. It is information-dense without filler, yet not cleanly structured or front-loaded for scanning.
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?
No output schema exists, so the description must carry the return-value burden and does so well, enumerating win/KO/submission/decision chances, end round, distance, total rounds, de-vigged DraftKings/FanDuel prices, picks, and graded record with CLV. For a read-only analytics tool this is nearly complete; only freshness/limit context 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 75%, so the schema carries most of the load (limit and fighter are documented there). The description only adds meaning for 'view' by stating card is the default and history is the alternative, which the enum alone doesn't disclose. This is about the expected baseline when the schema does the heavy lifting.
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 resource (UFC fight sim across the next card) and verb (simulate 20,000 times, return chances/picks/graded record), so an agent knows exactly what comes back. It distinguishes itself in spirit from single-fight or odds siblings by emphasizing sim picks + graded record. It does not, however, explicitly name a sibling like invoke_mma_fight_sim or invoke_mma_odds to sharpen the boundary.
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 closing phrase 'view card (default) or history' gives the two operating modes and the default, which is light usage guidance. There is no explicit when-to-use-this-vs-alternatives statement nor any exclusions relative to the many sibling MMA tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_mma_upsetsUFC upset board and underdog leverageARead-onlyIdempotentInspect
Every underdog on the next UFC DraftKings main card: sportsbook moneyline and how far it moved since open, win chance, KO, submission and round 1 finish chances, DraftKings and FanDuel points if he wins, salary, projected ownership by contest type, and leverage (his share of the card win chances divided by his share of projected ownership; above 1.00 the field owns him less than his win chance says). Also the expected number of underdog wins on the card and the 2021-2026 history: about 3.2 underdog wins per card, at least one on 95.5 percent of cards, and an underdog winner averaged 93.8 DK points against 97.7 for a favorite winner. Underdogs won 31.0 percent of fights against 31.6 percent implied by closing odds, so this is DFS leverage, not a betting edge.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | dk = DraftKings, fd = FanDuel. Picks that site's main slate when slate_id is not given. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | Default leverage. | |
| contest_type | No | Contest type for projected ownership. Default 150max. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the board is scoped to the next main card, leverage is defined as win-chance share divided by ownership share, and the explicit caveat that underdog outcomes are DFS leverage rather than a betting edge steers how the result should be used.
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?
Front-loads the resource and scope before the field list, and the field enumeration is dense but earns its place for a tool with no output schema. The historical-stat sentence is verbose (3.2 wins per card, 95.5%, 93.8 vs 97.7 points) and the key 'not a betting edge' caveat is buried at the end rather than surfaced.
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 fully compensates by enumerating every returned field, defining the derived leverage metric, and supplying base rates that let an agent interpret results. Scope (next main card), default site context, and the interpretive caveat round it out; nothing needed to call or explain the tool 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%, including enum explanations and defaults, so the schema already carries the parameter burden. The description adds conceptual meaning for two of them (leverage as a sortable metric, ownership varying by contest type) but no syntax or format detail beyond the schema, so baseline 3 applies.
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 resource and scope: 'Every underdog on the next UFC DraftKings main card,' then enumerates exactly which metrics come back (moneyline and movement, win/KO/sub/R1 chances, DK/FD points, salary, ownership, leverage). This is self-differentiating from siblings like invoke_mma_odds or invoke_mma_projections, which do not produce an underdog-only leverage board.
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 closing clause 'this is DFS leverage, not a betting edge' plus the leverage definition and historical base rates give clear context for when the output is appropriate. It stops short of naming alternatives (e.g., invoke_mma_odds for straight odds work) or stating exclusions, so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_foul_riskNBA foul trouble riskARead-onlyIdempotentInspect
NBA foul trouble risk for each player on today's slate (or the next slate when today has no games), from the BankrollSZN foul model (foul-v1.0). For each player: projected minutes, salary, fouls per 36 minutes over the last 30 games (and the rate shrunk toward his position), the opponent's free throw attempts per game and index, home or away, expected fouls, the chance of 4, 5 and 6 fouls (p4, p5, p6), and a risk tier (High, Elevated, Normal, Low). Tested out of sample on 2025-26: top fifth predicted 10.0% to reach 5 fouls vs 10.8% actual. Early in the season the rates use last season's games. Refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NY or SA. | |
| tier | No | Only this risk tier. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, or part of a name. | |
| sort_by | No | Default p5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive behavior, and the description adds substantial context beyond that: model version, data recency, fallback slate behavior, early-season rate handling, and out-of-sample calibration. There is no contradiction with the annotations.
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 front-loaded and dense with useful content, especially the output field list, which is necessary because there is no output schema. It is somewhat run-on in the first sentence, but overall most information 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?
Given the absence of an output schema and the complexity of the tool, the description is complete: it enumerates returned fields, explains model provenance and refresh cadence, covers early-season behavior, and provides calibration evidence. An agent has enough context to call and interpret it 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 input parameters are fully documented in the schema. The description focuses on output fields and model behavior rather than adding meaning to the input parameters, which is the baseline case when the schema already does the heavy lifting.
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 resource and scope: foul trouble risk for each NBA player on today's slate, with a defined fallback to the next slate. It clearly distinguishes itself from general NBA projection or rotation tools by focusing on foul risk outcomes and the BankrollSZN foul model.
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 temporal context (today's slate, or next slate if today has no games) and freshness (refreshes every 30 minutes), which implies when the data is applicable. However, it does not explicitly say when to use this versus sibling tools like invoke_nba_projections or invoke_nba_rotations, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_injuriesNBA injury reportARead-onlyIdempotentInspect
NBA injury report with an impact score from 1 to 10: player, team, position, status, injury note, estimated return, games missed in a row, DK points, minutes, usage, points, rebounds and assists per game, whether the absence is priced in, a new-team flag, and the teammates who gain the minutes and usage. Sorted by impact. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example LAL or BOS. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, or part of a name. | |
| status | No | Status filter, for example Out or Questionable. | |
| min_impact | No | Least impact score, 1 to 10. | |
| plays_today | No | Only teams that play today. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower, and the description adds genuinely useful behavior: results are sorted by impact and data refreshes every 30 minutes, which affects caching/staleness decisions. It omits rate limits and the concrete 'plan limit' interaction hinted at in the limit parameter.
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?
Purpose and impact-scoring concept are front-loaded in the first clause, followed by a dense field inventory and the refresh note. It is one long sentence, but with no output schema the field list earns its space; only the trailing teammate clause feels slightly padded.
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 return-value burden and does so thoroughly, listing every field plus sort order and refresh interval. The remaining gap is usage context — when an agent should prefer this over the other NBA tools — but the payload description is 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 description coverage is 100%, so all six filters (team, limit, player, status, min_impact, plays_today) are already documented, setting the baseline at 3. The description's 'impact score from 1 to 10' reinforces the min_impact semantics but adds no new filter syntax or default behavior.
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 the resource (NBA injury report) and enumerates the exact payload — impact score 1-10, player, team, status, DK points, usage, priced-in flag, teammates who gain minutes — which makes the tool's output unmistakable. It is clearly distinct from stat siblings like invoke_nba_projections or invoke_nba_foul_risk, though it never explicitly names those alternatives.
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?
There is no when-to-use guidance: no statement of what question this answers, no exclusions, and no reference to the many adjacent NBA siblings (invoke_nba_rotations, invoke_nba_projections, invoke_nba_foul_risk). The 'priced in' field hints at DFS lineup use but the agent must infer it. Only the refresh cadence gives any operational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_optimizerNBA DraftKings lineup optimizerARead-onlyIdempotentInspect
Builds DraftKings NBA classic lineups from the BankrollSZN projections, with locks (any order, up to all 8 players), excludes, unique lineups, a salary floor, an ownership cap and a per-team cap. contest_type (cash, single, 3max, 20max, 150max) applies the same preset as the site optimizer: mode, ownership penalty, salary floor and that contest type's ownership. Cash scores projection plus 0.25 x floor. Returns DK ids in slot order.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | ||
| mode | No | ||
| exclude | No | ||
| lineups | No | ||
| slate_id | No | ||
| min_salary | No | ||
| min_unique | No | ||
| own_lambda | No | ||
| contest_type | No | Preset from the site NBA optimizer. Explicit mode, own_lambda and min_salary override it. | |
| max_per_team | No | ||
| questionable | No | How to score a questionable player. play (default): his if-he-plays line and ownership. expected: play chance x if-he-plays line. out: leave him out. | |
| max_total_own | No | ||
| cash_floor_weight | No | Cash only: floor points added per point of floor. Default 0.25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses meaningful behavior: contest_type applies the site preset (mode, ownership penalty, salary floor, contest ownership), explicit parameters override it, and cash mode scores projection plus 0.25 x floor. It does not mention runtime, lineup generation limits, or failure modes if constraints are infeasible.
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 dense sentences with no filler and the core purpose is front-loaded. The second sentence stacks several preset/formula clauses, making it slightly heavy to parse but every clause adds real 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 13-parameter tool with no output schema, the description covers most constraints but omits how to obtain slate_id and player identifiers for lock/exclude, and does not state whether lineups are returned as a list or aggregated string. Adequate, but an agent still has unresolved questions before a first 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?
With only 23% schema description coverage across 13 parameters, the description carries most of the load and does so for locks, excludes, unique lineups, salary floor, ownership cap, per-team cap, and contest_type override semantics. Still unexplained are slate_id (source and format), the lineups count, and the exact id format expected by lock/exclude.
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+resource ('Builds DraftKings NBA classic lineups') and the data source ('BankrollSZN projections'), which cleanly separates it from sibling tools like invoke_nba_projections, invoke_nba_player_pool, or the other sports' optimizers. Roster size (8 players) and output ('DK ids in slot order') are also stated.
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?
Usage is only implied: it's clear you call it to construct lineups, but there is no explicit when/when-not guidance, no mention of an alternative (e.g. build manually from invoke_nba_projections), and no prerequisites such as where slate_id or player ids must come from. The contest_type sentence explains behavior, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_paceNBA pace and possessionsARead-onlyIdempotentInspect
NBA pace for today, calculated by BankrollSZN from box scores. Possessions per 48 minutes (overtime removed). view games (default) gives each game today with projected pace, the gap to the league average (vs_league), a tier (Up, Neutral, Slow), a flag when the market total and the pace disagree, the total, spread and moneylines, both teams' pace ratings and ranks, and actual pace once played. view teams gives all 30 teams: pace rating (half season, half last 10), season, last 10 and last 5 pace, last season pace, offensive, defensive and net rating, combined points per game and rank. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example LAL or NY. | |
| tier | No | games view: only this tier. | |
| view | No | Default games. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | teams view sort. Default rank. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds genuine context the annotations cannot: the data source (box scores), the definition of pace with overtime removed, and a 30-minute refresh cadence. It does not mention auth requirements or pagination behavior.
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?
Front-loaded with the core definition, then a dense but substantive enumeration of return fields. Given there is no output schema, the field listing earns its place, though the single run-on paragraph could be split for scanability.
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 full burden of describing return values, and it does so thoroughly for both views. Combined with the refresh cadence and pace definition, an agent has everything needed to call it 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 coverage is already 100%, so baseline is 3, but the description adds meaning beyond the schema labels: it defines what the 'tier' enum values (Up/Neutral/Slow) represent, what each 'view' returns, and that sort_by applies to the teams view. This is real added value over bare enum lists.
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 resource (NBA pace/possessions for today), the computation method (from box scores, possessions per 48 minutes with overtime removed), and the source. An agent can immediately distinguish this from invoke_nba_projections, invoke_nba_rotations, or invoke_nfl_pace.
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?
Clearly explains the two operating modes and what each returns, letting the agent pick 'games' (default, per-game pace vs market totals) or 'teams' (all 30 teams with ratings). It does not, however, say when to reach for this tool instead of related NBA siblings such as projections or sim_picks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_player_indexNBA Player Index: player vs system valueARead-onlyIdempotentInspect
NBA Player Index, calculated by BankrollSZN: splits each player's DraftKings points per 36 minutes into player_value (above an average player on an average team), system_lift (what the current team adds through coaching, pace and scheme) and teammate_drag (what strong teammates who use the same possessions take away). Also usage share, trend vs the season before, a star with / without split (DK points per game when the team's top player sat minus when he or she played) and an archetype: Difference maker, System product, Rising, Blocked by teammates, Fading, Neutral. view players (default; give player for one player with season history), systems (team lift, latest season) or step_up (biggest gains when the star sits, 5+ games). Model on regular season games since 2022-23. Backtest: error 3.71 vs 4.41 for a regressed last-season baseline for players who changed teams. A ranking of who is real and who rides the team, not a nightly projection. Updated daily in season.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation. | |
| view | No | Default players. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| offset | No | Paid plans: next page offset from page.next_offset. | |
| player | No | Player name, or part of a name. | |
| sort_by | No | Default player_value. | |
| position | No | ||
| sort_dir | No | ||
| archetype | No | ||
| new_team_only | No | Only players who changed teams since their last game (NBA only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a safe read (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description still adds real behavioral context: model scope (regular season since 2022-23), freshness (updated daily in season), and an accuracy backtest (3.71 vs 4.41 baseline). It omits any return/format or pagination behavior, but that gap is minor given the annotation coverage.
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?
It is front-loaded with the metric definition before moving to views and provenance, and most sentences carry load-bearing information about the data model. It is somewhat dense and includes promotional/backtest material that is not strictly needed to call the tool, but nothing is truly wasted.
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 10-parameter read tool with no output schema, the description defines the returned metrics, the archetype categories, freshness, and model scope, which is most of what an agent needs. Return shape and pagination handling are left to the schema, which is acceptable given there is no output schema to lean on.
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 70%, so the schema already documents most fields. The description earns extra credit by expanding the view enum with real meaning (systems = team lift for latest season; step_up = gains when the star sits over 5+ games) and by noting the player param accepts part of a name, which goes beyond the terse schema strings.
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 resource (NBA Player Index) and verb-level detail: it decomposes DK points per 36 into player_value, system_lift and teammate_drag. It also explicitly distinguishes itself from the nearest sibling by declaring it is 'a ranking of who is real and who rides the team, not a nightly projection,' which separates it from invoke_nba_projections.
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 enumerates the three views and when each applies: players (default; pass player for a single player's season history), systems (team lift, latest season), and step_up (biggest gains when the star sits, 5+ games). That is clear context for selecting a mode, but it never names an alternative tool to use instead, so exclusions are implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_player_poolNBA player pool for lineup buildingBRead-onlyIdempotentInspect
The full NBA DraftKings classic pool for one slate in compact form, with DK ids. Roster PG, SG, SF, PF, C, G, F, UTIL, $50,000 cap. A questionable player's proj, ceiling and minutes are his play chance (play_p) times his if-he-plays line; the if_plays_proj, if_plays_ceiling, if_plays_floor and if_plays_min columns give that line.
| Name | Required | Description | Default |
|---|---|---|---|
| slate_id | No | ||
| min_projection | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive. The description adds real interpretive value: it explains that questionable players' proj/ceiling/minutes are play_p times the if-plays line, and names the if_plays_* columns - behavior an agent couldn't infer from annotations alone.
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?
Front-loaded with what the tool returns, then roster format, then the projection caveat. Dense but every sentence carries information relevant to interpreting the result.
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 does explain the key return columns (play_p scaling and if_plays_* fields), which is valuable. But it omits the meaning of both input parameters and any pagination/scope behavior for slate selection, leaving meaningful gaps.
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 0% and the description never mentions the two parameters (slate_id, min_projection) or their format/effect. It describes output columns instead of input semantics, so it fails to compensate for the undocumented schema.
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 specifically that it returns the full NBA DraftKings classic pool for one slate in compact form, with DK ids, and describes the roster format. Clear verb+resource, though it doesn't explicitly differentiate from siblings like invoke_nba_player_index or invoke_nba_projections.
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?
Implies usage for lineup building via the roster format and $50,000 cap context, but never explicitly says when to use this vs invoke_nba_projections, invoke_nba_player_index, or invoke_nba_optimizer. No exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_projectionsNBA DFS projectionsBRead-onlyIdempotentInspect
BankrollSZN NBA DFS projections for the main DraftKings classic slate: minutes, DK points, floor, ceiling, value, ownership, salary and injury status. Before the season it says no slate is built yet.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | ||
| sort_by | No | ||
| position | No | ||
| slate_id | No |
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 two useful behavioral facts: the set of returned metrics and the pre-season no-slate response. It does not describe pagination, rate limits, or how the plan limit interacts with results.
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 compact sentences, front-loaded with the core purpose and returning-metrics list. The second sentence, the pre-season behavior, earns its place as an edge-case warning, though it is slightly tangential.
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 usefully names the returned metrics. But for a six-parameter tool with 17% schema coverage, it leaves most filter semantics undocumented, so an agent still lacks enough information to filter by team, player, position, or slate.
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 only 17% (only 'limit' is documented), leaving team, player, position, slate_id, and sort_by without explanation. The description lists output fields rather than clarifying input filters, and only implicitly hints at slate_id via 'main DraftKings classic slate'. It does not compensate for the coverage gap.
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 and resource ('NBA DFS projections') and enumerates the returned metrics (minutes, DK points, floor, ceiling, value, ownership, salary, injury status), which is informative. It also scopes the source to the main DraftKings classic slate. It does not, however, explicitly separate itself from nearby siblings like invoke_nba_player_pool or invoke_nba_props.
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?
There is no explicit when-to-use guidance and no alternatives named among the many projection/pool/optimizer siblings. The only usage-adjacent statement is the pre-season edge case ('Before the season it says no slate is built yet'), which is helpful but not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_propsNBA player props vs projectionsARead-onlyIdempotentInspect
NBA player prop lines for the next slate: points, rebounds, assists, threes, steals and blocks. One main line per player and market (the line closest to even odds), over and under American odds, the no-vig over probability, and the BankrollSZN projection for that stat with the gap to the line (bsz_minus_line, positive means the projection is over the line) and projected minutes. Lines refresh every 20 minutes during the day.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NY or OKC. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| market | No | Only this market. | |
| player | No | Player name, or part of a name. | |
| sort_by | No | edge sorts by the absolute gap between projection and line. Default edge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real context: only ONE main line per player/market is returned (closest to even odds), not all available lines, plus a 20-minute refresh cadence. That prevents a common misinterpretation. It stops short of stating auth/plan constraints beyond what the schema for 'limit' already says.
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?
Front-loaded with the what/scope, then return fields, then the sign convention for bsz_minus_line, then refresh cadence. Dense but each clause carries information; slightly long for a single unbroken paragraph but no filler sentences.
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?
There is no output schema, so the description carries the full load of explaining returns — and it does: markets, one line per player/market, over/under odds, no-vig probability, projection, gap sign convention, and projected minutes. Combined with fully documented filter parameters, an agent has everything needed to call and interpret it.
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 all five parameters (team, limit, market, player, sort_by) are already documented, including the 'edge' sorting semantics. The description's market list mirrors the enum rather than extending it, so it adds little 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'NBA player prop lines for the next slate' with the exact markets enumerated, so an agent knows it returns market lines rather than pure model output. It does not explicitly name invoke_nba_projections (the sibling most likely to be confused with it), leaving differentiation to inference from the returned fields.
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?
Usage is implied by the content ('prop lines ... over and under American odds ... projection gap'), which suits betting/edge analysis, but there is no explicit when-to-use, when-not, or pointer to alternatives like invoke_nba_projections or invoke_odds_comparison. Adequate but leaves routing to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_rotationsNBA minutes and rotationsBRead-onlyIdempotentInspect
Average minutes and plus minus per player across the most recent NBA games in the feed, with the last game date.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example LAL. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example LeBron James. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful scope by saying the data covers the most recent games in the feed and includes the last game date, but it does not clarify pagination, limit interaction, or data completeness. This is moderate added value, not rich behavioral detail.
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 efficient sentence that front-loads the returned metrics. It contains no filler, though it could be slightly more explicit about scope and default behavior.
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 retrieval tool with no output schema and full schema descriptions, the description adequately conveys the returned content. However, it omits default limit behavior and sibling routing, leaving it only minimally complete for an agent choosing among many NBA tools.
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 team, limit, and player parameters are fully documented in the input schema. The description does not add syntax, default, or filtering semantics beyond what the schema already provides, so 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 the resource and returned metrics: average minutes and plus-minus per player across recent NBA games, with last game date. It is clear what the tool provides, but it does not distinguish itself from nearby siblings like invoke_nba_projections or invoke_nba_player_pool.
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?
There is no explicit guidance on when to use this tool versus alternatives. It does not mention invoke_wnba_rotations, invoke_nba_projections, invoke_nba_player_pool, or any condition for choosing rotation averages over other NBA data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nba_sim_picksNBA game sim picks and graded recordARead-onlyIdempotentInspect
BankrollSZN NBA game sim: every NBA game today simulated 20,000 times. Model points for each team, win, spread cover and over chances next to the de-vigged FanDuel price, the published BankrollSZN price (80 percent market, 20 percent sim), missing-player value for each team and the model picks (moneyline live, spread and total paper) with the graded record and closing line value. view today (default) or history.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example LAL or NY. | |
| view | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| include_paper | No | Include paper (non-published) spread and total picks. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description adds real behavioral context beyond that: the 20,000-run simulation basis, the 80/20 market/sim price blend, and which picks are live vs paper. It stops short of stating auth or rate-limit behavior.
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?
Front-loaded with what the tool is and how it works, and every clause carries information. It is a single dense run-on sentence, though, which slightly hurts scannability versus short distinct sentences.
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 return-value burden and does it well, enumerating points, win/spread/over chances, the two price columns, missing-player value, picks and the graded record with CLV. Only the 'team' and 'limit' semantics are lightly covered.
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 75%, so most parameters are already documented. The description reinforces the default 'today' view and clarifies paper ('non-published') spread/total picks, but adds little on 'team' or 'limit' beyond the schema, so baseline 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: it simulates 'every NBA game today 20,000 times' and returns model points, win/spread/over chances, prices and graded picks. The NBA qualifier alongside the sim_picks family (mlb/mma/nfl/nhl siblings) makes clear which sport this covers without opening a schema.
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 notes the 'view today (default) or history' switch, which guides the parameter choice, but gives no guidance on when to reach for this tool over the many adjacent NBA siblings (projections, props, optimizer) or any prerequisites. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_air_yardsNFL air yards and target shareBRead-onlyIdempotentInspect
Receiving opportunity by player: targets, air yards, aDOT, target share, air yards share, WOPR, RACR, YAC and PPR points. week 0 is season to date.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| week | No | 0 = season to date (default). | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | ||
| position | No | Position filter, for example QB, RB, WR, TE, DST. FLEX means RB, WR and TE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), lowering the bar. The description adds the season-to-date semantics of week 0, but that is repeated in the schema and it says nothing about return shape, pagination, or how the 'plan limit' interacts with the limit parameter.
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?
It is a compact two-sentence entry that leads with the resource and then the week-0 caveat. The metric list is somewhat enumerative but every item earns its place by documenting the returned fields in the absence of an output schema.
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 usefully lists the returned metrics and notes the season-to-date behavior, which partially compensates. However, it omits any guidance on default sorting, filtering interplay, or how it differs from sibling NFL stat tools, leaving the agent without enough to choose it confidently.
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 80%, so the schema already documents team, week, limit, and position, and the enum on sort_by. The description adds no syntax or format detail beyond what the schema provides; its metric list describes return values rather than parameter meaning. Baseline 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 names the resource precisely ('Receiving opportunity by player') and enumerates the specific metrics returned (targets, air yards, aDOT, target share, WOPR, RACR, etc.), so an agent knows exactly what data comes back. It does not, however, distinguish this from nearby siblings like invoke_nfl_player_pool or invoke_nfl_projections, so an agent cannot route between them from the text alone.
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?
There is no when-to-use guidance, no statement of prerequisites, and no mention of alternatives among the many NPLAYER/NFL siblings. The only contextual hint is 'week 0 is season to date,' which is a parameter note rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_coverage_splitsNFL coverage and pass defenseBRead-onlyIdempotentInspect
Two parts. Current season: each defense's blitz rate, average pass rushers and 8+ box rate this season. Prior full season: receiver production against man and zone coverage and each defense's man and zone rates (man/zone charting is released only after a season ends).
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | ||
| position | No | Position filter, for example QB, RB, WR, TE, DST. FLEX means RB, WR and TE. | |
| min_targets | No | Default 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, idempotent, non-destructive profile, so the bar is low. The description still adds real value beyond them: it discloses the two-part structure (current season vs prior full season) and the critical availability constraint that man/zone charting is only released after a season concludes.
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 front-loaded sentences opening with 'Two parts,' which frames the structure before the detail. Every clause carries content with little waste, though the second sentence is dense.
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 usefully sketches the returned data (the two seasonal parts and the timing constraint). However, for a 5-parameter tool it leaves filtering/sorting behavior and when-to-use entirely to inference, so it is adequate but incomplete.
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 80%, so the schema already documents team, limit, position and min_targets. Notably the sort_by enum has no description in either the schema or the description, and the metrics (blitz rate, 8+ box, ypt_man/ypt_zone) are only implied by the body text rather than mapped to parameters. Baseline 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 names a specific resource and its two distinct data layers: current-season defensive blitz rate, average pass rushers and 8+ box rate, plus prior-season receiver production vs man/zone and defensive man/zone rates. This is highly distinctive content, but it never names or contrasts a sibling tool (e.g., invoke_nfl_dvp, invoke_nfl_personnel), so it stops short of explicit differentiation.
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?
There is no statement of when to reach for this tool versus the many other NFL defensive/personnel tools. The only contextual hint is the timing caveat that man/zone charting ships after a season ends, which clarifies availability but not selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_dvpNFL defense vs positionBRead-onlyIdempotentInspect
DraftKings and FanDuel points allowed per game by each defense to each position, with ranks (rank 1 allows the most).
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| position | No | Position filter, for example QB, RB, WR, TE, DST. FLEX means RB, WR and TE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral detail beyond annotations: the rank direction (rank 1 allows the most), which prevents misreading the output. It stops there, offering no note on scope, pagination, or how the limit interacts with the data.
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 front-loaded sentence that conveys the data sources, the metric, the grain, and the rank convention with no filler. Nothing could be removed without losing 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?
With no output schema, the description does carry the burden of explaining returns, and it does so reasonably (points allowed per game plus ranks). The only gap is the absence of any note about how the limit parameter shapes results or what the row grain looks like in practice.
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%, with team, limit, and position all documented including the FLEX expansion. The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.
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 resource (points allowed per game by each defense to each position) and specifies the scoring sources (DraftKings and FanDuel), which is more precise than the title alone. It does not, however, differentiate itself from the many sibling NFL data tools (e.g., coverage_splits, personnel), so the agent gets no routing signal from the text itself.
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?
There is no when-to-use guidance, no prerequisite conditions, and no named alternative. The description only characterizes the data, not when an agent should prefer this tool over the other NFL defensive/matchup tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_eloNFL Elo ratingsARead-onlyIdempotentInspect
BankrollSZN NFL Elo: individual player ratings by position, team offense units and team defense by position. track fpts rates DK points, track eff rates points per opportunity. Player ratings are a ranking tool, not a projection input.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| group | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| track | No | ||
| position | No | Position filter, for example QB, RB, WR, TE, DST. FLEX means RB, WR and TE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, so the safety profile is covered. The description adds that ratings are a ranking tool rather than projection input and defines the two track metrics, but it omits return format, pagination behavior, and any access constraints.
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 front-loaded sentences covering dataset identity, metric meanings, and a key caveat. It is efficient, though the metric sentence is slightly fragmentary and could be clearer.
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 dataset tool with no output schema, the description sufficiently explains the content categories returned: player ratings, team offense, team defense, and tracked metrics. It does not detail exact row structure, but annotations and schema handle safety and filters.
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 documents team, limit, and position, while the description adds meaning for the group values by describing players, offense, and defense outputs. It also explains the track enum by defining fpts as DK points and eff as points per opportunity, which compensates for the 60% schema description coverage.
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 identifies a specific dataset: NFL Elo ratings covering individual player ratings by position, team offense units, and team defense by position. It also implicitly distinguishes from projection tools by stating ratings are a ranking tool, not a projection input, though it does not name a specific sibling alternative.
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 provides one useful exclusion: ratings are not a projection input, which implies a ranking use case. However, it does not explicitly say when to choose this tool over siblings such as invoke_nfl_projections or invoke_nfl_player_pool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_game_matchupNFL game matchupARead-onlyIdempotentInspect
One NFL game breakdown from the BankrollSZN Matchups page: lines, our numbers, Monte Carlo picks, prop leans, player Elo, DVP, coverage, personnel and injuries. Pass a game like PHI@CHI or one team. Without arguments it lists this week's games.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | ||
| team | No | Team abbreviation, for example KC or PHI. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds valuable return-content context (what data categories come back), which matters since there is no output schema, but it says nothing about pagination, data freshness, or auth needs.
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?
Purpose and scope are front-loaded in the first sentence, followed by the two invocation modes. The data enumeration is a bit list-heavy but each item conveys the breadth of the breakdown, and there is no redundant 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?
With no output schema, the description correctly carries the burden of describing returned content and both input modes. It is nearly complete for a read-only aggregation tool, though it leaves an agent unsure how it relates to the narrower sibling tools covering the same categories.
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 only 50% — the 'game' param has no schema description at all. The description compensates by specifying the format ('PHI@CHI') for game and clarifying that 'team' accepts a single team, which the schema's 'KC or PHI' example reinforces. This meaningfully fills the coverage gap.
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 and resource: 'One NFL game breakdown from the BankrollSZN Matchups page', then enumerates the bundled data (lines, Monte Carlo picks, Elo, DVP, coverage, personnel, injuries). This is clear, but it does not distinguish itself from sibling sub-tools like invoke_nfl_line_matchups, invoke_nfl_elo, or invoke_nfl_dvp whose content appears folded into this one.
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 says how to invoke ('Pass a game like PHI@CHI or one team') and what happens with no arguments ('lists this week's games'), which is useful implied usage. But it gives no when-to-use guidance relative to alternatives — an agent cannot tell whether to call this versus the single-purpose NFL tools it aggregates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_injuriesNFL injury reportARead-onlyIdempotentInspect
NFL injury report for the current week with an impact score from 1 to 10: player, team, opponent, position, status (Out, Doubtful, Questionable), DK salary, starter flag, average targets, carries and target share, kickoff, and the teammates who gain the work (beneficiaries with the before and after volume). Sorted by impact. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, or part of a name. | |
| status | No | Injury status. | |
| position | No | Position. | |
| min_impact | No | Least impact score, 1 to 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only, idempotent, and non-destructive. The description usefully adds behavioral context beyond annotations: data refreshes every 30 minutes, results are sorted by impact, and the output includes beneficiary before/after volume, which is important for interpreting the report.
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 front-loads the purpose and scope, then lists the returned fields and refresh cadence. It is dense and enumerative, but the field list is justified because no output schema exists, so there is little wasted 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?
With six optional parameters, full schema coverage, and no output schema, the description supplies the missing return-value context by naming the report fields, sorting order, impact scale, and data freshness. That is sufficient for an agent to understand what the tool returns and how current the data is.
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 all six parameters are already documented in the input schema. The description repeats the impact score range and status values but does not add filter-combination semantics or other meaning beyond the schema, making 3 the appropriate baseline.
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 a specific resource and scope: an NFL injury report for the current week, including impact scores and detailed player/team fields. It does not, however, distinguish this tool from the related sibling invoke_nfl_injury_vacancy, which an agent might otherwise consider for injury-related analysis.
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 weekly scope and impact-sorted output imply the tool's usage for current NFL injury analysis, but there is no explicit guidance on when to choose this over invoke_nfl_injury_vacancy or other injury-related siblings. The description provides context but no alternatives, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_injury_vacancyNFL injury vacancy boardCRead-onlyIdempotentInspect
Each skill player listed out, doubtful or on IR, the work he leaves per game, the teammates the projection this week gives more work, and a flag when the absence is already in the teammates' season averages. Also flags an injured player the projection still gives work.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| new_only | No | ||
| position | No |
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 safety is covered by structured data. The description adds useful behavioral context about the returned flags (absence already baked into teammates' season averages, injured players the projection still uses), but says nothing about ordering, limit interaction, or what 'new_only' actually filters.
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 that are compact but poorly front-loaded: the purpose is never stated up front, and the second sentence ('Also flags an injured player the projection still gives work') restates the flag concept from the first sentence rather than adding new 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 4-parameter tool with no output schema and low schema coverage, the description should define the parameters and clarify the output contract. It gestures at return contents but leaves three parameters and the limit/plan-limit behavior unexplained, so an agent cannot call it confidently.
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 25% – only 'limit' is documented – and the description mentions none of 'team', 'new_only', or 'position'. With a boolean 'new_only' that is unexplained anywhere, the description fails to compensate for the coverage gap.
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 implies a board of NFL skill players who are out/doubtful/IR plus the vacated workload, but it never states a clear verb+resource and opens mid-thought with 'Each skill player listed out...'. It does not distinguish this tool from the sibling invoke_nfl_injuries, so an agent cannot tell the two apart from the text alone.
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?
There is no when-to-use, when-not-to-use, or alternative guidance. Given that invoke_nfl_injuries, invoke_nfl_start_sit, and invoke_nfl_projections all touch the same domain, the absence of any routing rule is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_line_matchupsNFL OL vs DL pass rush and run blocking matchupsARead-onlyIdempotentInspect
NFL offensive line vs defensive line matchups for the current week, ranked by pass rush edge, plus RB run blocking. view matchups (default) gives one row per pass rush vs offensive line: dl_rank, ol_rank (1 = best, injuries included), expected pressure rate, expected sacks, expected big events, edge (expected sacks, interceptions and fumbles above an average matchup, per game), tier, injured OL starters and pass rushers, top rushers, and the result once played. The same row carries the run game for off_team running at def_team: run_block_rank (1 = best run blocking line), run_d_rank (1 = toughest run defense), run_edge (adjusted line yards per RB carry above league), run_tier (Big run edge, Run edge, Neutral, Run D edge, Big run D edge), exp_rb_ypc, rb_rush_yds_vs_avg and rb_result. view teams gives all 32 DL and OL ranks with season pressure, sack and blitz rates and OL starters, plus run_block_rank, run_d_rank and season RB YPC and YPC allowed. Use it for DST picks, quarterback pocket risk and RB matchups. Refreshes every 3 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | dl sorts biggest pass rush edges first (default); ol sorts biggest offensive line edges first. | |
| team | No | Team abbreviation; matches either side of a matchup. | |
| tier | No | ||
| view | No | Default matchups. | |
| limit | No | Maximum rows to return. The plan limit applies on top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds freshness ('Refreshes every 3 hours') and notes that ranks include injuries, which the agent would not otherwise know. It does not discuss auth or what happens when no rows match, but the annotation coverage lowers the burden.
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?
Front-loaded with purpose and view split, and every clause carries real information since there is no output schema to describe fields. However, it is one dense run-on paragraph with long field enumerations that would be easier to scan if segmented.
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 and zero required parameters, the description carries the full burden of explaining returns, and it does so field-by-field for both views, including edge definitions and tier vocabularies. An agent has enough to call it and interpret results without extra lookups.
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 80% so the baseline is 3, and the description earns above that by explaining what 'view teams' returns versus 'view matchups' and by defining the meaning of dl_rank/ol_rank and the run-tier labels. It leaves 'side' and 'limit' semantics to the schema, which already documents both.
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 resource and scope: NFL OL vs DL matchups for the current week, split into two named views (matchups and teams) with exactly what each returns. An agent can tell this apart from generic siblings like invoke_nfl_game_matchup or invoke_nfl_personnel because the description names line-vs-line pressure/run-blocking ranks explicitly.
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?
Gives concrete use cases: DST picks, quarterback pocket risk and RB matchups, which tells the agent what question this tool answers. It does not name an alternative tool or state when NOT to use it (e.g., versus invoke_nfl_dvp or invoke_nfl_coverage_splits), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_list_slatesNFL slatesARead-onlyIdempotentInspect
Lists the upcoming DraftKings NFL slates (classic and showdown) with slate_id, label and date. Call this first to get a slate_id for the projection, pool and showdown tools.
| 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 context by naming the payload fields (slate_id, label, date) and the 'upcoming' scope, though it omits things like whether results are paginated or how empty results appear. Solid additional context against a lower bar set by annotations.
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 tight sentences, zero filler; the purpose is front-loaded and the caller guidance follows immediately. Every clause carries independent information (scope, variants, returned fields, sequencing).
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 compensates by enumerating the returned fields (slate_id, label, date) and the workflow role, which is enough for a simple zero-param read tool. Minor gap: it does not state how to behave when no slates are upcoming or whether the list is paginated.
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 there is nothing to disambiguate and the baseline of 4 applies. The description correctly implies a no-argument call, matching the empty input schema.
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 and resource ('Lists the upcoming DraftKings NFL slates') and even enumerates the slate variants (classic and showdown) plus the fields returned. It is unambiguously distinguishable from the other sport-specific list_slates siblings (mlb/mma/nhl/wnba) via the NFL 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?
Explicitly prescribes when to call it: 'Call this first to get a slate_id for the projection, pool and showdown tools.' This tells the agent both the ordering (first) and the downstream consumers (projection, pool, showdown), which is exactly the routing guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_optimizerNFL DraftKings lineup optimizerARead-onlyIdempotentInspect
Builds DraftKings NFL classic lineups under the $50,000 cap: QB, 2 RB, 3 WR, TE, FLEX, DST. Every lineup has a QB stack and a bring-back in the shapes of the contest preset (the same presets as the site NFL optimizer), and never rosters the DST that plays against its own QB. gpp scores ceiling minus an ownership penalty, cash scores projection. The search is exact. Returns DK ids in upload order.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | ||
| mode | No | ||
| exclude | No | ||
| lineups | No | ||
| slate_id | No | ||
| bring_back | No | ||
| min_salary | No | ||
| min_unique | No | ||
| own_lambda | No | ||
| stack_size | No | ||
| stack_teams | No | ||
| contest_type | No | ||
| max_total_own | No | ||
| min_projection | No | ||
| allow_dst_vs_stack | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnly, idempotent, non-destructive) already cover the safety profile, so the bar is lower, and the description still adds rich behavior: mandatory QB stack and bring-back, the DST-vs-QB exclusion rule, gpp scoring ceiling minus ownership penalty vs cash projection, exact search, and 'returns DK ids in upload order'. Only runtime/rate-limit details are absent, keeping it just below a 5.
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?
Dense but front-loaded: it leads with what is built (lineup/cap/roster) before construction constraints and scoring models. Every sentence carries information, though the jargon-dense middle ('bring-back in the shapes of the contest preset') is harder to parse than the opening.
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?
It covers output format ('DK ids in upload order') well enough given no output schema, and explains construction constraints. But for a 15-parameter tool with 0% schema coverage and no annotations explaining params, the definition is not complete enough to guide correct invocation of most arguments.
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?
With 15 parameters and 0% schema description coverage, the description must carry the burden, but it only indirectly illuminates a few: mode (gpp/cash scoring), contest_type presets, bring_back/stack shapes, and allow_dst_vs_stack via the DST rule. Names like lock, exclude, slate_id, min_salary, min_unique, own_lambda, max_total_own, and min_projection are left entirely undefined.
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+resource ('Builds DraftKings NFL classic lineups') with the exact cap, roster slots, and construction rules. This clearly distinguishes it from sibling optimizers (e.g., invoke_nfl_showdown, invoke_mlb_optimizer) without the agent needing to open any schema.
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 through the gpp/cash mode contrast and the 'same presets as the site NFL optimizer' framing, giving a sense of context. However, it never explicitly states when to choose this tool over alternatives such as invoke_nfl_showdown or invoke_nfl_sim_picks, nor when to prefer gpp vs cash. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_ownership_by_contestNFL ownership by contest typeCRead-onlyIdempotentInspect
Projected DraftKings NFL ownership for one classic slate adjusted to a contest type (150-Max base, 20-Max, 3-Max, Single Entry). Shows the 150-Max number, the contest number and the change. The multiplier source says whether it is measured or a research prior.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| limit | No | ||
| sort_by | No | ||
| position | No | ||
| slate_id | No | ||
| contest_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, idempotent profile, lowering the bar. The description adds genuinely useful context about the return shape ('shows the 150-Max number, the contest number and the change') and the multiplier-source semantics (measured vs research prior), but omits auth needs, rate limits, and any slate-scoping behavior.
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, front-loaded with the core purpose and no filler. The output-content and multiplier sentences are compact and each adds information, though the mechanics could be ordered slightly more clearly.
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 6 parameters, 0% schema coverage, and no output schema, the description should do substantially more. It covers contest_type and sketches the return fields, but leaves five parameters undocumented and provides no pagination, ordering, or filter semantics an agent needs to invoke it 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 coverage is 0% across 6 parameters, so the description must carry the load. It documents only contest_type and its enum values; team, limit, sort_by, position, and slate_id are left entirely unexplained, so most parameters remain opaque to the agent.
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+resource: 'Projected DraftKings NFL ownership for one classic slate adjusted to a contest type.' The sport and 'ownership by contest' scope separate it from siblings like invoke_nfl_projections or invoke_nfl_player_pool, though it never explicitly contrasts with invoke_mlb_ownership_by_contest or other shared-sport 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?
It explains what a contest type is and enumerates the four values, but gives no guidance on when to choose this tool over alternatives (e.g. invoke_nfl_sim_picks, invoke_nfl_optimizer, invoke_nfl_player_pool) and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_paceNFL pace and play volumeARead-onlyIdempotentInspect
NFL pace for the current week. view games (default) gives each game with projected combined plays, the gap to the league average, a tier (Up in pace, Neutral, Slow), a flag when the market total and the pace disagree, the total and spread, each team's pace over expected, and actual plays once played. view teams gives all 32 teams: plays per game, plays faced, combined plays, snap differential, neutral seconds per play, neutral pace over expected (negative is faster), neutral pass rate and PROE, explosive play rate and pace ranks. Updated daily.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NO. | |
| tier | No | ||
| view | No | Default games. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, idempotent read, so the description's added value is real: it discloses data freshness ('Updated daily'), the default view behavior, and the shape of the output per view. It still omits whether results are scoped to the current slate only or seasonal, and how limit interacts with the plan cap.
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?
Purpose and default view are front-loaded, and the long field enumerations earn their space by substituting for a missing output schema. The sentences are dense and list-heavy, but nothing is redundant.
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 return-value burden and does so for both views, plus freshness. It is only partially incomplete: pagination/limit behavior and the time scope of 'current week' versus history are not stated.
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 60%, but the description compensates meaningfully: it defines the two view modes (games default vs teams), lists the tier values that correspond to the tier enum ('Up in pace, Neutral, Slow'), and explains the sign convention for neutral pace over expected ('negative is faster'). Only sort_by and the team parameter's semantics are left entirely to the schema.
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 opens with a specific verb+resource ('NFL pace for the current week') and enumerates what each view returns, so an agent knows precisely what data this yields. It does not, however, differentiate itself from adjacent siblings such as invoke_nfl_proe or invoke_nfl_game_matchup, leaving the boundary between pace data and PROE/matchup data to inference.
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?
'view games (default)' and 'view teams gives all 32 teams' implicitly tell the agent which view fits a game-level vs league-wide question. There is no explicit when-to-use guidance, no statement of when this tool is preferable to invoke_nfl_proe or invoke_nfl_game_matchup, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_personnelNFL personnel splitsCRead-onlyIdempotentInspect
Two parts. Current season: each offense's estimated 2+ TE (heavy) rate from TE snap shares, plus play action, motion and RPO rates. Prior full season: receiver usage in light (0-1 TE) versus heavy personnel, targets per route and target share.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| position | No | Position filter, for example QB, RB, WR, TE, DST. FLEX means RB, WR and TE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds real behavioral context by defining the 'heavy' (2+ TE) and 'light' (0-1 TE) buckets and clarifying the two-part current-season/prior-season structure, but it says nothing about scope limits, row counts, or how the limit/plan caps interact.
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 dense, front-loaded sentences with essentially no filler; the 'Two parts' framing immediately orients the reader. The telegraphic, verb-less style is slightly awkward but every clause carries 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 tool with no output schema, the description does describe the content of both result sections reasonably well. However, with moderate complexity and a sibling invoke_nfl_personnel_epa, it omits invocation context and sibling differentiation, leaving the agent adequate but not complete information.
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 team, limit, and position are already fully documented in the schema; baseline 3 applies. The description adds no additional parameter meaning (e.g., how position filters the personnel splits), so it neither compensates nor detracts.
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 specifies the returned data in detail (heavy-personnel rate, play action/motion/RPO rates, receiver usage in light vs heavy) but never states an action verb, so the agent must infer that this tool retrieves NFL personnel splits. The content is specific enough to distinguish it from invoke_nfl_personnel_epa, but the purpose is expressed as a data inventory rather than a clear statement of what the tool does.
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?
There is no when-to-use guidance, no mention of when this is preferable to invoke_nfl_personnel_epa or invoke_nfl_coverage_splits, and no indication of prerequisites. The agent gets no routing signal at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_personnel_epaNFL team personnel EPABRead-onlyIdempotentInspect
One team's EPA by personnel grouping and defensive package, on offense or on defense, for the latest charted season.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | ||
| team | Yes | Team abbreviation, for example KC or PHI. |
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 safety is covered. The description usefully adds the temporal constraint that data is for the 'latest charted season,' but says nothing about return shape or whether the side defaults, which matters since there is 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?
A single front-loaded sentence packs the resource, breakdown dimensions, side, and scope with zero filler. Nothing could be trimmed without losing 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?
With no output schema and one undocumented parameter, the description should say more about what the returned EPA breakdown looks like and how side behaves when omitted. It is adequate for a simple stats lookup but leaves the return contract underspecified.
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 only 50%: team is documented with an example (KC/PHI), but the side parameter has an enum with no description. The phrase 'on offense or on defense' does clarify the meaning and valid values of side, adding value over the bare enum, but does not compensate fully for the undocumented parameter.
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 resource (EPA) broken down by personnel grouping and defensive package, scoped to one team and a season. It is clearly a stats-lookup distinct from the raw invoke_nfl_personnel sibling, though it does not explicitly name that sibling to sharpen the distinction.
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?
There is no guidance on when to reach for this tool versus alternatives such as invoke_nfl_personnel or invoke_nfl_dvp. The agent must infer usage from the resource being returned, with no prerequisites or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_player_indexNFL Player Index: player vs system valueARead-onlyIdempotentInspect
NFL Player Index for WR, TE and RB. Splits each player's PPR points per game into player_value (above an average player in an average offense), system_lift (what his current QB and head coach add) and teammate_drag (what strong same-position teammates take away). Also role tier (WR1, WR2, WR3, TE1, TE2, RB1, RB2), value_vs_role, route_profile (route tree on targets, not alignment), trend vs last season and an archetype: Difference maker, System product, Up-and-comer, Rising, Blocked by teammates, Fading, Neutral. view players (default; give player for one player with season history), systems (coach and QB lift, grp REC or RB) or coach_roles (average WR1/WR2/TE1/RB1 season per head coach). A ranking of who is real and who rides the offense, not a weekly projection. Updated twice a week.
| Name | Required | Description | Default |
|---|---|---|---|
| grp | No | systems and coach_roles views. Default REC (pass catchers). | |
| role | No | ||
| team | No | Team abbreviation, for example LA. | |
| view | No | Default players. | |
| block | No | systems view filter. | |
| coach | No | coach_roles view: head coach name, or part of it. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| offset | No | Paid plans: next page offset from page.next_offset. | |
| player | No | Player name, or part of a name. | |
| sort_by | No | Default player_value. | |
| position | No | ||
| sort_dir | No | ||
| archetype | No | ||
| route_profile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, so the safety burden is covered. The description adds useful behavioral context: updated twice a week, scope limited to WR/TE/RB, and it is a ranking rather than a weekly projection.
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?
Despite its length, the description is front-loaded with the core purpose and metric definitions, then covers views and caveats. Every clause carries information, though a bulleted structure would improve readability.
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 and 14 parameters, the description enumerates the returned fields (player_value, system_lift, etc.) and view modes, so an agent knows what to expect. It omits pagination details and auth needs, but annotations and schema descriptions cover those.
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 64%, and the description adds meaning beyond the schema for several parameters: it explains the three view modes, what 'player' does, and the concepts behind role/route_profile/archetype filters. It does not clarify limit/offset, sort_dir, position, or block beyond what the schema already 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?
States a specific resource (NFL Player Index for WR, TE, RB) and decomposes its output into named metrics. It explicitly contrasts itself with a sibling category ('not a weekly projection'), so an agent can distinguish it from projection 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?
Gives explicit guidance for the view parameter (players default, give player for single-player history; systems for coach/QB lift; coach_roles for coach averages) and a when-not ('not a weekly projection'). However, it does not name alternative tools or say when to choose this over invoke_nfl_player_pool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_player_poolNFL player pool for lineup buildingARead-onlyIdempotentInspect
The full playable pool for one slate in compact form (name, position, team, opponent, salary, projection, ceiling, ownership, dk_player_id), for building DraftKings or FanDuel lineups under the salary cap. Premium returns the whole pool. Players ruled out are removed.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | ||
| slate_id | No | ||
| min_projection | No | Drop players projected below this. Default 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, idempotent profile, but the description adds genuinely non-obvious behavior: 'Premium returns the whole pool' (a tier gating detail) and 'Players ruled out are removed' (implicit filtering). These are real behavioral traits beyond the structured fields.
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 tight sentences, front-loaded with what the tool returns and the fields it contains. The dense parenthetical field list is efficient, though it slightly crowds the opening sentence.
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 usefully enumerates returned fields (name, position, team, opponent, salary, projection, ceiling, ownership, dk_player_id), so an agent knows the shape of the payload. The remaining gap is parameter-level detail for site and slate_id.
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 only 33% (only min_projection is documented), so the description should compensate. It implies a single-slate scope ('one slate') which maps loosely to slate_id, and 'under the salary cap' hints at salary/projection fields, but it says nothing about the site enum (dk/fd) or slate_id semantics.
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?
Names a specific resource (the full playable pool for one slate) and enumerates the returned fields, plus the concrete use case of building DK/FD lineups. It is clearly distinguishable from siblings like invoke_nfl_projections or invoke_nfl_optimizer, though it never explicitly contrasts itself with invoke_nfl_player_index.
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 building DraftKings or FanDuel lineups under the salary cap' implies the use case, but there is no explicit when-to-use-this-vs-alternatives guidance (e.g., versus invoke_nfl_projections for projections only, or invoke_nfl_optimizer). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_proeNFL pass rate over expectation (PROE)ARead-onlyIdempotentInspect
NFL pass rate over expectation for all 32 teams this season: pass_rate, exp_pass_rate, proe, proe_neutral (competitive game script), proe_red_zone with play counts, proe_last_4, proe_prior_season and proe_projected. Values are fractions (0.056 = +5.6 percent). Pass team for the week by week trend. Updated daily.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | ||
| sort_dir | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description adds value beyond that: values are fractions with a worked example (0.056 = +5.6 percent), data is 'Updated daily', and passing a team returns a week-by-week trend rather than the full-team table.
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?
Front-loaded with the purpose and the return-field inventory, followed by the units convention and team-filter behavior. It is dense from the metric list but every sentence carries information; 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?
With no output schema, the description carries the return-value burden and does so by naming the fields returned and their units, plus the refresh cadence. The gaps (limit behavior, sort_dir semantics) are minor for a read-only listing 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 description coverage is low (25%) with 4 params, but the description clarifies the 'team' parameter's behavior (week-by-week trend) and the metric meaning of several sort_by enum values via the field list. It says nothing about limit or sort_dir, so it only partially compensates for the schema gap.
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 resource (NFL pass rate over expectation) for a defined scope (all 32 teams this season) and enumerates the returned metrics, so an agent knows exactly what data this yields. It does not explicitly differentiate itself from metric-adjacent siblings like invoke_nfl_pace or invoke_nfl_air_yards, so it lands at 4 rather than 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?
Usage is implied rather than stated: the tool returns team-level PROE and 'Pass team for the week by week trend' hints at the team-filtered mode. There is no explicit when-to-use/when-not guidance and no named alternatives among the many NFL siblings, so it is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_projectionsNFL DFS projectionsARead-onlyIdempotentInspect
BankrollSZN NFL DFS projections for a DraftKings classic slate or the FanDuel main slate: median, floor, ceiling, projected ownership, boom and bust rates, value per $1K, Vegas implied total, spread and injury status. Defaults to the DK main slate.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | ||
| team | No | Team abbreviation, for example KC or PHI. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | ||
| position | No | Position filter, for example QB, RB, WR, TE, DST. FLEX means RB, WR and TE. | |
| slate_id | No | ||
| include_out | No | Include players ruled out. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds the default-slate behavior ("Defaults to the DK main slate"), which is useful beyond annotations, but says nothing about pagination, rate limits, or how limit interacts with the plan cap.
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?
Purpose is front-loaded and the metric list is dense but informative, followed by a short default note. The long enumeration of projected fields is somewhat heavy, but every item maps to a real output field, so it 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?
No output schema exists, so the description carries the burden of describing returns, and it does so thoroughly by naming all projected metrics. Combined with annotations covering the safety profile and the schema covering most parameters, the definition is largely complete, with only minor gaps around pagination and default limits.
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 57%, an intermediate level, giving a baseline of 3. The description reinforces the site parameter via the slate framing but does not clarify sort_by, limit, slate_id, team, position, or include_out beyond what the schema already conveys.
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 resource (NFL DFS projections) and enumerates exactly what is projected: median, floor, ceiling, ownership, boom/bust rates, value, Vegas total, spread, injury status. An agent can immediately distinguish this from siblings like invoke_nfl_sim_picks, invoke_nfl_player_pool, or invoke_nfl_optimizer.
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 specifies the applicable contexts (DraftKings classic slate, FanDuel main slate) and the default (DK main slate), which is real usage framing. However, it offers no explicit when-to-use/when-not-to-use guidance versus related NFL tools, so selection between siblings 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.
invoke_nfl_propsNFL player props vs BankrollSZN projectionsARead-onlyIdempotentInspect
This week's NFL player props from FanDuel, DraftKings, BetMGM and Caesars next to the BankrollSZN projection: passing yards, completions, attempts, passing TDs, interceptions, rushing yards, rush attempts, receptions, receiving yards, rushing + receiving yards and anytime TD. Each row shows the consensus line, our projection, the gap, the lean, our chance of the over, the book chance, the best odds and every book's line. Pass player (for example Bijan Robinson) to get every prop plus the full stat projection. Without player it lists the biggest gaps.
| Name | Required | Description | Default |
|---|---|---|---|
| lean | No | Keep only props where our projection leans this way. yes and no apply to anytime TD. | |
| team | No | Team abbreviation, for example ATL. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| market | No | One prop market code: pass_yds, pass_cmp, pass_att, pass_td, pass_int, rush_yds, rush_att, rec, rec_yds, rush_rec_yds or anytime_td. The result lists markets_offered for this week. | |
| player | No | Player name, or part of a name. With a player the tool returns every prop and the full stat projection for that player. | |
| sort_by | No | edge (default) uses diff_pct, or prob_edge when a market has no line. | |
| position | No | ||
| min_books | No | Keep only props priced by at least this many books. | |
| include_started | No | Include games that already started this week. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, and the description adds real behavioral detail beyond them: the exact per-row contents (consensus line, projection, gap, lean, over probability, book probability, best odds, each book's line) and the two distinct result modes. It omits plan-limit or rate-limit behavior, which only appears in 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?
Front-loaded with the source and comparison, then the row contents, then the two invocation modes. The market enumeration is long but directly useful for choosing the market parameter, so it largely 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?
With no output schema, the description carries the return-shape burden and does so by listing every returned column, which is the key missing piece. For a 9-parameter, zero-required tool it leaves only minor gaps such as how limit interacts with the plan limit and team/date scoping.
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 already 89%, so the baseline is 3, but the description adds genuine semantics: player matching returns the full stat projection (a mode interaction across parameters, not just a filter), and the no-player default surfaces the biggest gaps. It does not explain team, min_books or include_started beyond the schema text.
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/resource: this week's NFL player props from named sportsbooks placed next to BankrollSZN projections, with the market list spelled out. It contrasts book lines against model projections, which implicitly separates it from invoke_nfl_projections, but it never names a sibling tool to make that distinction explicit.
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?
Gives clear usage context for the two modes: pass a player to get every prop plus the full stat projection, omit a player to get the biggest gaps. It does not state when a caller should prefer this over invoke_nfl_projections or the league-agnostic invoke_odds_comparison, so there are no exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_roiNFL DFS player and build ROIARead-onlyIdempotentInspect
Real DraftKings NFL contest results graded by BankrollSZN. view players gives each player's ROI, ROI without the top 1 percent finishes (roi_ex1), cash rate, top 1 percent rate, roster share, lineups, salary and DK points. view builds gives ROI by build type: dim stack (QB stacks), bringback, full (stack vs bringback), flex position, and spend thirds per position (spend_QB, spend_RB, spend_WR, spend_TE, spend_DST). view contests lists the graded contests. tier single_entry (default) or three_max; scope season (default) or a week number. ROI 0.25 means +25 percent.
| Name | Required | Description | Default |
|---|---|---|---|
| dim | No | builds view: the build dimension. Default stack. | |
| team | No | Team abbreviation. | |
| tier | No | Contest tier. Default single_entry. | |
| view | No | Default players. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| scope | No | season (default) or a week number such as 3. | |
| player | No | Player name, or part of a name. | |
| sort_by | No | Default roi. | |
| position | No | players view: position. | |
| sort_dir | No | Default desc. | |
| min_lineups | No | Least lineups for a row to count. Default 100 for players, 200 for builds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description adds genuinely useful behavioral context beyond that: the ROI sign convention (0.25 = +25 percent), the meaning of roi_ex1, and default tier/scope/min_lineups behavior reducing result sets.
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?
It is a dense single-block run-on rather than a scannable structure, and the view breakdown, defaults, and ROI convention are all crammed together. The content is largely justified, but the lack of formatting makes it harder to parse than its length alone would suggest.
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 11 optional parameters, no output schema, and no required fields, the description does the work needed: it enumerates what each view returns, states defaults, and clarifies ROI units. It could note result-ordering or pagination behavior, but it is otherwise sufficient to invoke 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 baseline is 3. The description goes further by mapping view values to returned fields and explaining the fractional ROI convention, which the schema does not. Parameters like team, player, and sort_by are left to the schema, keeping it modest but above baseline.
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 resource (NFL DFS contest ROI graded by BankrollSZN) and breaks it into three named views (players, builds, contests) with the metric each returns. An agent immediately knows this retrieves DFS ROI rather than projections or ownership. It does not explicitly distinguish itself from adjacent siblings like invoke_nfl_ownership_by_contest, so it lands at 4 rather than 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?
Describing what each view returns (players = per-player ROI/cash/share; builds = ROI by stack/bringback/flex/spend; contests = graded contest list) gives clear context for choosing the view parameter, and defaults for tier/scope are stated. There is no explicit when-not guidance or named alternative tools, so it stays at 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_showdownNFL showdown poolARead-onlyIdempotentInspect
DraftKings NFL Showdown (captain mode) pool for one game: flex and captain salary, projection, ceiling, captain and flex ownership, optimal captain rate and captain leverage. Pass slate_id or a game like ATL@GB.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | For example ATL@GB. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| slate_id | No |
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 fully covered and the description is not obligated to restate it. It adds the scope constraint of a single game and the captain-mode format, but says nothing about defaults, pagination behavior, or what happens when neither selector is supplied. No contradiction with annotations.
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: the first front-loads the payload contents, the second gives invocation footwork. Nothing is repeated or wasted, and the highest-value information (what data comes back) leads.
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 usefully enumerates the returned metrics (flex/captain salary, projection, ceiling, ownership, optimal captain rate, leverage). The remaining gap is that zero parameters are marked required, so the description only loosely signals that slate_id or game must be provided, and it omits default/pagination behavior.
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 67% and the slate_id property has no schema description at all; the description compensates by stating that slate_id and game are alternate selectors, which is semantics the schema does not convey (and neither is listed as required). It adds the example format for game, matching the schema, but gives no guidance on the limit parameter.
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?
Names a specific product and format ("DraftKings NFL Showdown (captain mode) pool for one game") and enumerates the returned fields, so an agent can tell it apart from generic siblings like invoke_nfl_player_pool or invoke_nfl_ownership_by_contest. It does not explicitly name the closest alternatives, 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 only routing guidance is "Pass slate_id or a game like ATL@GB," which is parameter advice rather than a when-to-use statement. No condition, prerequisite, or named alternative (e.g., invoke_nfl_optimizer, invoke_nfl_list_slates) is given for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_sim_picksNFL model picks and graded recordBRead-onlyIdempotentInspect
The BankrollSZN NFL game-line Monte Carlo picks for the upcoming games (moneyline and total live, spread paper), the model score, total, spread, win and cover chances for each game, and the graded season record in units.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| include_paper | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful context by specifying the return payload (picks, score, total, spread, win/cover probabilities, graded record) and the market nuance ('moneyline and total live, spread paper'), but says nothing about pagination, freshness, or how the season record is scoped.
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 front-loaded sentence that opens with the tool's identity before listing return fields. It is dense but every clause contributes a distinct output field, so little is wasted.
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 usefully enumerates the return contents, and annotations cover the read-only profile. However, with 0% parameter coverage and no usage guidance, an agent still lacks enough to invoke the team filter or include_paper flag confidently.
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 0% for two parameters (team, include_paper), so the description must carry the load. The phrase 'spread paper' loosely hints at the paper-vs-live distinction behind include_paper, but the team filter is never explained and no parameter is documented in terms of format or effect.
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 the resource (NFL game-line Monte Carlo picks) and enumerates the concrete outputs — model score, total, spread, win/cover chances, graded season record in units — so an agent knows exactly what this returns. It does not, however, distinguish itself from near-siblings like invoke_nfl_projections, invoke_nfl_elo, or invoke_nfl_roi, leaving the agent to infer the boundary.
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?
There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The description is purely a content inventory, so routing among the many nfl_* and *_sim_picks siblings is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_start_sitNFL start or sitARead-onlyIdempotentInspect
Season-long fantasy start or sit for the current NFL week: DK points projection with its standard deviation, passing, rushing and receiving yards and touchdowns, receptions, interceptions, team implied total, spread, game total and status. Pass compare with 2 or more names to rank them head to head with the chance each one scores more. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, or part of a name. | |
| compare | No | Two or more player names to compare head to head. | |
| position | No | Position. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, and the description adds real value on top: the 30-minute data refresh cadence and the full list of returned metrics (since there is no output schema). It does not mention auth, plan limits, or default behavior with zero filters.
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?
Front-loaded with the core purpose, then the return fields, then the compare behavior, then refresh cadence. The stat enumeration is dense but earns its place given there is no output schema; only the field list borders on over-listing.
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 tool with no output schema and fully documented params, the description covers purpose, return shape, compare mode, and freshness. It leaves the default result set when no filter is supplied unstated, which is a minor gap for a 0-required-param 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, but the description meaningfully extends the compare parameter beyond its schema text by explaining that it ranks players head to head and reports the chance each scores more. It adds no similar depth for limit or team.
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+resource (season-long fantasy start/sit for the current NFL week) and enumerates the projection fields returned, so an agent knows exactly what it gets. It does not name or differentiate itself from close siblings like invoke_nfl_projections, 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?
It gives one explicit usage rule (pass compare with 2+ names to rank head to head), which is genuinely useful. But it never says when to prefer this over invoke_nfl_projections or invoke_nfl_player_pool, and there are no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_survivorNFL survivor picksARead-onlyIdempotentInspect
Survivor pool board for the current week: win probability (market blended with our sim), public pick share, expected value and future cost of burning each team. Pass used_teams to exclude teams you already used.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| entries | No | Pool size, changes the EV weighting. | |
| used_teams | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, so the bar is lower. The description goes beyond them by disclosing data provenance ('market blended with our sim') and the metrics returned, which is meaningful behavioral context for interpreting the numbers, though it omits freshness/definition of 'current week' and return format details.
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, front-loaded with the resource and scope, then the key parameter caveat. The parenthetical keeps metric provenance compact; nothing is wasted.
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 describing returns, and it names the four key outputs (win probability, public pick share, EV, future cost). It is nearly complete, but leaves out row/column ordering, units, and how the limit interacts with the 'plan limit' mentioned only in the 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 67%, and the description compensates precisely where the schema is silent: used_teams is unexplained in the schema but clarified here as 'exclude teams you already used.' limit and entries are already documented in the schema, so no further semantics are needed.
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 resource and scope — a 'Survivor pool board for the current week' — and enumerates exactly what the board contains (win probability, public pick share, EV, future cost of burning each team). No sibling tool covers survivor pools, so an agent can identify this immediately without opening the schema.
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 context 'survivor pool board' implies when to reach for it, and it tells the agent to pass used_teams to exclude already-used teams. However, it never states when to use this versus other NFL decision tools, nor any exclusions or prerequisites, so usage is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_team_stacksNFL team stack boardARead-onlyIdempotentInspect
One row per team on a DraftKings NFL classic slate: implied team total, game total, spread, the QB with his salary, projection, ceiling and ownership, his top 2 pass catchers, the stack salary, projection, ceiling and summed ownership, and the best bring-back from the opponent. leverage_gap above 0 means the field owns the stack less than its ceiling rank. Use it to pick QB stacks before nfl_optimizer.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | ||
| limit | No | ||
| sort_by | No | ||
| slate_id | No | ||
| contest_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real behavioral value by explaining the derived field: 'leverage_gap above 0 means the field owns the stack less than its ceiling rank,' which is non-obvious. It doesn't say anything about slate scoping or default behavior when slate_id is omitted.
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 column listing is dense but earns its place since no output schema exists, and the actionable guidance is placed at the end rather than buried. It is a single long sentence plus two short ones, 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?
With no output schema, the field enumeration is essential and present. However, for a 5-parameter tool with zero required parameters and no schema descriptions, the description leaves the agent guessing about slate selection, contest_type filtering, and default sort/limit behavior.
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 0% across 5 parameters, so the description must compensate, and it largely does not. It never explains team, limit, slate_id, or contest_type, and gives no hint about when each sort_by mode is appropriate, even though sorting drives how the board is read.
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 the specific resource ('one row per team on a DraftKings NFL classic slate') and enumerates the exact columns returned, so the agent knows precisely what it gets. It is clearly a data-board tool, distinguishable from siblings like invoke_nfl_player_pool or invoke_nfl_optimizer, though it never states the verb explicitly.
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?
Explicit sequencing guidance is given: 'Use it to pick QB stacks before nfl_optimizer,' which tells the agent both the purpose and the order relative to a named sibling. It lacks a when-not condition, and doesn't mention other stack-related siblings such as invoke_nfl_sim_picks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_weatherNFL game weatherARead-onlyIdempotentInspect
Kickoff and game window weather for each NFL game in a week (temperature, wind, gusts, rain chance, roof status) and the BankrollSZN impact on the game total and on QB, WR and RB scoring. Refreshed every morning for all games in the next 8 days.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC or PHI. | |
| week | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the refresh cadence ('Refreshed every morning') and data window ('next 8 days'), which tell the agent how fresh and how far-reaching the data is.
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, front-loaded with the core return content and then the downstream impact. No filler or repetition; efficient for the amount of information conveyed.
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?
No output schema exists, but the description enumerates the key return fields and the derived scoring impact, plus freshness cadence and data window, which is enough for an agent to call it correctly. Minor gap: no guidance on the optional 'week' parameter or default behavior when omitted.
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 only 50%: 'team' is documented in the schema, but 'week' has no description. 'in a week' and 'next 8 days' give contextual meaning to the week parameter, which compensates somewhat, but the description offers no format or constraint details (e.g., valid week range, whether week is optional).
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 resource (weather for each NFL game in a week) and enumerates the returned fields (temperature, wind, gusts, rain chance, roof status) plus derived impact on game total and QB/WR/RB scoring. The sport-specific framing cleanly distinguishes it from sibling invoke_mlb_weather and invoke_pga_weather.
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 scope ('each NFL game in a week', 'next 8 days') implies when the tool is relevant, but there is no explicit when-to-use guidance, no prerequisites, and no routing to alternatives such as the per-sport weather siblings. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nfl_wowyNFL with or without youBRead-onlyIdempotentInspect
Team offense with and without one player (points, yards, EPA per play, success rate, pass rate) and how each teammate's targets, carries and PPR points change when he is out. Pass the player name. Defaults to this season, then last season.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | ||
| player | Yes | ||
| season | No |
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 safety behavior is covered structurally. The description adds useful behavioral context: the metric set returned and the season-defaulting fallback logic. It does not disclose scope edges, rate limits, or what happens when a player has no absence sample, which limits it to an adequate 3.
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 tight sentences: the capability/metrics statement first, then the calling instructions. It is front-loaded and wastes little. The dense parenthetical metric list is justified for an analytics tool.
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 usefully enumerates what is returned, which covers most of the agent's needs. But it leaves the `side` selector unexplained and does not clarify how the teammate-comparison output is structured or scoped, so the definition is adequate rather than 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 description coverage is 0%, so the description carries the full parameter burden. It explains the required `player` and the `season` default behavior, which adds real value. But the `side` parameter (an offense/defense enum) is never mentioned or explained anywhere, leaving one of three parameters entirely undocumented.
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 analytical resource — team offense with/without one player — and enumerates the exact output metrics (points, yards, EPA per play, success rate, pass rate) plus the teammate-usage deltas (targets, carries, PPR points). This is concrete and far from a tautology. However, it never differentiates itself from a very similar sibling like invoke_nfl_injury_vacancy, which an agent would need to disambiguate against.
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?
"Pass the player name. Defaults to this season, then last season." gives concrete calling guidance and fallback behavior, which is genuinely useful. But there is no when-to-use guidance relative to alternatives (e.g., injury_vacancy or player_index), and no stated prerequisites or conditions where this tool is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_corsiNHL Corsi and shot attemptsARead-onlyIdempotentInspect
NHL 5v5 shot attempt stats (Corsi). view games (default) gives tonight's games with each team's CF% and expected shot attempts. view teams gives CF%, CF and CA per game, Fenwick, close-game CF%, zone starts and PDO. view skaters gives CF%, relative CF%, CF and CA per 60, zone starts, time on ice, line and power play unit. view lines gives line and pair CF%. window is blend (default: last season counting as 20 games plus this season), l10 (last 10 games), last (last regular season) or season (this season). CF% above 50 means the team or player drives more shot attempts than it allows.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| view | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| min_gp | No | skaters: least games in the window. Default 10 for last and season, 5 for l10. | |
| player | No | Player name, or part of a name. | |
| window | No | blend (default) mixes last season and this season: last season counts as 20 games, so this season takes over as games are played. | |
| sort_by | No | ||
| position | No | ||
| plays_today | No | skaters: only players whose team plays today. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the default view and window, the blend-window weighting mechanic ('last season counts as 20 games'), and how to interpret CF% above 50.
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 dense paragraph, front-loaded with the tool's purpose and then walking through views and window, with essentially no filler. It is on the long side and could be broken into bullets, but every clause carries usable 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 9-parameter, no-output-schema query tool, the description covers the two ambiguous dimensions (view and window) that an agent must get right, plus metric interpretation. Remaining gaps are minor secondary filters (sort_by, position, plays_today) and pagination/return-shape details.
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 a moderate 67%, and the description meaningfully compensates: it defines the semantics of every 'view' enum value and elaborates the 'window' modes beyond the terse enum labels. It says nothing extra about sort_by, position, min_gp, limit or plays_today, but those are partly covered in the schema.
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+resource ('NHL 5v5 shot attempt stats (Corsi)') and enumerates the four view modes with the fields each returns, so an agent knows exactly what data it yields. It does not differentiate itself from nearby siblings such as invoke_nhl_lines or invoke_nhl_line_matchups, whose 'line' scope overlaps with the 'lines' view here.
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 the default behavior ('view games (default)') and explains what each view returns, which implicitly guides view selection, plus the meaning of window options. However, it never states when to prefer this tool over siblings or any exclusions, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_eloNHL Elo ratingsARead-onlyIdempotentInspect
BankrollSZN NHL Elo: opponent adjusted ratings where 1500 is average and higher is better. view tonight (default) gives each game with the Elo win chance next to the market, the forward and defense unit matchups tagged SMASH, EVEN or TOUGH, the goalie matchups and the best unit matchups of the night with their top rated players. view teams gives power, offense and defense by forwards and defensemen and offense against goalies with ranks. view players gives the skater and goalie leaders. view accuracy gives the backtest. Team units beat a running average in backtests; skater Elo only ties it, so it is a ranking, not a projection, and the NHL projections do not use Elo.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| view | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| position | No | players view: F, D or G. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile. The description adds useful behavioral context beyond annotations: the backtest performance of team units versus skater Elo and the important caveat that skater Elo is a ranking rather than a projection. It does not discuss rate limits, auth, or pagination behavior.
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 core definition is front-loaded and the view breakdown is orderly. The single dense paragraph is efficient overall, though it could be slightly more scannable and the final sentence about backtests, while useful, adds minor length.
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 does the important work of explaining what each view returns. It covers purpose, view modes, and model caveats, but leaves some parameter interactions (team filtering, limit behavior) to the schema and does not describe response format details.
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 75%, and the description thoroughly explains the view enum values (tonight, teams, players, accuracy), which compensates for the missing schema description on that parameter. It does not explain how the team, limit, or position parameters interact with each view, though the schema provides descriptions for those.
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 resource (NHL Elo ratings), explains the scale (1500 average, higher is better), and specifies the four views available. It distinguishes this tool from projection tools by noting that skater Elo is a ranking, not a projection, and that NHL projections do not use Elo.
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?
Clearly explains the default view and what each view returns, giving strong context for selecting between modes. It also implicitly steers agents away from using this for projections, but it does not explicitly name alternative sibling tools or state when not to use this tool beyond that one caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_injuriesNHL injury reportARead-onlyIdempotentInspect
NHL injury report with an impact score from 1 to 10: player, team, position, status, injury, estimated return, DK points per game, time on ice, power play time, whether the absence is priced in, and the teammates who gain the work. By default it shows only teams that play today. Pass team, player or all_teams true for more. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, or part of a name. | |
| all_teams | No | Show every team, also teams not playing today. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, and the description adds useful operational context: the default team filter, the 30-minute refresh cadence, and the DraftKings scoring basis. It does not mention auth or rate-limit behavior, but the added cadence and default-scope disclosure meaningfully exceed the annotations.
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?
Purpose and the default-scope rule are front-loaded, and every sentence carries information. The long enumerated field list is dense but still readable and avoids 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?
With no output schema, the description carries the return-shape burden and does so by listing the report fields, plus discloses default scope, expansion options, and refresh cadence. An agent has everything needed to call and interpret this 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 param descriptions already explain team format, limit, and all_teams semantics. The description's param guidance ('Pass team, player or all_teams true for more') largely restates what the schema provides, so this is the baseline 3.
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+resource ('NHL injury report') and enumerates the concrete fields returned, including an impact score and pricing flag. It is clearly distinguishable from the sibling injury tools for other leagues (nba/nfl/wnba/mma injuries) by league scope.
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?
Explains the default scoping ('shows only teams that play today') and how to widen it ('Pass team, player or all_teams true for more'). It does not name competing alternatives or when-not-to-use cases, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_line_matchupsNHL line matchups and edgesARead-onlyIdempotentInspect
Tonight's NHL forward lines and D pairs with 5v5 on-ice stats per 60 when the players are on the ice together (shot attempts, shots, high danger chances, expected goals, goals; this season plus last season counted as 20 games), the expected share of 5v5 time against each opposing line (home coach has the last change), and a matchup edge: the expected 5v5 xG share against that matchup minus 50. Without team: the lines with edges and a compact card per game. With team: every line and pair plus the team power play, penalty kill and 5v5 rates. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| min_edge | No | Only lines with an edge at or above this. Default none. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety bar is covered. The description adds genuinely useful behavior beyond that: a 30-minute refresh cadence, the 20-game season-plus-last-season window, the last-change/home-coach assumption, and the exact edge formula. Auth or coverage caveats are not mentioned.
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?
Front-loaded with the deliverable and efficient overall, but the opening sentence is heavily nested with parenthetical metric lists, which slows parsing slightly. The with/without-team clauses are well structured and earn their 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?
With no output schema, the description carries the full burden and does so: it enumerates the returned stats, explains the edge computation, documents the two response shapes by team parameter, and notes refresh cadence. An agent has everything needed to call and interpret it.
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, but the description goes further by defining the semantics of min_edge (edge = expected 5v5 xG share against the matchup minus 50) and explaining how the team parameter changes the entire response payload, which the schema alone does not convey.
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 resource (tonight's NHL forward lines and D pairs) with precise metrics (5v5 per-60 rates, expected time share, matchup edge defined as xG share minus 50). It is clearly distinguishable in content from invoke_nhl_team_matchups or invoke_nhl_lines, though it never names a sibling explicitly.
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 clear, actionable context for the two invocation modes: no team returns lines with edges plus a compact per-game card, while supplying a team returns every line/pair plus PP, PK and 5v5 rates. It stops short of stating when to prefer this over alternatives like invoke_nhl_lines or invoke_nhl_team_matchups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_linesNHL lines and stacksARead-onlyIdempotentInspect
NHL line combinations for the teams playing today. With team: that team's forward lines (F1 to F4), defense pairs (D1 to D3), goalies, power play (PP1, PP2) and penalty kill units with projection, shots, points, time on ice and salary per player, plus its line and power play stacks. Without team: the top stacks of the day and a short PP1 and F1 summary per team. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| limit | No | Maximum rows to return. The plan limit applies on top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive safety, so the bar is lower. The description adds genuinely useful behavior beyond that: a 30-minute refresh cadence and DraftKings scoring, which affect freshness and interpretation of projection/salary output. It doesn't mention auth or pagination limits beyond the schema's plan-limit note.
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?
Purpose is front-loaded, followed by the two-mode conditional, then a refresh caveat and scoring note. Every clause carries information (line slots, stat fields, salary, stack behavior); nothing is redundant or padded.
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 2-param read-only tool with full annotation coverage and no output schema, the description compensates by enumerating the returned fields (projection, shots, points, TOI, salary) and the fallback behavior without a team. An agent has enough to call it correctly and interpret results.
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 baseline is 3, but the description adds real meaning beyond the schema by specifying what supplying 'team' actually returns versus omitting it — the schema only says 'Team abbreviation'. That semantic effect of the optional parameter is valuable and not captured in structured fields.
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+resource ('NHL line combinations') and then delineates exact content per usage mode: forward lines F1-F4, defense pairs D1-D3, goalies, PP/PK units, plus stacks. An agent can distinguish it from siblings like invoke_nhl_line_matchups or invoke_nhl_projections without opening a schema, since the output composition is spelled out.
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?
Provides clear conditional guidance through the 'With team:' / 'Without team:' split, telling the agent exactly which call shape yields team-specific lines vs. the day's top stacks. It does not name alternative tools or state exclusions (e.g., when to prefer invoke_nhl_team_matchups instead), so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_list_slatesNHL DraftKings slatesARead-onlyIdempotentInspect
The DraftKings NHL slates of the day: classic and showdown slates with slate_id, label, games, start time and player count. The main classic slate is marked is_main. Call this first to get a slate_id. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, and the description adds genuinely useful context beyond that: the 30-minute refresh cadence, the returned field set, and the is_main marker for the primary classic slate. It does not state pagination or error behavior, but for a read-only discovery call this is solid 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?
Front-loaded with the resource and its returned contents, then the is_main rule, then the call-first directive and refresh cadence. Nearly every clause carries information, though "DraftKings scoring" as a trailing fragment is slightly clipped and redundant with 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 describing return values and does so explicitly (slate_id, label, games, start time, player count), plus the refresh interval and the is_main convention. This is complete enough to invoke and interpret 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?
The tool takes zero parameters, so the baseline is 4. Nothing in the description is needed to explain inputs, and it introduces no parameters that could confuse an agent.
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+resource (list the DraftKings NHL slates) and enumerates the returned fields, which clearly distinguishes it from the many sibling list_slates tools (mlb, nfl, mma, wnba). An agent can immediately tell this is the NHL slate-discovery 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?
"Call this first to get a slate_id" gives explicit sequencing guidance, implying downstream NHL tools depend on this output. It stops short of naming a specific alternative (e.g. the optimizer or showdown tools that consume slate_id), so it is clear but not fully routing-capable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_odds_propsNHL odds and player propsARead-onlyIdempotentInspect
NHL game odds for today (moneyline, puck line, total, win chance and implied goals per team) and player props (shots, goals, points, assists, power play points) with the line, over and under prices, the book and the BankrollSZN projection. Pass player for one player and every line of the ladder. Without player, it lists the main lines with the biggest gap between our projection and the line. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| market | No | ||
| player | No | Player name, or part of a name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely new operational context: a 30-minute refresh cadence, the inclusion of book and projection sources, and the default sort/selection logic when no player is supplied. It does not mention pagination or how the plan limit truncates results (that detail lives only in 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?
Three sentences, front-loaded with what is returned, then the with/without-player behavior, then freshness. Each sentence carries information. It is dense but not padded, with only minor redundancy between the opening enumeration and the prop list.
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 does the work of explaining the returned fields (line, over/under prices, book, projection) and the default result set, which is what an agent needs to call and interpret it. The remaining gaps are minor: no team-filter usage note and no explicit sibling routing.
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 75%, and the uncovered gap is the market enum, which the description does cover by listing shots, goals, points, assists and power play points. It also explains player semantics (single player returns the full ladder, partial names accepted) beyond the terse schema text. Team and limit add no meaning beyond the schema, keeping it out of 5 territory.
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?
It names the resource and enumerates the exact payload (game odds with moneyline/puck line/total/win chance/implied goals, plus props with line, prices, book and BankrollSZN projection). That is far more specific than a tautology and lets an agent tell it apart from invoke_nhl_projections or invoke_odds_comparison by content. It stops short of explicitly naming a sibling to route away from, so it lands at 4 rather than 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?
"Pass player for one player and every line of the ladder. Without player, it lists the main lines with the biggest gap..." gives precise conditional behavior for the key parameter. It does not state when to prefer this over invoke_nhl_lines, invoke_nhl_projections or invoke_odds_comparison, so the alternative-routing element is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_optimizerNHL lineup optimizerARead-onlyIdempotentInspect
Builds DraftKings NHL classic lineups (C, C, W, W, W, D, D, G, UTIL under $50,000, players from at least 3 teams and 2 games) from the BankrollSZN projections. gpp mode stacks a line or power play unit: pass stack like EDM PP1 or TOR F1, or leave it empty and the optimizer tries the top stacks of the slate by 90th percentile and keeps the best. It never rosters a goalie against its own stack, and no lineup has 2 or more skaters against its goalie (one is allowed). contest_type sets which ownership the gpp penalty and the ownership cap use. Supports locks, excludes, several lineups, a salary floor, an ownership cap and a per-team cap. Returns DK ids in slot order. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | Player names that must be in every lineup. | |
| mode | No | gpp scores ceiling minus an ownership penalty and stacks. cash scores the projection with no stack. Default gpp. | |
| stack | No | A stack to force, team plus unit, for example EDM PP1, TOR F1 or VGK F2. none turns stacking off. | |
| exclude | No | Player names to leave out. | |
| lineups | No | Number of lineups, 1 to 5. The free plan gets 1. Without stack, each lineup uses a different stack. | |
| slate_id | No | slate_id from nhl_list_slates. Default: the main classic slate. | |
| min_salary | No | Least salary to use. Default 45000. | |
| min_unique | No | With a forced stack or no stacking: players each lineup must differ from every lineup before it. Default 3 for gpp, 1 for cash. | |
| own_lambda | No | Ownership penalty in points per ownership percent for gpp. Default 0.15. This is a starting value, not a preset measured on contests. | |
| contest_type | No | Ownership contest type. 150max (default) is the large field baseline. 20max, 3max and single adjust projected ownership with multipliers measured on DK contests, renormalized so the total stays the same. Early season leans on the NFL contest curve. | |
| max_per_team | No | Most players from one team. Default 5. | |
| max_total_own | No | Cap on the summed ownership of the lineup, in percent. | |
| stacks_to_try | No | gpp without stack: how many of the top stacks to try. Default 6, most 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a safe read-only, idempotent, non-destructive operation, and the description still adds substantial behavioral detail beyond them: goalie-vs-own-stack prohibition, the one-skater-against-goalie allowance, 30-minute data refresh, DK-id-slot-ordered returns, and the caveat that own_lambda is a starting value rather than a contest-measured preset. That is rich context the structured fields do not carry.
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?
One dense paragraph, but it front-loads the roster shape and hard constraints first, then modes, then optional knobs. Given 13 parameters and no required fields, the length is justified; every clause conveys a constraint or default rather than filler, though the single-block format is slightly wall-of-text.
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 13-parameter optimizer with no output schema, the description covers the return contract ('Returns DK ids in slot order'), the constraint envelope, defaults, data freshness, and mode-dependent behavior. An agent has everything needed to invoke it correctly; no significant gap remains.
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, but the description adds cross-parameter meaning the schema does not: what happens when stack is empty (optimizer tries top stacks by 90th percentile and keeps the best), how min_unique interacts with a forced stack, and how contest_type drives the ownership model and multipliers. Useful elaboration beyond the individual field docs.
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 and resource: 'Builds DraftKings NHL classic lineups' from 'the BankrollSZN projections', and enumerates the exact roster shape (C, C, W, W, W, D, D, G, UTIL under $50,000). The word 'classic' and the DK/salary framing distinguish it from sibling slates like invoke_nhl_showdown without needing to open a schema.
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?
Gives clear in-tool usage context: gpp vs cash mode ('gpp scores ceiling minus an ownership penalty and stacks. cash scores the projection with no stack'), when to pass a stack versus leaving it empty for auto top-stack selection. It does not explicitly name sibling alternatives (e.g., the showdown optimizer) for other slate formats, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_player_poolNHL player pool for lineup buildingARead-onlyIdempotentInspect
The full NHL DraftKings classic pool for one slate in compact form (name, position, team, opponent, salary, projection, floor, ceiling, value, line, power play unit, time on ice, DK id, game, goalie status, injury), plus the line and power play stacks with projection, 90th percentile and correlation lift. Players ruled out are left out. Defaults to the main slate. Fan returns the whole pool. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| offset | No | Paid plans: when an answer carries page.next_offset, call again with the same arguments plus this offset to get the next rows. Default 0. Ignored on the free plan. | |
| position | No | C, W, D or G. | |
| slate_id | No | slate_id from nhl_list_slates. Default: the main classic slate. | |
| contest_type | No | Ownership contest type. 150max (default) is the large field baseline. 20max, 3max and single adjust projected ownership with multipliers measured on DK contests, renormalized so the total stays the same. Early season leans on the NFL contest curve. | |
| min_projection | No | Drop players projected below this. Default 0.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered; the description adds real behavioral context beyond that — ruled-out players are omitted, the refresh cadence is 30 minutes, the default slate is the main one, and the exact field set returned.
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 payload contents are front-loaded in the first sentence and the remaining sentences (exclusions, default slate, refresh, scoring) each add distinct facts. The long inline field list is dense but not redundant.
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 correctly carries the burden of describing return values by enumerating the player fields and the stack objects, and it also states the scoring system and exclusion rule. Only usage-vs-sibling routing is left thin.
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 team, offset, position, slate_id, contest_type and min_projection are already documented in the schema. The description only adds that the pool is 'compact' and that team returns the whole pool, which is marginal value over the structured fields.
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+resource (retrieves the full NHL DraftKings classic player pool for one slate) and enumerates what is returned, so an agent can distinguish it from invoke_nhl_projections, invoke_nhl_lines and invoke_nhl_optimizer without opening any schema.
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?
Gives useful operating context (defaults to the main slate, ruled-out players are excluded, data refreshes every 30 minutes, Fan returns the whole pool) but never says explicitly when to choose this over sibling pool/projection tools or what the free-plan limitation means for results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_projectionsNHL DFS projectionsBRead-onlyIdempotentInspect
BankrollSZN NHL DraftKings projections for one classic slate: salary, DK points, floor, ceiling, value, time on ice, goals, assists, shots, blocks, chance of 5+ shots, goalie saves and win chance, even strength line, power play unit, team implied goals and injury status. Defaults to the main slate. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| offset | No | Paid plans: when an answer carries page.next_offset, call again with the same arguments plus this offset to get the next rows. Default 0. Ignored on the free plan. | |
| player | No | Player name, or part of a name. | |
| sort_by | No | ||
| position | No | C, W, D or G. | |
| slate_id | No | slate_id from nhl_list_slates. Default: the main classic slate. | |
| include_out | No | Include players ruled out or not in the lineup. Default false. | |
| contest_type | No | Ownership contest type. 150max (default) is the large field baseline. 20max, 3max and single adjust projected ownership with multipliers measured on DK contests, renormalized so the total stays the same. Early season leans on the NFL contest curve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real behavioral context on top: 'Data refreshes every 30 minutes' discloses freshness/latency, 'Defaults to the main slate' discloses default scope, and 'DraftKings scoring' pins the scoring model. It does not mention plan limits or pagination, but the added context is substantive.
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?
Purpose is front-loaded in the first clause, followed by the field inventory and two short operational notes. The long field enumeration is dense but does real work since no output schema exists. No filler or repetition.
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 does carry the return-shape burden by listing the projected fields, which is valuable. However it leaves gaps around pagination behavior and plan limits that the params imply, and gives no sense of row volume or sorting defaults for a nine-parameter query 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 description coverage is 89%, so the schema already documents nearly all nine parameters, including the contest_type multipliers and offset paging. The description confirms the slate default (relevant to slate_id) and the scoring model, but adds little parameter-level meaning beyond what structured fields carry. Baseline 3 applies.
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 and scope — 'NHL DraftKings projections for one classic slate' — and enumerates the exact fields returned (salary, DK points, floor, ceiling, TOI, etc.). An agent can tell this is a player-level projections feed rather than a pool, optimizer, or odds feed. It stops short of naming a sibling like invoke_nhl_player_pool to sharpen the boundary, so a 4 rather than 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?
There is no when-to-use or when-not-to-use guidance relative to the many sibling tools (invoke_nhl_optimizer, invoke_nhl_player_pool, invoke_nhl_lines). 'Defaults to the main slate' describes a default, not a selection rule. The agent must infer usage from the field list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_showdownNHL showdown poolARead-onlyIdempotentInspect
DraftKings NHL Showdown (captain mode) pool for one game: salary and captain salary, projection and captain projection (1.5x), floor, ceiling, line, power play unit and both DK ids. Pass slate_id or a game like FLA@CAR. Default: the first showdown slate of the day. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | For example FLA@CAR. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| slate_id | No | Showdown slate_id from nhl_list_slates. | |
| include_out | No | Include players ruled out. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, so the burden is lower; the description nevertheless adds real behavior: a 30-minute data refresh cadence, the DraftKings scoring basis, the 1.5x captain projection multiplier, and the default slate selection. It omits pagination/limit interplay (the schema mentions a plan limit) and any failure behavior when a game has no showdown slate.
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?
Front-loaded with the resource and mode, then the field inventory, then the invocation rules and freshness note — every sentence carries information. The field list is dense but justifies its length by telling the agent exactly what comes back in the absence of an output schema.
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 compensates well by enumerating the returned fields, and it covers targeting, defaults, scoring and refresh cadence. Remaining gaps are minor: no mention of how many rows are returned by default versus limit, and no cross-reference to invoke_nhl_list_slates for slate discovery (only the schema mentions it).
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 earns above baseline by clarifying that slate_id and game are alternative selectors and by documenting the no-argument default, which the schema does not express. It says nothing about the limit/plan-limit interaction or what include_out does beyond the schema text.
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 the specific resource and mode: a DraftKings NHL Showdown captain-mode pool for a single game, and enumerates what the response contains (salary, captain salary, projection, 1.5x captain projection, floor, ceiling, line, PP unit, DK ids). The 'for one game' + 'captain mode' framing implicitly separates it from invoke_nhl_player_pool, but no sibling is named explicitly, 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?
It tells the agent how to target the call ('Pass slate_id or a game like FLA@CAR') and supplies a documented fallback ('Default: the first showdown slate of the day'), which removes ambiguity about zero-argument invocation. It does not, however, state when to prefer this over invoke_nhl_player_pool or invoke_nhl_optimizer, so no explicit exclusions are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_sim_picksNHL model picks and graded recordBRead-onlyIdempotentInspect
BankrollSZN NHL game-line Monte Carlo: every game simulated 20,000 times minute by minute with model goals, win, regulation win, overtime, puck line cover and over chances next to the de-vigged FanDuel price, the starting goalies, the model picks (moneyline and puck line live, totals paper) and the graded season record with closing line value. view today (default) or history.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| view | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| include_paper | No | Include paper (non-published) picks like totals. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context about data scope (20,000 simulations, minute-by-minute, live vs paper picks) but says nothing about auth, rate limits, or the plan-limit constraint that appears only in 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 core purpose is front-loaded, but it is delivered as one very long, comma-heavy sentence that mixes output contents and simulation methodology. It is information-dense without much waste, yet the single mega-sentence hurts scannability.
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?
There is no output schema, so the description carries the burden of describing return content, and it does so thoroughly (model goals, win/OT/puck-line/over chances, de-vigged price, goalies, graded record with CLV). With read-only annotations covering safety and 0 required params, the definition is largely complete; only team/limit semantics remain thin.
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 75%, so the schema carries most parameter meaning. The description reinforces the view modes and the live/paper distinction that maps to include_paper, but adds no syntax or format detail for team or limit. Baseline 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?
States a specific verb and resource: an NHL game-line Monte Carlo simulation returning model picks and a graded season record. This is more specific than a generic 'get data' and clearly differs from invoke_nhl_projections or invoke_nhl_elo in content. It stops short of explicitly naming or contrasting a sibling 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 only usage-like statement is 'view today (default) or history,' which describes a parameter rather than when to pick this tool over alternatives. There is no guidance on when this tool should be chosen over invoke_nhl_lines, invoke_nhl_odds_props, or invoke_nhl_projections, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_starting_goaliesNHL starting goaliesBRead-onlyIdempotentInspect
NHL goalies for today with status (Confirmed, Likely or Unconfirmed), DK projection, floor, ceiling, win chance, saves, goals against, shots against, save percentage, shutout chance, chance of 35+ saves, opponent implied goals, salary and last season line. Data refreshes every 30 minutes. DraftKings scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description usefully adds the 30-minute refresh cadence and the DraftKings scoring basis, which are genuine behavioral traits, but says nothing about pagination, plan limits, or return shape beyond the field list.
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?
Purpose is front-loaded in the first clause, followed by a concrete field list (justified since there is no output schema) and two short metadata sentences. The single long enumeration is dense but each element carries 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?
With no output schema, the description appropriately carries the return-value burden by naming every field, and it adds freshness and scoring context. However, it omits usage context and meaningful parameter guidance, leaving the filtering story thin for a 3-param 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 67%, and the description adds essentially no parameter meaning: team and limit are never addressed, and status only appears incidentally as an output field rather than as a filter. It fails to compensate for the coverage gap.
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+resource (NHL starting goalies for today) and enumerates the exact fields returned, so the agent knows precisely what data comes back. It does not differentiate itself from nearby siblings like invoke_nhl_projections or invoke_nhl_player_pool, but the resource itself is distinctive.
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?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as invoke_nhl_projections or invoke_nhl_player_pool. The 'for today' scope is implied but the agent gets nothing about when this is the right call versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_nhl_team_matchupsNHL team matchup ranksARead-onlyIdempotentInspect
NHL team matchup heatmap: per 60 rates and ranks out of 32 (1 is best for that team) for 5v5 pace (shots for plus against), 5v5 offense (SF, HDCF, GF, xGF), 5v5 defense (SA, HDCA, GA, xGA, CF%), power play (SF, GF, xGF, minutes per game) and penalty kill (SA, GA, xGA, minutes per game). window season (default, last season counted as 20 games plus this season) or l10 (last 10 games). scope tonight (default, teams playing today grouped by game) or all.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example EDM, TOR or VGK. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| scope | No | ||
| window | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the window/scope defaults (season = last season's 20 games plus current; tonight = teams playing today grouped by game), which is useful behavioral context but not beyond that.
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?
Front-loaded with the resource and metric inventory, then the configuration options. It is a dense run-on sentence with heavy list nesting, but nearly every clause carries distinct information, so little is wasted.
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 tool with no output schema, the description adequately conveys the returned metrics, their units (per 60, ranks out of 32) and the configurable dimensions. An agent has enough to invoke it correctly, though nothing is said about row cardinality or pagination interaction with limit.
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 50%, with team and limit documented in the schema and the two enum parameters (scope, window) carrying no schema description. The description compensates by defining what season/l10 and tonight/all actually mean, adding real semantic value for the undocumented enums.
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?
Names a specific resource (NHL team matchup heatmap) and enumerates exactly what it contains — per-60 rates and ranks out of 32 across 5v5 pace, offense, defense, power play and penalty kill. This level of specificity clearly differentiates it from siblings like invoke_nhl_corsi or invoke_nhl_line_matchups.
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 explains the effect and defaults of the window and scope settings, which is configuration guidance, but it never states when to choose this tool over a sibling (e.g. corsi or line_matchups). Usage is implied rather than contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_odds_comparisonOdds comparison and line shoppingARead-onlyIdempotentInspect
Line shopping across DraftKings, FanDuel, Caesars and BetMGM. market games (default) gives each game's moneyline, spread (run line or puck line) and total with every book's line and price, the best book and price per side, and how many cents separate the books. sport mlb, nfl or nhl. market hr (MLB only) gives home run prop prices per hitter with the best book and the BankrollSZN model chance and edge. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example KC. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sport | No | Default nfl. | |
| market | No | games (default) or hr (MLB home run props). | |
| player | No | hr market: player name. | |
| sort_by | No | Default start for games, model_edge for hr. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond them: the data refresh cadence ('refreshes every 30 minutes'), and a fairly detailed account of what each market mode returns (best book and price per side, cents spread, model chance and edge).
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 content is dense but front-loaded — books and purpose first, then each market mode, then refresh cadence. The middle sentence is long and run-on, but every clause carries information an agent needs; little is padding.
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 correctly carries the burden of describing return contents for both market modes, and it does so concretely. It is nearly complete for a read-only comparison tool; the only omission is any mention of plan/row-limit interaction, which is left to the 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, and the description earns above baseline by explaining how parameters interact rather than repeating them: it ties 'player' to the hr market, states that 'market' selects the whole output shape, and echoes the default sorting behavior per market.
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+resource: cross-book line shopping for moneylines, spreads and totals, plus a distinct HR-prop mode, and names the four books covered. It is clear what the tool does, but it never explicitly distinguishes itself from close siblings like invoke_mlb_game_odds, invoke_mlb_hr_board or invoke_nhl_odds_props, which an agent could plausibly pick instead.
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 clear operating context: 'market games (default)' for game lines, 'market hr (MLB only)' for home run props, and 'sport mlb, nfl or nhl'. That establishes an exclusion (hr is MLB-only) and a default mode, though it stops short of naming when to prefer this over the sport-specific odds tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_pga_course_historyPGA course historyBRead-onlyIdempotentInspect
Player history by course: rounds played, strokes gained by category at that course, average finish, made cut rate, top 10 and top 25 rates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| course | No | Course name or part of it, for example Augusta. | |
| player | No | Player name, for example Scottie Scheffler. | |
| sort_by | No | Sort field. |
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 content context by enumerating the returned metrics and noting the course scoping of strokes gained, but says nothing about pagination, the plan-limit interaction, or behavior when course/player are omitted. No contradiction with annotations.
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 front-loaded sentence that names the scope first and then the returned fields; every clause carries information and there is 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?
With no output schema, the description correctly takes on the burden of describing return values and does so explicitly. It is slightly incomplete in not clarifying what happens when all-optional parameters are omitted, but overall an agent has enough to call it 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 all four parameters are documented in the schema (including the enum for sort_by), so the schema does the heavy lifting. The description only indirectly reinforces the course scoping via 'at that course' and adds no syntax or default-value detail, matching the baseline 3.
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 resource (player history by course) and enumerates the exact metrics returned (rounds played, strokes gained by category, average finish, made cut rate, top 10/top 25 rates), so an agent knows precisely what data it yields. It does not, however, distinguish itself from PGA siblings such as invoke_pga_strokes_gained or invoke_pga_projections, leaving the boundary implicit.
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?
There is no guidance on when to choose this tool over the many PGA siblings, nor any prerequisite or exclusion. The agent must infer usage purely from the metric list, with no stated conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_pga_injury_watchPGA withdrawal and injury watchARead-onlyIdempotentInspect
PGA Tour withdrawal risk for this week's event: an injury risk score, DraftKings status and alerts, news status, starts in the last 6 and 12 months, withdrawals in the last 6 and 18 months with the last date, days since the last start and events missed. Defaults to golfers in the field, highest risk first. Data refreshes every 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, or part of a name. | |
| in_field | No | Only golfers in this week's field. Default true. | |
| min_risk | No | Least injury risk score. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: data cadence ('refreshes every 30 minutes') and default sort/filter behavior ('in the field, highest risk first'). It does not mention auth needs or result-size caps, which keeps it below a 5.
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?
Front-loaded with the core purpose, then the returned fields, then defaults and refresh cadence. The dense field enumeration is justified because there is no output schema, and no sentence is pure filler. Slightly long but well organized.
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 compensates by listing what the tool returns, and it supplies a freshness guarantee and default behavior. Nothing critical is missing for a read-only, single-event query tool, though it could note whether results span only the current event or historical fields.
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% with all four parameters documented inline, so the schema does the heavy lifting. The description adds only that in_field defaults to true and that ordering is by risk descending; it says nothing about limit, player-matching, or min_risk semantics 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope — 'PGA Tour withdrawal risk for this week's event' — and enumerates the exact data points returned (injury risk score, DK status, withdrawals, days since last start). An agent can distinguish this from pga_projections, pga_optimizer, and pga_schedule without opening any schema.
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?
Gives default behavior ('Defaults to golfers in the field, highest risk first') but never states when to reach for this tool over the other PGA siblings, nor any exclusion conditions. Usage is implied by the returned-data list rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_pga_optimizerPGA DraftKings lineup optimizerBRead-onlyIdempotentInspect
Builds DraftKings PGA classic lineups (6 golfers, $50,000) for the current event from the BankrollSZN projections, with locks, excludes, unique lineups, a salary floor, an ownership cap and a make cut floor. Returns DK ids.
| Name | Required | Description | Default |
|---|---|---|---|
| lock | No | ||
| mode | No | ||
| exclude | No | ||
| lineups | No | ||
| min_salary | No | ||
| min_unique | No | ||
| own_lambda | No | ||
| min_make_cut | No | ||
| max_total_own | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond that (projection source, that it returns DK ids), but says nothing about how locks/excludes affect output, whether generated lineups are persisted, or rate/latency behavior.
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, front-loaded with the core action and constraints, with no filler. The second sentence is a compact enumeration, though it borders on a run-on list.
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?
There is no output schema, so the 'Returns DK ids' note is doing real work, but for a 9-parameter tool with 0% schema coverage the description should explain 'mode' (GPP vs cash strategy) and lineup-count semantics. As-is, an agent can call it but cannot reason about several knobs.
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 0% across 9 parameters, so the description carries the burden. It maps roughly six params (locks, excludes, unique lineups, salary floor, ownership cap, make cut floor) but leaves 'mode' (gpp/cash), 'lineups', and 'own_lambda' unexplained, and gives no array-format or value-range hints.
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+resource ('Builds DraftKings PGA classic lineups') with concrete format constraints (6 golfers, $50,000) and names the data source (BankrollSZN projections). It is clearly distinguishable from projection/odds siblings, though it does not explicitly contrast itself with the other sport-specific optimizers.
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 says the lineups are for the 'current event' but gives no when-to-use guidance, no prerequisites, and no alternatives. There is nothing telling an agent when to reach for this optimizer versus invoke_pga_projections or a different sport's optimizer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_pga_projectionsPGA DFS projectionsBRead-onlyIdempotentInspect
BankrollSZN PGA DFS projections for the current DraftKings classic slate: projected points, floor, ceiling, ownership, value, make cut, win, top 5, top 10 and top 20 probabilities, recent strokes gained and course fit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example Scottie Scheffler. | |
| sort_by | No | Sort field. |
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 safety is covered. The description adds useful scope context (DraftKings classic slate, current) but says nothing about data freshness, whether the slate must exist before calling, or how the plan limit noted in the schema behaves.
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 front-loaded sentence that leads with the resource and slate before enumerating fields. The field list is long but earns its place given there is no output schema.
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 enumeration of returned metrics is genuinely valuable and covers most of what an agent needs. It still omits prerequisites (does a classic slate have to be active?), staleness of projections, and how the plan limit interacts with the limit parameter.
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 all three parameters (limit, player, sort_by) are documented there, including the enum values. The description adds no parameter-level meaning, so the baseline of 3 applies.
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?
Names a specific resource (PGA DFS projections) and scopes it to the current DraftKings classic slate, which an agent can immediately act on. It does not, however, distinguish itself from close PGA siblings such as invoke_pga_optimizer, invoke_pga_strokes_gained, or invoke_pga_course_history, so an agent must infer the boundary itself.
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 states scope (current DraftKings classic slate) but gives no when-to-use or when-not-to-use guidance and names no alternative. With ~90 siblings including several PGA projection-adjacent tools, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_pga_schedulePGA Tour scheduleBRead-onlyIdempotentInspect
The upcoming PGA Tour events: name, course, city and country, par, yardage, course type, start and end dates, purse, status and a major flag.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior, so the safety profile is covered. The description adds useful temporal scope ('upcoming') and enumerates returned fields, but it does not disclose pagination behavior, default ordering, or how the limit parameter interacts with the plan limit. This leaves a modest behavioral gap.
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 that states the resource and then lists the returned fields without filler. Every element earns its place, particularly because there is no output schema to otherwise document return fields.
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 field enumeration in the description is essential and adequately covers return values. It omits ordering, timezone handling, and the exact effect of limit on result size, but as a simple read-only schedule endpoint it is largely 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%, and the single limit parameter is fully described in the schema, including the plan-limit constraint. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 applies.
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 and temporal scope: upcoming PGA Tour events with a detailed list of returned attributes. It distinguishes this tool from siblings like invoke_pga_course_history and invoke_pga_projections by focusing on event-level schedule metadata. However, it lacks an explicit action verb and does not name sibling alternatives to reinforce the distinction.
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 no explicit when-to-use guidance or alternatives. It implies the tool is for seeing upcoming events, but does not say when to choose it over invoke_pga_course_history, invoke_pga_projections, or invoke_pga_weather. No prerequisites or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_pga_strokes_gainedPGA strokes gainedBRead-onlyIdempotentInspect
Season strokes gained by player: total, tee to green, off the tee, approach, around the green and putting, plus measured rounds, scoring average and birdie or better rate.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example Scottie Scheffler. | |
| sort_by | No | Sort field. | |
| sort_dir | No | Sort direction: desc or asc. |
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 context by enumerating the returned stat categories, but says nothing about the shape of the response, row limits beyond the schema note, or how season aggregation is bounded.
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 front-loaded sentence that names the resource and its fields with no filler. Slightly dense with an enumerated list, but every element corresponds to actual output 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?
With no output schema, the description usefully lists the returned stat categories, and all four parameters are documented in the schema while annotations cover safety. The only gap is the absence of usage routing against the many sibling PGA tools.
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 already documents limit, player, sort_by, and sort_dir. The metric list in the description loosely maps to the sort_by enum values but adds no syntax or format detail beyond the schema, making this a baseline 3.
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 resource (season strokes gained by player) and enumerates the metrics covered (total, tee to green, off the tee, approach, around the green, putting) plus supplementary stats. It is clear what the tool returns, but it does no explicit differentiation from sibling PGA tools like invoke_pga_projections or invoke_pga_course_history.
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?
No when-to-use, when-not-to-use, or alternative routing is provided. The description only implies context ('season' stats) and never tells the agent to prefer this over projections, course history, or player index tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_pga_weatherPGA tournament weatherARead-onlyIdempotentInspect
Forecast weather by round and tee time wave for the tournament: temperature, wind speed and gusts, wind direction, rain chance and cloud cover.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| round | No | Tournament round, 1 to 4. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive operation, so the description carries a lower burden. It adds useful context by enumerating the forecast outputs, which matters because there is no output schema, but it does not discuss limit behavior, pagination, or other operational constraints.
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 front-loaded sentence with no wasted wording. It states the action, scope, and forecast contents efficiently.
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 tool's purpose and return contents, which is important because no output schema exists. Annotations cover the safety profile and the input schema covers parameters, so the description is largely complete, though it could do more to explain when to choose it over related weather or PGA tools.
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 both parameters are already documented in the input schema. The description references round and tee time wave but does not add syntax or behavior beyond what the schema provides for round and limit, making 3 the appropriate baseline.
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 and resource: forecast weather for the tournament, scoped by round and tee time wave, and lists the forecast metrics. The PGA-specific context comes from the tool name and title rather than the description itself, so sibling differentiation is present but not explicitly restated in the 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 implies when the tool is useful by specifying tournament, round, and tee time wave, but it does not say when to use this tool versus other PGA tools or versus other weather tools such as invoke_mlb_weather or invoke_nfl_weather. No exclusions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_injuriesWNBA injury reportARead-onlyIdempotentInspect
Current WNBA injury report: player, team, status, estimated return and the note. By default it shows only the teams on the DraftKings slates of the day. Pass team, player or all_teams true for more.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example LVA, NYL, IND or MIN. ESPN codes such as LV or NY work too. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example A'ja Wilson. | |
| all_teams | No | Show every team, also teams not on a slate. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds a real behavioral trait beyond them: the default result set is silently filtered to today's DK-slate teams unless parameters are passed. It stops short of noting rate limits or pagination, which is minor here.
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 tight sentences, front-loaded with the resource and its returned fields, then the default-scope caveat. Every clause carries information, with only the enumerated return-field list being arguably redundant given it appears nowhere else.
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 compensates by listing the fields the report returns, and it explains the default filtering behavior that would otherwise surprise an agent. Nothing needed to invoke it correctly 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% and each of the four parameters is documented in the schema, so the schema does the heavy lifting. The description reinforces which parameters broaden the default scope but adds no syntax or format detail beyond what the schema already provides (e.g., the ESPN-code note lives in the schema).
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+resource ('Current WNBA injury report') and enumerates the fields returned (player, team, status, estimated return, note), which no sibling name conveys. An agent can distinguish it from invoke_nba_injuries / invoke_nhl_injuries by the sport embedded in the name and the stated scope.
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?
Explicitly states the default behavior (only teams on the DraftKings slates of the day) and how to widen it ('Pass team, player or all_teams true for more'). This tells the agent when the default is insufficient, though it never names a sibling alternative or an exclusion case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_list_slatesWNBA DraftKings slatesARead-onlyIdempotentInspect
The DraftKings WNBA slates of the day: classic slates with games and teams, and showdown slates by game. Call this first to get a slate_id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the shape of what is returned (classic vs. showdown slates) and its role as the source of slate_id. It doesn't describe pagination or field-level return structure, keeping it below a 5.
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 compact sentences with no filler; the resource definition is front-loaded and the actionable 'call this first' instruction closes it. Every clause 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?
With no output schema, the description carries the burden of conveying what comes back, and it does cover the two slate categories and the slate_id output. It stops short of describing the returned fields or structure, but for a zero-parameter listing endpooint this is nearly 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 there is nothing for the description to disambiguate. Baseline 4 applies – no parameter detail is needed or missing.
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 resource ('DraftKings WNBA slates of the day') and breaks it into its two concrete forms (classic slates with games/teams, showdown slates by game). An agent can immediately tell this apart from sibling tools like invoke_wnba_showdown or the other sports' list_slates 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?
'Call this first to get a slate_id' is explicit sequencing guidance that tells the agent both when to invoke it (as the entry point) and why (to obtain the slate_id needed downstream). It doesn't name an alternative tool or an exclusion case, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_optimizerWNBA DraftKings lineup optimizerARead-onlyIdempotentInspect
Builds DraftKings WNBA classic lineups (G, G, F, F, F, UTIL) or showdown lineups (1 CPT at 1.5x plus 5 UTIL) from the BankrollSZN projections, with locks, excludes, a captain, unique lineups, a salary floor, an ownership cap and a per-team cap. Returns DK ids in slot order.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | ||
| lock | No | ||
| mode | No | ||
| captain | No | ||
| exclude | No | ||
| lineups | No | ||
| slate_id | No | ||
| min_salary | No | ||
| min_unique | No | ||
| own_lambda | No | ||
| max_per_team | No | ||
| max_total_own | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly/idempotent/non-destructive), so the bar is lower. The description still adds real context: the data source (BankrollSZN projections) and, importantly, the return format ('Returns DK ids in slot order'), which is valuable since no output schema 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?
Two dense but well-ordered sentences: purpose and data source first, return format last. Given twelve parameters, the length is efficient, though the feature list is packed into one unbroken sentence.
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 12-parameter tool with 0% schema coverage and no output schema, the description covers the lineup structure and return format well but omits how mode, lineups count, game/slate_id and own_lambda are meant to be used, so an agent still guesses on those inputs.
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 0%, so the description carries the burden. It maps roughly seven of twelve params (locks, excludes, captain, unique lineups, salary floor, ownership cap, per-team cap), but leaves game, mode (gpp/cash), lineups, slate_id and own_lambda entirely unexplained, including value semantics.
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 and resource: 'Builds DraftKings WNBA classic lineups ... or showdown lineups ... from the BankrollSZN projections.' The lineup formats are spelled out concretely. It does not, however, distinguish itself from siblings like invoke_wnba_showdown or invoke_nba_optimizer, leaving that routing to the agent.
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?
Guidance is only implicit: naming locks, excludes, captain, etc. hints at how the tool is configured but never says when to pick this over invoke_wnba_showdown or invoke_wnba_projections. No when-not or prerequisite statements are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_paceWNBA pace and possessionsARead-onlyIdempotentInspect
WNBA pace for today, calculated by BankrollSZN from box scores. Possessions per 40 minutes (overtime removed). view games (default) gives each game today with projected pace, the gap to the league average (vs_league), a tier (Up, Neutral, Slow), a flag when the market total and the pace disagree, the total and spread, both teams' pace ratings and ranks, and actual pace once played. view teams gives every team: pace rating (half season, half last 10), season, last 10 and last 5 pace, playoff pace, last season pace, offensive, defensive and net rating, combined points per game and rank. Projection tested on 588 games from 2025 to the 2026 playoffs: mean miss 3.04 possessions vs 3.38 for the league average. Data refreshes every hour on game days.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example NYL or LVA. | |
| tier | No | games view: only this tier. | |
| view | No | Default games. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| sort_by | No | teams view sort. Default rank. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnly/idempotent/non-destructive already carried by annotations, the description adds substantial extra context: computation method (possessions per 40 minutes, overtime removed), the source (box scores, BankrollSZN), hourly refresh on game days, and a benchmark (mean miss 3.04 possessions over 588 games vs 3.38 for league average). This is exactly the beyond-annotations disclosure the dimension rewards.
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?
Purpose and the primary scope constraint are front-loaded, and the enumeration of the two views is organized. It runs long with a dense run-on inventory of output fields, but since no output schema exists that enumeration is largely load-bearing rather than padding.
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?
No output schema, so the description carries the return-shape burden and does so thoroughly for both views, plus methodology, refresh cadence, and accuracy provenance. Nothing material for correct invocation appears to be 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 coverage is 100%, so the baseline is 3, but the description goes further by defining the tier values in output terms (Up, Neutral, Slow with a market-disagreement flag) and clarifying that view teams exposes a specific set of ratings that map to sort_by candidates. It leaves team/limit/sort_by syntax to the schema, which is acceptable given full coverage.
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+resource (WNBA pace / possessions per 40 minutes, OT removed) plus the data provenance (BankrollSZN from box scores), and explicitly separates the two modes the tool supports (view games vs view teams). An agent can distinguish this from the sport-specific siblings like invoke_nba_pace or invoke_wnba_projections without opening the schema.
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 explains what each view returns and flags 'view games (default)', which tells the agent which mode to reach for by default and when the teams mode is warranted. It never names an alternative tool or states when NOT to use this one, so routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_player_indexWNBA Player Index: player vs system valueARead-onlyIdempotentInspect
WNBA Player Index, calculated by BankrollSZN: splits each player's DraftKings points per 36 minutes into player_value (above an average player on an average team), system_lift (what the current team adds through coaching, pace and scheme) and teammate_drag (what strong teammates who use the same possessions take away). Also usage share, trend vs the season before, a star with / without split (DK points per game when the team's top player sat minus when he or she played) and an archetype: Difference maker, System product, Rising, Blocked by teammates, Fading, Neutral. view players (default; give player for one player with season history), systems (team lift, latest season) or step_up (biggest gains when the star sits, 5+ games). Model on regular season games since 2022. Backtest: error 3.86 vs 4.30 for a regressed last-season baseline for players who changed teams. A ranking of who is real and who rides the team, not a nightly projection. Updated daily in season.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation. | |
| view | No | Default players. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| offset | No | Paid plans: next page offset from page.next_offset. | |
| player | No | Player name, or part of a name. | |
| sort_by | No | Default player_value. | |
| position | No | ||
| sort_dir | No | ||
| archetype | No | ||
| new_team_only | No | Only players who changed teams since their last game (NBA only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, so the description's job is to add context beyond that — and it does: daily in-season refresh cadence, data window (regular season since 2022), and a backtest error figure (3.86 vs 4.30 baseline) that communicates expected accuracy for team-changers. It does not disclose pagination or rate-limit behavior, which is the main remaining gap.
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?
Front-loaded with the index definition and metric breakdown, which is dense but earns its place by mapping to the sort and filter enums. The backtest sentence and the trailing tagline are useful framing rather than filler. Slightly long, and the three view modes are buried mid-paragraph rather than given their own line, which costs a point.
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 10-parameter, enumeration-heavy analytics tool with no output schema, the description covers the metric families returned and how the views differ, which is what an agent needs to pick parameters. It omits any mention of offset/next_offset pagination semantics and the odd 'NBA only' note on new_team_only, so it is not 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?
With 70% schema coverage and 10 parameters, the description goes beyond the schema by explaining the semantics of the metric fields that back sort_by (player_value, system_lift, teammate_drag, usage, trend) and the star-with/without split that backs step_up_without_star, plus the full archetype vocabulary. It adds no guidance for team, position, limit/offset, or new_team_only, so it doesn't fully compensate for the coverage gap.
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+resource (WNBA Player Index) and defines precisely what it computes — player_value, system_lift, teammate_drag, usage, trend, star with/without splits, archetype — which is far more than a restatement of the name. It also explicitly positions itself against the obvious confusion source, saying it is 'a ranking of who is real and who rides the team, not a nightly projection,' distinguishing it from invoke_wnba_projections.
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 tells the agent when to use each mode: view 'players' (default, pass player for one player's season history), 'systems' for team lift, 'step_up' for biggest gains when the star sits. It also states the model scope (regular season since 2022) and contradicts the projection use case. It does not name the sibling tool to use for nightly projections instead, so it falls short of an explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_player_poolWNBA player pool for lineup buildingBRead-onlyIdempotentInspect
The full WNBA DraftKings classic pool for one slate: name, DK slots, team, opponent, salary, projection, ceiling, ownership, minutes, dk_id and injury. Roster G, G, F, F, F, UTIL, $50,000 cap, at least 2 games. Defaults to the main slate.
| Name | Required | Description | Default |
|---|---|---|---|
| slate_id | No | ||
| min_projection | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only/idempotent/non-destructive, so the description's job is to add operational context. It does so by disclosing the exact returned field set, the DK classic roster slots, and the $50,000 cap / 2-game minimum, which meaningfully shape how the agent uses the result.
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, front-loaded with what the pool contains, followed by the roster/cap constraints. Dense but no wasted phrasing; the field enumeration is informative rather than 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?
With no output schema, listing the returned fields is valuable and largely covers the return contract. However, the zero-coverage parameters are left ambiguous, and there is no guidance on filtering or slate selection, so the definition is adequate but not 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 0%, so the description carries the full burden for slate_id and min_projection. "Defaults to the main slate" gives some signal for slate_id, but min_projection is never explained (units, filtering direction, typical values), leaving half the parameters undocumented in both schema and description.
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 resource (full WNBA DraftKings classic pool for one slate) and enumerates the returned fields, so an agent knows precisely what it gets. It does not explicitly differentiate itself from siblings like invoke_wnba_projections or invoke_wnba_list_slates, which leaves sibling selection to inference.
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?
"For one slate" and "Defaults to the main slate" imply the usage context (population of a slate for lineup building), but there is no explicit when-to-use versus alternatives such as invoke_wnba_optimizer or invoke_wnba_projections, nor any stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_projectionsWNBA DFS projectionsBRead-onlyIdempotentInspect
BankrollSZN WNBA DFS projections for the latest slate: projected minutes, DK points, floor, ceiling, value, projected ownership, salary and injury status.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example LVA, NYL, IND or MIN. ESPN codes such as LV or NY work too. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example A'ja Wilson. | |
| sort_by | No | Sort field. | |
| position | No | G, F or UTIL, or PG, SG, SF, PF. | |
| slate_id | No | ||
| include_out | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds useful context that results are slate-scoped and include injury status, but says nothing about rate limits, plan limits (only implied in the schema), or data freshness beyond 'latest'.
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 front-loaded sentence with no filler; the enumerated fields earn their place by previewing the return payload. Slightly long, but efficient.
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, listing the returned fields is genuinely useful. However, with 7 parameters, none required, and undocumented semantics for slate_id and include_out, the definition leaves gaps an agent must resolve from the schema alone.
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 71%, so the schema documents most parameters. The description contributes no parameter semantics at all – it lists return fields, not inputs – so the baseline of 3 applies where the schema does the heavy lifting.
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 resource (WNBA DFS projections for the latest slate) and enumerates the returned fields (minutes, DK points, floor, ceiling, value, ownership, salary, injury status). It is clear what the tool returns, but it does not explicitly distinguish itself from close siblings like invoke_wnba_player_pool or invoke_nba_projections.
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?
There is no explicit when-to-use guidance and no mention of alternatives. The phrase 'latest slate' implies scope but the agent gets no help choosing between this, invoke_wnba_player_pool, or invoke_wnba_optimizer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_rotationsWNBA minutes and rotationsARead-onlyIdempotentInspect
Average minutes and plus minus per player across the most recent WNBA games, with the last game date. Use it to spot a role change before pricing catches up.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team abbreviation, for example LVA, NYL, IND or MIN. ESPN codes such as LV or NY work too. | |
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| player | No | Player name, for example A'ja Wilson. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description usefully adds the aggregation window semantics (averages over most recent games, exposure of last game date), but leaves ambiguity about how many games constitute 'recent' and says nothing about the plan limit mentioned in 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?
Two tight sentences, metrics front-loaded ahead of the use-case hint, with zero filler. Every clause carries 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?
With no output schema, the description correctly takes on the burden of describing the return payload – per-player minutes, plus-minus, and last game date. Parameters are fully covered by the schema. Only the 'most recent games' window size and plan-limit interaction remain underspecified.
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 team, limit and player are all documented at the schema level with examples and the plan-limit caveat. The description adds no parameter-level detail beyond that, so 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?
States a specific resource (WNBA minutes/rotations) and the exact metrics returned – average minutes and plus-minus per player over recent games, plus last game date. It does not, however, differentiate itself from close siblings like invoke_wnba_player_pool or invoke_nba_rotations, which an agent would have to disambiguate by schema inspection.
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?
'Use it to spot a role change before pricing catches up' gives a clear analytical intent, but offers no when-not guidance and never names an alternative tool (e.g. projections or player_pool) or the condition that selects this one over them. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoke_wnba_showdownWNBA showdown poolBRead-onlyIdempotentInspect
DraftKings WNBA Showdown (captain mode) pool for one game: UTIL and captain salary, projection, captain projection, ceiling, minutes, both DK ids and injury status. Pass slate_id or a game like MIN@NYL.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | ||
| limit | No | Maximum rows to return. The plan limit applies on top. | |
| slate_id | No | ||
| include_out | No |
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 context that results are single-game captain-mode rows with DK ids and injury status, but says nothing about pagination interplay with limit or what include_out changes. Adds some value beyond annotations, but not rich behavioral context.
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, front-loaded with the resource and returned fields, then the invocation hint. The field enumeration is dense but scannable; nothing is padding.
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 usefully lists returned fields, and it explains the game/slate_id entry points. However, for a 4-parameter tool with 25% schema coverage, one parameter (include_out) is undocumented in both places and limit semantics are only in the schema, leaving an agent to guess.
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 only 25% (only 'limit' is documented), so the description must compensate. It clarifies the 'game' parameter format (MIN@NYL) and the slate_id alternative, but leaves include_out entirely unexplained and does not state whether slate_id and game are mutually exclusive. Partial compensation at best.
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 resource: the DraftKings WNBA Showdown pool in captain mode, scoped to a single game, and enumerates the fields it returns. The 'for one game' + 'captain mode' framing implicitly distinguishes it from the full-slate invoke_wnba_player_pool, though it never names a sibling explicitly.
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 only guidance is invocation-level: 'Pass slate_id or a game like MIN@NYL.' There is no statement of when to choose this over invoke_wnba_player_pool, invoke_wnba_projections, or invoke_wnba_optimizer, and no exclusions. Usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_testimonialARead-onlyInspect
Find Testimonial records - pass id for one record, or query for a filtered list.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Fetch one record by id; omit to query many | |
| skip | No | Records to skip before the first result; 0 or more. | |
| sort | No | Sort field; '-' prefix for descending | |
| limit | No | 1-500; defaults to 50. Out-of-range values are clamped. | |
| query | No | MongoDB-style filter, e.g. {"status": "active"} | |
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read operation, so the description's burden is lower. It adds the useful behavioral fact that the tool returns either one record or a list depending on inputs, but says nothing about pagination behavior, result size, or empty-result handling.
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 tight sentence with zero filler, and the primary mode distinction is front-loaded immediately after the verb. Every clause 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 6-parameter read tool with no output schema, the description covers the core mode distinction and the schema covers the remaining mechanics at 83%. Only the 'fields' parameter and return-shape expectations are left implicit, which is a minor 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 description coverage is 83%, so the schema already documents id, skip, sort, limit, and query (only 'fields' is undocumented). The description restates the id-vs-query semantics but adds no format or syntax detail beyond what the schema provides, so baseline 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?
States a specific verb (Find) and resource (Testimonial records), and distinguishes the two retrieval modes (single by id vs. filtered list). It's clearly the read counterpart to create_testimonial/update_testimonial/delete_testimonial, though it doesn't name those siblings explicitly.
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?
Explicitly routes the agent between the two modes: 'pass id for one record, or query for a filtered list.' That is clear usage context, but there is no guidance on exclusions or when to prefer an alternative approach (e.g., when not to use it, or relationships with sibling tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_testimonialCInspect
Update a Testimonial record by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| data | Yes | Fields to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says "Update" but never says whether this is a partial or full-replacement update, whether omitted fields are preserved or cleared, that status/featured/reviewed_at are admin-controlled fields, or what the tool returns on success or failure.
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?
One short, front-loaded sentence with no filler or redundancy. It is efficient, though the brevity reflects under-specification rather than deliberate economy of language.
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 mutation tool with no annotations, no output schema, a nested object containing eight fields, and an undocumented required 'id', the description is far too thin. It omits update semantics, permission requirements, and any hint of the response, leaving real gaps for an agent to fill.
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 only 50% (the top-level 'id' has no description at all), so the description needs to compensate and does not. "By id" merely restates the parameter name, and nothing explains that 'data' is a partial patch or how nested fields interact with defaults like status='pending' and featured=false.
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 ("Update a Testimonial record") and identifies the keying mechanism ("by id"), so an agent can tell it apart from create_testimonial, delete_testimonial, and query_testimonial. It stops short of any scope or behavior detail that would fully distinguish it, but the core purpose is unambiguous.
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?
There is no guidance on when to use this tool versus query_testimonial or create_testimonial, and no mention of prerequisites such as needing an existing record id. The agent is left to infer all routing and context on its own.
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.
1 tool update
- Changed
invoke_nba_optimizer1 field changed- changed
Input schema / properties / questionable / descriptionPrevious value: -"How to score a questionable player. play (default): his if-he-plays line. expected: play chance x if-he-plays line. out: leave him out."New value: +"How to score a questionable player. play (default): his if-he-plays line and ownership. expected: play chance x if-he-plays line. out: leave him out."
1 tool update
- Changed
invoke_nba_optimizer1 field changed- added
Input schema / properties / questionableAdded value: +{ + "description": "How to score a questionable player. play (default): his if-he-plays line. expected: play chance x if-he-plays line. out: leave him out.", + "enum": [ + "play", + "expected", + "out" + ], + "type": "string" +}
1 tool update
- Changed
invoke_nba_optimizer2 fields changed- added
Input schema / properties / cash_floor_weightAdded value: +{ + "description": "Cash only: floor points added per point of floor. Default 0.25.", + "type": "number" +} - added
Input schema / properties / contest_typeAdded value: +{ + "description": "Preset from the site NBA optimizer. Explicit mode, own_lambda and min_salary override it.", + "enum": [ + "cash", + "single", + "3max", + "20max", + "150max" + ], + "type": "string" +}
117 tool updates
- First observed
create_testimonial - First observed
delete_testimonial - First observed
invoke_bankrollszn_account - First observed
invoke_bankrollszn_articles - First observed
invoke_bankrollszn_call - First observed
invoke_bankrollszn_tools - First observed
invoke_lol_elo - First observed
invoke_lol_optimizer - First observed
invoke_lol_player_pool - First observed
invoke_lol_projections - First observed
invoke_mlb_bullpen - First observed
invoke_mlb_elo - First observed
invoke_mlb_game_odds - First observed
invoke_mlb_hitter_splits - First observed
invoke_mlb_hr_board - First observed
invoke_mlb_line_movement - First observed
invoke_mlb_list_slates - First observed
invoke_mlb_matchup - First observed
invoke_mlb_optimizer - First observed
invoke_mlb_ownership_by_contest - First observed
invoke_mlb_park_factors - First observed
invoke_mlb_pitcher_health - First observed
invoke_mlb_pitcher_splits - First observed
invoke_mlb_player_pool - First observed
invoke_mlb_postponements - First observed
invoke_mlb_projections - First observed
invoke_mlb_props - First observed
invoke_mlb_showdown - First observed
invoke_mlb_showdown_optimizer - First observed
invoke_mlb_sim_picks - First observed
invoke_mlb_starters - First observed
invoke_mlb_stolen_bases - First observed
invoke_mlb_team_splits - First observed
invoke_mlb_team_stacks - First observed
invoke_mlb_weather - First observed
invoke_mlb_zone_pitch_mix - First observed
invoke_mma_elo - First observed
invoke_mma_fight_sim - First observed
invoke_mma_injuries - First observed
invoke_mma_late_changes - First observed
invoke_mma_list_slates - First observed
invoke_mma_matchups - First observed
invoke_mma_odds - First observed
invoke_mma_optimizer - First observed
invoke_mma_projections - First observed
invoke_mma_sim_picks - First observed
invoke_mma_upsets - First observed
invoke_nba_foul_risk - First observed
invoke_nba_injuries - First observed
invoke_nba_optimizer - First observed
invoke_nba_pace - First observed
invoke_nba_player_index - First observed
invoke_nba_player_pool - First observed
invoke_nba_projections - First observed
invoke_nba_props - First observed
invoke_nba_rotations - First observed
invoke_nba_sim_picks - First observed
invoke_nfl_air_yards - First observed
invoke_nfl_coverage_splits - First observed
invoke_nfl_dvp - First observed
invoke_nfl_elo - First observed
invoke_nfl_game_matchup - First observed
invoke_nfl_injuries - First observed
invoke_nfl_injury_vacancy - First observed
invoke_nfl_line_matchups - First observed
invoke_nfl_list_slates - First observed
invoke_nfl_optimizer - First observed
invoke_nfl_ownership_by_contest - First observed
invoke_nfl_pace - First observed
invoke_nfl_personnel - First observed
invoke_nfl_personnel_epa - First observed
invoke_nfl_player_index - First observed
invoke_nfl_player_pool - First observed
invoke_nfl_proe - First observed
invoke_nfl_projections - First observed
invoke_nfl_props - First observed
invoke_nfl_roi - First observed
invoke_nfl_showdown - First observed
invoke_nfl_sim_picks - First observed
invoke_nfl_start_sit - First observed
invoke_nfl_survivor - First observed
invoke_nfl_team_stacks - First observed
invoke_nfl_weather - First observed
invoke_nfl_wowy - First observed
invoke_nhl_corsi - First observed
invoke_nhl_elo - First observed
invoke_nhl_injuries - First observed
invoke_nhl_line_matchups - First observed
invoke_nhl_lines - First observed
invoke_nhl_list_slates - First observed
invoke_nhl_odds_props - First observed
invoke_nhl_optimizer - First observed
invoke_nhl_player_pool - First observed
invoke_nhl_projections - First observed
invoke_nhl_showdown - First observed
invoke_nhl_sim_picks - First observed
invoke_nhl_starting_goalies - First observed
invoke_nhl_team_matchups - First observed
invoke_odds_comparison - First observed
invoke_pga_course_history - First observed
invoke_pga_injury_watch - First observed
invoke_pga_optimizer - First observed
invoke_pga_projections - First observed
invoke_pga_schedule - First observed
invoke_pga_strokes_gained - First observed
invoke_pga_weather - First observed
invoke_wnba_injuries - First observed
invoke_wnba_list_slates - First observed
invoke_wnba_optimizer - First observed
invoke_wnba_pace - First observed
invoke_wnba_player_index - First observed
invoke_wnba_player_pool - First observed
invoke_wnba_projections - First observed
invoke_wnba_rotations - First observed
invoke_wnba_showdown - First observed
query_testimonial - First observed
update_testimonial
Related MCP Connectors
NFL/NBA/MLB/NHL/PGA + DFS and prediction-market data. Browse free; query with a free API key.
Sports betting odds, player props, scores, betting splits and history from 30+ sportsbooks
AI-driven DFS lineup optimizer for MLB & NBA — build FanDuel & DraftKings lineups via MCP.
Real-time sports betting data: odds, player props, edges and arbitrage from 35+ books and DFS apps.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI-powered sports analytics for Daily Fantasy Sports (DFS) with real-time player projections, lineup optimization, live odds aggregation from multiple sportsbooks, and SHAP-based explainability to understand recommendation reasoning.41MIT

PropLineofficial
AlicenseAqualityAmaintenanceLive sports betting odds, cross-book +EV, and graded player-prop resolution across 13 books.11146 npm1MIT- AlicenseNot gradedqualityBmaintenanceProvides betting intelligence and analytics tools including exposure, CLV, sharp scoring, live betting, and Fantasy402 integration, running on Cloudflare Edge.8MIT
- AlicenseNot gradedqualityCmaintenanceGrades sports bets against thousands of play-by-play simulations, reporting simulated probability, implied probability, and edge.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.