@battlegrid/mcp-server 31.2.77 → 31.2.79
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 +114 -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,120 @@ 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 — v97 (a signal records the evidence it decided on)
|
|
28
|
+
|
|
29
|
+
**Breaking at v97: an evaluated signal's evidence keys move, `BB_TOUCH` touches by %B, and a crossing is
|
|
30
|
+
read on the bar that leaves zero.** v97 is the contract on top of v96.
|
|
31
|
+
|
|
32
|
+
### Changed meaning — the same record, different keys
|
|
33
|
+
|
|
34
|
+
- An evaluated signal's `indicatorValues` — on `get_signal_log`, `get_public_agent_signal_log_detail` and
|
|
35
|
+
`get_coin_signal_preview` — records the last price a live-priced signal evaluated under **`last_price`**.
|
|
36
|
+
Six signals recorded it under `price`: `MA_SMA200_ABOVE` / `_BELOW`, `SR_AT_SUPPORT` / `_RESISTANCE` and
|
|
37
|
+
`BOLLINGER_LOWER_TOUCH` / `_UPPER_TOUCH`; the three structure-approach signals now record it too.
|
|
38
|
+
- **`price` means the last closed close** on every signal that records it.
|
|
39
|
+
- The Bollinger touches add `bb_upper` and `bb_lower`, and their `bb_percent_b` is the live %B they
|
|
40
|
+
compared — never the closed-bar %B.
|
|
41
|
+
- The EMA 5/13 crosses add `ema_cross` (`1` / `−1`), and the sector comparison signals add `ema5`, `ema13`
|
|
42
|
+
and `ema20`.
|
|
43
|
+
- `MFI_SUSTAINED_*` and `CVD_BULLISH` / `CVD_BEARISH` record their prior-bar value when there is one, and
|
|
44
|
+
omit it when there is not.
|
|
45
|
+
|
|
46
|
+
A signal records exactly the keys its declared vocabulary names. Records written before v97 keep the keys
|
|
47
|
+
they were written with, so a reader of history meets both.
|
|
48
|
+
|
|
49
|
+
### Changed values — the same fields, one rule each
|
|
50
|
+
|
|
51
|
+
- **Crossings.** One zero-cross rule decides every crossing: a value that reaches zero has not crossed; one
|
|
52
|
+
that leaves zero has. Every `crossDetect` column (`MACD_cross`, `PPO_cross`, `ROC_cross` and authored
|
|
53
|
+
ones), the `EMA_CROSS` label, the MACD / PPO / stochastic cross signals and `FUNDING_RATE_FLIPPING` read
|
|
54
|
+
no crossing on a bar that lands exactly on zero. They read the crossing on the bar that leaves it.
|
|
55
|
+
- **`BB_TOUCH` and `bandTouch`** classify a touch when %B is strictly below `0.05` or above `0.95` — the
|
|
56
|
+
touch signals' default thresholds. Before, a price within 2% of the band width of an edge, inclusive,
|
|
57
|
+
touched. A degenerate band reads `none`, and a `BBtouch` condition now agrees with the scorecard's touch
|
|
58
|
+
at defaults.
|
|
59
|
+
- **RSI zone.** The projected RSI state is overbought strictly above 70 and oversold strictly below 30, as
|
|
60
|
+
the `RSI14_zone` columns already read it.
|
|
61
|
+
- **Descriptions.** A served rule description states the thresholds that rule evaluates, and the ROC
|
|
62
|
+
descriptions read "positive and rising".
|
|
63
|
+
|
|
64
|
+
### Widened output
|
|
65
|
+
|
|
66
|
+
- `get_strategy_signal_definition`'s `indicators[].meta` gains `optional: true` on a key the signal records
|
|
67
|
+
only when its read is present — `prev_cvd_value` on `CVD_BULLISH` / `CVD_BEARISH`, `prev_mfi14_value` on
|
|
68
|
+
`MFI_SUSTAINED_*`. Every other key is always recorded when the signal has the data to evaluate.
|
|
69
|
+
|
|
70
|
+
A key read at v96 is absent at v97 on the same signal, and a touch or a crossing read at v96 can read
|
|
71
|
+
differently on the same bar — hence the MAJOR.
|
|
72
|
+
|
|
73
|
+
## Contract history — v96 (a metric's meaning is declared once)
|
|
74
|
+
|
|
75
|
+
**Breaking at v96: `efficiency` admits only a level or a price-fact series, and `nearestZoneDist` changes
|
|
76
|
+
sign.** v96 is the contract on top of v95.
|
|
77
|
+
|
|
78
|
+
### Rejected input — something you send is no longer accepted
|
|
79
|
+
|
|
80
|
+
- `efficiency` over an increment or an oscillator metric — `CLOSE_CHANGE`, `VOLUME`, `RSI14`, `FUNDING_RATE`
|
|
81
|
+
and the like — is refused at construction, and so is `efficiency` as the outer of `distance` or `spread`
|
|
82
|
+
(`VALIDATION_ERROR`, authoring code `REPORT_COLUMN_CONSTRUCTION_FAILED` or `REPORT_COLUMN_CHAIN_UNSUPPORTED`),
|
|
83
|
+
by every tool that builds a report column. `distance` and `spread` chain `trajectory`, `aggregate` and
|
|
84
|
+
`rank`; the column contract and the vocabulary tools serve exactly those sets.
|
|
85
|
+
- `BB_PCT_B` no longer composes `maxShare`: `%B` leaves `[0, 1]` when price closes outside a band.
|
|
86
|
+
- A `rank` column with no `ordering` is gated as the default `hi` it ranks by, so it is refused wherever a
|
|
87
|
+
written `hi` is (`REPORT_COLUMN_PAIR_UNSUPPORTED`). Write the ordering you mean.
|
|
88
|
+
- `transformId` is the closed enum of the seventeen transforms and `chainedTransformId` the enum of the five
|
|
89
|
+
chain outers, where each was any 1–40 character string. An id outside them is refused by schema.
|
|
90
|
+
|
|
91
|
+
### Changed values — the same fields, a declared meaning
|
|
92
|
+
|
|
93
|
+
- **`nearestZoneDist` is price's distance from the zone midpoint**, `((price − mid) / mid) × 100`: positive
|
|
94
|
+
when price is above the zone, negative below it. It was the midpoint's distance from price, with the
|
|
95
|
+
opposite sign. A range symmetric about zero reads the same window; a one-sided bound needs its sign
|
|
96
|
+
flipped.
|
|
97
|
+
- `BB_PCT_B` offers all four rank orderings.
|
|
98
|
+
- A `classifyZone` column declares and resolves its own metric's vocabulary in canonical labels — ADX's
|
|
99
|
+
strength bands, MFI's five bands — not a shared `overbought / oversold / neutral` set.
|
|
100
|
+
- `highDev`, `lowDev` and `oiRegime` read live sources and declare the live clock, so a condition over them
|
|
101
|
+
is provisional on the live frame.
|
|
102
|
+
- A chained column's formula binds its outer half to the inner column's header (`dist_VWAP`), and every
|
|
103
|
+
relative-change formula reads `((value − reference) / reference) × 100`.
|
|
104
|
+
|
|
105
|
+
### Reshaped output
|
|
106
|
+
|
|
107
|
+
- An authoring parameter's `defaultValue` on `get_metric_construction_hints` is typed per knob — `window`
|
|
108
|
+
and `offset` integers, `ordering` a rank ordering — and absent on `side`, `inputs` and `bars`.
|
|
109
|
+
- A rendered section column's `role` is one enum of the same members, where it was a union of an enum and
|
|
110
|
+
five literals.
|
|
111
|
+
|
|
112
|
+
An input v95 accepted is refused at v96, and a value read at v95 reads with the opposite sign — hence the
|
|
113
|
+
MAJOR.
|
|
114
|
+
|
|
115
|
+
## Contract history — v95 (a refusal names the verdict it applied)
|
|
116
|
+
|
|
117
|
+
**Breaking at v95: a gate block's `conditionVerdict` is the verdict applied, not the one read.** v95 is the
|
|
118
|
+
contract on top of v94.
|
|
119
|
+
|
|
120
|
+
### Changed meaning — the same key, a different question
|
|
121
|
+
|
|
122
|
+
- On `list_gate_blocks`, a conditions-stage `reasonDetail.conditionVerdict` is the verdict **applied** — the
|
|
123
|
+
one bound for the pair, which can be a held verdict this evaluation did not read — where it was the verdict
|
|
124
|
+
the conditions read. It is served only on a `CONDITION_VERDICT_OPPOSES_DIRECTION` or
|
|
125
|
+
`CONDITION_EXIT_RULE_CLOSES_DIRECTION` block recorded since v95; a `REQUIRED_CONDITION_FALSE` block, which
|
|
126
|
+
no verdict decided, and a block recorded before v95 no longer carry it. Read `observedVerdict` for what the
|
|
127
|
+
conditions read.
|
|
128
|
+
|
|
129
|
+
### Widened output
|
|
130
|
+
|
|
131
|
+
- The reason detail gains `observedVerdict`, served on every conditions-stage block, and `heldVerdict`,
|
|
132
|
+
`verdictDwellResolutions` and `verdictDwellRequired` — the dwell state the binding was resolved from,
|
|
133
|
+
served beside `conditionVerdict` and absent where it is. `get_signal_log` and
|
|
134
|
+
`get_public_agent_signal_log_detail` embed the same schema and never fill these keys: a block writes no
|
|
135
|
+
signal log.
|
|
136
|
+
- `get_signal_log`'s `conditionEvaluation.verdict` and `get_agent_journal`'s `marketSnapshot.conditionVerdict`
|
|
137
|
+
keep meaning the verdict the evaluation observed.
|
|
138
|
+
|
|
139
|
+
A key read at v94 answers a different question at v95 — hence the MAJOR.
|
|
140
|
+
|
|
27
141
|
## Contract history — v94 (every value you read names the bar it came from)
|
|
28
142
|
|
|
29
143
|
**Breaking at v94: a timeless metric refuses an `offset`, and a value with no reading on its bar reads absent
|
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.79";
|
|
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.79';
|
|
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];
|