Fantasy Solvers – Balatro Lab
Server Details
Supported Balatro scoring and exact small-deck play/discard analysis with verified explanations.
- Status
- Healthy
- Uptime
- 99.5% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Tools are mostly distinct (evaluate a hand, compare actions, recommend actions, get capabilities), but compare_actions and recommend_action both return exact small-deck action values and could be confused despite the 'immediate' vs 'optimal continuation' distinction. The mention of a non-existent explain_actions tool adds a minor dead-end.
All tool names follow a consistent snake_case verb_noun pattern: compare_actions, evaluate_hand, get_solver_capabilities, recommend_action. No deviations or mixed conventions.
Four tools is well-scoped for a focused solver: one for capabilities, one for hand scoring, one for action comparison, and one for action recommendation. Each earns its place without redundancy.
The core solver surface (capabilities, evaluate, compare, recommend) covers the main workflows, but the dangling reference to explain_actions suggests a missing explanation tool. No obvious gaps for state setup, though, since state is passed per call.
Available Tools
4 toolscompare_actionsBRead-onlyIdempotentInspect
Compare all immediate plays or exact small-deck play/discard values, with the same contract and validation as HTTP. Exact mode limits: 12 draw cards, two hands, two discards. Select explain_actions for particular branches.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | ||
| request_id | No | ||
| analysis_mode | No | exact_blind_survival | |
| explain_actions | No | ||
| contract_version | Yes | ||
| budget_score_calls | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description usefully discloses the exact-mode validation limits (12 draw cards, two hands, two discards) and that validation mirrors HTTP, but these limits largely restate the conditional schema and no cost, latency, or result-shape context is given.
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 purpose, and no padding. But 'with the same contract and validation as HTTP' is cryptic and consumes space without conveying actionable meaning.
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?
This is a complex tool with nested objects, conditional schema branches, and no output schema, yet the description is only three terse sentences. With 0% parameter coverage and no return-value explanation, an agent lacks enough to construct a valid call 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 0% across 6 parameters, so the description must carry the load. It only clarifies explain_actions and hints at analysis_mode (exact vs immediate); contract_version, budget_score_calls, request_id, and the required state object fields are left entirely to the schema, which does not describe them either.
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 ('Compare') and resource ('all immediate plays or exact small-deck play/discard values'), so the agent knows it enumerates and compares candidate actions. It does not explicitly differentiate itself from the sibling recommend_action, which likely does the same computation but returns a single pick, leaving that distinction 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?
'Select explain_actions for particular branches' and the mode-specific limit note imply when each mode applies, giving implied usage guidance. However, there is no explicit statement of when to choose this over recommend_action or evaluate_hand, and no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_handCRead-onlyIdempotentInspect
Versioned optimized immediate score from bengine-core. Played and held order is optimized, not evaluated literally. Unsupported effects are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| held | No | ||
| jokers | No | ||
| levels | No | ||
| played | Yes | ||
| discards | No | ||
| request_id | No | ||
| contract_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation is read-only, idempotent, non-destructive, and closed-world. The description adds meaningful behavioral context beyond those annotations: played and held order is optimized rather than evaluated literally, and unsupported effects are rejected. It still omits return format and broader failure behavior, but the added semantics are valuable.
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 terse and front-loads its core claim before adding optimization and rejection semantics. Every sentence contributes some signal, though the opening is jargon-heavy and could be clearer without becoming longer.
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 seven parameters, nested objects, no schema descriptions, and no output schema, the description is materially incomplete. It omits most parameter semantics and does not describe the return value beyond the vague phrase 'immediate score.' Annotations cover safety, but the remaining gaps are large.
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% for seven parameters, so the description carries the full burden. It only touches on 'played' and 'held' semantics, and says nothing about contract_version, jokers, levels, discards, or request_id. This leaves most parameter meaning 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 presents a noun phrase ('Versioned optimized immediate score from bengine-core') rather than a specific verb-resource statement. It implies that the tool evaluates a hand and computes an optimized score, but it does not explicitly distinguish the tool from siblings like compare_actions or recommend_action. The added notes about optimizing played/held order and rejecting unsupported effects add some specificity.
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 when-not-to-use exclusions, and no named alternatives among the sibling tools. The description only indirectly suggests the tool is for scoring a hand, leaving the agent to infer its role relative to compare_actions, get_solver_capabilities, and recommend_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_solver_capabilitiesBRead-onlyIdempotentInspect
Engine/rules/build identity, contract version, supported effects, assumptions and limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds value by enumerating the categories of information returned (identity, contract version, effects, assumptions, limits), but gives no format, stability, or freshness detail beyond that enumeration.
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 fragment with no filler; every term maps to a returned content category. It is arguably overly compressed, but nothing in it 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?
Low-complexity, zero-argument tool with full annotation coverage and no output schema; the description is the only source of return-value information and it names the main content categories. A slightly richer statement of what the returned identity/limits look like would make it fully self-sufficient.
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. There is nothing for the description to clarify beyond the (empty) schema, and it does not introduce any parameter confusion.
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 name plus description make it clear this is a metadata/introspection tool that reports the engine's identity, contract version, supported effects, assumptions and limits. It is cleanly distinguishable from the action-oriented siblings (compare_actions, evaluate_hand, recommend_action). However the description itself is a telegraphic noun list with no verb, so it leans on the tool name to state what it actually 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 at all, and no mention of the alternative siblings. For a capabilities endpoint the obvious guidance ('call this before invoking the solver to learn what it supports') is absent, leaving the agent to infer the invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_actionCRead-onlyIdempotentInspect
Exact small-deck mathematical action values under optimal continuation in the supported model, not estimated real-game success. Returns all optimal ties and fully reconciled draw explanations; no recommendation on incomplete jobs. No A2/full-deck sampling.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | ||
| request_id | No | ||
| analysis_mode | No | ||
| explain_actions | No | ||
| contract_version | Yes | ||
| budget_score_calls | 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, closed-world), so the bar is lower, and the description adds genuine context: results are exact model math rather than estimated real-game success, all optimal ties are returned, draw explanations are reconciled, and no recommendation is produced on incomplete jobs. The caveat about model vs. real-game success is exactly the kind of expectation-setting that prevents misuse.
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 with the central claim front-loaded and no filler; exclusions are appended efficiently. Slight cost from dense, undefined jargon, but every sentence 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 6-parameter, deeply nested, no-output-schema tool with zero schema descriptions, the description should explain the input contract and return shape. It covers the conceptual scope well but leaves the entire parameter surface and the result structure ('all optimal ties', 'reconciled draw explanations') undefined, which is a material gap 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 0% across 6 parameters including a deeply nested state object, so the description carries the full burden and fails to document any parameter (contract_version, analysis_mode, explain_actions, budget_score_calls, request_id are all unmentioned). It gives no hint about the card-string encoding, the level structure, or what explain_actions accepts. The mention that ties/draw explanations are returned loosely implies explain_actions but adds no 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 conveys that this computes exact action values (play/discard choices) under optimal continuation for a small-deck model, which is a real verb+resource statement. However, phrases like 'the supported model' and 'exact_blind_survival' are never grounded, and it never plainly says it recommends the best action nor contrasts itself with evaluate_hand or compare_actions. Useful but leaves an agent inferring the core purpose.
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 implied scope ('no recommendation on incomplete jobs', 'No A2/full-deck sampling'), which are exclusions of a sort, but they are stated as opaque jargon with no explanation of what A2 or a 'job' is. Nothing says when to call this versus compare_actions or evaluate_hand, and no prerequisites are given.
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.
4 tool updates
- First observed
compare_actions - First observed
evaluate_hand - First observed
get_solver_capabilities - First observed
recommend_action
Related MCP Connectors
Exact Texas Hold'em equity and hand analysis, every runout enumerated. Free, no API key.
All-in outcome rankings with live depth, fees, verified rules, EV checks, and track records.
Verify sealed BetsBeats picks, read the public record, and do odds math. Read-only. 21+.
Deterministic eligibility scoring for AI agents: CLEAR/HOLD/FAIL verdicts, published weights.
Related MCP Servers
- AlicenseAqualityAmaintenanceWindows-local MCP for Steam Balatro: tool-calling AI reads player-visible state, chooses and executes native actions, confirms results, and saves local experience. Glama's Linux sandbox can introspect MCP and run game-independent tools such as calculate, but cannot connect to Balatro on the user's Windows machine. Without the local game, health reports disconnected.4123MIT
- AlicenseNot gradedqualityBmaintenanceEnables users to read compact game state, execute legal actions with freshness checks, and inspect action schemas and wiki details for the Steam version of Balatro through MCP tools.MIT
- AlicenseNot gradedqualityCmaintenanceEnables an AI assistant to deterministically score hands of a Persian trick-taking card game from conversational bids and results, returning updated totals, validation errors, and plain-English explanations.MIT
- FlicenseNot gradedqualityCmaintenanceExposes endplay double-dummy calculations for chatbots/agents, providing full trick tables for bridge deals.-
Glama MCP Gateway
Add one secure layer between your agents and this server.