Skip to main content
Glama

Get table configuration

get_config
Read-onlyIdempotent

Table for one preflop game and stack, in big blinds: seats, stacks, blinds (sb 0.5, bb 1), ante, antePostedBy, stackIncludesAnte, openSizes (first-in raise-to), evUnit, evBaseline. Convergence is not published. stackIncludesAnte is true: the named depth is the starting stack and the 1bb BB ante is posted from it. openSizes at 40bb is open 2.2x (listing 2.2bb; node decodes code 40034 to 2.19bb) and SB 2.8x (2.8bb). 10bb is all-in/fold versus 50bb stacks, so stacks is null there. evs on nodes are small blinds relative to fold. Example: get_config({ game: "nlmtt8", stack: 40 }).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gameYes"nl" = no-limit hold'em 6-max cash (169-grid hands, per-hand EV in small blinds), "nl9" = no-limit hold'em 9-max cash, "nlmtt8" = no-limit hold'em 8-max MTT chip-EV (10–300bb, 1bb BB-ante; Fold/Call/Limp/AI/Open/3B tokens), "nlh8-hydra" = no-limit hold'em 8-max MTT chip-EV with a classic 0.1bb ante from every seat (10, 20, 30, 60bb; same tokens as nlmtt8), "plo" = pot-limit Omaha 6-max cash (4-card), "plo5" = pot-limit Omaha 5-card 6-max (100bb, 1.2bb ante), "plo9" = pot-limit Omaha 9-max cash, "plo6hu" = 6-card Omaha heads-up (BTN vs BB, 100bb). Cash trees are not tournament, ICM, PKO, or satellite solves. nlmtt8 is chip-EV only.
stackYesStack depth in big blinds, e.g. 40

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
anteNoAnte in big blinds.
gameNoGame id.
seatsNoSeats in action order.
stackNoStack depth in big blinds.
unitsNoUnit labels for stack, stacks, blinds, ante, openSizes, and evs.
blindsNoBlinds in big blinds.
evUnitNoEV unit, "sb".
stacksNoStarting stacks per seat. Null where the depth is solved against a different stack (10bb all-in/fold versus 50bb).
openSizesNoFirst-in raise-to sizes, by seat, with label and sizeBb.
evBaselineNoWhat EV is measured against, "fold".
antePostedByNoSeat that posts the ante.
schemaVersionNoPayload version, 1.
stackIncludesAnteNoTrue when the named depth already contains the ante.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Table setup for one preflop game and stack, in big blinds. Convergence is not published.",
      +  "properties": {
      +    "ante": {
      +      "description": "Ante in big blinds.",
      +      "type": "number"
      +    },
      +    "antePostedBy": {
      +      "description": "Seat that posts the ante.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "blinds": {
      +      "description": "Blinds in big blinds.",
      +      "properties": {
      +        "bb": {
      +          "description": "Big blind, 1.",
      +          "type": "number"
      +        },
      +        "sb": {
      +          "description": "Small blind, 0.5.",
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "evBaseline": {
      +      "description": "What EV is measured against, \"fold\".",
      +      "type": "string"
      +    },
      +    "evUnit": {
      +      "description": "EV unit, \"sb\".",
      +      "type": "string"
      +    },
      +    "game": {
      +      "description": "Game id.",
      +      "type": "string"
      +    },
      +    "openSizes": {
      +      "description": "First-in raise-to sizes, by seat, with label and sizeBb.",
      +      "type": "object"
      +    },
      +    "schemaVersion": {
      +      "description": "Payload version, 1.",
      +      "type": "number"
      +    },
      +    "seats": {
      +      "description": "Seats in action order.",
      +      "items": {
      +        "description": "Seat label.",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "stack": {
      +      "description": "Stack depth in big blinds.",
      +      "type": "number"
      +    },
      +    "stackIncludesAnte": {
      +      "description": "True when the named depth already contains the ante.",
      +      "type": "boolean"
      +    },
      +    "stacks": {
      +      "description": "Starting stacks per seat. Null where the depth is solved against a different stack (10bb all-in/fold versus 50bb).",
      +      "items": {
      +        "description": "Starting stack in big blinds.",
      +        "type": "number"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "units": {
      +      "description": "Unit labels for stack, stacks, blinds, ante, openSizes, and evs.",
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world, non-destructive), and the description adds real behavioral context beyond them: convergence is not published, stackIncludesAnte semantics for the 1bb BB ante, stacks is null at 10bb (all-in/fold vs 50bb), and that node EVs are small blinds relative to fold. These are non-obvious edge cases an agent would otherwise get wrong, though formatting behavior and error cases are unaddressed.

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

Conciseness3/5

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

Information density is high and most sentences carry non-obvious domain facts, but there is no front-loaded topic sentence and the text is a run-on stream mixing return fields, ante accounting, open-size encoding, null semantics and units. Detail such as 'node decodes code 40034 to 2.19bb' is marginal and hurts readability without adding routing value.

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 values need not be explained, yet the description supplies the interpretive context an agent needs (units, ante treatment, null stacks at 10bb) for a two-parameter lookup tool. What remains missing is when to prefer this over listing games or fetching tree docs, which is a usage gap rather than a completeness one.

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% and the schema itself documents each game enum value exhaustively, so the description's enum discussion (nlmtt8, nlh8-hydra ante scheme) is largely redundant with structured data. It does add field-level semantics not in the schema (evUnit, evBaseline, openSizes as first-in raise-to), but not parameter-level meaning, so the 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?

The opening clause identifies the returned resource precisely ('Table for one preflop game and stack, in big blinds: seats, stacks, blinds, ante, antePostedBy, stackIncludesAnte, openSizes, evUnit, evBaseline'), so an agent can tell it returns table/spot configuration rather than strategy or results. It is not a clean verb+resource sentence and makes no attempt to distinguish itself from siblings like list_games or get_tree_docs, which keeps it out of 5 territory.

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

Usage Guidelines3/5

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

Usage is only implied: the trailing example get_config({ game: "nlmtt8", stack: 40 }) shows how to call it, and the field list implies you use it to understand a table before deeper queries. There is no explicit when-to-use, no when-not, and no named alternative among the ~28 siblings.

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