@battlegrid/mcp-server 32.0.25 → 32.0.28
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 +118 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -38,6 +38,124 @@ 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 — v131 (an agent's arena decisions and a trade's thesis are read where each is made)
|
|
42
|
+
|
|
43
|
+
**Breaking at v131: one tool is replaced and some keys you read are gone.** v131 is the contract on top of v130.1. No
|
|
44
|
+
input you send to a surviving tool is refused. Reconnect the proxy, or restart it, so discovery reads the new tool,
|
|
45
|
+
schemas and descriptions.
|
|
46
|
+
|
|
47
|
+
### Removed tool — something you called is gone
|
|
48
|
+
|
|
49
|
+
A call naming it is answered as an unknown tool; there is no alias.
|
|
50
|
+
|
|
51
|
+
- **`get_agent_thought_log`**: call `list_agent_market_grid_decisions({ agentId, cursor?, limit?, window?, since?,
|
|
52
|
+
until? })` for an agent's arena decisions, and `get_signal_log({ agentId, logId })` for a trade, whose thesis is
|
|
53
|
+
`thesisReasoning`. `list_signal_logs({ agentId })` finds the trades.
|
|
54
|
+
|
|
55
|
+
### Added tool
|
|
56
|
+
|
|
57
|
+
- **`list_agent_market_grid_decisions({ agentId, cursor?, limit?, window?, since?, until? })`** (`mcp:read`) — one of
|
|
58
|
+
your agents' arena decisions, newest first, one keyset page at a time (`limit` 1–50, default 20; page with
|
|
59
|
+
`nextCursor`). Each is a decision the agent's model reached in a Market Grid session — submitted, reassessed, stood
|
|
60
|
+
down after the model was consulted, failed after a model call, or a test generation — with its
|
|
61
|
+
`marketGridSessionId` (never null), its picks, its reasoning, the model's confidence and the floor enforced
|
|
62
|
+
against it. A stand-down before any model call (eligibility, cost limit) is not a decision: it is only in
|
|
63
|
+
`get_agent_activity_feed`. It declares `_meta["anthropic/maxResultSizeChars"]`, narrowed by `limit`.
|
|
64
|
+
|
|
65
|
+
### Narrowed output — a shape you read has fewer members
|
|
66
|
+
|
|
67
|
+
- **The decision `outcome`** has the arena vocabulary only: `AGENT_TRADE_THESIS`, `SKIPPED_COST_LIMIT` and
|
|
68
|
+
`SKIPPED_ALREADY_SUBMITTED` are not members of `list_agent_market_grid_decisions`'s `outcome`. A decision has no
|
|
69
|
+
`coinGridSessionId`.
|
|
70
|
+
|
|
71
|
+
### Added output — a field you can read
|
|
72
|
+
|
|
73
|
+
- **`thesisReasoning` on `get_signal_log`**: the trade thesis the agent's model wrote for that decision, `null` for a
|
|
74
|
+
log written before theses were recorded. The public signal-log reads never carry it.
|
|
75
|
+
|
|
76
|
+
### Removed output — a key you read is gone
|
|
77
|
+
|
|
78
|
+
- **`thoughtLogId` on `get_agent_activity_feed` rows.** An event's `marketGridSessionId` and `createdAt` locate its
|
|
79
|
+
decision: read `list_agent_market_grid_decisions({ agentId })` and match the session.
|
|
80
|
+
- **`sourceThoughtLogId`** on `get_signal_log`, `get_public_agent_signal_logs` and
|
|
81
|
+
`get_public_agent_signal_log_detail` rows, and on `list_gate_blocks` rows. A signal log's thesis is its own
|
|
82
|
+
`thesisReasoning`.
|
|
83
|
+
|
|
84
|
+
### Renamed field — a key you matched changed
|
|
85
|
+
|
|
86
|
+
- **`test_generate_deployment_grid`**: `thoughtLogId` is **`marketGridAgentDecisionId`**.
|
|
87
|
+
|
|
88
|
+
## Contract history — v130.1 (your agent's profile header, your account's fills and your trade conversations read through MCP)
|
|
89
|
+
|
|
90
|
+
**Additive at v130.1: three read tools.** v130.1 is the contract on top of v130. Nothing a client sends is refused
|
|
91
|
+
and nothing it reads is reshaped. Reconnect the proxy, or restart it, so discovery reads the new tools.
|
|
92
|
+
|
|
93
|
+
### Added tools
|
|
94
|
+
|
|
95
|
+
- **`get_agent_profile({ agentId, timeframe?, signalSource? })`** (`mcp:read`) — the profile header of one of your
|
|
96
|
+
agents, as its profile page shows it: identity and run state, then the KPI band over `timeframe` (a trailing
|
|
97
|
+
performance window, `LIFETIME` by default; not `get_agent_explorer`'s leaderboard timeframe) and the
|
|
98
|
+
`signalSource` selection (empty, the default, is every source). The open-position figures are priced live. It
|
|
99
|
+
answers `{ profile }`, or `{ profile: null }` unless the agent is a private agent on your account; archived agents
|
|
100
|
+
are served. For the P&L from the budget baseline read `get_agent_performance`; for the fixed Decision Quality
|
|
101
|
+
window and its slices read `get_agent_review_analytics`.
|
|
102
|
+
- **`list_user_fills({ limit? })`** (`mcp:read`) — what the venue filled on your account, newest first: every agent's
|
|
103
|
+
and every manual order's fills alike, attributed to no agent or decision. `limit` is 1–200, default 50, and
|
|
104
|
+
narrows a result over the declared size cap. `orderId` is the venue's order id; the BattleGrid attribution fields
|
|
105
|
+
are `null` on this read. One trade's fills are `get_trade_outcome_by_decision`'s, on a `list_agent_trades` row's
|
|
106
|
+
`decisionId`. It queries the exchange, so it is slower and can fail when the exchange is unreachable.
|
|
107
|
+
- **`list_trade_conversations({ agentId?, cursor?, limit?, window?, since?, until? })`** (`mcp:read`) — your trade
|
|
108
|
+
conversations, newest activity first, one keyset page at a time (`limit` 1–50, default 20; page with
|
|
109
|
+
`nextCursor`), windowed by last activity. A row's `id` is the `conversationId` `get_trade_conversation` reads.
|
|
110
|
+
`agentId` narrows within your own conversations.
|
|
111
|
+
|
|
112
|
+
### Corrected descriptions
|
|
113
|
+
|
|
114
|
+
`get_trade_conversation` names a `list_trade_conversations` row's `id`, beside a `propose_entry_decision` result, as
|
|
115
|
+
where its `conversationId` comes from. `get_agent_review_analytics` names `get_agent_profile` for a window or a signal
|
|
116
|
+
source you choose.
|
|
117
|
+
|
|
118
|
+
## Contract history — v130 (one audit-history tool per audience, and a blocked fire names its gate block)
|
|
119
|
+
|
|
120
|
+
**Breaking at v130: one answer narrows for a call you could already make.** v130 is the contract on top of v129.1.
|
|
121
|
+
No input you could send is refused. Reconnect the proxy, or restart it, so discovery reads the new tool, schemas and
|
|
122
|
+
descriptions.
|
|
123
|
+
|
|
124
|
+
### Narrowed answer — a call you made now returns less
|
|
125
|
+
|
|
126
|
+
- **`get_position_audit_history` reads your own positions only.** It serves any position your agents opened,
|
|
127
|
+
archived agents included, and answers `NOT_FOUND` for another user's position, as it answers a missing one. Until
|
|
128
|
+
v130 it served another user's ACTIVE agent's position and refused your own archived agent's. To read another
|
|
129
|
+
user's ACTIVE agent's position, call `get_public_agent_position_audit_history` with the same arguments.
|
|
130
|
+
|
|
131
|
+
### Added tool
|
|
132
|
+
|
|
133
|
+
- **`get_public_agent_position_audit_history({ agentId, positionId })`** (`mcp:read`) serves the public order-lifecycle
|
|
134
|
+
audit trail of a position, for an ACTIVE agent only. An archived agent's position is `NOT_FOUND`, as a missing one
|
|
135
|
+
is. Its result is `get_position_audit_history`'s: one oldest-first `events[]` stream. `get_public_agent_open_positions`
|
|
136
|
+
now names it as the read of a position's live protection and its reprices.
|
|
137
|
+
|
|
138
|
+
### Added output — a field you can read
|
|
139
|
+
|
|
140
|
+
- **`gateBlockId` on every `get_radar_activity` row and every `get_radar_activity_summary` recent row**, at both
|
|
141
|
+
`detail` levels. On a `FIRE_DISPOSITION` row whose disposition is `FIRED`, it names the gate block that refused that
|
|
142
|
+
fire's evaluation: find it in `list_gate_blocks({ agentId, since: <the row's occurredAt> })`. It is `null` when that
|
|
143
|
+
evaluation wrote no gate block (a fire that wrote a signal log names no gate block) and on every other row. A
|
|
144
|
+
strict-schema client accepts the new key on each variant.
|
|
145
|
+
|
|
146
|
+
### Declared sizes — the result cap is announced
|
|
147
|
+
|
|
148
|
+
- `list_agent_open_orders` and `list_user_active_positions` carry `_meta["anthropic/maxResultSizeChars"]`. Neither
|
|
149
|
+
takes a narrowing input: each serves the whole live set in one result. For one position's orders read
|
|
150
|
+
`get_position_audit_history`; for one coin's open agent position read `get_agent_decision_context`.
|
|
151
|
+
|
|
152
|
+
### Corrected descriptions
|
|
153
|
+
|
|
154
|
+
`get_radar_deployment` names `policyId`, `coinId`, `coinTicker`, `enabled` (false is a pause: skipped at sweep
|
|
155
|
+
discovery, slots kept) and every `resolvesNow` member, `isIdle`, `agentRegimeReadings` and `ruleOutcomes` included;
|
|
156
|
+
`get_agent_thought_log` names `list_signal_logs` as the read of trade decisions alone and
|
|
157
|
+
`list_my_market_grid_entries` as the read of arena entries alone; `get_radar_activity` names `gateBlockId`.
|
|
158
|
+
|
|
41
159
|
## Contract history — v129.1 (the activity feed names only events that happen)
|
|
42
160
|
|
|
43
161
|
**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.
|
|
50
|
+
export declare const PACKAGE_VERSION = "32.0.28";
|
|
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.28';
|
|
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];
|