@battlegrid/mcp-server 31.2.85 → 31.2.87
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 +104 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,6 +24,110 @@ Seeing package `31.x` alongside handshake `battlegrid@33.x` — the package **be
|
|
|
24
24
|
|
|
25
25
|
**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.
|
|
26
26
|
|
|
27
|
+
## Contract history — v103 (a column's contract carries its read size, measurement and series home)
|
|
28
|
+
|
|
29
|
+
**Breaking at v103: a transform entry drops `sideRequired` and `operandRequired`, and
|
|
30
|
+
`get_strategy_column_contract` validates its ticker as a coin symbol.** v103 is the contract on top of
|
|
31
|
+
v102.1.1, which changed only two deployment-draft input descriptions.
|
|
32
|
+
|
|
33
|
+
### Reshaped output — something you read has moved or been removed
|
|
34
|
+
|
|
35
|
+
- **`sideRequired` and `operandRequired` leave every transform entry** `get_metric_construction_hints`
|
|
36
|
+
serves. Each restated a field the same entry already carries: read
|
|
37
|
+
`authoring.parameters.side.required` and `authoring.parameters.inputs.required` instead, where an
|
|
38
|
+
absent parameter means the transform does not accept it.
|
|
39
|
+
|
|
40
|
+
### Rejected input — something you send is no longer accepted
|
|
41
|
+
|
|
42
|
+
- **`get_strategy_column_contract`'s `benchmarkTicker` is a coin symbol**: trimmed, 1–20 characters of
|
|
43
|
+
the coin-symbol charset. Any non-empty string was accepted before.
|
|
44
|
+
|
|
45
|
+
### Widened input — something new you can send
|
|
46
|
+
|
|
47
|
+
- **The fixed `64` maximums leave strategy authoring**: a column's `window` and `offset`, a custom
|
|
48
|
+
section's `columns` and the `conditions` arrays. The configured budgets `list_strategy_vocabulary`
|
|
49
|
+
serves under `budgets` judge them instead — `sectionColumns`, `strategyConditions`,
|
|
50
|
+
`conditionClauses` and `columnLookback`. `window` and `offset` keep their integer floors.
|
|
51
|
+
|
|
52
|
+
### Widened output
|
|
53
|
+
|
|
54
|
+
- **The column contract gains `lookback`, `measurement` and `seriesHome`.**
|
|
55
|
+
- `lookback: { used, cap }` — the bars the column reads, against the lookback budget a save holds it to.
|
|
56
|
+
- `measurement: { transform, chainedTransform }` — how each transform reads its series: `readShape`,
|
|
57
|
+
`windowUnit`, `priceBasis` and `nullPolicy`. `chainedTransform` is `null` for an unchained column.
|
|
58
|
+
- `seriesHome` — where the metric's series is kept: `candle`, `history`, or `null` when it has none,
|
|
59
|
+
which is why a series transform does not compose on it.
|
|
60
|
+
- **`list_strategy_vocabulary` gains `conditionGrammar`**: the group depth, the operator and group
|
|
61
|
+
operator vocabularies and the verdicts a condition is written in.
|
|
62
|
+
- **A category example gains `clause`**: `{ op: 'between', low, high }`, or `null` for an example with
|
|
63
|
+
no recipe clause. The structure family gains two recipes — `VWAP × distance` held `between -2 2`
|
|
64
|
+
("price within ±2% of VWAP") and `STRUCT_ZONES × nearestZoneDist(support)` held `between 0 1.5`
|
|
65
|
+
("approaching support").
|
|
66
|
+
- **A `window` or `offset` declaration gains `minimum`**, the smallest value the transform accepts.
|
|
67
|
+
|
|
68
|
+
### Behaviour behind unchanged schemas
|
|
69
|
+
|
|
70
|
+
- **A column whose read size exceeds the lookback budget is refused with
|
|
71
|
+
`REPORT_COLUMN_LOOKBACK_EXCEEDED`** by `get_strategy_column_contract` exactly as by a save, before
|
|
72
|
+
the column is built. A window too large to build was a construction failure before.
|
|
73
|
+
- **A value below a declared `minimum` is refused naming the transform that declares it**, including
|
|
74
|
+
a chained transform's window.
|
|
75
|
+
- **A spread with the wrong number of operands is refused naming the operand its operand order
|
|
76
|
+
declares.**
|
|
77
|
+
- **A `regime` timeframe reference resolves to the anchor's regime rung** when the request names an
|
|
78
|
+
anchor timeframe. It resolved to `null` before.
|
|
79
|
+
|
|
80
|
+
A client that reads `sideRequired` or `operandRequired`, or sends a ticker outside the coin-symbol
|
|
81
|
+
charset to `get_strategy_column_contract`, breaks at v103 — hence the MAJOR.
|
|
82
|
+
|
|
83
|
+
## Contract history — v102.1 (your agents' trading record)
|
|
84
|
+
|
|
85
|
+
**Additive at v102.1: three read tools.** v102.1 is the contract on top of v102. Nothing a client sends
|
|
86
|
+
is refused and nothing it reads is reshaped.
|
|
87
|
+
|
|
88
|
+
### Added tools
|
|
89
|
+
|
|
90
|
+
All three are `mcp:read` and read your own agents only.
|
|
91
|
+
|
|
92
|
+
- **`list_agent_open_orders`** — the live orders (`PENDING`, `ACKED`, `WORKING`) of the positions your
|
|
93
|
+
agents hold, newest first, each naming its agent.
|
|
94
|
+
- **`list_agent_trades`** — your agents' closed trades, newest close first, paged with `nextCursor` and
|
|
95
|
+
narrowed by `coinTicker` and `agentId`, with a `summary` of the whole filtered scope: trade count, win
|
|
96
|
+
count, win rate and net P&L in USD. Another user's agent reads as an empty scope.
|
|
97
|
+
- **`get_agents_portfolio_pnl`** — your agents' combined P&L over `24H`, `7D` or `30D`, as 48 dated
|
|
98
|
+
points ending on the period figure.
|
|
99
|
+
|
|
100
|
+
## Contract history — v102 (your entry history's facets come with the first page)
|
|
101
|
+
|
|
102
|
+
**Breaking at v102: `list_my_market_grid_entries` moves its counts, summary and agent options under one
|
|
103
|
+
`facets` object, sent with the first page only, and every entry gains a payout state.** v102 is the
|
|
104
|
+
contract on top of v101.1.
|
|
105
|
+
|
|
106
|
+
### Reshaped output — something you read has moved or been added
|
|
107
|
+
|
|
108
|
+
- **`outcomeCounts`, `summary` and `agentOptions` move under `facets`**, unchanged inside it:
|
|
109
|
+
`facets.outcomeCounts`, `facets.summary`, `facets.agentOptions`.
|
|
110
|
+
- **`facets` comes with the first page only.** A page you read with a `cursor` carries `facets: null`.
|
|
111
|
+
Keep the first page's facets for the whole scroll: every page of one read shares the same filters, so
|
|
112
|
+
the first page's counts, summary and agent options describe all of them.
|
|
113
|
+
- **Every entry gains `payoutState`**, in `list_my_market_grid_entries` and `get_my_market_grid_entry`:
|
|
114
|
+
`RECORDED` once settlement has recorded both of the entry's payouts, `UNDER_REVIEW` if it left one
|
|
115
|
+
unrecorded, and `null` while the entry is in play or cancelled.
|
|
116
|
+
- **`facets.summary` gains `payoutsUnderReviewCount`**: how many settled entries the money figures leave
|
|
117
|
+
out because their payout is under review.
|
|
118
|
+
|
|
119
|
+
### Behaviour behind unchanged schemas
|
|
120
|
+
|
|
121
|
+
- **An entry under review has `netPnl: null`.** It is listed under `PLAYED` only, never under `PAID` or
|
|
122
|
+
`NOT_PAID`, and the summary leaves both its fee and its payout out of every money figure, so the totals
|
|
123
|
+
stay consistent. Today no entry is under review: the entries settled before settlement recorded both
|
|
124
|
+
payouts now record `0` for the payout they never received, so their net reads the same as before.
|
|
125
|
+
- The five filters (`window`, `outcome`, `source`, `agentId`, `cursor`) accept exactly what they
|
|
126
|
+
accepted before. Only the `agentId` description changes: it now points at `facets.agentOptions`.
|
|
127
|
+
|
|
128
|
+
A client that reads `outcomeCounts`, `summary` or `agentOptions` at the top level, expects them on every
|
|
129
|
+
page, or rejects unknown entry fields, breaks at v102 — hence the MAJOR.
|
|
130
|
+
|
|
27
131
|
## Contract history — v101.1 (swing highs, swing lows and the structure label)
|
|
28
132
|
|
|
29
133
|
**Additive at v101.1: the catalog gains three swing-structure metrics.** v101.1 is the contract on top of
|
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.87";
|
|
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.87';
|
|
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];
|