@battlegrid/mcp-server 32.0.2 → 32.0.5

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
@@ -38,6 +38,43 @@ Seeing package `31.x` alongside handshake `battlegrid@33.x` — the package **be
38
38
 
39
39
  **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.
40
40
 
41
+ ## Contract history — v119 (an array names its scope once)
42
+
43
+ **Breaking at v119: a field every row repeated moves to the response, and three repeated fields are gone.** v119 is
44
+ the contract on top of v118.1. No input schema moves, so nothing you send is refused that v118.1 accepted. Reconnect
45
+ the proxy, or restart it, so discovery reads the new schemas.
46
+
47
+ ### Reshaped output — something you read moved
48
+
49
+ - **The agent and its owner** move from each row to the response as `agentId` and `userId`, on `list_gate_blocks`,
50
+ `get_agent_thought_log` and `list_entry_decisions` (`entries[]`), `get_agent_activity_feed` (`events[]`),
51
+ `get_agent_journal` (`recentThoughts[]`, `recentActivity[]`) and `list_trade_outcomes` (`outcomes[]`).
52
+ - **The agent** moves to the response as `agentId` on `list_signal_logs` and `get_public_agent_signal_logs`
53
+ (`entries[]`) and on `get_agent_automation_status` (`assignments[]`).
54
+ - **The owner** moves to the response as `userId` on `get_user_thought_log` (`entries[]`), `get_user_activity_feed`
55
+ (`events[]`), `list_pending_approvals` (`approvals[]`) and `list_intelligence_agents` (`agents[]`). Each row keeps
56
+ the agent it belongs to, and each agent keeps its own capabilities.
57
+ - **The screened agent** moves to the response as `agentId`, `agentName` and `strategyTimeframe` on
58
+ `get_agent_coin_qualification`; each of its `verdicts[]` drops them.
59
+ - **The session** moves off each row: `list_session_agent_positions` drops `marketGridSessionId` from every position,
60
+ flat and grouped, and carries it once on the response. `get_market_grid_results` drops `sessionId` from each of
61
+ `resolutions[]` and `players[]`; read `session.id`.
62
+ - An empty page still names its scope.
63
+
64
+ ### Removed fields — something you read is gone
65
+
66
+ - **A trade outcome's `createdAt`** on `list_trade_outcomes` and `get_trade_outcome_by_decision`. Read `closedAt`,
67
+ which carried the same instant.
68
+ - **A public realized trade's `outcomeId`** on `get_public_agent_realized_trades`. Read `positionId`, which is now
69
+ never null.
70
+ - **A score breakdown captain's `symbol`** on `get_market_grid_results` (under `players[]` and `playerGrids`). Read
71
+ `coinId`, which named the same coin.
72
+
73
+ ### Behaviour behind unchanged schemas
74
+
75
+ - **A UUID you send is read in its lower-case spelling,** so the id a response names is the id each of its rows
76
+ answers to, whatever case you sent it in.
77
+
41
78
  ## Contract history — v118.1 (a server fault says whether repeating is safe)
42
79
 
43
80
  **Nothing you send is refused that v118 accepted.** v118.1 is the contract on top of v118. No input schema moves.
package/dist/index.d.ts CHANGED
@@ -47,7 +47,7 @@ import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/cli
47
47
  * being asked. Move it for a change to THIS package — a proxy fix, a dependency bump, a docs
48
48
  * correction. Never move it to track the server.
49
49
  */
50
- export declare const PACKAGE_VERSION = "32.0.2";
50
+ export declare const PACKAGE_VERSION = "32.0.5";
51
51
  export declare const DEFAULT_URL = "https://mcp.battlegrid.trade/mcp";
52
52
  export interface EnvConfig {
53
53
  apiKeys: string[];
package/dist/index.js CHANGED
@@ -49,7 +49,7 @@ import { Client, SdkHttpError, StreamableHTTPClientTransport } from '@modelconte
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 const PACKAGE_VERSION = '32.0.2';
52
+ export const PACKAGE_VERSION = '32.0.5';
53
53
  export const DEFAULT_URL = 'https://mcp.battlegrid.trade/mcp';
54
54
  const MAX_RETRIES = 3;
55
55
  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": "32.0.2",
3
+ "version": "32.0.5",
4
4
  "description": "BattleGrid MCP server — play crypto prediction games from AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "generator": "battlegrid-app/server/scripts/export-mcp-skills.mjs",
3
- "contractVersion": "116.0.0",
3
+ "contractVersion": "116.1.0",
4
4
  "files": {
5
5
  "battlegrid-agent-management/SKILL.md": "9dc151c32c3578d06e8895c6752d7a64959bff6a6681a01d62ab65e1ea1590d1",
6
6
  "battlegrid-agent-management/references/agent-stage-examples.md": "dffcc353d61dfc7b5bb6a2b3077fc6bf8c760a34c287cafb3b59b99306f24195",
@@ -13,8 +13,8 @@
13
13
  "battlegrid-strategy-authoring/SKILL.md": "39cfa46b1f640e6800edb7e85a8f2c4b6b8786cddf71bb8244d172a44fc11d75",
14
14
  "battlegrid-strategy-authoring/references/strategy-stage-examples.md": "f10ecdc91f3660a708eee7a7bacefce2acbb46c9cf7e0ac1454bd54f839f39fd",
15
15
  "battlegrid-strategy-doctor/SKILL.md": "e34e055b0cc9b355bc1adeb5d49d464eaa0756ca3f48dc89ca2ccdda94e1311f",
16
- "battlegrid-strategy-examples/SKILL.md": "597ddacdfc00955fcfd5a1afcc40b5ea72a0f658acbbebc8264afeecc46d2306",
17
- "battlegrid-strategy-examples/references/playbooks.md": "2309eb7e8324f563c5b1b51e05da931b37c542484135a2be749eff6ef78aa40f",
16
+ "battlegrid-strategy-examples/SKILL.md": "82df6781b8dbb222407cc58f622f5fadb6f933aeb7efb855c26a9ae13620cca3",
17
+ "battlegrid-strategy-examples/references/playbooks.md": "275352be43652ca0fd36a35981ea7ffcfabdc4f9b33293826656ee500d3795e9",
18
18
  "battlegrid-strategy-examples/references/recipes.md": "635e03d163100f6de37cda1f6cc12928d5d36aa0ea883bf44fc72f17cbf3e98e",
19
19
  "battlegrid-strategy-examples/references/tradingview-ports.md": "9eaa926cbe8606c6a09f91007a0606042afbfdc50173a5b13ae9336d2e9e9b08",
20
20
  "battlegrid-trade-analysis/SKILL.md": "3f927b4f9796178526fa1673a2043c5f14358c39aa955de33192ea58641f18fb",
@@ -228,9 +228,12 @@ column selecting Developing above the strategy timeframe (`CONDITION_VERDICT_REA
228
228
  closure is what the condition reads directly plus everything reached through `conditionRef`,
229
229
  transitively: a referenced condition contributes what IT reads, so moving the clause into a building
230
230
  block does not launder it. A closure whose candle columns all read Confirmed — or whose operands no
231
- bar moves at all, such as a published regime label, an open-interest regime or a published rolling
232
- change — admits a verdict at every decision, because a decision reads the completed strategy bar and
233
- a level is compared against that bar's close.
231
+ bar moves at all, such as a published regime label or a funding rate — admits a verdict at every
232
+ decision, because a decision reads the completed strategy bar and a level is compared against that
233
+ bar's close. A change over a horizon above the strategy timeframe — `chg4h` or `chg24h` on a `1h`
234
+ strategy, and `oiRegime`, which reads the `1h` change, below `1h` — is a developing read whatever its
235
+ selector: its bar is still in progress at the close, so it carries no verdict. Read a horizon at or
236
+ below the strategy timeframe instead, or a Confirmed `CLOSE_CHANGE` on the higher timeframe.
234
237
 
235
238
  Evaluation is three-valued: UNRESOLVED never collapses to FALSE; a developing read is provisional,
236
239
  and so is any reading taken on the display lane's forming bar.
@@ -266,10 +269,11 @@ the served domain is refused (`CONDITION_HOLD_ILLEGAL`, the domain in `allowedDo
266
269
  a header admits only Once:
267
270
 
268
271
  - `NOT_REWINDABLE` — the value is stored for the current bar only (session and universe scalars,
269
- ranks, zone entities, enrichment metrics, published rolling changes). **Worked liquidity floor:**
272
+ ranks, zone entities, enrichment metrics, a change at or below the strategy timeframe). **Worked liquidity floor:**
270
273
  `LIQUID_FLOOR` holds Once because `vol24hUsd` is a bundle scalar.
271
- - `DEVELOPING` — the column reads the bar still forming. **Developing columns cannot be held**; set
272
- the column Confirmed to count closes.
274
+ - `DEVELOPING` — the column reads a bar still forming: a Developing candle column above the strategy
275
+ timeframe, or a change over a horizon above it. **Developing columns cannot be held**; set a candle
276
+ column Confirmed to count closes, or read a change at or below the strategy timeframe.
273
277
  - `OFFSET` — the column already reads an earlier bar; remove the offset to count closes.
274
278
  - `BAR_STATE` — the header describes only the bar being decided.
275
279
  - `HISTORY` — not enough history is stored on that timeframe to count more than one close.
@@ -300,8 +304,10 @@ anchor's own close — so Developing there is legal and changes no decision. A c
300
304
  developing bar is single-frame: its clause holds Once (a Developing column cannot be held), it
301
305
  carries no verdict and it cannot be an exit rule. One exception overrides both the stored value and the default: a column reading a metric with
302
306
  no live value (itself, or a `spread` operand) reads completed bars at every rung, because the forming
303
- bar publishes nothing for it. The resolved answer for a column is served on
304
- `effectiveParameters.bars`, and it states that exception.
307
+ bar publishes nothing for it. A change (`chg5m` … `chg24h`, and `oiRegime`'s `1h` change) carries its
308
+ horizon in the metric, so above the strategy timeframe it is Developing at every rung and under every
309
+ selector. The resolved answer for a column is served on `effectiveParameters.bars`, and it states both
310
+ exceptions.
305
311
 
306
312
  **A higher-timeframe level is measured from the current strategy-bar price.** The distance to a `4h`
307
313
  Donchian band, and every candle label classifier (`MA_ALIGN`, `PRICE_ZONE`, `BB_TOUCH`), compares
@@ -36,11 +36,14 @@ anything failing {LIQUID_FLOOR}."
36
36
  Custom `Positioning`: `FUNDING_RATE value`→`rate`, `aggregate w24`→`rate_mean24`,
37
37
  `FUNDING_ANN value`→`ann`, `OI_CHG value`→`oiChg`, `OI_PX_REGIME value`→`oiRegime` (vocab:
38
38
  new longs / new shorts / short covering / long liquidation), `MARK spread ORACLE`→
39
- `mark_oracle_spread`, `RSI14 value`, `CHG_24H value`→`chg24h`; plus `includeCvd`. Conditions:
39
+ `mark_oracle_spread`, `RSI14 value`, `CLOSE_CHANGE value @ {abs: 1d}`→`closeChg_1d` (Confirmed, the
40
+ default above the strategy timeframe); plus `includeCvd`. Conditions:
40
41
  `NO_LIQUIDATION_TAPE` required NOT-veto (`NOT [oiRegime is "long liquidation"]`);
41
42
  `CROWDED_LONGS` building block (`ann gte 25` + `oiChg gte 3` + `oiRegime is "new longs"`);
42
- `FADE_SHORT` verdict DOWN (ref + `RSI14 gte 65` + `chg24h gte 5`); mirrored `SQUEEZED_SHORTS`
43
- / `SQUEEZE_LONG` verdict UP. Levels 1.0–2.5 ATR, RR 1.5, ATR floor 0.5%. PM: BE 0.8R, no trail, timeDecay ON (120/60, 10→40, stale 25).
43
+ `FADE_SHORT` verdict DOWN (ref + `RSI14 gte 65` + `closeChg_1d gte 5`); mirrored `SQUEEZED_SHORTS`
44
+ / `SQUEEZE_LONG` verdict UP (`closeChg_1d lte -5`). The confirmation is the prior completed UTC day's
45
+ move, not today's: today's (`chg24h`) is a 1d bar still in progress at every 1h close, a developing
46
+ read no verdict may carry. Levels 1.0–2.5 ATR, RR 1.5, ATR floor 0.5%. PM: BE 0.8R, no trail, timeDecay ON (120/60, 10→40, stale 25).
44
47
 
45
48
  ### 3 · Relative-Strength Rotation with a Benchmark Gate — 4h cross-sectional
46
49