@battlegrid/mcp-server 32.0.10 → 32.0.11
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/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/skills/EXPORT.json +5 -5
- package/skills/battlegrid-radar-deployment/SKILL.md +3 -22
- package/skills/battlegrid-radar-deployment/references/radar-stage-examples.md +1 -4
- package/skills/battlegrid-strategy-examples/SKILL.md +8 -14
- package/skills/battlegrid-strategy-examples/references/playbooks.md +3 -6
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.
|
|
50
|
+
export declare const PACKAGE_VERSION = "32.0.11";
|
|
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.
|
|
52
|
+
export const PACKAGE_VERSION = '32.0.11';
|
|
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
package/skills/EXPORT.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"generator": "battlegrid-app/server/scripts/export-mcp-skills.mjs",
|
|
3
|
-
"contractVersion": "
|
|
3
|
+
"contractVersion": "113.0.0",
|
|
4
4
|
"files": {
|
|
5
5
|
"battlegrid-agent-management/SKILL.md": "9dc151c32c3578d06e8895c6752d7a64959bff6a6681a01d62ab65e1ea1590d1",
|
|
6
6
|
"battlegrid-agent-management/references/agent-stage-examples.md": "dffcc353d61dfc7b5bb6a2b3077fc6bf8c760a34c287cafb3b59b99306f24195",
|
|
7
7
|
"battlegrid-arena-play/SKILL.md": "2e37970a66b8738ffbc445a23da90651c1f41b56ce4eef551582ab123517ef74",
|
|
8
8
|
"battlegrid-arena-play/references/entry-stage-examples.md": "0223f3743171ff213e943789d27590b2f65648398e85e10cd24938d5eb6af665",
|
|
9
9
|
"battlegrid-market-analysis/SKILL.md": "fcbe98e30e1edce39bb170c224cdf20181934f62b5f3a26b293787c70eeb6229",
|
|
10
|
-
"battlegrid-radar-deployment/SKILL.md": "
|
|
10
|
+
"battlegrid-radar-deployment/SKILL.md": "dfe8f354ac3dd426eedeac1ec080ac518e9c8cbfefdd26036afa61f80c08295c",
|
|
11
11
|
"battlegrid-radar-deployment/references/arena-stage-examples.md": "d27cfed1f4663f267c4a7ecebe4a6e65a450fc74bd14ce8987fb61af5bbf2ca5",
|
|
12
|
-
"battlegrid-radar-deployment/references/radar-stage-examples.md": "
|
|
12
|
+
"battlegrid-radar-deployment/references/radar-stage-examples.md": "e3805f5c1b243135a7f25fb3a8cc6093dd242f8ad67b7e6b242bbdefa58a0735",
|
|
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": "
|
|
17
|
-
"battlegrid-strategy-examples/references/playbooks.md": "
|
|
16
|
+
"battlegrid-strategy-examples/SKILL.md": "597ddacdfc00955fcfd5a1afcc40b5ea72a0f658acbbebc8264afeecc46d2306",
|
|
17
|
+
"battlegrid-strategy-examples/references/playbooks.md": "2309eb7e8324f563c5b1b51e05da931b37c542484135a2be749eff6ef78aa40f",
|
|
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",
|
|
@@ -107,12 +107,7 @@ is test-routing a regime. Never carry a fact from a radar conversation into it,
|
|
|
107
107
|
Do not confirm a draft whose diagnostics carry an error: stage a fix.
|
|
108
108
|
3. `preview_radar_resolution({ coinId, request: { kind: "DRAFT", draftVersion } })` at the version that
|
|
109
109
|
read returned. It composes the draft over the deployed policy **exactly as the commit will write it**,
|
|
110
|
-
and refuses a draft no longer at that version with `DRAFT_VERSION_MOVED`.
|
|
111
|
-
counts, for each hours rule, the closes of its agent's `strategyTimeframe` bar the rule's hours let
|
|
112
|
-
it decide through `windowEndAt`. Before asking the player to commit, name every rule whose
|
|
113
|
-
`decidableCloses` is 0: its agent's timeframe, the served `windowEndAt`, and that it is this rule's
|
|
114
|
-
hours alone that hold no close — not the agent, which still decides closes it is on duty for through
|
|
115
|
-
another rule or the default. Never tell the player the agent will not trade.
|
|
110
|
+
and refuses a draft no longer at that version with `DRAFT_VERSION_MOVED`.
|
|
116
111
|
|
|
117
112
|
To try a slot set without touching the draft, preview `{ kind: "SLOTS", slots }` — it resolves
|
|
118
113
|
explicit slots and nothing can commit it.
|
|
@@ -127,19 +122,6 @@ from what the player asked for:
|
|
|
127
122
|
| only in named hours and days | a rule with an hours condition |
|
|
128
123
|
| in named regimes during named hours | a rule with one hours condition and one regime condition |
|
|
129
124
|
|
|
130
|
-
When the player names an exchange session — New York, the New York open, London, the London open,
|
|
131
|
-
the London–New York overlap, Tokyo, the Tokyo open — call `get_radar_market_hours` and stage that session's `hours`
|
|
132
|
-
exactly as served, merged with any other session they name; never work session hours out yourself,
|
|
133
|
-
because New York and London shift with daylight saving on their own dates and the overlap changes
|
|
134
|
-
shape on each of those dates. The three opens are one hour wide, so they suit agents on 1h bars or
|
|
135
|
-
faster. The days stay the player's choice. Tell the player the staged hours are UTC, that an hour is
|
|
136
|
-
on duty from :00 through :59, and, when the session carries a `nextShift`, the date its hours change
|
|
137
|
-
and that the rule keeps the hours it was given.
|
|
138
|
-
|
|
139
|
-
Session closes are not presets. Asked for "the New York close" or any other session close, stage only
|
|
140
|
-
the hours the player names, or raise flattening before the session ends as a separate idea — never
|
|
141
|
-
work a close window out yourself.
|
|
142
|
-
|
|
143
125
|
When the ask maps to no single row, or a refusal rules out the construction the player asked for,
|
|
144
126
|
ask the player which construction they mean, naming the rows that fit — never stage one they did not
|
|
145
127
|
choose. Complete stage payloads for every row are in `references/radar-stage-examples.md`.
|
|
@@ -370,9 +352,8 @@ Four reads, cheapest first. Stop as soon as the player's question is answered.
|
|
|
370
352
|
refused it and nothing was traded. It is the only history of not-qualifying closes: the journal
|
|
371
353
|
writes no row for one, and `resolvesNow` keeps only each agent's last decision — the one
|
|
372
354
|
`reading.lastClose` (step 1) carries; this read holds every decision before it. Narrow with
|
|
373
|
-
`agentId
|
|
374
|
-
|
|
375
|
-
the history. A bar still
|
|
355
|
+
`agentId`; page back by passing the response's `nextBefore` as `before`, and stop when
|
|
356
|
+
`nextBefore` is null — that is the end of the history. A bar still
|
|
376
357
|
waiting inside its window has no record yet (`resolvesNow` shows its `closeDecision.state` as
|
|
377
358
|
`DEFERRED`), and records are kept 90 days.
|
|
378
359
|
4. **`get_radar_activity`** only for what steps 2 and 3 cannot do: more rows than its ten, a
|
|
@@ -56,10 +56,7 @@ regime condition is the regime-reading floor, and must be a level one of the sel
|
|
|
56
56
|
|
|
57
57
|
## On duty only in named hours and days
|
|
58
58
|
|
|
59
|
-
Hours are UTC, 0–23. Days run 0 (Sunday) to 6. Each is listed once.
|
|
60
|
-
including the London and Tokyo opens and the London–New York overlap — stage the `hours` `get_radar_market_hours`
|
|
61
|
-
serves for it rather than a set of your own; the example below is a shape, not a session. No session
|
|
62
|
-
close is served: a close is staged only as hours the player names.
|
|
59
|
+
Hours are UTC, 0–23. Days run 0 (Sunday) to 6. Each is listed once.
|
|
63
60
|
|
|
64
61
|
```json stage_radar_deployment_draft
|
|
65
62
|
{
|
|
@@ -228,12 +228,9 @@ 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
|
|
232
|
-
decision, because a decision reads the completed strategy bar and
|
|
233
|
-
|
|
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.
|
|
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.
|
|
237
234
|
|
|
238
235
|
Evaluation is three-valued: UNRESOLVED never collapses to FALSE; a developing read is provisional,
|
|
239
236
|
and so is any reading taken on the display lane's forming bar.
|
|
@@ -269,11 +266,10 @@ the served domain is refused (`CONDITION_HOLD_ILLEGAL`, the domain in `allowedDo
|
|
|
269
266
|
a header admits only Once:
|
|
270
267
|
|
|
271
268
|
- `NOT_REWINDABLE` — the value is stored for the current bar only (session and universe scalars,
|
|
272
|
-
ranks, zone entities, enrichment metrics,
|
|
269
|
+
ranks, zone entities, enrichment metrics, published rolling changes). **Worked liquidity floor:**
|
|
273
270
|
`LIQUID_FLOOR` holds Once because `vol24hUsd` is a bundle scalar.
|
|
274
|
-
- `DEVELOPING` — the column reads
|
|
275
|
-
|
|
276
|
-
column Confirmed to count closes, or read a change at or below the strategy timeframe.
|
|
271
|
+
- `DEVELOPING` — the column reads the bar still forming. **Developing columns cannot be held**; set
|
|
272
|
+
the column Confirmed to count closes.
|
|
277
273
|
- `OFFSET` — the column already reads an earlier bar; remove the offset to count closes.
|
|
278
274
|
- `BAR_STATE` — the header describes only the bar being decided.
|
|
279
275
|
- `HISTORY` — not enough history is stored on that timeframe to count more than one close.
|
|
@@ -304,10 +300,8 @@ anchor's own close — so Developing there is legal and changes no decision. A c
|
|
|
304
300
|
developing bar is single-frame: its clause holds Once (a Developing column cannot be held), it
|
|
305
301
|
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
|
|
306
302
|
no live value (itself, or a `spread` operand) reads completed bars at every rung, because the forming
|
|
307
|
-
bar publishes nothing for it.
|
|
308
|
-
|
|
309
|
-
selector. The resolved answer for a column is served on `effectiveParameters.bars`, and it states both
|
|
310
|
-
exceptions.
|
|
303
|
+
bar publishes nothing for it. The resolved answer for a column is served on
|
|
304
|
+
`effectiveParameters.bars`, and it states that exception.
|
|
311
305
|
|
|
312
306
|
**A higher-timeframe level is measured from the current strategy-bar price.** The distance to a `4h`
|
|
313
307
|
Donchian band, and every candle label classifier (`MA_ALIGN`, `PRICE_ZONE`, `BB_TOUCH`), compares
|
|
@@ -36,14 +36,11 @@ 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`, `
|
|
40
|
-
default above the strategy timeframe); plus `includeCvd`. Conditions:
|
|
39
|
+
`mark_oracle_spread`, `RSI14 value`, `CHG_24H value`→`chg24h`; plus `includeCvd`. Conditions:
|
|
41
40
|
`NO_LIQUIDATION_TAPE` required NOT-veto (`NOT [oiRegime is "long liquidation"]`);
|
|
42
41
|
`CROWDED_LONGS` building block (`ann gte 25` + `oiChg gte 3` + `oiRegime is "new longs"`);
|
|
43
|
-
`FADE_SHORT` verdict DOWN (ref + `RSI14 gte 65` + `
|
|
44
|
-
/ `SQUEEZE_LONG` verdict UP
|
|
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).
|
|
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).
|
|
47
44
|
|
|
48
45
|
### 3 · Relative-Strength Rotation with a Benchmark Gate — 4h cross-sectional
|
|
49
46
|
|