@cmdoss/suipay-mcp 0.2.2-dev.2 → 0.2.2-dev.4

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 CHANGED
@@ -15,9 +15,7 @@ claude mcp add --scope user suipay -- npx -y @cmdoss/suipay-mcp@0.2.2
15
15
  ```
16
16
 
17
17
  No wallet secret belongs in this command or MCP config. There is no
18
- Sign-In With Sui (SIWS) step. To reuse an existing delegate seed locally,
19
- set `SUIPAY_MCP_KEY` (64-hex or `suiprivkey1…`) in the MCP env — never in
20
- the browser.
18
+ Sign-In With Sui (SIWS) step.
21
19
 
22
20
  ## First connection
23
21
 
@@ -28,11 +26,8 @@ First connection is a spend-account grant plus an agent-held delegate key.
28
26
  2. Persist that delegate key locally at `~/.suipay/credentials.json`
29
27
  (mode `0600`). The process that holds this key is the only process
30
28
  that can settle.
31
- 3. Point MCP at a gateway. Default is Railway **suipay-dev**. Pass
32
- `suipay_login({ target: "local" })` or start the binary with `--local`
33
- for the laptop stack. Env/CLI fill the process default until a
34
- credential is bound; after login, stored `gatewayUrl` wins. Rebind
35
- with `suipay_login({ target })`.
29
+ 3. Point MCP at the gateway (`SUIPAY_GATEWAY_URL`) and the same network
30
+ the grant was created on.
36
31
  4. Call `pay`. The tool prepares unsigned `spend_account` settlement
37
32
  bytes. If this process holds the grant's key it verifies and settles;
38
33
  otherwise it returns the signing request.
@@ -41,20 +36,17 @@ The agent generates or is handed the delegate key. The key never enters
41
36
  a browser URL, a SuiPay backend, logs, or a callback payload. Only the
42
37
  public address leaves the local process. `suipay_login` mints or reuses
43
38
  the local version-2 key at `~/.suipay/credentials.json` (mode `0600`) and
44
- returns `{SUIPAY_CONSOLE_URL}/connect/agent?port=&delegateAddress=&connectState=&gateway=`
45
- immediately. The owner signs in the browser; the loopback callback persists
46
- key + gateway URL. Subsequent sessions reuse the file unless the grant is
47
- missing, expired, or revoked.
39
+ opens `{SUIPAY_CONSOLE_URL}/connect/agent?delegateAddress=0x…`.
48
40
 
49
41
  ## Tools
50
42
 
51
43
  | Tool | Purpose |
52
44
  | --- | --- |
53
- | `discover` | Search live gateway resources. After login: `name`, `path`, `url`, `targetHash`, catalog price, and `affordable` (can this session cover one call — not authorization). `pay({ url })` still settles |
54
- | `pay` | Fetch resource, prepare `spend_account` settlement, settle when this process holds the grant key. POST `json` is the paid body. Optional stdio `file` + `fileField` fill one JSON key from a local file as canonical base64 (Walrus `contentBase64`); hosted `/mcp` refuses `file` |
45
+ | `discover` | Search live managed-gateway resources |
46
+ | `pay` | Fetch resource, prepare `spend_account` settlement, settle when this process holds the grant key |
55
47
  | `receipts` | List settlement receipts, optionally by challenge ID |
56
48
  | `access_context` | Report current session / delegate / policy state (no secret material) |
57
- | `suipay_login` | Mint or reuse the local delegate key and return a clickable console URL (does not wait for the wallet). Default target is Railway suipay-dev; pass `target: "local"` for the laptop stack |
49
+ | `suipay_login` | Mint or reuse the local delegate key and open the console with the public address only |
58
50
  | `suipay_logout` | Remove local credentials |
59
51
 
60
52
  All tools remain visible before a grant is bound. `pay` and `receipts`
@@ -76,53 +68,16 @@ json: {"prompt":"a cat"}
76
68
  maxAmount: 50000
77
69
  ```
78
70
 
79
- To store local bytes (Walrus), do not paste base64. Name the file and field:
80
-
81
- ```
82
- url: https://gateway.example/v1/storage/store
83
- method: POST
84
- json: {"contentType":"text/plain"}
85
- file: /absolute/path/to/note.txt
86
- fileField: contentBase64
87
- ```
88
-
89
- `pay` uses SDK `createPayer` internally. A delivered image is returned as an MCP
71
+ `pay` uses the buyer SDK internally. A delivered image is returned as an MCP
90
72
  image block, not as a base64 wall in the JSON summary.
91
73
 
92
- ## Targets
93
-
94
- Default is Railway **suipay-dev**. `--local` / `target: "local"` is laptop-only.
95
-
96
- | Target | Console | Gateway | How |
97
- | --- | --- | --- | --- |
98
- | `dev` (default) | `https://suipay-dev.up.railway.app` | `https://gateway-dev-ba84.up.railway.app` | no flag, or `--dev` |
99
- | `local` | `http://localhost:3000` | `http://127.0.0.1:4340` | `--local` / `-local`, or `suipay_login({ target: "local" })` |
100
-
101
- ```bash
102
- # Railway suipay-dev (default)
103
- npx @cmdoss/suipay-mcp@0.2.2
104
-
105
- # Laptop stack
106
- npx @cmdoss/suipay-mcp@0.2.2 --local
107
- ```
108
-
109
- `SUIPAY_MCP_TARGET=local|dev` selects the same preset. Explicit
110
- `SUIPAY_GATEWAY_URL` / `SUIPAY_CONSOLE_URL` fill the process default when no
111
- credential is bound yet. After a successful login, `credentials.json`
112
- `gatewayUrl` is the bound gateway: `pay` / `discover` / `suipay_login` without
113
- `target` stay on that binding so a leftover env cannot silently retarget spend.
114
- Rebind with `suipay_login({ target: "dev" | "local" })` (same key, new consent
115
- if that stack has no live grant).
116
-
117
74
  ## Client environment
118
75
 
119
76
  ```bash
120
- # Optional. Unset = Railway suipay-dev. --local uses localhost:3000 / 127.0.0.1:4340.
121
77
  SUIPAY_GATEWAY_URL=https://gateway.example
122
78
  SUIPAY_CONSOLE_URL=https://console.example
123
79
  SUIPAY_RPC_URL=https://your-testnet-rpc.example
124
80
  SUIPAY_NETWORK=testnet
125
- SUIPAY_MCP_TARGET=dev
126
81
  ```
127
82
 
128
83
  Optional:
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  main
4
- } from "../chunk-AFEXT5X4.js";
5
- import "../chunk-62LFIYB7.js";
4
+ } from "../chunk-XAM2YQC6.js";
5
+ import "../chunk-KDOGSB5I.js";
6
6
 
7
7
  // src/bin/suipay.ts
8
8
  main().catch((err) => {