@battlegrid/mcp-server 31.2.95 → 31.2.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -2
- package/SKILL.md +4 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,6 +24,36 @@ Seeing package `31.x` alongside handshake `battlegrid@33.x` — the package **be
|
|
|
24
24
|
|
|
25
25
|
**What this changes for you:** nothing about how you call anything. Upgrading the package no longer waits on a server deploy, and a server deploy no longer strands you on a package that names the wrong contract — reconnect and the announcement follows. **Contract breaking-change notes are no longer keyed to package versions**, since a contract move is no longer a release here; the v11-and-earlier notes below are kept as history, and the live vocabulary is always discovery.
|
|
26
26
|
|
|
27
|
+
## Contract history — v109 (a player's picks are entered through their entry draft)
|
|
28
|
+
|
|
29
|
+
**Breaking at v109: `submit_market_grid` and `update_market_grid` are removed.** v109 is the contract on
|
|
30
|
+
top of v108. A player's picks for a session live in their Market Grid entry draft — the same draft their
|
|
31
|
+
builder on the session page writes as they pick — and an entry is placed or changed by committing it.
|
|
32
|
+
|
|
33
|
+
### Rejected input — something you send is no longer accepted
|
|
34
|
+
|
|
35
|
+
- **`submit_market_grid` and `update_market_grid`** leave discovery with no alias. A call gets the
|
|
36
|
+
standard unknown-tool refusal. Play is stage → get → commit:
|
|
37
|
+
`stage_market_grid_entry_draft({ request: { sessionId, draftVersion, axes } })` with one
|
|
38
|
+
`CELL_n: { cell: { coinId, prediction } }` per grid position (`CELL_0` is the captain) and a
|
|
39
|
+
`RATIONALE` carrying the reasoning, confidence, model name and per-cell pick reasoning the removed
|
|
40
|
+
tools required; `get_market_grid_entry_draft` for the diff, diagnostics and impact; then
|
|
41
|
+
`commit_market_grid_entry_draft({ request: { sessionId, draftVersion, expectedRevision } })` on the
|
|
42
|
+
player's word. `random_submit_market_grid` and `submit_agent_grid` are unchanged.
|
|
43
|
+
|
|
44
|
+
### Added tools
|
|
45
|
+
|
|
46
|
+
- **`get_market_grid_entry_draft`, `stage_market_grid_entry_draft`, `discard_market_grid_entry_draft`
|
|
47
|
+
and `list_market_grid_entry_drafts`** (`mcp:read`) read and stage the player's picks for free: no
|
|
48
|
+
entry, fee, deposit or LLM access. **`commit_market_grid_entry_draft`** (`mcp:wager`) enters a session
|
|
49
|
+
the player has not entered, charging the session's entry fee (the read's `impact.entryFee`), or
|
|
50
|
+
replaces a live entry's picks for no fee.
|
|
51
|
+
|
|
52
|
+
### Refusal vocabulary
|
|
53
|
+
|
|
54
|
+
- **An entry that already exists is a revision `CONFLICT`** naming the live entry's revision, with
|
|
55
|
+
`nextAct: get_draft`: read the draft again and commit over the revision it returns.
|
|
56
|
+
|
|
27
57
|
## Contract history — v108 (conditions are the only entry gate; signal rules are removed)
|
|
28
58
|
|
|
29
59
|
**Breaking at v108: signal rules, the aggregate-score gate and the required-count gate are removed.**
|
|
@@ -3322,7 +3352,7 @@ Strategies and intelligence agents change only through their drafts, with one to
|
|
|
3322
3352
|
1. **Choose the entity.** `list_strategies` (add `includeInactive:true` when repairing an archived strategy) and `get_strategy`, or `list_intelligence_agents` and `get_intelligence_agent`. `fork_strategy({ strategyId, sourceRevision })` copies a visible revision into a new create draft and returns its `strategyId` and `draftVersion`; it creates nothing.
|
|
3323
3353
|
2. **Discover the report vocabulary live.** Walk `list_strategy_categories` → `list_strategy_vocabulary` → `get_metric_construction_hints` → `get_strategy_column_contract`, and use `get_strategy_section_template` / `preview_strategy_report`. Do not guess metric, transform, parameter, template, or enabled-timeframe facts — they are server-discovered.
|
|
3324
3354
|
3. **Read the draft.** `get_<kind>_draft({ request: { <id> } })` returns the draft (or `null`), its `draftVersion` (0 when none is held), the live `committedRevision` (null for an entity not created yet), a per-axis `diff` against live, `diagnostics` and `impact`.
|
|
3325
|
-
4. **Stage the change.** `stage_<kind>_draft({ request: { <id>?, draftVersion, axes } })` names the version you read. Each axis is whole
|
|
3355
|
+
4. **Stage the change.** `stage_<kind>_draft({ request: { <id>?, draftVersion, axes } })` names the version you read. Each axis is whole: it replaces the drafted axis entirely, so restate what it keeps. Omit the id to open a new create draft; the response carries the minted id. A stage that has written never refuses: the composed draft's errors and warnings come back as `diagnostics`. It is refused only when the version is one the draft never reached (`DRAFT_VERSION_MOVED`) or when the player's own form changed an axis you are staging after that version (`DRAFT_AXIS_CONTESTED`, naming `contestedAxes`).
|
|
3326
3356
|
5. **Review with the player, then commit.** Read the draft again, show the player its diff and impact, and on their explicit word call `commit_<kind>_draft({ request: { <id>, draftVersion, expectedRevision } })` with exactly the two numbers that read returned — `expectedRevision: null` creates the entity at revision 1. A draft that moved is refused `DRAFT_VERSION_MOVED`, a moved revision `CONFLICT`, and an invalid draft with the same code its diagnostics carried; nothing is written. Each refusal's `details.nextAct` says what to do next (`get_draft` or `stage`). The commit is idempotent on `{ id, draftVersion }`: a retried commit replays its outcome. Changed strategy configuration propagates to every bound agent immediately; committing a draft of an archived strategy restores it.
|
|
3327
3357
|
|
|
3328
3358
|
`discard_<kind>_draft({ request: { <id>, draftVersion } })` removes the draft at the version you read and never one that moved since. `preview_strategy_report({ coinSelection, source: { kind: 'DRAFT', strategyId, draftVersion } })` previews a draft as a commit would compose it. In multi-account mode the lifecycle tools use the `{ account, request }` sibling envelope; `preview_strategy_report` keeps its own flat input and takes `account` beside `coinSelection` and `source`.
|
|
@@ -3331,7 +3361,7 @@ Strategies and intelligence agents change only through their drafts, with one to
|
|
|
3331
3361
|
|
|
3332
3362
|
## Capabilities
|
|
3333
3363
|
|
|
3334
|
-
Tools, prompts, and resources are **discovered live** from the connected server via `tools/list`, `prompts/list`, and `resources/list`. This package intentionally does not copy the server's catalog, formulas,
|
|
3364
|
+
Tools, prompts, and resources are **discovered live** from the connected server via `tools/list`, `prompts/list`, and `resources/list`. This package intentionally does not copy the server's catalog, formulas, or defaults — inspect the live connection for the authoritative, current surface. Broadly, the server exposes game play (Market Grid), market context, account state, leaderboards, intelligence agents and automation, strategy discovery/authoring, and trading signals/decisions.
|
|
3335
3365
|
|
|
3336
3366
|
## Environment variables
|
|
3337
3367
|
|
package/SKILL.md
CHANGED
|
@@ -30,7 +30,7 @@ to connect and to know which one to open.
|
|
|
30
30
|
|
|
31
31
|
## Discover the live surface first
|
|
32
32
|
|
|
33
|
-
**Tools, prompts, and resources are discovered live from this MCP connection.** Always read the current `tools/list`, `prompts/list`, and `resources/list` before acting — a cached capability list is not authoritative after a server deployment. This skill teaches the workflows and the strict request contracts; it deliberately does not copy the server's tool catalog, metric/transform vocabulary,
|
|
33
|
+
**Tools, prompts, and resources are discovered live from this MCP connection.** Always read the current `tools/list`, `prompts/list`, and `resources/list` before acting — a cached capability list is not authoritative after a server deployment. This skill teaches the workflows and the strict request contracts; it deliberately does not copy the server's tool catalog, metric/transform vocabulary, formulas, or default values. Discover those from the live tools (`list_strategy_categories`, `list_strategy_vocabulary`, `list_strategy_signals`, `get_strategy_signal_definition`, …). Never guess a metric, transform, parameter, template, signal, or enabled-timeframe fact.
|
|
34
34
|
|
|
35
35
|
## Single-account vs multi-account request shape
|
|
36
36
|
|
|
@@ -85,7 +85,8 @@ as a rebind. **`battlegrid-radar-deployment`** carries putting an agent on stand
|
|
|
85
85
|
|
|
86
86
|
Predict UP or DOWN for each coin in the pool; exactly one coin is your **Captain** (2x score
|
|
87
87
|
multiplier). **The arc lives in `battlegrid-arena-play`** — activate it to find a session, read its
|
|
88
|
-
market context,
|
|
88
|
+
market context, stage picks with real per-coin reasoning into the player's entry draft (the same draft
|
|
89
|
+
their builder writes), read it back, commit it on the player's word, and read the results.
|
|
89
90
|
**`battlegrid-market-analysis`** carries the market read that informs the picks, and
|
|
90
91
|
**`battlegrid-trade-analysis`** carries reading back how you have done.
|
|
91
92
|
|
|
@@ -93,7 +94,7 @@ The `play-market-grid` prompt (discover via `prompts/list`) provides a guided en
|
|
|
93
94
|
|
|
94
95
|
## Retired operations
|
|
95
96
|
|
|
96
|
-
`create_strategy`, the plan tools (`compile_strategy_plan`, `stage_strategy_plan`, `apply_strategy_plan`), `update_strategy_signal_rule`, the signal-rule tools (`simulate_aggregate_score`, `list_strategy_signals`, `get_strategy_signal_definition`, `derive_strategy_rule_view`, `get_coin_signal_preview`),
|
|
97
|
+
`create_strategy`, the plan tools (`compile_strategy_plan`, `stage_strategy_plan`, `apply_strategy_plan`), `update_strategy_signal_rule`, the signal-rule tools (`simulate_aggregate_score`, `list_strategy_signals`, `get_strategy_signal_definition`, `derive_strategy_rule_view`, `get_coin_signal_preview`), the direct agent writers (`create_intelligence_agent`, `update_intelligence_agent`, `rebind_intelligence_agent`), and the direct grid writers (`submit_market_grid`, `update_market_grid`) are **retired** — they are absent from discovery and cannot be invoked. Stage into the entity's draft, read it back, and commit the version you read; a strategy's entry gate is its conditions (a required or verdict-carrying condition — a strategy with none never trades, and its draft warns `NO_ENTRY_CONDITION`), its ATR floor `minAtrPct` is part of the `TRADE_LEVEL_POLICY` axis, a strategy binding is the agent draft's `STRATEGY_BINDING` axis, and a player's Market Grid picks are the entry draft's `CELL_n` and `RATIONALE` axes. A deployment preview's `previewToken`, and the `confirm` on a deployment commit, resume, delete or draft discard, are retired the same way: a strict input refuses either key. Do not attempt flat legacy payloads; the server enforces a closed-world request root and the proxy never reconstructs them.
|
|
97
98
|
|
|
98
99
|
## Common errors
|
|
99
100
|
|
package/dist/index.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ import { type Implementation, type Prompt, type Resource } from '@modelcontextpr
|
|
|
49
49
|
* being asked. Move it for a change to THIS package — a proxy fix, a dependency bump, a docs
|
|
50
50
|
* correction. Never move it to track the server.
|
|
51
51
|
*/
|
|
52
|
-
export declare const PACKAGE_VERSION = "31.2.
|
|
52
|
+
export declare const PACKAGE_VERSION = "31.2.98";
|
|
53
53
|
export declare const DEFAULT_URL = "https://mcp.battlegrid.trade/mcp";
|
|
54
54
|
export interface EnvConfig {
|
|
55
55
|
apiKeys: string[];
|
package/dist/index.js
CHANGED
|
@@ -52,7 +52,7 @@ import { ListToolsRequestSchema, CallToolRequestSchema, ListPromptsRequestSchema
|
|
|
52
52
|
* being asked. Move it for a change to THIS package — a proxy fix, a dependency bump, a docs
|
|
53
53
|
* correction. Never move it to track the server.
|
|
54
54
|
*/
|
|
55
|
-
export const PACKAGE_VERSION = '31.2.
|
|
55
|
+
export const PACKAGE_VERSION = '31.2.98';
|
|
56
56
|
export const DEFAULT_URL = 'https://mcp.battlegrid.trade/mcp';
|
|
57
57
|
const MAX_RETRIES = 3;
|
|
58
58
|
const RETRY_DELAYS_MS = [2000, 4000, 8000];
|