@odatano/nightgate-mcp 0.15.0 → 0.17.0

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/CHANGELOG.md CHANGED
@@ -1,272 +1,301 @@
1
- # Changelog
2
-
3
- All notable changes to `@odatano/nightgate-mcp` are documented in this file.
4
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
- The README says which NIGHTGATE the current version needs.
7
-
8
- ## [Unreleased]
9
-
10
- ## [0.15.0] - 2026-10-19
11
-
12
- Needs NIGHTGATE 0.35.0 and `@odatano/nightgate-tx` 0.14.0; analytics under `/odata/v4/analytics` (the gateway serves both names).
13
-
14
- ### Changed
15
-
16
- - **The analytics URL defaults to `<ODATANO_ACCESS_URL>/odata/v4/analytics`**
17
- instead of `…/odata/v4/astra`. An ASTRA instance that still serves
18
- `/odata/v4/astra` needs `ODATANO_ANALYTICS_URL` set to that path.
19
-
20
- ## [0.14.0] - 2026-10-18
21
-
22
- Needs NIGHTGATE 0.35.0 and `@odatano/nightgate-tx` 0.14.0 (the gateway serves both spellings).
23
-
24
- ### Changed
25
-
26
- - The tools call NIGHTGATE under `/odata/v4/midnight` and
27
- `/odata/v4/midnight-indexer`. Against a server below 0.35.0 set
28
- `NIGHTGATE_SERVICE_PATH=/api/v1/nightgate` and
29
- `NIGHTGATE_INDEXER_SERVICE_PATH=/api/v1/indexer`.
30
-
31
- ## [0.13.0] - 2026-10-15
32
-
33
- Needs NIGHTGATE 0.34.0 and `@odatano/nightgate-tx` 0.12.2.
34
-
35
- ### Added
36
-
37
- - `get_grant_usage`: the key's jobs and its limits, the hour and day budgets
38
- and the rate classes with what is left.
39
-
40
- ### Changed
41
-
42
- - A 429 from NIGHTGATE carries `retryAfterSeconds` from `Retry-After`, as a
43
- gateway 429 did already.
44
-
45
- ## [0.12.0] - 2026-10-13
46
-
47
- Needs NIGHTGATE 0.33.0 and `@odatano/nightgate-tx` 0.12.2.
48
-
49
- ### Changed
50
-
51
- - `build_sponsorable_transaction` and the local `mint_token` read contract
52
- state through the NIGHTGATE API (`createTxBuilder({ api })`); they dial no
53
- indexer and no node. `NIGHTGATE_INDEXER_HTTP_URL` and `NIGHTGATE_INDEXER_WS_URL`
54
- switch them back to a Midnight indexer.
55
- - The swap wallet syncs from `NIGHTGATE_INDEXER_HTTP_URL` and
56
- `NIGHTGATE_INDEXER_WS_URL` only; without them the swap tools refuse with
57
- the two names instead of dialing the public indexer.
58
- - `build_sponsorable_transaction` returns `txId` (sha256 of the bytes),
59
- `characters` and `bytes` instead of the base64; the bytes stay in the server
60
- process for one hour, `outFile` writes them to a path.
61
- - `sponsor_unbound_transaction` and `sponsor_finalized_transaction` take `txId`
62
- or `file` (base64 text or raw bytes); the base64 argument remains for callers
63
- without either. The result carries `sent` with characters, bytes and `txId`.
64
-
65
- ## [0.11.0] - 2026-10-12
66
-
67
- Needs NIGHTGATE 0.32.0.
68
-
69
- ### Changed
70
-
71
- - `sponsor_finalized_transaction`, `sponsor_unbound_transaction`, `sponsor_swap`
72
- and `mint_token` take no `sponsorSessionId`: the server's sponsor pool pays,
73
- or the wallet session the agent grant is pinned to.
74
- - `take_swap_offer`: `submit: true` hands both halves to the sponsor at once;
75
- it replaces the sponsor session id as the trigger.
76
- - The platform pool id is gone from every tool description.
77
-
78
- ## [0.10.1] - 2026-10-03
79
-
80
- ### Fixed
81
-
82
- - A maker half posted with `post_swap_offer` is tied to its `offerId`; `get_swap_wallet`
83
- lists it with `offerId` and `boardStatus` and drops it once the offer is `filled`
84
- (read through `get_swap_wallet`, `get_swap_offer`, `list_swap_offers`, `my_swap_offers`).
85
- An expired or retired offer keeps its half for `revert_swap_offer`.
86
- - Board rows carry `tags` as the server sends them: an array from NIGHTGATE 0.30.3 on.
87
-
88
- ## [0.10.0] - 2026-10-02
89
-
90
- ### Added
91
-
92
- - **Offer board** (NIGHTGATE 0.30.0): `post_swap_offer(offer, expiresAt?, tags?)`,
93
- `list_swap_offers(givesType?, wantsType?, tag?, limit?)`, `retire_swap_offer(offerId)`.
94
- `sponsor_swap` and `take_swap_offer` take an `offerId` from the board in place of the
95
- maker half: `take_swap_offer` reads the entry first and refuses before proving when it
96
- is closed or carries another offer; `sponsor_swap` pairs `offerId` with `takerHalf` or
97
- the `halfId` of a taken offer.
98
- - **Board reads** (NIGHTGATE 0.30.1): `list_swap_offers(status?, since?)` reads closed
99
- offers and the change feed, `my_swap_offers(status?, since?, limit?)` the caller's own
100
- posts, `get_swap_offer(offerId)` one offer open or closed, `get_board_status()` the
101
- board's counts and sponsor readiness without credentials (indexer service,
102
- `NIGHTGATE_INDEXER_SERVICE_PATH`, default `/api/v1/indexer`).
103
- - **`mint_token(contractAddress, name, amount, recipientCoinPublicKey?, recipientEncryptionPublicKey?, sponsorSessionId?, sessionId?, idempotencyKey?)`**:
104
- a token of your own name on a token factory. Without `sessionId` the seed is the issuer,
105
- the mint is built, proven and signed here (`@odatano/nightgate-tx` 0.10.2 on
106
- `@odatano/contract-token-factory`) and `sponsorUnboundTransaction` pays; with `sessionId`
107
- the server session mints (`mintFactoryToken`, NIGHTGATE 0.30.1). The recipient defaults
108
- to this wallet; another wallet takes both of its keys. The type is in the response.
109
- - **Disclosure to token holders**: `grant_disclosure_to_holders(payloadHash, tokenType,
110
- registryAddress, content?, contentType?, expiresAt?)`, `revoke_holder_disclosure(holderGrantId)`,
111
- `claim_disclosure(payloadHash, tokenType, claimSecret)`, `holder_claim_key(claimSecret?)`.
112
-
113
- ### Changed
114
-
115
- - Peer dependency `@odatano/nightgate-tx` `>=0.10.2` (`holderClaimKey`, `tokenFactoryIssuerSecret`); local building and swaps still run on 0.8.0. A missing or older install is reported per tool with the version it needs. Optional peer `@odatano/contract-token-factory` for local minting.
116
- - `mint_token` derives the default recipient from the seed without starting the local builder.
117
- - Amounts given as JS numbers must be safe integers; pass a decimal string for anything larger.
118
- - Function calls pass an unused declared parameter as `null`.
119
-
120
- ## [0.9.0] - 2026-09-30
121
-
122
- ### Added
123
-
124
- - **Shielded swap tools** (NIGHTGATE 0.29.0, `@odatano/nightgate-tx` 0.8.0):
125
- - `get_swap_wallet`: address, public keys, per token type balance, free coins and
126
- `spendable`; halves built here that have not landed.
127
- - `read_swap_offer`: `gives`, `wants`, `inputs`, `outputs`, `bound` of an offer file or
128
- base64 half, read from the transaction.
129
- - `build_swap_offer(give, want, bind?)`: one proven half, as offer file (`swapoffer1...`).
130
- - `take_swap_offer(offer, expect?, sponsorSessionId?, idempotencyKey?)`: the mirror half;
131
- with a sponsor session it submits both halves. A refusal carries `halfId`.
132
- - `sponsor_swap(makerHalf, takerHalf | halfId, sponsorSessionId, idempotencyKey?)`.
133
- - `revert_swap_offer(id)`: releases the coins of a half built here.
134
- - `NIGHTGATE_SWAP_STATE_FILE`, `NIGHTGATE_SWAP_MAX_INPUTS`.
135
- - `get_attester_identity` returns `shieldedAddress`, `coinPublicKey`, `encryptionPublicKey`.
136
- - `npm run integration` covers the swap tools (`scripts/integration-swap.mjs`).
137
-
138
- ### Changed
139
-
140
- - Peer dependency `@odatano/nightgate-tx` `>=0.8.0` (was `>=0.6.0`).
141
- - Lockfile: one `@midnight-ntwrk/ledger-v8` (8.1.0) in the tree. Two copies made the local
142
- builder fail with `expected instance of DustParameters`.
143
- - `live:sponsor-unbound` verifies with the attester id.
144
- - `NIGHTGATE_SEED_HEX` is 128 hex (a 64-byte BIP39 seed); 64 hex is refused at startup.
145
- - `get_job_status` describes the `swap` result of a swap job.
146
-
147
- ## [0.8.1] - 2026-09-27
148
-
149
- ### Changed
150
-
151
- - `get_job_status` describes `chainSegments` (NIGHTGATE 0.28.0): for a confirmed batch,
152
- which calls applied. Tool errors carry the server's string `code` (`INVALID_ARGUMENT`, ...).
153
- - README reorganized; compatibility names the current version only.
154
-
155
- ## [0.8.0] - 2026-09-23
156
-
157
- ### Added
158
-
159
- - **Analytics tools over ODATANO ASTRA** (`analytics_overview`, `analytics_key_figures`,
160
- `analytics_daily`, `analytics_top_block_producers`, `analytics_metrics`, `analytics_metric`,
161
- `analytics_series`, `analytics_compare`, `analytics_anomalies`), registered when the host
162
- serves ASTRA at `ODATANO_ANALYTICS_URL` (default: the gateway's `/odata/v4/astra`). Same key,
163
- one unit per read, chain pinned to Midnight; `analytics_compare` puts Cardano next to it.
164
-
165
- ### Changed
166
-
167
- - **Default gateway host is `https://api.preprod.odatano.dev`** (one host per
168
- network; `api.odatano.dev` now only redirects there with a 307). Node drops
169
- the `Authorization` header on a cross-host redirect, so the old default
170
- would answer 401 for every call: set `ODATANO_ACCESS_URL` explicitly on
171
- older versions, or upgrade. The missing-key warning fires for any
172
- `api.<network>.odatano.dev` host.
173
-
174
- ## [0.7.0] - 2026-09-20
175
-
176
- ### Changed (breaking)
177
-
178
- - **One connection env for both ODATANO MCP servers.** `ODATANO_ACCESS_URL`
179
- (default `https://api.odatano.dev`, the gateway), `ODATANO_ACCESS_KEY`
180
- (the `oda_…` key, or an `ngat_…` grant / other bearer against a direct
181
- instance) and `ODATANO_ACCESS_USER` / `ODATANO_ACCESS_PASSWORD` (basic
182
- auth for a direct instance) replace `NIGHTGATE_BASE_URL`,
183
- `NIGHTGATE_TOKEN`, `NIGHTGATE_USERNAME` and `NIGHTGATE_PASSWORD`; the old
184
- names are not read any more. `@odatano/core-mcp` 0.3.0 reads the same
185
- four, so an `.mcp.json` needs one key for both chains and no URL. The
186
- other `NIGHTGATE_*` variables (network, seed, indexer, zk-config, proof
187
- server, timeout, service path) are unchanged.
188
- - **Gateway error bodies reach the agent.** The ODATANO ACCESS gateway
189
- answers with `{ error: "<text>", ...detail }`; the client now keeps the
190
- text as the message and hands the detail (`unitsLeft`, `price`, the
191
- `topup` hint, `products`, `validUntil`, `retryAfterSeconds` from
192
- `Retry-After`) through to the tool error, so a 402 says how to top up
193
- instead of "request failed with HTTP 402".
194
- - **The hosted API is the documented default.** README: quick start with a
195
- key from api.odatano.dev first, sponsoring through the gateway's platform
196
- pool, own instance second; the server warns at startup when the gateway
197
- is the target and no key is set. Server version constant follows the
198
- package.
199
-
200
- ## [0.6.1] - 2026-09-19
201
-
202
- ### Changed
203
-
204
- - **The ODATANO ACCESS key (`oda_…`) is the documented credential.**
205
- `api.nightgate.dev` is the ODATANO ACCESS gateway since 2026-09-18: it
206
- meters the key in units, swaps in the NIGHTGATE agent grant underneath and
207
- fronts ODATANO with the same key. Set `NIGHTGATE_BASE_URL=https://api.nightgate.dev`
208
- and `NIGHTGATE_TOKEN=oda_…`; the key goes as a plain `Authorization: Bearer`.
209
- Get one at `POST https://api.odatano.dev/keys` (x402), from a giveaway
210
- code, or by signing in at the console. A raw `ngat_…` agent grant
211
- (`x-agent-token`) still works against a direct NIGHTGATE instance. No code
212
- change: the client already sent a prefix-less token as a bearer.
213
- - `.env.example` and README updated accordingly; this changelog added and
214
- shipped with the package.
215
-
216
- ## [0.6.0] - 2026-09
217
-
218
- ### Changed (breaking)
219
-
220
- - **Vault lineage 4: every record is keyed by attester AND payload**
221
- (NIGHTGATE >= 0.24.0). `verify_attestation` takes `attesterId` +
222
- `payloadHash` (or a bound `documentId`), `verify_predicate` takes
223
- `attesterId`, the `prove_*` tools accept an optional `attesterId` (the
224
- record the claim is proven against), `anchor_document` is one plain attest
225
- and returns `attesterId`.
226
- - `prepare_anchor_commitment` and `commit_document_anchor` are gone: nothing
227
- is left to guard, no identity can take over another attester's record.
228
- - Local building needs `@odatano/nightgate-tx` >= 0.6.0; the proof calls
229
- take `recordKey` or `payloadHash` (+ `attesterId`). Against a 0.23.x server
230
- the verify calls fail with 400 (unknown parameter).
231
-
232
- ## [0.5.1] - 2026-08-23
233
-
234
- ### Added
235
-
236
- - **32-slot vault.** Schema and opening take 16 or 32 entries, `allowedMask`
237
- up to 32 bits, `k` up to 32; the vacuity guard is checked against the
238
- schema instead of a fixed all-ones constant. Target it with
239
- `compiledArtifactRef: 'attestation-vault-32'` (NIGHTGATE >= 0.19.0 for
240
- width 32). A 16-slot setup keeps working against any 0.18.x server.
241
- - Local ZK claims: field and document proofs can be built in-process.
242
-
243
- ## [0.5.0] - 2026-08-19
244
-
245
- ### Added
246
-
247
- - **Parallel sponsoring channel:** `sponsor_unbound_transaction` with the
248
- platform pool id (NIGHTGATE >= 0.18.0; 404 against older servers).
249
- - **Local transaction building** for agents: `build_sponsorable_transaction`
250
- and `get_attester_identity` via the optional `@odatano/nightgate-tx`
251
- >= 0.2.0 txbuilder, driven by `NIGHTGATE_SEED_HEX` (never a tool argument).
252
-
253
- ## [0.3.0] - 2026-08-16
254
-
255
- ### Added
256
-
257
- - Cross-root document proofs and guarded anchoring (`prepare_anchor_commitment`
258
- / `commit_document_anchor`, removed again in 0.6.0).
259
-
260
- ## [0.2.0] - 2026-08-10
261
-
262
- ### Added
263
-
264
- - Membership and equality proof tools; README documents the tool set and the
265
- server compatibility table.
266
-
267
- ## [0.1.0] - 2026-08-07
268
-
269
- ### Added
270
-
271
- - Initial MCP server: attestation, verification and job tools over the
272
- NIGHTGATE OData API, agent-grant (`ngat_…`) or basic auth.
1
+ # Changelog
2
+
3
+ All notable changes to `@odatano/nightgate-mcp` are documented in this file.
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+ The README says which NIGHTGATE the current version needs.
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.17.0] - 2026-10-25
11
+
12
+ Needs NIGHTGATE 0.36.0; `get_job_status` waits on the server from 0.37.0.
13
+
14
+ ### Changed
15
+
16
+ - **`get_job_status` waits instead of polling.** It passes `waitMs` (default
17
+ 20000, at most 25000) and the server holds the call until the job settles;
18
+ a server without `waitMs` is asked again without it. Tool descriptions say
19
+ call instead of poll.
20
+ - **Explorer hash.** The descriptions name `transactionHash`, the hash
21
+ explorers show, next to the ledger identifier `txHash` / `transactionId`.
22
+ - **Default vault lineage `attestation-vault-32`**, the lineage of the hosted
23
+ sandbox vaults: the local builder, its prover keys and every tool that
24
+ sends `compiledArtifactRef` use it when none is given. A 16-slot vault needs
25
+ `compiledArtifactRef: 'attestation-vault'`.
26
+
27
+ ## [0.16.0] - 2026-10-24
28
+
29
+ Needs NIGHTGATE 0.36.0 and `@odatano/nightgate-tx` 0.14.0.
30
+
31
+ ### Changed
32
+
33
+ - **The proof tools send typed parameters.** `siblings`, `dirs`, `setSiblings`,
34
+ `setDirs`, `allowedValues`, `claims`, `schema`, `openingA`, `openingB`,
35
+ `document` and `proofFields` go to NIGHTGATE as arrays and objects; the
36
+ `*Json` string parameters of NIGHTGATE 0.35 and below are not sent anymore.
37
+ `post_swap_offer` sends `tags` as an array. Tool inputs are unchanged.
38
+
39
+ ## [0.15.0] - 2026-10-19
40
+
41
+ Needs NIGHTGATE 0.35.0 and `@odatano/nightgate-tx` 0.14.0; analytics under `/odata/v4/analytics` (the gateway serves both names).
42
+
43
+ ### Changed
44
+
45
+ - **The analytics URL defaults to `<ODATANO_ACCESS_URL>/odata/v4/analytics`**
46
+ instead of `…/odata/v4/astra`. An ASTRA instance that still serves
47
+ `/odata/v4/astra` needs `ODATANO_ANALYTICS_URL` set to that path.
48
+
49
+ ## [0.14.0] - 2026-10-18
50
+
51
+ Needs NIGHTGATE 0.35.0 and `@odatano/nightgate-tx` 0.14.0 (the gateway serves both spellings).
52
+
53
+ ### Changed
54
+
55
+ - The tools call NIGHTGATE under `/odata/v4/midnight` and
56
+ `/odata/v4/midnight-indexer`. Against a server below 0.35.0 set
57
+ `NIGHTGATE_SERVICE_PATH=/api/v1/nightgate` and
58
+ `NIGHTGATE_INDEXER_SERVICE_PATH=/api/v1/indexer`.
59
+
60
+ ## [0.13.0] - 2026-10-15
61
+
62
+ Needs NIGHTGATE 0.34.0 and `@odatano/nightgate-tx` 0.12.2.
63
+
64
+ ### Added
65
+
66
+ - `get_grant_usage`: the key's jobs and its limits, the hour and day budgets
67
+ and the rate classes with what is left.
68
+
69
+ ### Changed
70
+
71
+ - A 429 from NIGHTGATE carries `retryAfterSeconds` from `Retry-After`, as a
72
+ gateway 429 did already.
73
+
74
+ ## [0.12.0] - 2026-10-13
75
+
76
+ Needs NIGHTGATE 0.33.0 and `@odatano/nightgate-tx` 0.12.2.
77
+
78
+ ### Changed
79
+
80
+ - `build_sponsorable_transaction` and the local `mint_token` read contract
81
+ state through the NIGHTGATE API (`createTxBuilder({ api })`); they dial no
82
+ indexer and no node. `NIGHTGATE_INDEXER_HTTP_URL` and `NIGHTGATE_INDEXER_WS_URL`
83
+ switch them back to a Midnight indexer.
84
+ - The swap wallet syncs from `NIGHTGATE_INDEXER_HTTP_URL` and
85
+ `NIGHTGATE_INDEXER_WS_URL` only; without them the swap tools refuse with
86
+ the two names instead of dialing the public indexer.
87
+ - `build_sponsorable_transaction` returns `txId` (sha256 of the bytes),
88
+ `characters` and `bytes` instead of the base64; the bytes stay in the server
89
+ process for one hour, `outFile` writes them to a path.
90
+ - `sponsor_unbound_transaction` and `sponsor_finalized_transaction` take `txId`
91
+ or `file` (base64 text or raw bytes); the base64 argument remains for callers
92
+ without either. The result carries `sent` with characters, bytes and `txId`.
93
+
94
+ ## [0.11.0] - 2026-10-12
95
+
96
+ Needs NIGHTGATE 0.32.0.
97
+
98
+ ### Changed
99
+
100
+ - `sponsor_finalized_transaction`, `sponsor_unbound_transaction`, `sponsor_swap`
101
+ and `mint_token` take no `sponsorSessionId`: the server's sponsor pool pays,
102
+ or the wallet session the agent grant is pinned to.
103
+ - `take_swap_offer`: `submit: true` hands both halves to the sponsor at once;
104
+ it replaces the sponsor session id as the trigger.
105
+ - The platform pool id is gone from every tool description.
106
+
107
+ ## [0.10.1] - 2026-10-03
108
+
109
+ ### Fixed
110
+
111
+ - A maker half posted with `post_swap_offer` is tied to its `offerId`; `get_swap_wallet`
112
+ lists it with `offerId` and `boardStatus` and drops it once the offer is `filled`
113
+ (read through `get_swap_wallet`, `get_swap_offer`, `list_swap_offers`, `my_swap_offers`).
114
+ An expired or retired offer keeps its half for `revert_swap_offer`.
115
+ - Board rows carry `tags` as the server sends them: an array from NIGHTGATE 0.30.3 on.
116
+
117
+ ## [0.10.0] - 2026-10-02
118
+
119
+ ### Added
120
+
121
+ - **Offer board** (NIGHTGATE 0.30.0): `post_swap_offer(offer, expiresAt?, tags?)`,
122
+ `list_swap_offers(givesType?, wantsType?, tag?, limit?)`, `retire_swap_offer(offerId)`.
123
+ `sponsor_swap` and `take_swap_offer` take an `offerId` from the board in place of the
124
+ maker half: `take_swap_offer` reads the entry first and refuses before proving when it
125
+ is closed or carries another offer; `sponsor_swap` pairs `offerId` with `takerHalf` or
126
+ the `halfId` of a taken offer.
127
+ - **Board reads** (NIGHTGATE 0.30.1): `list_swap_offers(status?, since?)` reads closed
128
+ offers and the change feed, `my_swap_offers(status?, since?, limit?)` the caller's own
129
+ posts, `get_swap_offer(offerId)` one offer open or closed, `get_board_status()` the
130
+ board's counts and sponsor readiness without credentials (indexer service,
131
+ `NIGHTGATE_INDEXER_SERVICE_PATH`, default `/api/v1/indexer`).
132
+ - **`mint_token(contractAddress, name, amount, recipientCoinPublicKey?, recipientEncryptionPublicKey?, sponsorSessionId?, sessionId?, idempotencyKey?)`**:
133
+ a token of your own name on a token factory. Without `sessionId` the seed is the issuer,
134
+ the mint is built, proven and signed here (`@odatano/nightgate-tx` 0.10.2 on
135
+ `@odatano/contract-token-factory`) and `sponsorUnboundTransaction` pays; with `sessionId`
136
+ the server session mints (`mintFactoryToken`, NIGHTGATE 0.30.1). The recipient defaults
137
+ to this wallet; another wallet takes both of its keys. The type is in the response.
138
+ - **Disclosure to token holders**: `grant_disclosure_to_holders(payloadHash, tokenType,
139
+ registryAddress, content?, contentType?, expiresAt?)`, `revoke_holder_disclosure(holderGrantId)`,
140
+ `claim_disclosure(payloadHash, tokenType, claimSecret)`, `holder_claim_key(claimSecret?)`.
141
+
142
+ ### Changed
143
+
144
+ - Peer dependency `@odatano/nightgate-tx` `>=0.10.2` (`holderClaimKey`, `tokenFactoryIssuerSecret`); local building and swaps still run on 0.8.0. A missing or older install is reported per tool with the version it needs. Optional peer `@odatano/contract-token-factory` for local minting.
145
+ - `mint_token` derives the default recipient from the seed without starting the local builder.
146
+ - Amounts given as JS numbers must be safe integers; pass a decimal string for anything larger.
147
+ - Function calls pass an unused declared parameter as `null`.
148
+
149
+ ## [0.9.0] - 2026-09-30
150
+
151
+ ### Added
152
+
153
+ - **Shielded swap tools** (NIGHTGATE 0.29.0, `@odatano/nightgate-tx` 0.8.0):
154
+ - `get_swap_wallet`: address, public keys, per token type balance, free coins and
155
+ `spendable`; halves built here that have not landed.
156
+ - `read_swap_offer`: `gives`, `wants`, `inputs`, `outputs`, `bound` of an offer file or
157
+ base64 half, read from the transaction.
158
+ - `build_swap_offer(give, want, bind?)`: one proven half, as offer file (`swapoffer1...`).
159
+ - `take_swap_offer(offer, expect?, sponsorSessionId?, idempotencyKey?)`: the mirror half;
160
+ with a sponsor session it submits both halves. A refusal carries `halfId`.
161
+ - `sponsor_swap(makerHalf, takerHalf | halfId, sponsorSessionId, idempotencyKey?)`.
162
+ - `revert_swap_offer(id)`: releases the coins of a half built here.
163
+ - `NIGHTGATE_SWAP_STATE_FILE`, `NIGHTGATE_SWAP_MAX_INPUTS`.
164
+ - `get_attester_identity` returns `shieldedAddress`, `coinPublicKey`, `encryptionPublicKey`.
165
+ - `npm run integration` covers the swap tools (`scripts/integration-swap.mjs`).
166
+
167
+ ### Changed
168
+
169
+ - Peer dependency `@odatano/nightgate-tx` `>=0.8.0` (was `>=0.6.0`).
170
+ - Lockfile: one `@midnight-ntwrk/ledger-v8` (8.1.0) in the tree. Two copies made the local
171
+ builder fail with `expected instance of DustParameters`.
172
+ - `live:sponsor-unbound` verifies with the attester id.
173
+ - `NIGHTGATE_SEED_HEX` is 128 hex (a 64-byte BIP39 seed); 64 hex is refused at startup.
174
+ - `get_job_status` describes the `swap` result of a swap job.
175
+
176
+ ## [0.8.1] - 2026-09-27
177
+
178
+ ### Changed
179
+
180
+ - `get_job_status` describes `chainSegments` (NIGHTGATE 0.28.0): for a confirmed batch,
181
+ which calls applied. Tool errors carry the server's string `code` (`INVALID_ARGUMENT`, ...).
182
+ - README reorganized; compatibility names the current version only.
183
+
184
+ ## [0.8.0] - 2026-09-23
185
+
186
+ ### Added
187
+
188
+ - **Analytics tools over ODATANO ASTRA** (`analytics_overview`, `analytics_key_figures`,
189
+ `analytics_daily`, `analytics_top_block_producers`, `analytics_metrics`, `analytics_metric`,
190
+ `analytics_series`, `analytics_compare`, `analytics_anomalies`), registered when the host
191
+ serves ASTRA at `ODATANO_ANALYTICS_URL` (default: the gateway's `/odata/v4/astra`). Same key,
192
+ one unit per read, chain pinned to Midnight; `analytics_compare` puts Cardano next to it.
193
+
194
+ ### Changed
195
+
196
+ - **Default gateway host is `https://api.preprod.odatano.dev`** (one host per
197
+ network; `api.odatano.dev` now only redirects there with a 307). Node drops
198
+ the `Authorization` header on a cross-host redirect, so the old default
199
+ would answer 401 for every call: set `ODATANO_ACCESS_URL` explicitly on
200
+ older versions, or upgrade. The missing-key warning fires for any
201
+ `api.<network>.odatano.dev` host.
202
+
203
+ ## [0.7.0] - 2026-09-20
204
+
205
+ ### Changed (breaking)
206
+
207
+ - **One connection env for both ODATANO MCP servers.** `ODATANO_ACCESS_URL`
208
+ (default `https://api.odatano.dev`, the gateway), `ODATANO_ACCESS_KEY`
209
+ (the `oda_…` key, or an `ngat_…` grant / other bearer against a direct
210
+ instance) and `ODATANO_ACCESS_USER` / `ODATANO_ACCESS_PASSWORD` (basic
211
+ auth for a direct instance) replace `NIGHTGATE_BASE_URL`,
212
+ `NIGHTGATE_TOKEN`, `NIGHTGATE_USERNAME` and `NIGHTGATE_PASSWORD`; the old
213
+ names are not read any more. `@odatano/core-mcp` 0.3.0 reads the same
214
+ four, so an `.mcp.json` needs one key for both chains and no URL. The
215
+ other `NIGHTGATE_*` variables (network, seed, indexer, zk-config, proof
216
+ server, timeout, service path) are unchanged.
217
+ - **Gateway error bodies reach the agent.** The ODATANO ACCESS gateway
218
+ answers with `{ error: "<text>", ...detail }`; the client now keeps the
219
+ text as the message and hands the detail (`unitsLeft`, `price`, the
220
+ `topup` hint, `products`, `validUntil`, `retryAfterSeconds` from
221
+ `Retry-After`) through to the tool error, so a 402 says how to top up
222
+ instead of "request failed with HTTP 402".
223
+ - **The hosted API is the documented default.** README: quick start with a
224
+ key from api.odatano.dev first, sponsoring through the gateway's platform
225
+ pool, own instance second; the server warns at startup when the gateway
226
+ is the target and no key is set. Server version constant follows the
227
+ package.
228
+
229
+ ## [0.6.1] - 2026-09-19
230
+
231
+ ### Changed
232
+
233
+ - **The ODATANO ACCESS key (`oda_…`) is the documented credential.**
234
+ `api.nightgate.dev` is the ODATANO ACCESS gateway since 2026-09-18: it
235
+ meters the key in units, swaps in the NIGHTGATE agent grant underneath and
236
+ fronts ODATANO with the same key. Set `NIGHTGATE_BASE_URL=https://api.nightgate.dev`
237
+ and `NIGHTGATE_TOKEN=oda_…`; the key goes as a plain `Authorization: Bearer`.
238
+ Get one at `POST https://api.odatano.dev/keys` (x402), from a giveaway
239
+ code, or by signing in at the console. A raw `ngat_…` agent grant
240
+ (`x-agent-token`) still works against a direct NIGHTGATE instance. No code
241
+ change: the client already sent a prefix-less token as a bearer.
242
+ - `.env.example` and README updated accordingly; this changelog added and
243
+ shipped with the package.
244
+
245
+ ## [0.6.0] - 2026-09
246
+
247
+ ### Changed (breaking)
248
+
249
+ - **Vault lineage 4: every record is keyed by attester AND payload**
250
+ (NIGHTGATE >= 0.24.0). `verify_attestation` takes `attesterId` +
251
+ `payloadHash` (or a bound `documentId`), `verify_predicate` takes
252
+ `attesterId`, the `prove_*` tools accept an optional `attesterId` (the
253
+ record the claim is proven against), `anchor_document` is one plain attest
254
+ and returns `attesterId`.
255
+ - `prepare_anchor_commitment` and `commit_document_anchor` are gone: nothing
256
+ is left to guard, no identity can take over another attester's record.
257
+ - Local building needs `@odatano/nightgate-tx` >= 0.6.0; the proof calls
258
+ take `recordKey` or `payloadHash` (+ `attesterId`). Against a 0.23.x server
259
+ the verify calls fail with 400 (unknown parameter).
260
+
261
+ ## [0.5.1] - 2026-08-23
262
+
263
+ ### Added
264
+
265
+ - **32-slot vault.** Schema and opening take 16 or 32 entries, `allowedMask`
266
+ up to 32 bits, `k` up to 32; the vacuity guard is checked against the
267
+ schema instead of a fixed all-ones constant. Target it with
268
+ `compiledArtifactRef: 'attestation-vault-32'` (NIGHTGATE >= 0.19.0 for
269
+ width 32). A 16-slot setup keeps working against any 0.18.x server.
270
+ - Local ZK claims: field and document proofs can be built in-process.
271
+
272
+ ## [0.5.0] - 2026-08-19
273
+
274
+ ### Added
275
+
276
+ - **Parallel sponsoring channel:** `sponsor_unbound_transaction` with the
277
+ platform pool id (NIGHTGATE >= 0.18.0; 404 against older servers).
278
+ - **Local transaction building** for agents: `build_sponsorable_transaction`
279
+ and `get_attester_identity` via the optional `@odatano/nightgate-tx`
280
+ >= 0.2.0 txbuilder, driven by `NIGHTGATE_SEED_HEX` (never a tool argument).
281
+
282
+ ## [0.3.0] - 2026-08-16
283
+
284
+ ### Added
285
+
286
+ - Cross-root document proofs and guarded anchoring (`prepare_anchor_commitment`
287
+ / `commit_document_anchor`, removed again in 0.6.0).
288
+
289
+ ## [0.2.0] - 2026-08-10
290
+
291
+ ### Added
292
+
293
+ - Membership and equality proof tools; README documents the tool set and the
294
+ server compatibility table.
295
+
296
+ ## [0.1.0] - 2026-08-07
297
+
298
+ ### Added
299
+
300
+ - Initial MCP server: attestation, verification and job tools over the
301
+ NIGHTGATE OData API, agent-grant (`ngat_…`) or basic auth.
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  # @odatano/nightgate-mcp
9
9
 
10
10
  [![npm](https://img.shields.io/npm/v/@odatano/nightgate-mcp)](https://www.npmjs.com/package/@odatano/nightgate-mcp)
11
- [![NIGHTGATE](https://img.shields.io/badge/NIGHTGATE-%3E%3D%200.35.0-4b0082)](https://www.npmjs.com/package/@odatano/nightgate)
11
+ [![NIGHTGATE](https://img.shields.io/badge/NIGHTGATE-%3E%3D%200.36.0-4b0082)](https://www.npmjs.com/package/@odatano/nightgate)
12
12
  [![MCP](https://img.shields.io/badge/MCP-server-2ea44f)](https://modelcontextprotocol.io/)
13
13
  [![License](https://img.shields.io/badge/license-Apache--2.0-yellow)](LICENSE)
14
14
 
@@ -50,8 +50,8 @@ halves, one sponsor). Errors carry the server's HTTP status and `code`.
50
50
  ## Configuration
51
51
 
52
52
  [docs/configuration.md](docs/configuration.md): every variable, an own
53
- NIGHTGATE instance, version requirements. Needs NIGHTGATE >= 0.35.0, which the
54
- hosted gateway runs.
53
+ NIGHTGATE instance, version requirements. Needs NIGHTGATE >= 0.36.0; from 0.37.0,
54
+ which the hosted gateway runs, `get_job_status` waits on the server.
55
55
 
56
56
  ## Development
57
57