@battlegrid/mcp-server 31.2.30 → 31.2.31
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-agent-management/SKILL.md +3 -2
- package/skills/battlegrid-arena-play/SKILL.md +2 -1
- package/skills/battlegrid-strategy-authoring/SKILL.md +6 -2
- package/skills/battlegrid-strategy-doctor/SKILL.md +14 -0
- package/skills/battlegrid-trade-analysis/SKILL.md +5 -0
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.31";
|
|
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.31';
|
|
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
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
"generator": "battlegrid-app/server/scripts/export-mcp-skills.mjs",
|
|
3
3
|
"contractVersion": "61.2.0",
|
|
4
4
|
"files": {
|
|
5
|
-
"battlegrid-agent-management/SKILL.md": "
|
|
6
|
-
"battlegrid-arena-play/SKILL.md": "
|
|
5
|
+
"battlegrid-agent-management/SKILL.md": "8c7ed25e61e013c69694ada82e5893e7af8d12d0c0a6dccdaaaedea868efa47e",
|
|
6
|
+
"battlegrid-arena-play/SKILL.md": "67375816c1b5a40f55fcd4616386eb5afd97f3d91ea6fb94aeb6a56c7d0948a5",
|
|
7
7
|
"battlegrid-market-analysis/SKILL.md": "22fde9c4eac0261c89a8056ab8b20b66fcbe1fd58447fa0ac84fd410b4d134d7",
|
|
8
8
|
"battlegrid-radar-deployment/SKILL.md": "d2a012b154e1e529db19529bd7c3d75d069f4e410d5804add51165f0f0902b2e",
|
|
9
|
-
"battlegrid-strategy-authoring/SKILL.md": "
|
|
10
|
-
"battlegrid-strategy-doctor/SKILL.md": "
|
|
9
|
+
"battlegrid-strategy-authoring/SKILL.md": "66ed78d8e83401586b6d0ec33ce59b0fdc8b22b04a3db0ab529cc77779bfe1c9",
|
|
10
|
+
"battlegrid-strategy-doctor/SKILL.md": "d0b9e9e07648246d5a23b0c17183278b70b5bcbb5f472ac7da13d03e42a6c6c6",
|
|
11
11
|
"battlegrid-strategy-examples/SKILL.md": "17e8cf8040813622bd5b82165c7af82e03287fee1f6aac974e0b6c584580dd27",
|
|
12
12
|
"battlegrid-strategy-examples/references/playbooks.md": "35c543c090d00ba19e4bcf0a80502afac7a4954643fc535de0b24381c91ecbf4",
|
|
13
13
|
"battlegrid-strategy-examples/references/recipes.md": "53887daece17995543e7d3fe1bf2577fc41a6254c291acacde48d7de63853641",
|
|
14
14
|
"battlegrid-strategy-examples/references/tradingview-ports.md": "2b13adbc137178955edcca31b6ab40c01c745a932a0750b91db8820c736700bb",
|
|
15
|
-
"battlegrid-trade-analysis/SKILL.md": "
|
|
15
|
+
"battlegrid-trade-analysis/SKILL.md": "f49482702f17d7fc44db00c31a19fc6e9350668fe76e8948d22faaa9c7e9d6bf",
|
|
16
16
|
"battlegrid-trade-proposal/SKILL.md": "0d8ffecd493f7916d352cee3d22aee5812c3790592b100d3f9802c75ca1180c0"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -96,8 +96,9 @@ State the blast radius **from server fields, as numbers**, before the confirm fo
|
|
|
96
96
|
Agent-owned settings are untouched.
|
|
97
97
|
- **Update** — the concrete diff: each field, from what, to what.
|
|
98
98
|
|
|
99
|
-
Then one confirmation. Act only on an explicit pick
|
|
100
|
-
not consent
|
|
99
|
+
Then one confirmation. Act only on an explicit pick — one of the options you offered. Free text
|
|
100
|
+
while a confirmation is open is not consent, whether it arrives in chat or in the form's own
|
|
101
|
+
answer-in-your-own-words box — answer what they said and re-present the same confirmation.
|
|
101
102
|
|
|
102
103
|
**`expectedRevision` comes from the latest read.** A CONFLICT means the stored agent moved since
|
|
103
104
|
you read it: re-read, re-state the radius against the NEW state, and re-confirm. Never retry with a
|
|
@@ -120,7 +120,8 @@ Each is typed and distinguishable. Read the code, do not paraphrase:
|
|
|
120
120
|
you to think.
|
|
121
121
|
- **Your confirmation with the player is interaction, never authorization.** Do not describe it as
|
|
122
122
|
a permission check, do not add a wager gate of your own, and do not treat free text typed while a
|
|
123
|
-
confirmation is open as consent.
|
|
123
|
+
confirmation is open as consent — in chat or in the form's own answer-in-your-own-words box. Only
|
|
124
|
+
an explicit pick from the options you offered confirms.
|
|
124
125
|
- **Never re-submit over an unknown outcome.** An interrupted submit may have committed the fee.
|
|
125
126
|
Run `check_market_grid_submission` first and report what actually exists.
|
|
126
127
|
|
|
@@ -213,7 +213,9 @@ On **Revise**, return to step 4. On **Cancel**, stop and let the token lapse.
|
|
|
213
213
|
|
|
214
214
|
If the player types free text while the confirm form is open, that is **not** consent and not a
|
|
215
215
|
cancellation. Answer what they said, then present the same plan's confirmation again, unchanged.
|
|
216
|
-
Prose never triggers an apply.
|
|
216
|
+
Prose never triggers an apply. The same holds for an answer typed into the form's own
|
|
217
|
+
answer-in-your-own-words box: it is the player's words in an answer slot, not a confirming pick,
|
|
218
|
+
so treat it exactly as you would free text in the chat.
|
|
217
219
|
|
|
218
220
|
Do not pre-check expiry, digests, ownership, viability or quota before calling. The server is the
|
|
219
221
|
only authority on all of them; your job is to react to what it returns.
|
|
@@ -241,7 +243,9 @@ with the player:
|
|
|
241
243
|
independently requires `confirm:true` whenever the strategy has bound agents, so stating the radius
|
|
242
244
|
and calling anyway is refused, not committed. Send `confirm:true` only on a turn where the player
|
|
243
245
|
made an explicit confirming pick — never because you judged the edit safe. Free text typed while a
|
|
244
|
-
confirmation is open is not consent: answer it, then present the same confirmation again.
|
|
246
|
+
confirmation is open is not consent: answer it, then present the same confirmation again. That
|
|
247
|
+
covers words typed into the form's own answer box as well as words sent in chat — a confirming pick
|
|
248
|
+
is one of the options you offered, and nothing else is.
|
|
245
249
|
|
|
246
250
|
**Send only the fields you were asked to change.** `allocation`, `required` and `params` are each
|
|
247
251
|
optional and each preserves on omission. "Raise volume_surge to Critical" is
|
|
@@ -61,6 +61,16 @@ Three reads, and they are not interchangeable:
|
|
|
61
61
|
four-member verdict as written: `NOT_ENFORCED` means the agent's own threshold switches the gate
|
|
62
62
|
off, `UNMEASURABLE` means the input was missing and the gate fail-opened. Neither is a pass, and
|
|
63
63
|
reporting either as "cleared" is the conflation the verdict vocabulary exists to prevent.
|
|
64
|
+
- **A failing condition comes back as a KEY — resolve it.** `requiredConditions.failedKeys` names
|
|
65
|
+
gates like `LOCATION_OK`: an identifier, not an explanation. Read the agent's bound strategy with
|
|
66
|
+
`get_strategy` (the `strategyId` is on `get_intelligence_agent`), find the matching
|
|
67
|
+
`conditions[].conditionKey`, and say what that condition actually tests in the player's terms.
|
|
68
|
+
Quoting the key back at the player is the same defect as a raw enum on screen.
|
|
69
|
+
- **Check `bindingState` before you present that definition as live.** `get_intelligence_agent`
|
|
70
|
+
carries it. At `BOUND`, the strategy's current revision is what the agent evaluates. At `SYNCING`
|
|
71
|
+
or `ORPHANED` it is not — the agent runs a materialized copy at its own `strategyRevision` — so
|
|
72
|
+
name the binding state beside the definition rather than letting current rules read as running
|
|
73
|
+
ones.
|
|
64
74
|
- **Gate blocks link to their thought log** through `sourceThoughtLogId` — follow it with
|
|
65
75
|
`get_agent_thought_log` when the block's reason needs the evaluation behind it.
|
|
66
76
|
- `get_signal_performance` / `list_signal_logs` when the question is whether the signals fired, as
|
|
@@ -132,6 +142,10 @@ it is undetermined.
|
|
|
132
142
|
player's intelligence credits and writes thought and activity records. It is the deployment
|
|
133
143
|
flow's composition aid for tuning a draft — it is not a diagnostic read, and running it as one
|
|
134
144
|
charges the player to answer a question the journals already answer.
|
|
145
|
+
- **Never name a strategy write tool, even to forbid it.** Reading a rule is not authority to change
|
|
146
|
+
one: route a rule change by naming the `strategy-authoring` skill, as step 4 does. The authoring
|
|
147
|
+
tools are in a family this skill does not declare, and a skill body that names an unreachable tool
|
|
148
|
+
— including in a negative — fails the registry's reachability check.
|
|
135
149
|
- Never diagnose from the agent's own prose or overlay text where a typed field exists.
|
|
136
150
|
- Never present a gate-block count as a rate, a trend, or a percentage — report it as served.
|
|
137
151
|
|
|
@@ -27,6 +27,11 @@ Not "what were its returns" — whether it did *the thing it was told to do*.
|
|
|
27
27
|
|
|
28
28
|
- `get_intelligence_agent` — restate the agent's mandate in one line, in the player's terms. This
|
|
29
29
|
is the yardstick; without it "up 4%" means nothing.
|
|
30
|
+
- `get_strategy` on the `strategyId` that read returns — the mandate is the bound strategy, so the
|
|
31
|
+
yardstick is its admission gates, required conditions and trade levels, not the agent's overlay
|
|
32
|
+
prose. Read `bindingState` too: at `SYNCING` or `ORPHANED` the agent evaluates a materialized copy
|
|
33
|
+
at its own `strategyRevision`, and judging it against the strategy's current revision measures it
|
|
34
|
+
by rules it is not running.
|
|
30
35
|
- `get_agent_performance` and `list_trade_outcomes` — judge against that mandate.
|
|
31
36
|
- `get_trade_outcome_by_decision` / `get_trade_chart` when a specific trade needs explaining.
|
|
32
37
|
- `get_signal_performance` when the question is whether the agent's signals are working, as
|