@zktx.io/sui-mcp 0.5.0 → 0.6.1

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 (138) hide show
  1. package/README.md +21 -21
  2. package/dist/adapters/adapterPromptSurfaces.js +0 -20
  3. package/dist/adapters/deepbook/deepbookQuotePolicy.js +0 -4
  4. package/dist/adapters/deepbook/deepbookReviewEvidence.js +0 -9
  5. package/dist/adapters/deepbook/deepbookTransactionMaterialProducer.js +0 -9
  6. package/dist/adapters/intentPlanFactories.js +0 -6
  7. package/dist/core/action/contractNameRegistry.js +0 -53
  8. package/dist/core/action/forbiddenFields.js +0 -4
  9. package/dist/core/action/ptbVisualizationProducer.js +0 -3
  10. package/dist/core/action/receiptPtbGraph.js +0 -17
  11. package/dist/core/action/reviewTimeSimulationEvidence.js +0 -4
  12. package/dist/core/action/signableAdapterContract.js +0 -5
  13. package/dist/core/action/suiChainReceiptMapping.js +0 -18
  14. package/dist/core/action/suiChainReceiptReader.js +1 -21
  15. package/dist/core/action/suiChainReceiptVerifier.js +0 -10
  16. package/dist/core/action/transactionFunding.js +0 -7
  17. package/dist/core/action/types.js +0 -1
  18. package/dist/core/action/walletReviewContractAssembler.js +0 -2
  19. package/dist/core/activity/localDataService.js +65 -52
  20. package/dist/core/activity/localDataValidation.js +1 -3
  21. package/dist/core/activity/sqliteActivityStore.js +24 -24
  22. package/dist/core/activity/sqliteActivityStoreRows.js +0 -2
  23. package/dist/core/activity/sqliteActivityStoreSchema.js +81 -14
  24. package/dist/core/preferences/sqlitePreferencesRepository.js +5 -3
  25. package/dist/core/read/deepbookReadHelpers.js +0 -2
  26. package/dist/core/read/deepbookRegistry.js +0 -19
  27. package/dist/core/read/deepbookUsdcChartService.js +0 -2
  28. package/dist/core/read/readCardResult.js +0 -2
  29. package/dist/core/read/readService.js +0 -19
  30. package/dist/core/read/readServiceTypes.js +0 -2
  31. package/dist/core/session/cardSession.js +1 -5
  32. package/dist/core/session/cardSessionStore.js +54 -7
  33. package/dist/core/session/reviewValidity.js +0 -3
  34. package/dist/core/session/sessionRecordStore.js +0 -1
  35. package/dist/core/session/sessionStore.js +0 -32
  36. package/dist/core/session/settingsFileIdentity.js +9 -0
  37. package/dist/core/session/settingsFileProtocol.js +20 -0
  38. package/dist/core/session/settingsFileStore.js +337 -0
  39. package/dist/core/session/settingsInputError.js +32 -0
  40. package/dist/core/session/settingsOperation.js +220 -0
  41. package/dist/core/session/settingsPreparationSql.js +13 -0
  42. package/dist/core/session/settingsWorkflow.js +1183 -0
  43. package/dist/core/session/sqliteCardStore.js +0 -2
  44. package/dist/core/session/sqliteSessionStore.js +0 -51
  45. package/dist/core/session/sqliteSettingsWorkflowStore.js +453 -0
  46. package/dist/core/session/sqliteTransactionMaterialStore.js +0 -11
  47. package/dist/core/session/sqliteWalletWorkflowStore.js +160 -66
  48. package/dist/core/session/status.js +2 -4
  49. package/dist/core/session/transactionMaterialStore.js +0 -4
  50. package/dist/core/session/transactionRequest.js +0 -4
  51. package/dist/core/session/walletConnection.js +26 -10
  52. package/dist/core/session/walletWorkflow.js +70 -30
  53. package/dist/core/session/workflowState.js +14 -14
  54. package/dist/core/session/workflowView.js +18 -8
  55. package/dist/core/suiAddress.js +0 -5
  56. package/dist/core/suiEndpoint.js +0 -3
  57. package/dist/mcp/prompts.js +0 -12
  58. package/dist/mcp/responseGuidance.js +10 -5
  59. package/dist/mcp/schemas.js +0 -3
  60. package/dist/mcp/serverInfo.js +3 -4
  61. package/dist/mcp/toolNames.js +2 -2
  62. package/dist/mcp/tools/account/index.js +1 -19
  63. package/dist/mcp/tools/action/prepareSuiActionReview.js +0 -6
  64. package/dist/mcp/tools/read/readToolHelpers.js +5 -4
  65. package/dist/mcp/tools/read/serverStatusTools.js +0 -1
  66. package/dist/mcp/tools/session/executionResultTools.js +2 -2
  67. package/dist/mcp/tools/session/shared.js +1 -2
  68. package/dist/mcp/tools/session/statusTools.js +4 -5
  69. package/dist/mcp/tools/settings/index.js +8 -28
  70. package/dist/mcp-app/account.html +14 -14
  71. package/dist/mcp-app/account.notices.txt +1 -1
  72. package/dist/mcp-app/chart.html +9 -9
  73. package/dist/mcp-app/chart.notices.txt +1 -1
  74. package/dist/mcp-app/connect.html +14 -14
  75. package/dist/mcp-app/connect.notices.txt +1 -1
  76. package/dist/mcp-app/receipt.html +1298 -1463
  77. package/dist/mcp-app/receipt.notices.txt +226 -1204
  78. package/dist/mcp-app/review.html +1298 -1463
  79. package/dist/mcp-app/review.notices.txt +226 -1204
  80. package/dist/mcp-app/settings.html +3133 -0
  81. package/dist/mcp-app/settings.notices.txt +973 -0
  82. package/dist/mcp-ui/contracts.js +8 -2
  83. package/dist/mcp-ui/readCards.js +1 -1
  84. package/dist/mcp-ui/tools.js +34 -4
  85. package/dist/review-server/server.js +3 -51
  86. package/dist/runtime/application.js +41 -14
  87. package/dist/runtime/config.js +0 -2
  88. package/dist/runtime/localSettingsService.js +23 -2
  89. package/dist/runtime/logger.js +0 -2
  90. package/dist/runtime/reviewServerAcquire.js +1 -18
  91. package/dist/runtime/runtimeTermination.js +1 -4
  92. package/dist/runtime/shared/authenticatedFetch.js +2 -4
  93. package/dist/runtime/shared/control.js +4 -7
  94. package/dist/runtime/shared/dataAccess.js +0 -2
  95. package/dist/runtime/shared/http.js +14 -0
  96. package/dist/runtime/shared/mcpHttp.js +6 -6
  97. package/dist/runtime/shared/ownerLease.js +0 -4
  98. package/dist/runtime/shared/server.js +1 -2
  99. package/dist/runtime/shared/stdio.js +2 -5
  100. package/dist/runtime/smokeMainnetRead.js +0 -3
  101. package/dist/runtime/smokeReview.js +0 -4
  102. package/dist/runtime/start.js +0 -2
  103. package/dist/runtime/suiTransactionGraphqlMapping.js +0 -2
  104. package/dist/runtime/suiTransactionGraphqlQueries.js +0 -3
  105. package/dist/runtime/walletConnectConfig.js +0 -2
  106. package/dist/runtime/walletConnectStorage.js +2 -10
  107. package/dist/runtime/walletConnectTransport.js +0 -11
  108. package/dist/runtime/walletSdkChildRuntime.js +2 -6
  109. package/dist/runtime/walletSdkIpc.js +2 -1
  110. package/dist/runtime/walletSdkProcess.js +3 -8
  111. package/docs/AGENT_BEHAVIOR.md +45 -15
  112. package/docs/LOCAL_DB_ARCHITECTURE.md +145 -22
  113. package/docs/MCP_SETUP.md +99 -39
  114. package/docs/MCP_TOOLS.md +288 -24
  115. package/docs/SDK_API.md +63 -10
  116. package/docs/UTILITY_INDEX.md +9 -6
  117. package/docs/WALLET_CONNECTION.md +32 -10
  118. package/package.json +22 -8
  119. package/dist/core/activity/schemaVersion.js +0 -2
  120. package/dist/core/session/keyedRecordStore.js +0 -18
  121. package/dist/core/session/settingsSession.js +0 -1
  122. package/dist/core/session/settingsSessions.js +0 -45
  123. package/dist/review-app/brand-dark.svg +0 -1
  124. package/dist/review-app/brand-light.svg +0 -1
  125. package/dist/review-app/favicon.svg +0 -1
  126. package/dist/review-app/settings.css +0 -1
  127. package/dist/review-app/settings.js +0 -1
  128. package/dist/review-app/ui.css +0 -809
  129. package/dist/review-server/assets.js +0 -48
  130. package/dist/review-server/html.js +0 -45
  131. package/dist/review-server/http.js +0 -47
  132. package/dist/review-server/middleware/reviewToken.js +0 -7
  133. package/dist/review-server/settingsApi.js +0 -158
  134. package/docs/AGENT_DEVELOPMENT_POLICY.md +0 -815
  135. package/docs/FRONTEND_POLICY.md +0 -534
  136. package/docs/golden-scenarios/BEHAVIOR_MATRIX.md +0 -166
  137. package/docs/golden-scenarios/INTENT_EVIDENCE_GOLDEN_ANSWERS.md +0 -161
  138. package/docs/golden-scenarios/INTENT_EVIDENCE_MATRIX.md +0 -259
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.5.0`. Package installation requires
9
+ These instructions target `@zktx.io/sui-mcp@0.6.1`. 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 local settings session:
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 local settings page."
45
+ - "Open my Sui MCP Settings card."
41
46
 
42
- Open the returned settings URL in the same machine's system browser. Custom endpoint changes apply after the MCP server restarts. Advanced temporary environment overrides are documented in [Advanced Runtime Settings](#advanced-runtime-settings).
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.5.0 version` before switching. Both installation
133
+ `npm view @zktx.io/sui-mcp@0.6.1 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
- # wait until it logs "review server started", then stop it with Ctrl-C
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
- Use these steps when selecting a different package installation. Confirm the
182
- requested version is available before changing your client configuration.
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. A compatible update can retain the current
197
+ data directory, backups and private WalletConnect store. Use the same directory
198
+ and review port in every participating client. Stop the participating MCP
199
+ connections and wait for the shared backend to exit, update
200
+ the installed package or configured version, then reopen them and check
201
+ `read.get_server_status` in each client. The package name, version and server
202
+ name must match the intended installation. Updating the package does not
203
+ replace a backend that is already running.
204
+
205
+ Incompatible databases and backups are rejected without migration. To use a
206
+ different database structure, choose a new empty directory and preserve the
207
+ existing data and backups. Configure endpoints and read context as needed and
208
+ connect through a new card. See
209
+ [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
- API version or data directory is refused while that backend owns the port.
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.5.0` in its
232
+ `sui-mcp` for the registration name and select `@zktx.io/sui-mcp@0.6.1` 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 open the returned settings URL in the same machine's system browser. Setting changes apply after restart.
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
- There is no Restart wallet service button in Connect or Settings. If the
463
- connection service is unavailable or a disconnection remains unresponsive,
464
- fully quit all apps using Sui MCP and reopen them. Closing only a window
465
- or a client that does not own the shared backend is insufficient. Another open
466
- client may take ownership. Verify that the old backend and SDK child exited
467
- and that the new service becomes available; editing a config file is not a
468
- runtime restart. A process that survives app exit needs separate diagnosis,
469
- not a claim that recovery succeeded.
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
- The shared backend uses internal API version 7. All clients sharing a data
478
- folder must use a compatible installation. Fully quit the old clients before
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
- Product schema 9 and private SDK format 1 are retained.
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. The current database and public backup use schema 9; a development checkout replacing schema 8 needs a new empty data folder, preserving the previous folder. 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.
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; incompatible databases and backups are not migrated or converted. A database with different table, constraint or field definitions requires a new empty data folder, preserving the existing folder. Databases and backups do not carry a separate numeric schema version. With a new empty folder, configure the required account context and endpoints. 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 local settings page."
506
-
507
- The settings page lets the user:
508
-
509
- - save custom Sui gRPC and GraphQL endpoints;
510
- - restore the default Sui gRPC and GraphQL URLs;
511
- - clear active account read context;
512
- - reset logical local data;
513
- - export local data;
514
- - import replace-only local data.
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
- - Import preview validates the backup shape without contacting the imported endpoint.
519
- - Import accepts only the current backup format and schema identifier. Required settings and activity fields must be present; missing fields are not filled from defaults.
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 local settings page.
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 local Settings page and
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 local settings page, restore the default Sui gRPC URL or save a new endpoint, remove the override, and restart.
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.5.0 version --registry=https://registry.npmjs.org`.
779
+ `npm view @zktx.io/sui-mcp@0.6.1 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