Skip to main content
Glama

Report on board textures

get_board_report
Read-onlyIdempotent

Preferred tool for board-texture heuristics. Aggregates action frequencies and range/action composition across solved boards in one postflop pack. Results explicitly report sample breadth and use equal weight per board.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
packYesPack id from list_postflop_packs. Use a sizingTrees packId to pick the tree: the pack id for 75% pot on the flop, or "<pack>-flop33" for 33%.
pathNoExact childSegment path from get_postflop_node, e.g. ["Check", "Bet 5.5"]. Empty for the root.
anteBbNoRequested ante in bb. nlmtt8 models a 1bb BB-ante; other positive antes return unsupported coverage.
formatNoRequested poker format. "cash" uses the cash trees. "mtt" is supported only for preflop chip-EV against game nlmtt8; ICM, PKO, and satellite remain unsupported.
filtersNoTexture filters applied to the pack's solved boards. All optional; omit for every board.
objectiveNoRequested optimization objective. chip_ev is supported for nlmtt8 preflop. ICM, PKO, and satellite return unsupported coverage.
boardLimitNoMaximum matching boards to analyze (default and maximum 50)
representativeLimitNoMaximum representative boards returned (default 12, maximum 20)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultNoAction frequencies and range composition aggregated across solved boards, with equal weight per board, plus representative boards. Null when the request is unsupported.
contextNoCanonical context the answer belongs to (variant, format, stacks, positions, board, path). Null when the request is unsupported.
coverageNoWhether the request was answered exactly, aggregated, or refused as out of coverage.
warningsNoCaveats that must survive into any answer built on this result.
schemaVersionNoEnvelope version, currently "1.0".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / filters / description
      Added value: +"Texture filters applied to the pack's solved boards. All optional; omit for every board."
    • addedInput schema / properties / filters / properties / connectivity / description
      Added value: +"How many board cards sit inside one five-rank straight window."
    • addedInput schema / properties / filters / properties / highCard / description
      Added value: +"Exact highest board rank."
    • addedInput schema / properties / filters / properties / highCardClass / description
      Added value: +"Highest board rank bucketed: ace, ten through king, seven through nine, or lower."
    • addedInput schema / properties / filters / properties / pairedness / description
      Added value: +"Rank repetition on the board."
    • addedInput schema / properties / filters / properties / suitTexture / description
      Added value: +"Most cards of one suit on the board. A three-card monotone flop is monotone."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Coverage-first envelope: coverage and context describe the answer, result carries it.",
      +  "properties": {
      +    "context": {
      +      "description": "Canonical context the answer belongs to (variant, format, stacks, positions, board, path). Null when the request is unsupported.",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "coverage": {
      +      "description": "Whether the request was answered exactly, aggregated, or refused as out of coverage.",
      +      "properties": {
      +        "analyzedBoards": {
      +          "description": "Boards actually read at the requested path.",
      +          "type": "integer"
      +        },
      +        "available": {
      +          "description": "What is published instead.",
      +          "type": "string"
      +        },
      +        "dataClass": {
      +          "description": "\"solver\", \"solver_aggregate\", or \"solver_comparison\".",
      +          "type": "string"
      +        },
      +        "generatedAt": {
      +          "description": "When the pack was generated.",
      +          "type": "string"
      +        },
      +        "hasEv": {
      +          "description": "Whether the pack ships per-combo EV.",
      +          "type": "boolean"
      +        },
      +        "matchingBoards": {
      +          "description": "Boards matching the texture filters.",
      +          "type": "integer"
      +        },
      +        "objective": {
      +          "description": "\"solver_ev\", \"cash_game_ev\", or \"chip_ev\".",
      +          "type": "string"
      +        },
      +        "omittedByLimit": {
      +          "description": "Matching boards dropped by boardLimit.",
      +          "type": "integer"
      +        },
      +        "reason": {
      +          "description": "Why the request is out of coverage.",
      +          "type": "string"
      +        },
      +        "requested": {
      +          "description": "The format, objective, ante, or pack that was asked for.",
      +          "type": "object"
      +        },
      +        "solveQuality": {
      +          "description": "Published exploitability and iteration counts. Omitted, never estimated, when the pack does not publish them.",
      +          "type": "object"
      +        },
      +        "source": {
      +          "description": "Pack, board, path, generation time, and solve quality.",
      +          "type": "object"
      +        },
      +        "status": {
      +          "description": "\"exact\", \"aggregated_report\", or \"unsupported\". Treat \"unsupported\" as a hard stop.",
      +          "type": "string"
      +        },
      +        "unavailableAtPath": {
      +          "description": "Selected boards with no node at the path.",
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "result": {
      +      "description": "Action frequencies and range composition aggregated across solved boards, with equal weight per board, plus representative boards. Null when the request is unsupported.",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "schemaVersion": {
      +      "description": "Envelope version, currently \"1.0\".",
      +      "type": "string"
      +    },
      +    "warnings": {
      +      "description": "Caveats that must survive into any answer built on this result.",
      +      "items": {
      +        "description": "One caveat about how the result may be used.",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the bar is low. The description adds genuinely non-obvious methodology: results report sample breadth and weight each board equally, which matters for interpreting the aggregate. It does not mention rate limits or cost.

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

Conciseness5/5

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

Three short sentences, front-loaded with the usage claim followed by the mechanism and the statistical caveat. Every sentence carries information an agent would not get from the schema or annotations.

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

Completeness4/5

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

An output schema exists, so return-shape explanation is not needed, and annotations carry the safety profile. With 100% schema coverage the remaining burden is light, and the description covers purpose, usage fit, and weighting methodology. It stops short of clarifying how it relates to the node-level siblings for related questions.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 8 parameters including the nested filters object and the pack/path relationship. The description adds only the scoping phrase "one postflop pack" and no format or syntax detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific action (aggregates action frequencies and range/action composition) on a specific resource (solved boards in one postflop pack), which distinguishes it from node-level siblings like get_postflop_node. It positions itself as the texture-heuristic tool but never names the sibling it displaces, so an agent still has 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.

Usage Guidelines4/5

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

"Preferred tool for board-texture heuristics" gives a clear use context: reach for this when aggregating across many boards rather than inspecting one node. The pack parameter also routes the agent to list_postflop_packs. There is no explicit when-not statement or named alternative.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources