@zktx.io/sui-mcp 0.5.0 → 0.6.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/README.md +6 -6
- package/dist/adapters/deepbook/deepbookTransactionMaterialProducer.js +3 -3
- package/dist/core/activity/localDataService.js +71 -52
- package/dist/core/activity/localDataValidation.js +1 -3
- package/dist/core/activity/sqliteActivityStore.js +24 -16
- package/dist/core/activity/sqliteActivityStoreSchema.js +83 -12
- package/dist/core/preferences/sqlitePreferencesRepository.js +5 -3
- package/dist/core/session/cardSession.js +1 -1
- package/dist/core/session/cardSessionStore.js +53 -3
- package/dist/core/session/sessionStore.js +0 -17
- package/dist/core/session/settingsFileIdentity.js +11 -0
- package/dist/core/session/settingsFileProtocol.js +25 -0
- package/dist/core/session/settingsFileStore.js +346 -0
- package/dist/core/session/settingsInputError.js +34 -0
- package/dist/core/session/settingsOperation.js +224 -0
- package/dist/core/session/settingsPreparationSql.js +15 -0
- package/dist/core/session/settingsWorkflow.js +1219 -0
- package/dist/core/session/sqliteSessionStore.js +0 -40
- package/dist/core/session/sqliteSettingsWorkflowStore.js +463 -0
- package/dist/core/session/sqliteWalletWorkflowStore.js +164 -41
- package/dist/core/session/status.js +2 -2
- package/dist/core/session/walletConnection.js +27 -8
- package/dist/core/session/walletWorkflow.js +73 -15
- package/dist/core/session/workflowState.js +16 -8
- package/dist/core/session/workflowView.js +18 -2
- package/dist/mcp/responseGuidance.js +10 -5
- package/dist/mcp/serverInfo.js +3 -4
- package/dist/mcp/toolNames.js +2 -2
- package/dist/mcp/tools/account/index.js +1 -19
- package/dist/mcp/tools/read/readToolHelpers.js +5 -4
- package/dist/mcp/tools/session/executionResultTools.js +2 -2
- package/dist/mcp/tools/session/shared.js +1 -0
- package/dist/mcp/tools/session/statusTools.js +4 -3
- package/dist/mcp/tools/settings/index.js +8 -28
- package/dist/mcp-app/account.html +14 -14
- package/dist/mcp-app/account.notices.txt +1 -1
- package/dist/mcp-app/chart.html +9 -9
- package/dist/mcp-app/chart.notices.txt +1 -1
- package/dist/mcp-app/connect.html +14 -14
- package/dist/mcp-app/connect.notices.txt +1 -1
- package/dist/mcp-app/receipt.html +1298 -1463
- package/dist/mcp-app/receipt.notices.txt +226 -1204
- package/dist/mcp-app/review.html +1298 -1463
- package/dist/mcp-app/review.notices.txt +226 -1204
- package/dist/mcp-app/settings.html +3133 -0
- package/dist/mcp-app/settings.notices.txt +973 -0
- package/dist/mcp-ui/contracts.js +8 -2
- package/dist/mcp-ui/readCards.js +1 -1
- package/dist/mcp-ui/tools.js +33 -2
- package/dist/review-server/server.js +5 -51
- package/dist/runtime/application.js +41 -14
- package/dist/runtime/localSettingsService.js +26 -2
- package/dist/runtime/shared/authenticatedFetch.js +6 -2
- package/dist/runtime/shared/control.js +5 -6
- package/dist/runtime/shared/http.js +14 -0
- package/dist/runtime/shared/mcpHttp.js +9 -4
- package/dist/runtime/shared/server.js +1 -1
- package/dist/runtime/smokeMainnetRead.js +0 -1
- package/dist/runtime/walletConnectStorage.js +2 -4
- package/dist/runtime/walletSdkChildRuntime.js +2 -1
- package/dist/runtime/walletSdkIpc.js +2 -1
- package/dist/runtime/walletSdkProcess.js +3 -2
- package/docs/AGENT_BEHAVIOR.md +44 -10
- package/docs/AGENT_DEVELOPMENT_POLICY.md +16 -12
- package/docs/FRONTEND_POLICY.md +105 -28
- package/docs/LOCAL_DB_ARCHITECTURE.md +143 -20
- package/docs/MCP_SETUP.md +99 -39
- package/docs/MCP_TOOLS.md +273 -24
- package/docs/SDK_API.md +51 -10
- package/docs/UTILITY_INDEX.md +9 -6
- package/docs/WALLET_CONNECTION.md +30 -9
- package/package.json +13 -7
- package/dist/core/activity/schemaVersion.js +0 -2
- package/dist/core/session/keyedRecordStore.js +0 -18
- package/dist/core/session/settingsSession.js +0 -1
- package/dist/core/session/settingsSessions.js +0 -45
- package/dist/review-app/brand-dark.svg +0 -1
- package/dist/review-app/brand-light.svg +0 -1
- package/dist/review-app/favicon.svg +0 -1
- package/dist/review-app/settings.css +0 -1
- package/dist/review-app/settings.js +0 -1
- package/dist/review-app/ui.css +0 -809
- package/dist/review-server/assets.js +0 -48
- package/dist/review-server/html.js +0 -45
- package/dist/review-server/http.js +0 -47
- package/dist/review-server/middleware/reviewToken.js +0 -7
- package/dist/review-server/settingsApi.js +0 -158
package/docs/MCP_SETUP.md
CHANGED
|
@@ -6,7 +6,7 @@ It does not define tool field contracts or response wording. Use `docs/MCP_TOOLS
|
|
|
6
6
|
|
|
7
7
|
The README keeps only the short entry path; client-specific setup, restart behavior, and troubleshooting live here.
|
|
8
8
|
|
|
9
|
-
These instructions target `@zktx.io/sui-mcp@0.
|
|
9
|
+
These instructions target `@zktx.io/sui-mcp@0.6.0`. Package installation requires
|
|
10
10
|
that exact version to be published; use the developer checkout instructions when
|
|
11
11
|
it is not available. A repository rename or local build does not publish the
|
|
12
12
|
package. Changing client settings or rebuilding files does not replace an
|
|
@@ -24,6 +24,11 @@ the package identity when switching installations.
|
|
|
24
24
|
- stdio: standard input/output, the local transport used by MCP clients to talk to this server.
|
|
25
25
|
- `@zktx.io`: the npm package scope. `zktx-mcp` is the GitHub organization. Sui MCP is the product; `sui-mcp` is the MCP server name and executable command.
|
|
26
26
|
|
|
27
|
+
Each MCP request, including its envelope and metadata, must fit within the
|
|
28
|
+
internal transport's 4 MiB request-body limit. Card messages have a separate
|
|
29
|
+
64 KiB budget; Restore uploads keep their 16 MiB file limit by sending smaller
|
|
30
|
+
messages. See [MCP Tools](MCP_TOOLS.md) for request and error semantics.
|
|
31
|
+
|
|
27
32
|
## Requirements
|
|
28
33
|
|
|
29
34
|
- Node.js 22+. Node 22 or 24 LTS is recommended.
|
|
@@ -34,12 +39,12 @@ the package identity when switching installations.
|
|
|
34
39
|
|
|
35
40
|
No Sui endpoint setup is required for the default path. The runtime creates a local SQLite database automatically, stores default Sui mainnet gRPC and GraphQL endpoints there on first start, and uses those endpoints for read-only mainnet tools.
|
|
36
41
|
|
|
37
|
-
If you want a custom Sui gRPC or GraphQL provider, or local data controls, configure them after the MCP server is connected by asking your AI client to create a
|
|
42
|
+
If you want a custom Sui gRPC or GraphQL provider, or local data controls, configure them after the MCP server is connected by asking your AI client to create a Settings card:
|
|
38
43
|
|
|
39
44
|
- "Show my Sui MCP local settings."
|
|
40
|
-
- "Open my Sui MCP
|
|
45
|
+
- "Open my Sui MCP Settings card."
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
The tool opens an internal card; use its scoped controls in the chat app. No external URL is returned. Custom endpoint changes apply after the MCP server restarts. Advanced temporary environment overrides are documented in [Advanced Runtime Settings](#advanced-runtime-settings).
|
|
43
48
|
|
|
44
49
|
DeepBook orderbook, raw-quantity quote, and display-amount quote reads use an internal mainnet SDK simulation sender placeholder.
|
|
45
50
|
|
|
@@ -51,6 +56,10 @@ Reads that require a connected default account use `session.create_wallet_connec
|
|
|
51
56
|
|
|
52
57
|
## Developer Checkout Setup
|
|
53
58
|
|
|
59
|
+
Use Node.js 22.12 or newer within 22.x, or Node.js 24 or newer, for source builds
|
|
60
|
+
and tests. These ranges satisfy Vite, Rolldown and Vitest together. The installed
|
|
61
|
+
package's runtime requirement remains Node.js 22 or newer.
|
|
62
|
+
|
|
54
63
|
Use this path when you download the repository from GitHub and want to test the local build:
|
|
55
64
|
|
|
56
65
|
```bash
|
|
@@ -121,7 +130,7 @@ per-client configuration below, which give the exact `command` and `args`.
|
|
|
121
130
|
|
|
122
131
|
The npm package for this release is `@zktx.io/sui-mcp`. The commands below
|
|
123
132
|
require the requested version to be published; confirm it with
|
|
124
|
-
`npm view @zktx.io/sui-mcp@0.
|
|
133
|
+
`npm view @zktx.io/sui-mcp@0.6.0 version` before switching. Both installation
|
|
125
134
|
methods start the same `sui-mcp` stdio MCP server. Use a local checkout when
|
|
126
135
|
working on a version that has not been published.
|
|
127
136
|
|
|
@@ -143,9 +152,12 @@ then restart the client:
|
|
|
143
152
|
|
|
144
153
|
```bash
|
|
145
154
|
npx -y @zktx.io/sui-mcp
|
|
146
|
-
#
|
|
155
|
+
# after the server binds or a healthy peer is confirmed, stop it with Ctrl-C
|
|
147
156
|
```
|
|
148
157
|
|
|
158
|
+
The startup log reports either an owned shared server or an authenticated healthy
|
|
159
|
+
peer. A bootstrap failure instead reports its stage and reason on stderr.
|
|
160
|
+
|
|
149
161
|
### Install once (global, fastest startup, pinned version)
|
|
150
162
|
|
|
151
163
|
```bash
|
|
@@ -178,8 +190,30 @@ command, for example `"command": "cmd", "args": ["/c", "npx", "-y", "@zktx.io/su
|
|
|
178
190
|
|
|
179
191
|
## Switching the Installed Package
|
|
180
192
|
|
|
181
|
-
|
|
182
|
-
|
|
193
|
+
### Updating an Existing Sui MCP Installation
|
|
194
|
+
|
|
195
|
+
Confirm that the requested package version is available before changing every
|
|
196
|
+
participating client's configuration. This release requires a new empty data
|
|
197
|
+
directory when replacing a 0.5.x installation. Preserve the previous data,
|
|
198
|
+
backups and private WalletConnect store; they are not converted or imported.
|
|
199
|
+
Configure endpoints and read context as needed and connect through a new card.
|
|
200
|
+
Use the same new data directory and review port in every participating client.
|
|
201
|
+
Fully quit the participating apps, update
|
|
202
|
+
the installed package or configured version, then reopen them and check
|
|
203
|
+
`read.get_server_status` in each client. The package name, version and server
|
|
204
|
+
name must match the intended installation. Updating the package does not
|
|
205
|
+
replace a backend that is already running.
|
|
206
|
+
|
|
207
|
+
A compatible update that retains the current database structure can use existing
|
|
208
|
+
data. Incompatible databases and backups are rejected without migration;
|
|
209
|
+
see [Local Database Architecture](LOCAL_DB_ARCHITECTURE.md#current-format-and-backups).
|
|
210
|
+
Do not reset data or resend a transaction as an update step. Coordinate a safe
|
|
211
|
+
restart if a transaction request is still in progress.
|
|
212
|
+
|
|
213
|
+
### Switching from a Different Package
|
|
214
|
+
|
|
215
|
+
Use these steps when selecting Sui MCP instead of a different package.
|
|
216
|
+
Confirm the requested version is available before changing your client configuration.
|
|
183
217
|
Sui MCP starts with a new database and private WalletConnect store in its own
|
|
184
218
|
data directory. It does not discover, read, import or convert a previous
|
|
185
219
|
package's database or backup. Existing connections, saved cards, transaction
|
|
@@ -189,13 +223,13 @@ are unaffected and must never be resubmitted as an installation step.
|
|
|
189
223
|
|
|
190
224
|
Fully quit every app using the service and wait for its shared backend to exit
|
|
191
225
|
before starting the new package. A client using a different service identity,
|
|
192
|
-
|
|
226
|
+
package version or data directory is refused while that backend owns the port.
|
|
193
227
|
If a transaction request is in progress, inspect its state and coordinate a safe
|
|
194
228
|
restart first. A previous wallet pairing can remain in the wallet app; remove
|
|
195
229
|
an unwanted pairing there rather than assuming new local storage disconnected it.
|
|
196
230
|
|
|
197
231
|
Replace the old registration instead of adding a second one. Use exactly
|
|
198
|
-
`sui-mcp` for the registration name and select `@zktx.io/sui-mcp@0.
|
|
232
|
+
`sui-mcp` for the registration name and select `@zktx.io/sui-mcp@0.6.0` in its
|
|
199
233
|
command arguments. Do not append an environment label, version or numeric
|
|
200
234
|
suffix. Remove obsolete runtime environment overrides. If you set
|
|
201
235
|
`SUI_MCP_DATA_DIR`, choose a new empty directory; never point it at another
|
|
@@ -435,7 +469,7 @@ After the MCP server is connected:
|
|
|
435
469
|
- `read.summarize_sui_function_activity_scan` for sent transactions that called one full function target.
|
|
436
470
|
If the selected tool accepts `account` and the user supplied a Sui address, pass it instead of starting wallet connection. DeepBook account inventory has no explicit address input.
|
|
437
471
|
8. For local review evidence, use `read.list_review_activity`, `read.summarize_review_funnel`, or `read.get_review_session_detail`.
|
|
438
|
-
9. For local endpoint settings or local data controls, ask your AI client to call `settings.create_local_settings_session`, then
|
|
472
|
+
9. For local endpoint settings or local data controls, ask your AI client to call `settings.create_local_settings_session`, then use the internal card controls. Setting changes apply after restart.
|
|
439
473
|
|
|
440
474
|
## Wallet Connection Boundary
|
|
441
475
|
|
|
@@ -459,14 +493,20 @@ connections are saved, the Connect card lists them for target-specific
|
|
|
459
493
|
Disconnect confirmation. Account use and signing remain blocked until the
|
|
460
494
|
conflict is resolved. No connection is silently chosen or remotely removed.
|
|
461
495
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
496
|
+
Connection service restart belongs to Settings, not Connect. If an operation
|
|
497
|
+
is unresponsive or the service is unavailable, ask to open Settings and use
|
|
498
|
+
Troubleshooting. Inspect the affected run/requests and confirm Restart
|
|
499
|
+
connection service. The backend waits for its old SDK child to exit and a new
|
|
500
|
+
run to become ready; it does not restart the parent or another app. If startup
|
|
501
|
+
itself remains pending, open a new Settings card for another explicit restart;
|
|
502
|
+
the prior pending startup is recorded as superseded. A known failure stays a
|
|
503
|
+
failure. No read, timeout or reopened frame initiates another restart.
|
|
504
|
+
|
|
505
|
+
If Settings or the parent service cannot be reached, fully quit all apps using
|
|
506
|
+
Sui MCP, then reopen them. Closing a peer or window can leave the owner alive.
|
|
507
|
+
Use this full app restart also for stored endpoint/configuration changes or an
|
|
508
|
+
installation update. A process surviving app exit needs diagnosis; editing a
|
|
509
|
+
config file is not evidence of a runtime restart.
|
|
470
510
|
|
|
471
511
|
Restarting does not cancel a transaction on Sui or confirm remote disconnection.
|
|
472
512
|
Check retained connections in your wallet app. Saved results and the known
|
|
@@ -474,10 +514,11 @@ digests of submitted transactions remain available after restart. An
|
|
|
474
514
|
unsubmitted approval needs a fresh review and explicit wallet approval; nothing
|
|
475
515
|
is resent automatically. Normal initialization is not a failure warning.
|
|
476
516
|
|
|
477
|
-
|
|
478
|
-
|
|
517
|
+
All clients sharing a data folder must use the same package release. Private
|
|
518
|
+
parent/child and peer authentication bind that package identity; there is no
|
|
519
|
+
separate internal API or database version counter. Fully quit the old clients before
|
|
479
520
|
starting the same updated installation; an incompatible owner is refused.
|
|
480
|
-
|
|
521
|
+
The runtime checks the current product and private SDK storage structures directly; neither has a separate numeric version.
|
|
481
522
|
|
|
482
523
|
Review requires an explicit card action and individual wallet approval. The
|
|
483
524
|
backend uses Sui sign-only requests, verifies returned bytes/digest/signer and
|
|
@@ -493,7 +534,7 @@ A card accepts one read selection. Moving between chats or recreating its frame
|
|
|
493
534
|
|
|
494
535
|
## Local data format
|
|
495
536
|
|
|
496
|
-
Start this runtime with an empty `SUI_MCP_DATA_DIR` or a database already in its current format. A mismatched existing database is refused before writes. There is no older DB or backup migration.
|
|
537
|
+
Start this runtime with an empty `SUI_MCP_DATA_DIR` or a database already in its current format. A mismatched existing database is refused before writes. There is no older DB or backup migration. A checkout with different table, constraint or field definitions needs a new empty data folder, preserving the previous folder. Databases and backups do not carry a separate numeric schema version. Older local records, known/active accounts and stored endpoints are not inherited; set the needed account context and endpoints again. Existing files are left in place, and environment overrides keep their existing precedence. See [Local DB Architecture](LOCAL_DB_ARCHITECTURE.md) for the current format, backup scope and card-result retention. Card results do not expire with the input period and can increase DB size. Reset/import removes them along with the affected local data; it is not a card-only space cleanup operation.
|
|
497
538
|
|
|
498
539
|
## Local Settings
|
|
499
540
|
|
|
@@ -502,21 +543,40 @@ Beginner setup uses the built-in Sui mainnet gRPC and GraphQL endpoints. You do
|
|
|
502
543
|
To inspect settings or change stored endpoints, ask your AI client:
|
|
503
544
|
|
|
504
545
|
- "Show my Sui MCP local settings."
|
|
505
|
-
- "Open my Sui MCP
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
-
|
|
511
|
-
-
|
|
512
|
-
-
|
|
513
|
-
-
|
|
514
|
-
-
|
|
546
|
+
- "Open my Sui MCP Settings card."
|
|
547
|
+
|
|
548
|
+
Settings groups Address for viewing assets, Local records, Troubleshooting and
|
|
549
|
+
Advanced settings. Each card lets you make one change and keeps its result:
|
|
550
|
+
|
|
551
|
+
- view or clear the default address used when checking assets;
|
|
552
|
+
- back up records saved on this computer;
|
|
553
|
+
- restore a Sui MCP backup, replacing the current local records and settings;
|
|
554
|
+
- delete local records and saved settings;
|
|
555
|
+
- check or restart the wallet connection service;
|
|
556
|
+
- select a custom Sui network address or return to a built-in default.
|
|
557
|
+
|
|
558
|
+
Local records include saved addresses, reviews, transaction and activity records,
|
|
559
|
+
and Sui network settings. Restoring them does not reconnect your wallet or restore
|
|
560
|
+
wallet approvals. Transactions on Sui are not cancelled by a restore or reset.
|
|
561
|
+
Internal request IDs and file hashes appear in Details. Advanced settings names
|
|
562
|
+
the Sui node connection as gRPC and the activity-data connection as GraphQL.
|
|
563
|
+
Network addresses set in the app launch configuration take priority over values
|
|
564
|
+
saved in Settings; remove the relevant launch setting before restarting to use
|
|
565
|
+
the saved value.
|
|
515
566
|
|
|
516
567
|
Settings validation rules:
|
|
517
568
|
|
|
518
|
-
-
|
|
519
|
-
-
|
|
569
|
+
- Choose a backup file no larger than 16 MiB. The card shows file transfer and Checking backup while Sui MCP checks it automatically, then shows Restore available or Cannot restore with the reason. A file still being received is not a failed backup. These initial checks do not contact network addresses from the backup.
|
|
570
|
+
- Restore local records is your final confirmation. Sui MCP then checks the backup's network addresses before changing any data. Back from the confirmation clears that preparation and keeps a valid complete file. Returning from an input page to a section and using Resume preserves the selection and file. A change to local records requires a fresh check. Check backup again checks that same file when needed; Change backup file lets you choose another. Choosing or checking a file never restores it automatically.
|
|
571
|
+
- If Sui MCP rejects the backup's format or mainnet network settings, use Change backup file. Back and Check backup again cannot clear that rejection. If a network service is temporarily unreachable, you can check the backup again and make a new restore confirmation; network access is still checked before any records change.
|
|
572
|
+
- If another Settings operation or an unsettled wallet request temporarily blocks the change, Check status reads the same card again without repeating its action.
|
|
573
|
+
- Restoring or resetting can delete records whose transaction results were not confirmed and cannot cancel a transaction on Sui. It remains blocked while a wallet/transaction response is pending or the initial transaction-result waiting period has not ended, including after automatic result checks are stopped.
|
|
574
|
+
- Choose Download backup in Local records once. Sui MCP prepares and checks the backup internally, then asks the app to save it. There is no separate Create backup step. For supported downloads, the app controls the destination and Sui MCP keeps no permanent extra copy; Suggested file name is not a confirmed save path.
|
|
575
|
+
- If the download function explicitly reports that it is unsupported, the same backup is saved in `<SUI_MCP_DATA_DIR>/backups/` instead. Backup saved shows its actual Folder and File name. This file remains after restarting or replacing local data; temporary cleanup does not delete it. This choice depends on the function response, not the app name. Other errors do not silently change the destination.
|
|
576
|
+
- If an earlier attempt may already have saved a copy, Save a local copy asks for that decision explicitly. Retry save is available only after a confirmed local save failure with no published file. While saving or checking an uncertain result, Check status checks the same request without creating another file.
|
|
577
|
+
- An accepted download request does not prove that the file was saved. If delivery fails or cannot be confirmed, Retry download sends the same snapshot while its thirty-minute transfer period remains open. An unconfirmed earlier request may already have saved a copy. Cancel download stops further transfer and cleans the temporary snapshot; it does not close a save dialog or delete a saved file. Reopening a card never starts another download automatically.
|
|
578
|
+
- The thirty-minute transfer period starts when the snapshot is ready and is not extended by reads or retries. App acknowledgment, cancellation, expiry, server restart or local-data replacement ends private retention. A local save admitted before the deadline finishes its file work and records the result before cleanup; a restart can verify an already published file but never create a missing one. If temporary cleanup cannot be confirmed, Check status checks that same request without creating or downloading another backup. Existing saved local backup files are left intact. A backup larger than the 16 MiB restore limit is identified as such and is not silently truncated.
|
|
579
|
+
- Import accepts only the current backup format and required field structure. Required settings and activity fields must be present; missing fields are not filled from defaults.
|
|
520
580
|
- Current-format backups can contain `function_scan` provenance. Unsupported formats and scan-kind values are rejected rather than partially imported.
|
|
521
581
|
- Endpoint chain-identifier verification runs only when the user confirms the replace-only import.
|
|
522
582
|
- A custom gRPC endpoint must be an `http` or `https` URL with an explicit port and no credentials, path, query string, or fragment.
|
|
@@ -540,7 +600,7 @@ Use this only when you need a one-run override or need to recover from a stored
|
|
|
540
600
|
|
|
541
601
|
After the MCP server starts with the override:
|
|
542
602
|
|
|
543
|
-
1. Open the
|
|
603
|
+
1. Open the Settings card.
|
|
544
604
|
2. Restore the default endpoint or save a new endpoint.
|
|
545
605
|
3. Remove the environment override.
|
|
546
606
|
4. Restart the client.
|
|
@@ -577,7 +637,7 @@ The port is not a browser-wallet authorization origin.
|
|
|
577
637
|
`npm run release:check` checks synchronized release metadata, typechecks, tests,
|
|
578
638
|
builds, and verifies the actual npm tarball and bundled licenses. It installs the
|
|
579
639
|
tarball in a temporary directory and runs that installed binary to check MCP
|
|
580
|
-
initialization, tools, document/card resources, the
|
|
640
|
+
initialization, tools, document/card resources, the internal Settings card and
|
|
581
641
|
assets, and the isolated SDK child. It confirms that Connect rejects restart
|
|
582
642
|
input, manage does not pair merely by opening, and the SDK keeps its exclusive
|
|
583
643
|
storage lease until shutdown. Runtime startup requires reachable Sui mainnet endpoints; a startup
|
|
@@ -696,7 +756,7 @@ cannot erase an earlier fatal or signal exit. SDK service unavailability is a
|
|
|
696
756
|
separate condition and does not by itself shut down the parent read service.
|
|
697
757
|
|
|
698
758
|
- Do not set `SUI_RPC_URL`; this runtime intentionally uses Sui gRPC and rejects Sui JSON-RPC config.
|
|
699
|
-
- If a stored custom endpoint fails, temporarily start with `SUI_GRPC_URL`, open the
|
|
759
|
+
- If a stored custom endpoint fails, temporarily start with `SUI_GRPC_URL`, open the Settings card, restore the default Sui gRPC URL or save a new endpoint, remove the override, and restart.
|
|
700
760
|
- If an environment override is present, confirm it has scheme, host, and explicit port only.
|
|
701
761
|
- If the startup chain identifier guard fails, use a Sui mainnet gRPC endpoint. If a Sui activity tool fails its GraphQL chain identifier guard, use a Sui mainnet GraphQL endpoint.
|
|
702
762
|
|
|
@@ -716,7 +776,7 @@ If the user supplied a specific Sui address for `read.summarize_wallet_assets` o
|
|
|
716
776
|
|
|
717
777
|
A 404 means the requested package or version could not be retrieved from the
|
|
718
778
|
selected registry. Confirm the exact name and version, for example with
|
|
719
|
-
`npm view @zktx.io/sui-mcp@0.
|
|
779
|
+
`npm view @zktx.io/sui-mcp@0.6.0 version --registry=https://registry.npmjs.org`.
|
|
720
780
|
A new version may not have been published or become visible yet; a mistyped name
|
|
721
781
|
or an alternate/private registry can also explain the response. Check the
|
|
722
782
|
publication result and registry configuration before retrying. Do not assume
|
package/docs/MCP_TOOLS.md
CHANGED
|
@@ -8,6 +8,16 @@ It does not own installation steps or user-question playbooks. Installation and
|
|
|
8
8
|
|
|
9
9
|
Tool names use dot prefixes and avoid arbitrary shell, arbitrary Move calls, and private-key handling.
|
|
10
10
|
|
|
11
|
+
The local stdio gateway forwards each request through authenticated internal
|
|
12
|
+
HTTP. A request body must fit within 4 MiB, including the entire MCP JSON-RPC
|
|
13
|
+
envelope and metadata. An oversized request is rejected before tool or card
|
|
14
|
+
dispatch; this is an input-size error, not an unsupported function, wallet
|
|
15
|
+
rejection or unconfirmed file delivery. Reduce the request before calling again.
|
|
16
|
+
Card calls also have a 64 KiB envelope budget. Ordinary MCP calls do not inherit
|
|
17
|
+
that smaller card limit. Restore files may contain up to 16 MiB and are sent in
|
|
18
|
+
separate messages within the card budget; the 4 MiB request limit is not a
|
|
19
|
+
backup-file limit.
|
|
20
|
+
|
|
11
21
|
## Read-Only Tools
|
|
12
22
|
|
|
13
23
|
| Tool | Status | Purpose |
|
|
@@ -155,7 +165,7 @@ When Chart pool choices cannot be prepared, the backend creates a `closed`/`fail
|
|
|
155
165
|
|
|
156
166
|
Receipt model results retain input kinds/indices/object references and identify input values and PTB as UI-only details. Receipt and completed Review show the executed transaction graph above their result summary when bound private metadata is available. Technical records are in one Details slide. Missing metadata leaves the saved result available without inventing a graph. The typed `sui-mcp/receipt-display` metadata binds display data to the same card ID, transaction digest and revision. It carries individual on-chain Pure input values and the graph derived from those inputs; never a serialized transaction, signature or wallet credential. Public saved resources contain only the model projection. A missing UI detail payload means unavailable display data, not that a transaction had no inputs.
|
|
157
167
|
|
|
158
|
-
Backend expiry ends unsubmitted input. A server restart invalidates unfinished cards; stored completed results remain readable. Reset/import removes cards
|
|
168
|
+
Backend expiry ends unsubmitted input. A server restart invalidates unfinished cards; stored completed results remain readable. Reset/import atomically removes other cards/permissions with the data change and preserves the applying Settings card/result as read-only. Completed input does not reopen, while still-valid unsubmitted input is unaffected by chat navigation. A lost submit response is resolved by reading the same card, without another source request.
|
|
159
169
|
|
|
160
170
|
When a Host replays a historical card without its private input permission, the
|
|
161
171
|
View reads `suimcp://cards/{cardId}` to restore the same card's current saved
|
|
@@ -1071,7 +1081,8 @@ Each disconnection uses the same scoped UI permission, current run and revision,
|
|
|
1071
1081
|
atomic admission and saved result as an ordinary single-connection disconnect.
|
|
1072
1082
|
No first/newest/default wallet is silently selected. When one valid connection
|
|
1073
1083
|
remains and no connection operation is pending, normal account use can resume;
|
|
1074
|
-
with
|
|
1084
|
+
with no recorded or SDK-present connection and no pending operation, pairing is
|
|
1085
|
+
available. A failed disconnect does not prove remote removal.
|
|
1075
1086
|
A failed or stopped product connection is not restored merely because its SDK
|
|
1076
1087
|
session remains saved.
|
|
1077
1088
|
|
|
@@ -1093,6 +1104,19 @@ the stored default's source connection ID to match this connection and its
|
|
|
1093
1104
|
address to remain approved. Matching the address in a different connection is
|
|
1094
1105
|
insufficient. A source-less stored selection requires explicit Use address.
|
|
1095
1106
|
|
|
1107
|
+
`manageableConnectionIds` identifies exact recorded targets for a new scoped
|
|
1108
|
+
Disconnect, separately from account use. It includes nonpending connected records
|
|
1109
|
+
(including expired ones) and known terminal records whose current SDK session
|
|
1110
|
+
remains present. `connectionReconciliationRequired: true` identifies a present SDK
|
|
1111
|
+
session without a journal target after normal registration/cleanup ends. It
|
|
1112
|
+
blocks pairing, account use, preparation and signing while preserving SDK
|
|
1113
|
+
availability and saved outcomes. Remove the retained connection in the wallet
|
|
1114
|
+
app, then confirm absence through a complete current service observation.
|
|
1115
|
+
Settings/Troubleshooting can explicitly restart the service to inspect it again;
|
|
1116
|
+
restart alone does not remove or approve that connection. No private topic or synthetic target ID
|
|
1117
|
+
is exposed. Both fields also appear in interaction status; review status includes
|
|
1118
|
+
the reconciliation flag when current eligibility is needed.
|
|
1119
|
+
|
|
1096
1120
|
These fields are emitted together for current wallet eligibility. Independent
|
|
1097
1121
|
historical or completed-result reads may omit them; omission does not establish
|
|
1098
1122
|
current eligibility. Recorded `connections` and `activeAccount` remain facts,
|
|
@@ -1116,7 +1140,10 @@ errors still fail the read without deleting the stored execution result.
|
|
|
1116
1140
|
|
|
1117
1141
|
Connect does not accept `restart_wallet_service`; that input returns
|
|
1118
1142
|
`invalid_card_input` without consuming the card or changing the SDK run.
|
|
1119
|
-
|
|
1143
|
+
Ordinary MCP tools cannot replace the connection service. A user may prepare
|
|
1144
|
+
and confirm its restart in the internal Settings card's Troubleshooting controls.
|
|
1145
|
+
This restores service availability, not an interrupted wallet approval or
|
|
1146
|
+
disconnect result. Operational app
|
|
1120
1147
|
restart is described in [MCP Setup](MCP_SETUP.md#wallet-connection-boundary).
|
|
1121
1148
|
|
|
1122
1149
|
A historical `runtimeRecovery` result retains its prior/next run IDs,
|
|
@@ -1209,38 +1236,260 @@ facts actually exist.
|
|
|
1209
1236
|
| Tool | Status | Purpose |
|
|
1210
1237
|
| --- | --- | --- |
|
|
1211
1238
|
| `account.get_active_account` | Implemented | Reads the active wallet-account read context. |
|
|
1212
|
-
|
|
1239
|
+
|
|
1240
|
+
The user clears the default read address through a confirmed Settings card action. Ordinary MCP calls do not clear it.
|
|
1213
1241
|
|
|
1214
1242
|
## Settings Tools
|
|
1215
1243
|
|
|
1216
1244
|
| Tool | Status | Purpose |
|
|
1217
1245
|
| --- | --- | --- |
|
|
1218
|
-
| `settings.create_local_settings_session` | Implemented |
|
|
1219
|
-
| `settings.get_local_settings` | Implemented | Reads
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1246
|
+
| `settings.create_local_settings_session` | Implemented | Opens one internal Settings card with an unsubmitted draft. |
|
|
1247
|
+
| `settings.get_local_settings` | Implemented | Reads stored/effective Sui gRPC and GraphQL endpoints, sources and pending restart information. |
|
|
1248
|
+
|
|
1249
|
+
The gateway name is preserved. Its result is a `kind: "settings"` card snapshot
|
|
1250
|
+
and a public saved-result link. Card permission is only in `sui-mcp/card` UI
|
|
1251
|
+
metadata. There is no `settingsUrl`, `openTarget`, external page, HTTP mutation
|
|
1252
|
+
API or compatibility alias. A client without internal cards receives
|
|
1253
|
+
`ui_unavailable`; ordinary model calls never apply a Settings change.
|
|
1254
|
+
|
|
1255
|
+
Settings groups Address for viewing assets, Local records, Troubleshooting and Advanced
|
|
1256
|
+
settings. Confirmed changes are `clear_read_address`, `set_endpoint`,
|
|
1257
|
+
`restore_endpoint` (gRPC or GraphQL), `import_local_data`, `reset_local_data`
|
|
1258
|
+
and `restart_wallet_service`. Their preparation and confirmation use app-only
|
|
1259
|
+
`ui.act_card` with card permission, revision, operation identity and the exact
|
|
1260
|
+
preparation identity. Choosing or checking data does not apply it, contact a
|
|
1261
|
+
wallet or restart the SDK. Duplicate confirmation returns the same admitted
|
|
1262
|
+
result; MCP JSON-RPC request IDs do not authorize another operation.
|
|
1263
|
+
|
|
1264
|
+
Download backup uses one `settings_download_backup` action with `operationId`
|
|
1265
|
+
and an `attemptId` UUID, admitted atomically through the same scoped card input.
|
|
1266
|
+
It creates a `download_backup` operation and one immutable snapshot. It requires
|
|
1267
|
+
no separate selection, preparation or confirmation action. The same admitted
|
|
1268
|
+
start returns the same request; a different start cannot replace it. New
|
|
1269
|
+
`export_local_data` selection/preparation/confirmation is not accepted.
|
|
1270
|
+
|
|
1271
|
+
The card uses plain-language display labels without changing wire fields or
|
|
1272
|
+
enums. Wallet-service `available`, `initializing`, `recovering` and `unavailable`
|
|
1273
|
+
display as Ready, Starting, Restarting and Unavailable; Ready describes the
|
|
1274
|
+
service, not a connected or approved wallet. Endpoint sources display as App
|
|
1275
|
+
launch settings, Saved in Sui MCP and Built-in default. Internal connection and
|
|
1276
|
+
transaction-request IDs remain in Details; wallet identity and restart impact
|
|
1277
|
+
remain beside the confirmation. Known validation errors explain the cause and
|
|
1278
|
+
next action without requiring knowledge of upload chunks or backend admission.
|
|
1279
|
+
|
|
1280
|
+
Completing an import upload automatically checks its integrity, current-format
|
|
1281
|
+
contents and local replacement conditions. `data.restoreCheck.status` is
|
|
1282
|
+
`no_file`, `receiving`, `checking`, `check_required`, `can_restore` or
|
|
1283
|
+
`cannot_restore`. Receiving describes an unsealed transfer; a complete sealed
|
|
1284
|
+
file needing a new local check is `check_required`, not a validation failure.
|
|
1285
|
+
A blocked check carries
|
|
1286
|
+
its `reason` and user-readable `message`; it does not end the operation or
|
|
1287
|
+
misclassify a storage/service failure as an invalid file. `can_restore` describes
|
|
1288
|
+
the current preparation, not authority, completed replacement or guaranteed
|
|
1289
|
+
success. The exact UI permission, preparation identity and final admission are
|
|
1290
|
+
still required. Imported endpoint verification runs after final confirmation,
|
|
1291
|
+
before any data replacement. Reads never start a new check or application.
|
|
1292
|
+
|
|
1293
|
+
Known invalid backup contents or a definite imported URL/mainnet rejection remain
|
|
1294
|
+
bound to the selected file ID, hash, length and operation epoch. `settings_back` or a
|
|
1295
|
+
local-data revision change discards current confirmation without clearing that
|
|
1296
|
+
file rejection. `settings_prepare` cannot erase it or make the same file ready;
|
|
1297
|
+
the user must explicitly change the file selection. A new selection can use the
|
|
1298
|
+
same original bytes and receives a new file identity. Timeout or unreachable
|
|
1299
|
+
endpoint failures permit an explicit local recheck and a new final confirmation;
|
|
1300
|
+
that recheck does not call imported endpoints. The server derives recheck actions
|
|
1301
|
+
from the same decision used by the handler; the View does not choose its own
|
|
1302
|
+
failure-recovery policy.
|
|
1303
|
+
|
|
1304
|
+
`file.sealed` records complete, integrity-checked transfer; it does not by itself
|
|
1305
|
+
establish a supported backup or permission to restore it. `settings_back` and user-data
|
|
1306
|
+
changes invalidate preparation while preserving a reusable complete file.
|
|
1307
|
+
The explicit `settings_prepare` action rechecks such a file; normal file
|
|
1308
|
+
selection requires no separate Preview action. A failed check preserves its
|
|
1309
|
+
current file/operation identity and correction path. Owner replacement ends old
|
|
1310
|
+
input; a new card must receive a new explicit file selection.
|
|
1311
|
+
|
|
1312
|
+
A download's `result.completionScope: "backup_snapshot"` identifies the immutable
|
|
1313
|
+
preparation result, not a saved user file. `data.download` separately carries
|
|
1314
|
+
`availability` (`preparing`, `available`, `ended`), `currentAttemptId`, an optional
|
|
1315
|
+
`hostReport` (`acknowledged`, `not_completed`, `unconfirmed`, `unsupported`), `previousUnconfirmed`,
|
|
1316
|
+
`expiresAt`, `remainingMs`, `endReason` and `allowedFileActions`. End reasons are
|
|
1317
|
+
`acknowledged`, `cancelled`, `expired`, `server_restarted`, `data_replaced`,
|
|
1318
|
+
`source_unavailable`, `stored_locally` or `local_save_failed`. Replacement revokes the old card rather than preserving
|
|
1319
|
+
its input. The transfer period is thirty minutes from physical readiness;
|
|
1320
|
+
reads/retries never extend it or reopen the original business-input deadline.
|
|
1321
|
+
Raw per-attempt preparation is not copied into public `preparation`.
|
|
1322
|
+
|
|
1323
|
+
`data.download.localSave`, when present, separates `needs_consent`, `saving`,
|
|
1324
|
+
`saved` and `failed`. It may include `currentSaveAttemptId`, `savedAt` and a
|
|
1325
|
+
failure reason (`not_published`, `target_conflict`, `source_unavailable` or
|
|
1326
|
+
`interrupted`). Uncertain physical results remain `saving`; they do not grant
|
|
1327
|
+
another save. `previousUnconfirmed` includes an earlier attempt whose delivery
|
|
1328
|
+
absence was not established, including an unreported or not-completed request.
|
|
1329
|
+
|
|
1330
|
+
A verified local `saved` result provides `data.backupLocation.directory` and
|
|
1331
|
+
`filename` for `<SUI_MCP_DATA_DIR>/backups/<operationId>.json`. Snapshot preparation
|
|
1332
|
+
and Host acknowledgment do not provide that local success. A recorded
|
|
1333
|
+
`export_local_data` result can also identify its existing file. These fields
|
|
1334
|
+
never identify the destination chosen by a Host download dialog. Existing user
|
|
1335
|
+
files are never deleted by private snapshot cleanup. Private publication
|
|
1336
|
+
identities and source inode/device facts are not public projection fields.
|
|
1337
|
+
|
|
1338
|
+
Current `data.facts` uses the same connection selection and qualification rules
|
|
1339
|
+
as interaction status, through a fact reader that does not settle another
|
|
1340
|
+
request's deadlines or callback writes. General counts describe stored records;
|
|
1341
|
+
reset/import preparation and confirmation independently settle deadlines and
|
|
1342
|
+
check the current deletion impact. Creating a Settings card or checking its own
|
|
1343
|
+
permission, expiry, result or cleanup retains that operation's required writes.
|
|
1344
|
+
`connectionReconciliationRequired: true` is separate from SDK availability and
|
|
1345
|
+
requires a published available run with confirmed unrecorded presence:
|
|
1346
|
+
remove the unrecorded connection in the wallet app, then confirm absence.
|
|
1347
|
+
Settings overview and Troubleshooting show that action; a service restart only
|
|
1348
|
+
re-inspects retained sessions and does not approve or remove them.
|
|
1349
|
+
An initializing/state_sync memory snapshot does not establish that diagnosis.
|
|
1350
|
+
The ordinary interaction response exposes its removal-and-confirmed-absence
|
|
1351
|
+
meaning in `userAnswerUse.canAnswer` only when the diagnostic flag is present;
|
|
1352
|
+
the corresponding precondition and answer fields reference the same flag.
|
|
1353
|
+
Neither service availability nor an absent flag establishes account authority
|
|
1354
|
+
or proves that no SDK session exists.
|
|
1355
|
+
|
|
1356
|
+
`data.phase` is `draft`, `uploading`, `sealed`, `prepared`, `executing`,
|
|
1357
|
+
`stopping`, `starting` or `terminal`. `allowedActions` lists permitted business input;
|
|
1358
|
+
`observe` permits reading the existing operation only. Known file-I/O and final-slot
|
|
1359
|
+
conditions affect the offered actions; final admission rechecks them atomically.
|
|
1360
|
+
Local section navigation and Resume do not call `settings_back` or change stored
|
|
1361
|
+
preparation. Check status reads the same card when a change is temporarily
|
|
1362
|
+
unavailable and never repeats a business action or Host download. After a
|
|
1363
|
+
successful read, an already received but unrecorded download report can be
|
|
1364
|
+
recorded idempotently without resending bytes. Public fields include
|
|
1365
|
+
`operationId`, `draft`, preparation identity/impact, file ID/name/length/hash,
|
|
1366
|
+
`priorRunId`, `nextRunId`, supersession links and a recorded result. Results use
|
|
1367
|
+
`completed`, `failed`, `interrupted` or `superseded`. Completion describes that
|
|
1368
|
+
local operation, not a transaction's chain outcome. Optional
|
|
1369
|
+
`temporaryFileCleanup` separately reports `pending`, `failed` or `complete`;
|
|
1370
|
+
reading/checking it never repeats data replacement, backup creation, Host delivery or SDK
|
|
1371
|
+
replacement. Terminal business input remains closed; only the separate scoped
|
|
1372
|
+
file continuations in `data.download.allowedFileActions` may remain available. Public fields contain no raw file, transaction bytes, signatures,
|
|
1373
|
+
SDK credentials or card permission.
|
|
1374
|
+
|
|
1375
|
+
A user-data writer invalidates its affected prepared confirmation atomically.
|
|
1376
|
+
A still-valid sealed import file remains available for a new backup check after
|
|
1377
|
+
`settings_back` or invalidation; an old revision/preparation cannot apply it. Explicitly
|
|
1378
|
+
choosing a different file invalidates the old upload. Upload, preparation and
|
|
1379
|
+
input permission have separate lifetimes. Known validation rejection returns
|
|
1380
|
+
safe input-error text and the actual current snapshot. Wrong permission returns
|
|
1381
|
+
no snapshot or domain explanation; storage/I/O failures are not input errors
|
|
1382
|
+
or success.
|
|
1383
|
+
|
|
1384
|
+
Backup uploads accept at most 16 MiB before Base64/JSON wrapping. Chunk offsets,
|
|
1385
|
+
reservations, canonical Base64, full length and SHA-256 are verified. The entire
|
|
1386
|
+
internal MCP JSON-RPC message remains within 65,536 UTF-8 bytes; oversized upload
|
|
1387
|
+
rejection can report a smaller raw chunk limit before any write. The backup check validates
|
|
1388
|
+
strict current backup shape/references without endpoint contact. Confirmation
|
|
1389
|
+
verifies imported endpoints report Sui mainnet and rechecks current data and
|
|
1390
|
+
unsettled wallet/transaction work before atomic replacement.
|
|
1391
|
+
The prepared import includes `currentReadAddress` and `incomingReadAddress`
|
|
1392
|
+
(`null` when unset), the corresponding change and current/incoming record counts.
|
|
1393
|
+
Both preparation and final admission settle request deadlines before capturing
|
|
1394
|
+
or comparing that decision basis. A newly unknown outcome requires a new backup check.
|
|
1395
|
+
Reset/import revoke other live permissions and preserve only their own read-only card/result.
|
|
1396
|
+
Their confirmation warns that replacement can remove unconfirmed transaction
|
|
1397
|
+
records even when the checked count is zero; actual nonzero deletion counts stay
|
|
1398
|
+
visible. Outstanding wallet/transaction responses and an unfinished initial
|
|
1399
|
+
result-checking window block replacement, including after the user stops
|
|
1400
|
+
automatic result checks. Stopping those checks does not shorten that window.
|
|
1401
|
+
They cannot cancel a transaction on Sui or disconnect a remote wallet session.
|
|
1402
|
+
The private connection-service journal is preserved; it is not imported from
|
|
1403
|
+
the public backup and cannot restore old permissions or signing authority.
|
|
1404
|
+
Reset clears the default address. A restored default requires its exact current
|
|
1405
|
+
connection ID and approved address. Outstanding connection SDK callbacks block
|
|
1406
|
+
replacement along with unsettled transaction work.
|
|
1407
|
+
|
|
1408
|
+
Endpoint preparation records the gRPC/GraphQL kind, current stored/effective
|
|
1409
|
+
value and source, and exact proposed stored value. Only final confirmation checks
|
|
1410
|
+
mainnet and stores that target. Its result captures `effectiveValueAtSave` and
|
|
1411
|
+
`effectiveSourceAtSave`, rather than claiming to describe a later server run.
|
|
1412
|
+
An environment override continues to take precedence after restart while it
|
|
1413
|
+
remains set; storing an endpoint does not modify that environment.
|
|
1414
|
+
|
|
1415
|
+
Download creates and verifies one private snapshot with an exclusive generated
|
|
1416
|
+
file identity. Supported Host delivery does not publish a second permanent backup. Response or result
|
|
1417
|
+
storage failure never regenerates that snapshot. `ui.read_settings_file` is
|
|
1418
|
+
app-only and binds card/permission, operation, file, offset, verified hash/length
|
|
1419
|
+
and the current `attemptId` for a private download. Its ordinary content carries
|
|
1420
|
+
range metadata; Base64 bytes appear only in `sui-mcp/settings-file` UI metadata.
|
|
1421
|
+
The View checks the complete hash before standard Host delivery.
|
|
1422
|
+
|
|
1423
|
+
File continuations also use app-only `ui.act_card`:
|
|
1424
|
+
|
|
1425
|
+
- `settings_retry_download`: `operationId`, `fileId`, `previousAttemptId` and a
|
|
1426
|
+
new `attemptId`; atomically advances one attempt on the same live snapshot.
|
|
1427
|
+
- `settings_report_download`: `operationId`, `fileId`, `attemptId` and `status`
|
|
1428
|
+
(`acknowledged`, `not_completed`, `unconfirmed`, `unsupported`); the same report is idempotent,
|
|
1429
|
+
and conflicting reports for one attempt are rejected. A late older report
|
|
1430
|
+
cannot change the current attempt or end its retention. `unsupported` requires
|
|
1431
|
+
exactly `failure: {method: "ui/download-file", code: -32601}`; other statuses
|
|
1432
|
+
must omit `failure`. Only the actual download call's method-not-found result
|
|
1433
|
+
supplies that report. It is atomically admitted with the same snapshot's local
|
|
1434
|
+
publication intent when no earlier delivery is possible. A busy shared slot
|
|
1435
|
+
rejects that admission atomically; the View can record the same received
|
|
1436
|
+
report again without another Host call. An older or ended attempt report
|
|
1437
|
+
never admits publication.
|
|
1438
|
+
- `settings_cancel_download`: `operationId`, `fileId` and `attemptId`; ends
|
|
1439
|
+
further delivery of that snapshot, not a Host dialog or a user-saved file.
|
|
1440
|
+
Cancellation is refused while a local save is in progress or its outcome is
|
|
1441
|
+
uncertain. After a failure recorded as `not_published`, cancellation remains
|
|
1442
|
+
available within the transfer period for the current authorized request.
|
|
1443
|
+
- `settings_store_backup`: `operationId`, `fileId`, current `attemptId`, a new
|
|
1444
|
+
`saveAttemptId`, required boolean `allowPossibleCopy`, and optional
|
|
1445
|
+
`previousSaveAttemptId`. It is available only for that snapshot's recorded
|
|
1446
|
+
unsupported result. Possible earlier delivery requires explicit true consent;
|
|
1447
|
+
otherwise false is required. Initial consent has no previous save ID. A retry
|
|
1448
|
+
of a confirmed no-publication failure must name the current failed save ID.
|
|
1449
|
+
IDs and consent are immutable per admission; duplicates do not repeat effects.
|
|
1450
|
+
It accepts no arbitrary path, name or bytes.
|
|
1451
|
+
|
|
1452
|
+
These actions validate current owner, epoch, credential and exact file/attempt
|
|
1453
|
+
identity independently of terminal business input. Retry/read requires a live
|
|
1454
|
+
transfer period. A late report can record a fact after that period ends but
|
|
1455
|
+
cannot restore the file or authority. Host acknowledgment ends retention and
|
|
1456
|
+
requests cleanup; it does not prove a save location or completed disk storage.
|
|
1457
|
+
`isError` does not distinguish cancellation, denial or failure. A lost response
|
|
1458
|
+
is unconfirmed and never triggers automatic retransmission. Cleanup failure is
|
|
1459
|
+
reported separately and is retried through Check status or owner recovery.
|
|
1460
|
+
Local publication closes further Host reads/retries for that snapshot. Its
|
|
1461
|
+
final/file-I/O reservations survive the immutable terminal snapshot result.
|
|
1462
|
+
New save admissions and retries require the original live period; admitted
|
|
1463
|
+
file work settles even if it outlives that period. A process restart verifies
|
|
1464
|
+
only an existing target bound to its recorded source identity/content. It never
|
|
1465
|
+
publishes a missing target or restores the departed card's action authority.
|
|
1466
|
+
A missing or changed source ends that private transfer; a new explicit request
|
|
1467
|
+
is required. An existing public backup is verified on the same descriptor used
|
|
1468
|
+
for each range and is never truncated or removed by temporary cleanup.
|
|
1469
|
+
|
|
1470
|
+
Troubleshooting recovery confirms a precise SDK run and affected unsubmitted
|
|
1471
|
+
requests. Admission revokes their submission authority before stopping the old
|
|
1472
|
+
child. The result waits for the owned child's exit, new run reservation,
|
|
1473
|
+
startup and complete observation. A new explicit Settings confirmation can
|
|
1474
|
+
supersede a startup still pending; it cannot replace stopping or erase a known
|
|
1475
|
+
failure. Already admitted submissions keep observing the same digest. Restart
|
|
1476
|
+
does not confirm an interrupted disconnect or sign/submit a new transaction.
|
|
1477
|
+
The confirmation identifies wallet connection records with their recorded status
|
|
1478
|
+
and addresses. Historical disconnected/failed records do not prove a current
|
|
1479
|
+
connection or approval. The complete recorded impact remains bound to admission;
|
|
1480
|
+
the display does not filter it into a new wallet-eligibility rule.
|
|
1481
|
+
|
|
1482
|
+
Endpoint changes require fully quitting/reopening every participating app to
|
|
1483
|
+
apply parent configuration. Restart connection service only replaces the SDK
|
|
1484
|
+
child. Installation environment overrides continue to take precedence. Custom
|
|
1485
|
+
providers affect read data quality; use trusted Sui mainnet providers.
|
|
1237
1486
|
|
|
1238
1487
|
## Resources
|
|
1239
1488
|
|
|
1240
1489
|
Sui MCP serves the URI prefixes `suimcp://` and `ui://sui-mcp/`.
|
|
1241
1490
|
The
|
|
1242
1491
|
`sui-mcp/card`, `sui-mcp/receipt-display` and
|
|
1243
|
-
`sui-mcp/wallet-display` metadata keys bind stored cards to their
|
|
1492
|
+
`sui-mcp/wallet-display` and `sui-mcp/settings-file` metadata keys bind stored cards to their
|
|
1244
1493
|
permissions and display facts. Clients must use the returned URI/key values.
|
|
1245
1494
|
|
|
1246
1495
|
|