@battlegrid/mcp-server 31.2.32 → 31.2.33

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 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.32";
52
+ export declare const PACKAGE_VERSION = "31.2.33";
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.32';
55
+ export const PACKAGE_VERSION = '31.2.33';
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.32",
3
+ "version": "31.2.33",
4
4
  "description": "BattleGrid MCP server — play crypto prediction games from AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "generator": "battlegrid-app/server/scripts/export-mcp-skills.mjs",
3
- "contractVersion": "61.3.0",
3
+ "contractVersion": "62.1.0",
4
4
  "files": {
5
- "battlegrid-agent-management/SKILL.md": "8c7ed25e61e013c69694ada82e5893e7af8d12d0c0a6dccdaaaedea868efa47e",
6
- "battlegrid-arena-play/SKILL.md": "67375816c1b5a40f55fcd4616386eb5afd97f3d91ea6fb94aeb6a56c7d0948a5",
5
+ "battlegrid-agent-management/SKILL.md": "d56834fa2016ec9371994999fa13a3dbb69906efc54db522e10fd2eb0ebb6044",
6
+ "battlegrid-arena-play/SKILL.md": "4cfaa92a8d0dcaf477b227abd774e7aa8642c185d72108dfd401be0cf8aecd7f",
7
7
  "battlegrid-market-analysis/SKILL.md": "22fde9c4eac0261c89a8056ab8b20b66fcbe1fd58447fa0ac84fd410b4d134d7",
8
8
  "battlegrid-radar-deployment/SKILL.md": "d2a012b154e1e529db19529bd7c3d75d069f4e410d5804add51165f0f0902b2e",
9
9
  "battlegrid-strategy-authoring/SKILL.md": "66ed78d8e83401586b6d0ec33ce59b0fdc8b22b04a3db0ab529cc77779bfe1c9",
@@ -13,6 +13,6 @@
13
13
  "battlegrid-strategy-examples/references/recipes.md": "53887daece17995543e7d3fe1bf2577fc41a6254c291acacde48d7de63853641",
14
14
  "battlegrid-strategy-examples/references/tradingview-ports.md": "2b13adbc137178955edcca31b6ab40c01c745a932a0750b91db8820c736700bb",
15
15
  "battlegrid-trade-analysis/SKILL.md": "f49482702f17d7fc44db00c31a19fc6e9350668fe76e8948d22faaa9c7e9d6bf",
16
- "battlegrid-trade-proposal/SKILL.md": "0d8ffecd493f7916d352cee3d22aee5812c3790592b100d3f9802c75ca1180c0"
16
+ "battlegrid-trade-proposal/SKILL.md": "a198dd360bd7a1de5f00237b544a3535fc7c373612c09cf9a9dae4f2607c489a"
17
17
  }
18
18
  }
@@ -78,6 +78,14 @@ this confirm turn. A create spends an agent slot against the player's rank quota
78
78
  dropped response would spend a second one. With the key, an ambiguous retry replays the original
79
79
  result instead.
80
80
 
81
+ **When the mandate names the arena, read `get_account_state` in the same breath.** The arena needs
82
+ Agent Wagers: `mcpWagerEnabled: false` means every entry will be refused at the fee, so say the
83
+ arena needs it and offer the switch — **in a conversation a web Commander surface hosts, the switch
84
+ renders beneath the account card just shown, so offer it there**, and in every other host name the
85
+ Profile → Wallet tab path instead, because no control renders there. **Create the agent either
86
+ way**: the consent gates entering a game, never commissioning one. A `true` flag is consent alone
87
+ and not readiness — the pipeline's own refusal at the fee is the authority.
88
+
81
89
  ### 3. Lifecycle verbs: read first, state the radius, then confirm
82
90
 
83
91
  Every one of update, rebind, halt, resume, activate and archive runs this shape. The reads
@@ -27,12 +27,20 @@ the grid you submit is the one that gets scored. There is no draft state and no
27
27
  `get_account_state`. It carries the balance, the rank, and **`mcpWagerEnabled`** — a served
28
28
  projection of the player's Server-Signed Wagers signer consent.
29
29
 
30
- - **False** ⇒ say so up front, name the enablement path (Profile → Wallet tab → enable Agent
31
- Wagers), and continue **read-only**: sessions, market context, results and journals are all still
32
- useful. Do not pretend a submit will work.
33
- - **True** ⇒ proceed. It is a routing signal for what you tell them, never an authorization: the
34
- wager pipeline re-checks consent at the fee itself, and its refusal is the authority in either
35
- direction.
30
+ - **False** ⇒ a **definite refusal**, before any submission. Say so up front, name the enablement
31
+ path (Profile → Wallet tab → enable Agent Wagers), and continue **read-only**: sessions, market
32
+ context, results and journals are all still useful. Never call a submission tool the flag says
33
+ will be refused.
34
+ - **True** ⇒ proceed, but it is **consent alone and never readiness**. It projects the signer
35
+ consent and nothing else, so an account whose server signer is unregistered reads true here and
36
+ is still refused at the fee. The wager pipeline re-checks at the fee itself and its refusal is
37
+ the authority in either direction.
38
+
39
+ **In a conversation a web Commander surface hosts, the switch renders beneath the account card just
40
+ shown, or beneath the refusal — offer it there.** Say the arena needs Agent Wagers and point at the
41
+ control rather than at a settings path they would have to leave the conversation for. Every other
42
+ host — an external MCP client, Telegram — renders no such control, so the Wallet-tab path above is
43
+ the enablement path there.
36
44
 
37
45
  ### 2. Workflow A reads, in order
38
46
 
@@ -56,8 +56,13 @@ flow stays available.
56
56
  (`barStart`), when the answer is due (`decidesBy`), and the deadline past which that bar can no
57
57
  longer be decided (`windowEndsAt`). `decidesBy` and `windowEndsAt` are different instants — a bar
58
58
  that has already settled is decided at the next sweep, seconds away.
59
- - Say where the answer will appear: in the agent's conversation, and — if it proposes a trade — in
60
- `list_pending_approvals`. Nothing further is needed from the player until then.
59
+ - Say where the answer will appear: on the delegation card in this conversation, and — if it
60
+ proposes a trade — in `list_pending_approvals`. Nothing further is needed from the player until
61
+ then; the card carries the answer to them when the bar closes.
62
+ - When the player asks what the agent decided, read the request's conversation with
63
+ `get_trade_conversation({ conversationId })`, using the id the `queued` result carried. It serves
64
+ the whole transcript in stored order — the queued card, the agent's reasoning, its thesis and
65
+ setups, the recommendation, a no-trade with its reason and next coins, or a close answer.
61
66
  - `get_entry_request` re-reads a request still pending; `cancel_entry_request` withdraws it. Both
62
67
  are `NOT_FOUND` once it has been answered, cancelled or expired, and that is the honest record:
63
68
  the answer is in the conversation.
@@ -71,12 +76,17 @@ flow stays available.
71
76
 
72
77
  ## 4. When the answer arrives — approve or decline only on the player's word
73
78
 
74
- **In a conversation the Agent Toolbox hosts, the approval is not yours to send.** The decided close
75
- lands on the trade card in the lane beside you, carrying the player's own Accept and Decline;
79
+ **On a web Commander surface the approval is the card's own.** The decided close lands on the
80
+ delegation card in this conversation, carrying the player's Accept and Decline. `accept_entry_decision`
81
+ and `cancel_entry_decision` remain yours for the external and Telegram doors, and on the web only on
82
+ the player's explicit typed word — never inferred from interest, agreement, or a question about the
83
+ trade.
84
+
85
+ **In a conversation the Agent Toolbox hosts, the approval is not yours to send at all.** The decided
86
+ close lands on the trade card in the lane beside you, carrying the player's own Accept and Decline;
76
87
  `accept_entry_decision` and `cancel_entry_decision` are refused there as tool errors, so calling one
77
88
  spends an op and moves nothing. Read the card back to them — the direction, the levels, the
78
- conviction, the expiry — and say what you would do, which is the whole of your part. What you have
79
- to work from is whatever the player attaches from a card: its rendered readings, nothing more.
89
+ conviction, the expiry — and say what you would do, which is the whole of your part.
80
90
 
81
91
  - A decided close produces one of: a PROPOSED decision awaiting approval; a no-trade with the
82
92
  reason and the next coins worth asking about; a close that did not qualify; a window that passed