pion-mcp 0.4.2 → 0.5.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.
Files changed (2) hide show
  1. package/README.md +38 -0
  2. package/package.json +4 -3
package/README.md CHANGED
@@ -99,6 +99,35 @@ a payment. The tool reports exactly which step failed, whether funds left the
99
99
  wallet, and the payment id needed to clean up. A blind retry could pay twice,
100
100
  so it refuses to guess.
101
101
 
102
+ ## Requirements
103
+
104
+ **Node.js 22.12.0 or newer.**
105
+
106
+ This floor is higher than earlier releases advertised, and correcting it is
107
+ the reason 0.5.0 is a minor rather than a patch. Through 0.4.2 `package.json`
108
+ declared `>=18.17`, which was never true: the `@stellar/stellar-sdk` 16.x that
109
+ 0.4.x pinned already declared `>=22.0.0` of its own, so Node 18 and 20 were
110
+ outside what the dependency supported the whole time. Nothing surfaced it,
111
+ because our own field is the one npm checks an install against — a package
112
+ cannot be warned about a floor it is itself misreporting.
113
+
114
+ 0.5.0 moves to `@stellar/stellar-sdk` 17.x, whose floor is `>=22.12.0` (its
115
+ CommonJS build requires ESM-only dependencies, and `require(esm)` is only
116
+ unflagged from 22.12.0), and sets our declared floor to match it honestly.
117
+
118
+ If you are on Node 18 or 20, what this actually means:
119
+
120
+ - The chain read tools and `verify_user` never load the Stellar SDK — it is
121
+ imported lazily, inside the payment handler — so those paths are unlikely
122
+ to be affected in practice.
123
+ - **`send_payment` is the part that genuinely needs 22.12.0.** It is also the
124
+ only part that moves funds, which is why the floor is stated here rather
125
+ than left to fail somewhere expensive.
126
+
127
+ Upgrading Node is the supported fix. Pinning 0.4.2 preserves the old declared
128
+ floor but not a working payment path — that release depends on an SDK that
129
+ did not support your runtime either.
130
+
102
131
  ## Usage
103
132
 
104
133
  MCP clients can run it straight from npm — no install step:
@@ -161,6 +190,7 @@ npm run smoke # end-to-end against live testnet
161
190
  npm run smoke:mainnet # the same checks against live mainnet
162
191
  npm run crossnet # proves the two chains are actually distinguished
163
192
  npm run arming # Tier C guards and spend cap (no credentials needed)
193
+ npm run signing # golden-XDR check on the A2U signing path (offline)
164
194
  ```
165
195
 
166
196
  `npm run smoke` spawns the server over stdio as a real MCP client, discovers a
@@ -184,6 +214,14 @@ a result. It uses a freshly generated, never-funded keypair. The one live call
184
214
  it makes is a deliberately-rejected create against the Pi API, which proves the
185
215
  first failure stage end to end.
186
216
 
217
+ `npm run signing` rebuilds the exact transaction `send_payment` signs, with
218
+ every input pinned, and compares the envelope and hash against bytes recorded
219
+ in the file. It is offline and cannot spend. Its job is dependency bumps: the
220
+ other suites all stub the network, so none of them can tell you whether an SDK
221
+ upgrade changed what you put on the wire. Run it on any `@stellar/stellar-sdk`
222
+ change — a failure means the bytes moved, and the constants should not be
223
+ refreshed until you know why.
224
+
187
225
  ## Known gaps
188
226
 
189
227
  - **`verify_user` success path — confirmed** against a live token. Returns
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pion-mcp",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "Pion — Model Context Protocol (MCP) server for Pi Network. Read-only chain queries against Pi Mainnet and Testnet; payments are testnet-only.",
5
5
  "keywords": [
6
6
  "mcp",
@@ -26,7 +26,7 @@
26
26
  "dist"
27
27
  ],
28
28
  "engines": {
29
- "node": ">=18.17"
29
+ "node": ">=22.12.0"
30
30
  },
31
31
  "scripts": {
32
32
  "build": "tsc",
@@ -38,6 +38,7 @@
38
38
  "crossnet": "node scripts/crossnet-test.mjs",
39
39
  "arming": "node scripts/arming-test.mjs",
40
40
  "u2a": "node scripts/u2a-test.mjs",
41
+ "signing": "node scripts/signing-test.mjs",
41
42
  "incomplete": "node scripts/incomplete.mjs",
42
43
  "probe:a2u": "node scripts/probe-a2u.mjs",
43
44
  "diagnose:a2u": "node scripts/diagnose-a2u.mjs",
@@ -53,7 +54,7 @@
53
54
  },
54
55
  "dependencies": {
55
56
  "@modelcontextprotocol/sdk": "^1.30.0",
56
- "@stellar/stellar-sdk": "^16.2.0",
57
+ "@stellar/stellar-sdk": "^17.0.0",
57
58
  "zod": "^4.4.3"
58
59
  },
59
60
  "devDependencies": {