@battlegrid/mcp-server 31.2.25 → 31.2.26
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 +13 -13
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/skills/EXPORT.json +1 -1
package/README.md
CHANGED
|
@@ -24,16 +24,16 @@ 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 —
|
|
27
|
+
## Contract history — v60
|
|
28
28
|
|
|
29
29
|
One release train, four numbers, and two parts to read first: **`propose_entry_decision` no longer
|
|
30
|
-
decides in the call**, and **a closed trade's `tradeStatus` now follows its net P&L**. v55 through
|
|
30
|
+
decides in the call**, and **a closed trade's `tradeStatus` now follows its net P&L**. v55 through v59 are not written up here; the canonical record for
|
|
31
31
|
every contract move is `docs/architecture/MCP_CONTRACT_HISTORY.md` in `battlegrid-app`, and the
|
|
32
32
|
served version is what the handshake announces.
|
|
33
33
|
|
|
34
34
|
### Rejected input — something you author is no longer accepted
|
|
35
35
|
|
|
36
|
-
- **The entry axis names no bar but the strategy's own, and three of its keys are gone** (
|
|
36
|
+
- **The entry axis names no bar but the strategy's own, and three of its keys are gone** (60.0.0,
|
|
37
37
|
`decide-entry-on-strategy-close`). The authoring schemas are `.strict()`, so `compile_strategy_plan`,
|
|
38
38
|
`apply_strategy_plan`, `fork_strategy` and `restore_strategy` REFUSE a body carrying
|
|
39
39
|
`entry.confirmTf` (the deciding bar is the strategy's own timeframe, so a required input whose only
|
|
@@ -43,7 +43,7 @@ served version is what the handshake announces.
|
|
|
43
43
|
decided close), and the whole `exit` object (the open-position exit lane judges one closed candle
|
|
44
44
|
of the position's strategy timeframe). Exactly one input hash moves, `compile_strategy_plan`'s.
|
|
45
45
|
|
|
46
|
-
- **`entry.trigger: AT_SIGNAL` is retired for authoring** (
|
|
46
|
+
- **`entry.trigger: AT_SIGNAL` is retired for authoring** (60.0.0, `retire-at-signal-trigger`, riding
|
|
47
47
|
the same number). Refused on every authoring surface and on a RESTORE, which rebuilds a stored
|
|
48
48
|
revision through the same value object. The enum member stays READABLE on every strategy read and
|
|
49
49
|
on a fired decision's provenance, so a pre-retirement revision is still legible — it just cannot be
|
|
@@ -51,7 +51,7 @@ served version is what the handshake announces.
|
|
|
51
51
|
|
|
52
52
|
### Changed meaning, unchanged shape
|
|
53
53
|
|
|
54
|
-
- **`tradeStatus` follows NET P&L on every closed trade** (
|
|
54
|
+
- **`tradeStatus` follows NET P&L on every closed trade** (60.3.0, `label-trade-outcome-by-pnl`).
|
|
55
55
|
No schema hash moves for this and the values you receive change anyway. It used to map the close
|
|
56
56
|
REASON onto a verdict — every `TAKE_PROFIT` was `WON`, every `STOP_LOSS` was `LOST`, and a
|
|
57
57
|
`MARKET_CLOSE` of either sign was the neutral `CLOSED` — so a stop that filled after a break-even
|
|
@@ -60,7 +60,7 @@ served version is what the handshake announces.
|
|
|
60
60
|
only that there is no outcome row to judge. A client that counted `WON` rows was counting
|
|
61
61
|
take-profits.
|
|
62
62
|
|
|
63
|
-
- **A proposal is QUEUED, not decided** (
|
|
63
|
+
- **A proposal is QUEUED, not decided** (60.2.0, `queue-manual-entry-for-close`). This is the entry in
|
|
64
64
|
this section to act on. `propose_entry_decision` registers a request against the agent's next
|
|
65
65
|
strategy-bar close and returns immediately: no model runs, nothing is spent, and the call carries
|
|
66
66
|
`type: "queued"` with `request` — `requestId`, the bar (`barStart`), when the answer is due
|
|
@@ -71,22 +71,22 @@ served version is what the handshake announces.
|
|
|
71
71
|
|
|
72
72
|
`recommendation` and `no_trade` REMAIN in the union: the idempotency registrar replays results
|
|
73
73
|
recorded before this release for their TTL, so a client that dropped those members would fail on
|
|
74
|
-
its own retry. **A client written against
|
|
74
|
+
its own retry. **A client written against 60.2 handles `queued` and `error`**; one that must also
|
|
75
75
|
replay handles all four.
|
|
76
76
|
|
|
77
77
|
### Reshaped output — the same call returns a different shape
|
|
78
78
|
|
|
79
|
-
- **The four retired entry keys leave every strategy read** (
|
|
79
|
+
- **The four retired entry keys leave every strategy read** (60.0.0) — `get_strategy`,
|
|
80
80
|
`list_strategies`, `fork_strategy` and both plan envelopes — and `confirmTimeframesByMainCandle`
|
|
81
81
|
leaves `list_strategy_vocabulary`, because there is no confirm set left to publish.
|
|
82
82
|
|
|
83
|
-
- **`entryDiscipline.closes` and `.bandAtrMultiple` go `number` → `number | null`** (
|
|
83
|
+
- **`entryDiscipline.closes` and `.bandAtrMultiple` go `number` → `number | null`** (60.0.0) on
|
|
84
84
|
`get_trade_outcome_by_decision` and `list_trade_outcomes`. Null on every decision fired after this
|
|
85
85
|
release, which authors neither; a non-null pair dates the row to the arming era.
|
|
86
86
|
|
|
87
87
|
### Widened enum — new members your own copy rejects
|
|
88
88
|
|
|
89
|
-
- **`TradeConvErrorCode` gains `REQUEST_PENDING`** (
|
|
89
|
+
- **`TradeConvErrorCode` gains `REQUEST_PENDING`** (60.2.0), on the SURFACE arm of
|
|
90
90
|
`propose_entry_decision`'s error: one pending request per user and coin, so a second is refused. A
|
|
91
91
|
coin already carrying a pending or live position is refused before anything is queued, as an
|
|
92
92
|
ENGINE-origin `OPEN_POSITION_CONFLICT` — a member that was already published, reaching this surface
|
|
@@ -94,7 +94,7 @@ served version is what the handshake announces.
|
|
|
94
94
|
|
|
95
95
|
### Additive in the same span
|
|
96
96
|
|
|
97
|
-
- **The exit names the leg that filled** (
|
|
97
|
+
- **The exit names the leg that filled** (60.3.0, `label-trade-outcome-by-pnl`). `TradeOutcomeDTO`
|
|
98
98
|
and the pipeline outcome summary gain `exitRepriceSource`: the reprice that placed the protection
|
|
99
99
|
leg which actually closed the position — `BREAK_EVEN`, `TRAILING`, `TIME_DECAY`,
|
|
100
100
|
`MANUAL_OVERRIDE`, `UPDATED` — or null on every close no protection leg filled and on a leg that
|
|
@@ -102,12 +102,12 @@ served version is what the handshake announces.
|
|
|
102
102
|
before calling a stopped-out trade a failure. The enum is the one `get_position_audit_history`
|
|
103
103
|
already publishes. Four output hashes move; no input schema does.
|
|
104
104
|
|
|
105
|
-
- **Two tools join the catalog for the request lifecycle** (
|
|
105
|
+
- **Two tools join the catalog for the request lifecycle** (60.2.0, `queue-manual-entry-for-close`).
|
|
106
106
|
`get_entry_request` (read scope) reads a request that is still pending and is `NOT_FOUND` once it
|
|
107
107
|
has been answered, cancelled or expired — the answer is in the conversation, not there.
|
|
108
108
|
`cancel_entry_request` (`mcp:wager`) withdraws one before its bar is decided. `toolCount` 115 → 117.
|
|
109
109
|
|
|
110
|
-
- **Three radar reads publish the close decision** (
|
|
110
|
+
- **Three radar reads publish the close decision** (60.1.0, `add-radar-close-decision-state`).
|
|
111
111
|
`get_radar_deployment`, `list_radar_deployments` and `preview_radar_resolution` carry one further
|
|
112
112
|
key on `resolvesNow`: `closeDecision`, non-null whenever an agent is on duty for the pair. It
|
|
113
113
|
carries the deciding `timeframe`, the `nextCloseAt` instant, a `state` of `WAITING` or `DEFERRED`
|
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.26";
|
|
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.26';
|
|
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
package/skills/EXPORT.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"generator": "battlegrid-app/server/scripts/export-mcp-skills.mjs",
|
|
3
|
-
"contractVersion": "
|
|
3
|
+
"contractVersion": "60.3.0",
|
|
4
4
|
"files": {
|
|
5
5
|
"battlegrid-agent-management/SKILL.md": "b6ea75b3d838c1dbaaf3984d7e99a11c81686de2c1a1910c35699ee7e70dafa5",
|
|
6
6
|
"battlegrid-arena-play/SKILL.md": "03fa153bf82be18bf5ed01e3ba12e2cd9f99a81b08d903a77b52169e7519a182",
|