@battlegrid/mcp-server 31.2.48 → 31.2.50

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,110 @@ 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 — v68.1 (Arena regime sets)
28
+
29
+ Purely additive in schema, with **one refusal behind unchanged ones.** An Arena rule's regime condition
30
+ is a SET in the draft, as it always was in the committed deployment: one rule can fire in several
31
+ regimes, instead of one rule per regime.
32
+
33
+ ### Wider input — `stage_deployment_policy_draft`
34
+
35
+ - **A rule's `regimes` may name several regimes**, where the draft capped it at one. The set is stored in
36
+ the selectable-regime order, so a staged `[VOLATILE, BULL_EXPANSION]` reads back
37
+ `[BULL_EXPANSION, VOLATILE]`. A regime named twice is refused.
38
+
39
+ ### Wider output — `get_deployment_policy_draft`
40
+
41
+ - **The draft may return such a set.** `get_deployment_policy` has served sets all along, so a client that
42
+ reads a committed deployment already handles them.
43
+
44
+ ### Refusals behind unchanged schemas
45
+
46
+ - **`preview_deployment_resolution` (SLOTS), `preview_radar_resolution` (SLOTS) and
47
+ `test_generate_deployment_grid` refuse a regime condition naming one regime twice**, as
48
+ `VALIDATION_ERROR` at its `regimes` field, where they used to resolve or generate over it. The stage tools
49
+ already refused a repeat, so no commit changes; a repeated member is a malformed set.
50
+
51
+ ## Contract history — v68 (Arena drafts)
52
+
53
+ **Breaking: one tool retired, two inputs reshaped.** Arena deployment content now commits only as a
54
+ draft the player was shown a live preview of, as radar content has since v66. The player's deploy
55
+ editor and every conversation share one unsaved draft per arena.
56
+
57
+ ### Removed tool — something you call no longer exists
58
+
59
+ - **`upsert_deployment_policy` is retired**, with no alias. Calling it is an unknown-tool error. To
60
+ deploy or change an arena's deployment:
61
+ 1. `stage_deployment_policy_draft` the axes you are changing (`RULES`, `DEFAULT_SLOT`,
62
+ `REGIME_ANCHOR`), with the `draftVersion` your last read returned;
63
+ 2. `preview_deployment_resolution` with `request: { kind: "DRAFT", draftVersion }` at the version
64
+ staging returned;
65
+ 3. show the player the resolution and whether it will play (`enabledAfterCommit`), and on their word
66
+ call `commit_deployment_policy_draft` with the `previewToken` that preview returned and
67
+ `confirm: true`.
68
+
69
+ Pausing is no longer a flag on the write: use `pause_deployment_policy`. **A first deployment always
70
+ plays**; a replacement keeps its pause.
71
+
72
+ ### Rejected input — something you send is no longer accepted
73
+
74
+ - **`preview_deployment_resolution`'s `request` needs a `kind`.** `{ kind: "SLOTS", slots, … }` is the
75
+ old request. `{ kind: "DRAFT", draftVersion }` previews the player's draft of the arena at that
76
+ version, composed over the deployed policy exactly as the commit writes it. `{ kind: "COMMITTED" }`
77
+ previews the deployed policy a resume would arm. A request without `kind` is refused.
78
+ - **`delete_deployment_policy` requires `expectedPolicyId`** beside `expectedRevision`: a revision
79
+ restarts at 1 when an arena is redeployed, so only the pair names the deployment you read.
80
+ - **A regime anchor override names its coin and timeframe together, or neither**, on every path
81
+ including `test_generate_deployment_grid` and the SLOTS preview.
82
+
83
+ ### Wider surface — eight tools added
84
+
85
+ - **`stage_deployment_policy_draft`**, **`get_deployment_policy_draft`**,
86
+ **`list_deployment_policy_drafts`** and **`discard_deployment_policy_draft`** (`mcp:read`). None of
87
+ them commits or arms anything.
88
+ - **`commit_deployment_policy_draft`** (`presetId`, `previewToken`, `confirm: true`; `mcp:wager`) — the
89
+ only MCP committer of Arena content.
90
+ - **`pause_deployment_policy`** (`presetId`; `mcp:wager`) — no revision and no certificate.
91
+ - **`resume_deployment_policy`** (`presetId`, `previewToken`, `confirm: true`; `mcp:wager`) — needs the
92
+ certificate a live `COMMITTED` preview returned.
93
+ - **`cancel_market_grid_submission`** (`sessionId`, `confirm: true`; `mcp:wager`) — the player's own
94
+ cancellation and refund of one entry.
95
+
96
+ ### Reshaped and wider output
97
+
98
+ - **`preview_deployment_resolution`** nests the resolution under `resolution` and gains
99
+ **`previewToken`** (the certificate a live DRAFT or COMMITTED preview earns, null otherwise, good for
100
+ five minutes) and **`enabledAfterCommit`**.
101
+ - **`pause_deployment_policy` and `delete_deployment_policy` return `openEntries`**: the entries the
102
+ player's agent already made in the arena's pending sessions, each with its lock time and entry fee.
103
+ They play out unless the player cancels them — tell the player and ask, then call
104
+ `cancel_market_grid_submission` only for the entries they pick.
105
+ - **`get_deployment_policy`'s `authoringContext`** gains the arena's header facts
106
+ (`regimeReferenceTicker`, `presetBadgeImageUrl`, `entryFee`, and `playerCount` — null when the arena
107
+ has no pending session to count).
108
+ - The thought-log **`outcome`** gains **`SKIPPED_DEPLOYMENT_DISARMED`**: an entry job that found its
109
+ deployment withdrawn, paused or no longer slotting its agent stood down before paying.
110
+
111
+ ### Refusals worth knowing before you commit or resume
112
+
113
+ - **The certificate is bound to what you previewed**: your credential, the player, the arena, the
114
+ subject, the deployment and its revision, the draft version and the composed content. Anything that
115
+ moves is a `CONFLICT` and nothing is written. Preview again; never reuse the old certificate.
116
+ - **A commit never withdraws**: a draft with no rule and no catch-all is refused, naming
117
+ `delete_deployment_policy`.
118
+ - **Resume is refused on a retired arena and on one the player's access was revoked from**; pausing and
119
+ withdrawing stay open.
120
+ - **Deployment refusals answer `INVALID_DEPLOYMENT_POLICY`.**
121
+ - **`delete_deployment_policy` also ends the player's draft of the arena.**
122
+
123
+ ### Vocabulary
124
+
125
+ `toolCount` goes 134 → 141 (eight added, one retired). `preview_deployment_resolution`'s input and
126
+ output, `delete_deployment_policy`'s input and output, `get_deployment_policy`'s and
127
+ `list_deployment_policies`' outputs, the three journal outputs and `test_generate_deployment_grid`'s
128
+ input (a session start now accepts up to 288 times a day) move; `upsert_deployment_policy`'s are
129
+ removed.
130
+
27
131
  ## Contract history — v66.1 → v67
28
132
 
29
133
  **Breaking at v67: four output fields removed.** v66.1 and v66.2 were additive and are recorded here
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.48";
52
+ export declare const PACKAGE_VERSION = "31.2.50";
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.48';
55
+ export const PACKAGE_VERSION = '31.2.50';
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.48",
3
+ "version": "31.2.50",
4
4
  "description": "BattleGrid MCP server — play crypto prediction games from AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "generator": "battlegrid-app/server/scripts/export-mcp-skills.mjs",
3
- "contractVersion": "68.0.0",
3
+ "contractVersion": "68.1.0",
4
4
  "files": {
5
5
  "battlegrid-agent-management/SKILL.md": "fbc602e9445d0f72353bfba23c30a364b478bd04a9cc6248418cfeec66717eb1",
6
6
  "battlegrid-arena-play/SKILL.md": "4cfaa92a8d0dcaf477b227abd774e7aa8642c185d72108dfd401be0cf8aecd7f",
7
7
  "battlegrid-market-analysis/SKILL.md": "22fde9c4eac0261c89a8056ab8b20b66fcbe1fd58447fa0ac84fd410b4d134d7",
8
- "battlegrid-radar-deployment/SKILL.md": "e2098ac23d80ab985eb93d46f6cc81c84b63dbba12b3bb3eb4cfdcef10ef3b82",
8
+ "battlegrid-radar-deployment/SKILL.md": "87601043eb3920faa153061e4ea93f4d8618dbdb8fe8c3be52b4e47ddba18d83",
9
9
  "battlegrid-strategy-authoring/SKILL.md": "95e91dd1ff36922b7ed0f5eb92c98def98fa39cce37c3d7447269aea1b5a017f",
10
10
  "battlegrid-strategy-doctor/SKILL.md": "d0b9e9e07648246d5a23b0c17183278b70b5bcbb5f472ac7da13d03e42a6c6c6",
11
11
  "battlegrid-strategy-examples/SKILL.md": "17e8cf8040813622bd5b82165c7af82e03287fee1f6aac974e0b6c584580dd27",
@@ -84,7 +84,7 @@ it certifies nothing and cannot be committed.
84
84
 
85
85
  1. `stage_deployment_policy_draft` with `draftVersion` = the `version` you read (0 when there was no
86
86
  draft) and only the axes you are changing, each WHOLE: `RULES` (the complete ordered rule list —
87
- first is highest priority, one regime per rule), `DEFAULT_SLOT` (the catch-all, or null for none)
87
+ first is highest priority; a rule's regime condition names a set), `DEFAULT_SLOT` (the catch-all, or null for none)
88
88
  and `REGIME_ANCHOR` (the anchor override, or null to inherit the arena's). Pausing is never staged.
89
89
  2. `preview_deployment_resolution` with `request: { kind: "DRAFT", draftVersion }` at the version
90
90
  staging returned.