@battlegrid/mcp-server 32.0.25 → 32.0.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 CHANGED
@@ -38,6 +38,77 @@ 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 — v130.1 (your agent's profile header, your account's fills and your trade conversations read through MCP)
42
+
43
+ **Additive at v130.1: three read tools.** v130.1 is the contract on top of v130. Nothing a client sends is refused
44
+ and nothing it reads is reshaped. Reconnect the proxy, or restart it, so discovery reads the new tools.
45
+
46
+ ### Added tools
47
+
48
+ - **`get_agent_profile({ agentId, timeframe?, signalSource? })`** (`mcp:read`) — the profile header of one of your
49
+ agents, as its profile page shows it: identity and run state, then the KPI band over `timeframe` (a trailing
50
+ performance window, `LIFETIME` by default; not `get_agent_explorer`'s leaderboard timeframe) and the
51
+ `signalSource` selection (empty, the default, is every source). The open-position figures are priced live. It
52
+ answers `{ profile }`, or `{ profile: null }` unless the agent is a private agent on your account; archived agents
53
+ are served. For the P&L from the budget baseline read `get_agent_performance`; for the fixed Decision Quality
54
+ window and its slices read `get_agent_review_analytics`.
55
+ - **`list_user_fills({ limit? })`** (`mcp:read`) — what the venue filled on your account, newest first: every agent's
56
+ and every manual order's fills alike, attributed to no agent or decision. `limit` is 1–200, default 50, and
57
+ narrows a result over the declared size cap. `orderId` is the venue's order id; the BattleGrid attribution fields
58
+ are `null` on this read. One trade's fills are `get_trade_outcome_by_decision`'s, on a `list_agent_trades` row's
59
+ `decisionId`. It queries the exchange, so it is slower and can fail when the exchange is unreachable.
60
+ - **`list_trade_conversations({ agentId?, cursor?, limit?, window?, since?, until? })`** (`mcp:read`) — your trade
61
+ conversations, newest activity first, one keyset page at a time (`limit` 1–50, default 20; page with
62
+ `nextCursor`), windowed by last activity. A row's `id` is the `conversationId` `get_trade_conversation` reads.
63
+ `agentId` narrows within your own conversations.
64
+
65
+ ### Corrected descriptions
66
+
67
+ `get_trade_conversation` names a `list_trade_conversations` row's `id`, beside a `propose_entry_decision` result, as
68
+ where its `conversationId` comes from. `get_agent_review_analytics` names `get_agent_profile` for a window or a signal
69
+ source you choose.
70
+
71
+ ## Contract history — v130 (one audit-history tool per audience, and a blocked fire names its gate block)
72
+
73
+ **Breaking at v130: one answer narrows for a call you could already make.** v130 is the contract on top of v129.1.
74
+ No input you could send is refused. Reconnect the proxy, or restart it, so discovery reads the new tool, schemas and
75
+ descriptions.
76
+
77
+ ### Narrowed answer — a call you made now returns less
78
+
79
+ - **`get_position_audit_history` reads your own positions only.** It serves any position your agents opened,
80
+ archived agents included, and answers `NOT_FOUND` for another user's position, as it answers a missing one. Until
81
+ v130 it served another user's ACTIVE agent's position and refused your own archived agent's. To read another
82
+ user's ACTIVE agent's position, call `get_public_agent_position_audit_history` with the same arguments.
83
+
84
+ ### Added tool
85
+
86
+ - **`get_public_agent_position_audit_history({ agentId, positionId })`** (`mcp:read`) serves the public order-lifecycle
87
+ audit trail of a position, for an ACTIVE agent only. An archived agent's position is `NOT_FOUND`, as a missing one
88
+ is. Its result is `get_position_audit_history`'s: one oldest-first `events[]` stream. `get_public_agent_open_positions`
89
+ now names it as the read of a position's live protection and its reprices.
90
+
91
+ ### Added output — a field you can read
92
+
93
+ - **`gateBlockId` on every `get_radar_activity` row and every `get_radar_activity_summary` recent row**, at both
94
+ `detail` levels. On a `FIRE_DISPOSITION` row whose disposition is `FIRED`, it names the gate block that refused that
95
+ fire's evaluation: find it in `list_gate_blocks({ agentId, since: <the row's occurredAt> })`. It is `null` when that
96
+ evaluation wrote no gate block (a fire that wrote a signal log names no gate block) and on every other row. A
97
+ strict-schema client accepts the new key on each variant.
98
+
99
+ ### Declared sizes — the result cap is announced
100
+
101
+ - `list_agent_open_orders` and `list_user_active_positions` carry `_meta["anthropic/maxResultSizeChars"]`. Neither
102
+ takes a narrowing input: each serves the whole live set in one result. For one position's orders read
103
+ `get_position_audit_history`; for one coin's open agent position read `get_agent_decision_context`.
104
+
105
+ ### Corrected descriptions
106
+
107
+ `get_radar_deployment` names `policyId`, `coinId`, `coinTicker`, `enabled` (false is a pause: skipped at sweep
108
+ discovery, slots kept) and every `resolvesNow` member, `isIdle`, `agentRegimeReadings` and `ruleOutcomes` included;
109
+ `get_agent_thought_log` names `list_signal_logs` as the read of trade decisions alone and
110
+ `list_my_market_grid_entries` as the read of arena entries alone; `get_radar_activity` names `gateBlockId`.
111
+
41
112
  ## Contract history — v129.1 (the activity feed names only events that happen)
42
113
 
43
114
  **Not breaking.** v129.1 is the contract on top of v129. No input acceptance moves and no served page changes.
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.25";
50
+ export declare const PACKAGE_VERSION = "32.0.26";
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.25';
52
+ export const PACKAGE_VERSION = '32.0.26';
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.25",
3
+ "version": "32.0.26",
4
4
  "description": "BattleGrid MCP server — play crypto prediction games from AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",