@battlegrid/mcp-server 31.2.41 → 31.2.44

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 CHANGED
@@ -24,6 +24,120 @@ 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 — v66
28
+
29
+ **Breaking: one tool retired and one input reshaped.** Radar content now commits only as a draft the
30
+ player was shown a live preview of. The player's radar builder and every conversation share one
31
+ unsaved draft per coin.
32
+
33
+ ### Removed tool — something you call no longer exists
34
+
35
+ - **`upsert_radar_deployment` is retired**, with no alias. Calling it is an unknown-tool error. To
36
+ deploy or change a coin's Radar policy:
37
+ 1. `stage_radar_deployment_draft` the axes you are changing;
38
+ 2. `preview_radar_resolution` with `request: { kind: "DRAFT", draftVersion }` at the version staging
39
+ returned;
40
+ 3. show the player the resolution, and on their word call `commit_radar_deployment_draft` with the
41
+ `previewToken` that preview returned and `confirm: true`.
42
+
43
+ Pausing is no longer a flag on the write: use `pause_radar_deployment`.
44
+
45
+ ### Rejected input — something you send is no longer accepted
46
+
47
+ - **`preview_radar_resolution`'s `request` needs a `kind`.** `{ kind: "SLOTS", deploymentTimeframe,
48
+ slots, simulatedRegime? }` is the old request. `{ kind: "DRAFT", draftVersion }` previews the
49
+ player's draft of the coin at that version, composed over the deployed policy exactly as the commit
50
+ writes it. `{ kind: "COMMITTED" }` previews the deployed policy a resume would arm. A request
51
+ without `kind` is refused.
52
+
53
+ ### Wider surface — seven tools added
54
+
55
+ - **`stage_radar_deployment_draft`**, **`get_radar_deployment_draft`**,
56
+ **`list_radar_deployment_drafts`** and **`discard_radar_deployment_draft`** (`mcp:read`). The draft
57
+ axes are `DEPLOYMENT_TIMEFRAME`, `RULES` (the complete ordered rule list, first = highest priority)
58
+ and `DEFAULT_SLOT`, each written whole. None of them commits or arms anything.
59
+ - **`commit_radar_deployment_draft`** (`coinId`, `previewToken`, `confirm: true`; `mcp:wager`) — the
60
+ only MCP committer of radar content.
61
+ - **`pause_radar_deployment`** (`coinId`; `mcp:wager`) — no revision and no certificate: a disarm never
62
+ waits on a read.
63
+ - **`resume_radar_deployment`** (`coinId`, `previewToken`, `confirm: true`; `mcp:wager`) — needs the
64
+ certificate a live `COMMITTED` preview returned.
65
+
66
+ ### Reshaped output — `preview_radar_resolution`
67
+
68
+ - Gains **`previewToken`**, the certificate a LIVE preview (no `simulatedRegime`) of `DRAFT` or
69
+ `COMMITTED` earns — null otherwise, and good for five minutes. It also gains
70
+ **`enabledAfterCommit`**: whether the policy trades once the previewed write lands. A paused
71
+ policy's draft stays paused.
72
+
73
+ ### Refusals worth knowing before you commit or resume
74
+
75
+ - **The certificate is bound to what you previewed**: your credential, the player, the coin, the
76
+ subject, the deployment and its revision, the draft version and the composed content. If the
77
+ player edits the draft, another commit lands, the coin is redeployed, or an agent in it is deleted,
78
+ the commit or resume is a `CONFLICT` and nothing is written. Preview again; never reuse the old
79
+ certificate.
80
+ - **`commit_radar_deployment_draft` takes only a draft certificate**, and `resume_radar_deployment`
81
+ only a committed-policy one.
82
+ - **`discard_radar_deployment_draft` with `confirm: true` requires `expectedVersion`**: the version the
83
+ unconfirmed call named and the player was shown. A draft that moved since is answered again, and
84
+ nothing is removed.
85
+ - **`delete_radar_deployment` also ends the player's radar draft of the coin.**
86
+
87
+ ### Vocabulary
88
+
89
+ `toolCount` goes 126 → 132. `preview_radar_resolution`'s input and output schemas move, and
90
+ `upsert_radar_deployment`'s are removed.
91
+
92
+ ## Contract history — v65
93
+
94
+ **Breaking on one input, and four refusals behind unchanged schemas.** Agent staging now names the
95
+ draft version its proposal was read against, and three commits and one stage step aside where they
96
+ would otherwise land around the player's open draft or on a strategy that moved.
97
+
98
+ ### Rejected input — something you send is no longer accepted
99
+
100
+ - **`stage_agent_draft` requires `draftVersion`**, an integer ≥ 0: the `version` the
101
+ `get_agent_draft` read you proposed against returned, or `0` when it returned `{ draft: null }`.
102
+ A call that omits it, or sends a negative or fractional number, is refused at the boundary. On a
103
+ new create draft send `0`, then reuse the `version` each accepted call returns.
104
+
105
+ ### Refusals worth knowing before you stage or commit
106
+
107
+ - **A `draftVersion` above the draft's own is refused.** A draft's version only grows, so no read
108
+ ever returned it: the draft you read was saved or discarded since. Read again — never raise the
109
+ number to get past the refusal.
110
+
111
+ - **The contested-axis refusal is measured from your `draftVersion`**, not from a read the call
112
+ makes for itself, so an edit the player made between your read and your stage is refused by name
113
+ rather than silently overwritten.
114
+
115
+ - **`update_strategy_signal_rule` and `restore_strategy` answer `CONFLICT` while the player holds a
116
+ draft of that strategy.** Compile the tune and stage it with `stage_strategy_plan`; for a restore,
117
+ ask the player to save or discard their draft first. A caller whose player holds no draft is
118
+ unaffected.
119
+
120
+ - **`stage_strategy_plan` refuses a plan the strategy committed past** after the plan compiled,
121
+ with the same answer `apply_strategy_plan` gives: compile again against what is committed now.
122
+
123
+ - **Every refusal around an open draft names its version** in `details.draftVersion` — the
124
+ committers above, the agent committers, and a stage refused for a version above the draft's own —
125
+ so you can read the draft the player holds and propose against it.
126
+
127
+ ### Changed meaning, unchanged shape
128
+
129
+ - **A draft axis's `source` names the door it came through.** A Telegram Commander turn stamps
130
+ `telegram` and a connected client stamps `mcp`, where every staging call used to stamp
131
+ `commander`. Both values were already in the enum.
132
+
133
+ - **A draft's `version` keeps counting after a save or discard empties it.** The next draft for the
134
+ same agent or strategy starts above the last version rather than at `1`, so a version you read is
135
+ never reissued to a different draft.
136
+
137
+ ### Vocabulary
138
+
139
+ `toolCount` stays 126. One input schema moves, `stage_agent_draft`'s; no output schema moves.
140
+
27
141
  ## Contract history — v64.1
28
142
 
29
143
  Purely additive in schema, with **one refusal behind an unchanged one.** An agent's unsaved
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.41";
52
+ export declare const PACKAGE_VERSION = "31.2.44";
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.41';
55
+ export const PACKAGE_VERSION = '31.2.44';
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];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@battlegrid/mcp-server",
3
- "version": "31.2.41",
3
+ "version": "31.2.44",
4
4
  "description": "BattleGrid MCP server — play crypto prediction games from AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",