@zktx.io/sui-mcp 0.6.2 → 0.8.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 +94 -52
- package/dist/adapters/adapterPromptSurfaces.js +1 -1
- package/dist/core/activity/localDataService.js +8 -21
- package/dist/core/activity/localDataValidation.js +22 -46
- package/dist/core/activity/sqliteAccountStore.js +46 -0
- package/dist/core/activity/sqliteActivityStore.js +65 -147
- package/dist/core/activity/sqliteActivityStoreSchema.js +42 -26
- package/dist/core/activity/transactionActivityService.js +2 -2
- package/dist/core/preferences/preferencesStore.js +2 -2
- package/dist/core/preferences/sqlitePreferencesRepository.js +10 -0
- package/dist/core/read/deepbookReadHelpers.js +1 -1
- package/dist/core/read/readResponseGuidance.js +6 -6
- package/dist/core/session/cardResult.js +41 -0
- package/dist/core/session/cardSession.js +1 -1
- package/dist/core/session/cardSessionStore.js +51 -19
- package/dist/core/session/chainAccounts.js +120 -0
- package/dist/core/session/sessionStore.js +4 -8
- package/dist/core/session/settingsFileProtocol.js +1 -1
- package/dist/core/session/settingsFileStore.js +3 -30
- package/dist/core/session/settingsOperation.js +27 -19
- package/dist/core/session/settingsWorkflow.js +161 -87
- package/dist/core/session/sqliteCardStore.js +34 -14
- package/dist/core/session/sqliteSessionStore.js +5 -5
- package/dist/core/session/sqliteSettingsWorkflowStore.js +135 -41
- package/dist/core/session/sqliteTransactionRequest.js +18 -0
- package/dist/core/session/sqliteWalletConnectionOperation.js +13 -0
- package/dist/core/session/sqliteWalletWorkflowStore.js +569 -333
- package/dist/core/session/status.js +2 -2
- package/dist/core/session/wait.js +6 -11
- package/dist/core/session/walletConnection.js +71 -46
- package/dist/core/session/walletConnectionOperations.js +24 -0
- package/dist/core/session/walletRuntime.js +7 -13
- package/dist/core/session/walletWorkflow.js +248 -99
- package/dist/core/session/workflowState.js +104 -38
- package/dist/core/session/workflowView.js +92 -101
- package/dist/mcp/activeAccountResponse.js +3 -0
- package/dist/mcp/prompts.js +10 -4
- package/dist/mcp/resources.js +1 -1
- package/dist/mcp/responseGuidance.js +7 -9
- package/dist/mcp/server.js +2 -2
- package/dist/mcp/serverInfo.js +21 -19
- package/dist/mcp/toolErrors.js +5 -3
- package/dist/mcp/toolNames.js +47 -46
- package/dist/mcp/tools/action/prepareSuiActionReview.js +13 -20
- package/dist/mcp/tools/read/deepbookReadTools.js +1 -1
- package/dist/mcp/tools/read/index.js +2 -2
- package/dist/mcp/tools/read/readToolHelpers.js +9 -7
- package/dist/mcp/tools/read/serverStatusTools.js +4 -5
- package/dist/mcp/tools/read/transactionActivityTools.js +3 -3
- package/dist/mcp/tools/session/executionResultTools.js +2 -2
- package/dist/mcp/tools/session/shared.js +2 -2
- package/dist/mcp/tools/session/statusTools.js +12 -10
- package/dist/mcp/tools/session/walletConnectionTools.js +29 -17
- package/dist/mcp/tools/settings/index.js +7 -4
- package/dist/mcp-app/account.html +7 -7
- package/dist/mcp-app/chart.html +3 -3
- package/dist/mcp-app/connect.html +13 -13
- package/dist/mcp-app/disconnect.html +3637 -0
- package/dist/mcp-app/disconnect.notices.txt +1480 -0
- package/dist/mcp-app/receipt.html +393 -393
- package/dist/mcp-app/review.html +459 -459
- package/dist/mcp-app/settings.html +7 -7
- package/dist/mcp-ui/contracts.js +3 -1
- package/dist/mcp-ui/tools.js +4 -4
- package/dist/runtime/application.js +3 -3
- package/dist/runtime/config.js +3 -6
- package/dist/runtime/localSettingsService.js +11 -8
- package/dist/runtime/shared/control.js +2 -2
- package/dist/runtime/smokeMainnetRead.js +23 -22
- package/dist/runtime/smokeReview.js +7 -7
- package/dist/runtime/start.js +1 -1
- package/dist/runtime/walletConnectTransport.js +16 -16
- package/dist/runtime/walletSdkChildRuntime.js +29 -12
- package/dist/runtime/walletSdkIpc.js +5 -4
- package/dist/runtime/walletSdkProcess.js +24 -8
- package/docs/AGENT_BEHAVIOR.md +149 -120
- package/docs/LOCAL_DB_ARCHITECTURE.md +103 -75
- package/docs/MCP_SETUP.md +365 -382
- package/docs/MCP_TOOLS.md +387 -271
- package/docs/SDK_API.md +23 -11
- package/docs/SIGNABLE_ADAPTER_CONTRACT.md +6 -6
- package/docs/TRANSACTION_ACTIVITY_LOG.md +11 -7
- package/docs/UTILITY_INDEX.md +66 -64
- package/docs/WALLET_CONNECTION.md +162 -166
- package/package.json +1 -1
- package/protocols/deepbook-margin.md +1 -1
- package/protocols/deepbook-v3.md +2 -2
package/docs/MCP_TOOLS.md
CHANGED
|
@@ -6,7 +6,7 @@ This document is the MCP API reference. It owns tool contracts, response fields,
|
|
|
6
6
|
|
|
7
7
|
It does not own installation steps or user-question playbooks. Installation and client setup live in `docs/MCP_SETUP.md`. User-question flows and response wording live in `docs/AGENT_BEHAVIOR.md`.
|
|
8
8
|
|
|
9
|
-
Tool names use
|
|
9
|
+
Tool names use `domain_verb_object`. A name does not grant authority; input schemas, card visibility and scoped permission checks define the allowed effects. Tools do not expose arbitrary shell commands, arbitrary Move calls or private-key handling.
|
|
10
10
|
|
|
11
11
|
The local stdio gateway forwards each request through authenticated internal
|
|
12
12
|
HTTP. A request body must fit within 4 MiB, including the entire MCP JSON-RPC
|
|
@@ -37,38 +37,38 @@ not grant input permission; a saved card is read through its bound resource.
|
|
|
37
37
|
|
|
38
38
|
| Tool | Status | Purpose |
|
|
39
39
|
| --- | --- | --- |
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `
|
|
62
|
-
| `
|
|
63
|
-
| `
|
|
64
|
-
| `
|
|
65
|
-
| `
|
|
40
|
+
| `read_get_server_status` | Implemented | Returns package, version, evidence policy, network, runtime, `implementedToolsCount`, resources, prompts, and tool implementation status. |
|
|
41
|
+
| `read_list_supported_protocols` | Implemented | Lists current mainnet protocol surfaces and support levels. |
|
|
42
|
+
| `read_list_deepbook_pools` | Implemented | Lists DeepBook mainnet pools from pinned `@mysten/deepbook-v3` constants. |
|
|
43
|
+
| `read_list_deepbook_tokens` | Implemented | Lists DeepBook mainnet tokens from pinned `@mysten/deepbook-v3` constants. |
|
|
44
|
+
| `read_inspect_deepbook_orderbook` | Implemented | Uses pinned DeepBook SDK read methods over Sui gRPC simulation reads with an internal sender placeholder; `ticks` is capped at 50. |
|
|
45
|
+
| `read_get_deepbook_mid_price` | Implemented | Returns a DeepBook pool mid price snapshot from pinned SDK simulation reads. |
|
|
46
|
+
| `read_get_deepbook_usdc_price_history` | Implemented | Returns DeepBookV3 official Indexer USDC candle evidence for a requested official interval. |
|
|
47
|
+
| `read_get_deepbook_usdc_price_at_time` | Implemented | Returns the DeepBookV3 official Indexer USDC candle for or nearest to one target UTC time. |
|
|
48
|
+
| `read_quote_deepbook_action` | Implemented | Quotes raw integer DeepBook quantities through pinned SDK transaction builders and raw `u64` simulation return values with an internal sender placeholder. |
|
|
49
|
+
| `read_quote_deepbook_display_amount` | Implemented | Converts an explicit display source amount through pinned DeepBook token units, then returns scoped display quote facts plus raw quote evidence. |
|
|
50
|
+
| `read_summarize_deepbook_account_inventory` | Implemented | Summarizes active-account DeepBook BalanceManager inventory through pinned SDK simulation reads. |
|
|
51
|
+
| `read_summarize_wallet_assets` | Implemented | Reads coin balances for an explicit address or the active account through Sui gRPC `client.core.listBalances`; accepts `cursor` for pagination. |
|
|
52
|
+
| `read_classify_wallet_assets` | Implemented | Classifies coin balances for an explicit address or the active account by balanceStatus and coin-balance roles; accepts `cursor` for pagination. |
|
|
53
|
+
| `read_list_settlement_asset_groups` | Implemented | Lists supported settlement asset groups derived from pinned mainnet SDK registries. |
|
|
54
|
+
| `read_summarize_settlement_asset_group_parity` | Implemented | Summarizes direct DeepBook mid-price parity across a supported settlement asset group against a declared measurement reference. |
|
|
55
|
+
| `read_preview_intent_evidence` | Implemented | Builds current wallet and DeepBook evidence for a natural-language settlement intent; not transaction building or signing. |
|
|
56
|
+
| `read_list_review_activity` | Implemented | Lists local Sui MCP review evidence for one account. |
|
|
57
|
+
| `read_summarize_review_funnel` | Implemented | Summarizes local review lifecycle counts, status distribution, and review timing. |
|
|
58
|
+
| `read_get_review_session_detail` | Implemented | Returns stored local evidence for one Sui MCP review session. |
|
|
59
|
+
| `read_inspect_sui_transaction` | Implemented | Looks up one Sui transaction digest and stores normalized facts only when the transaction sender or a returned balance-change owner matches a known local wallet. |
|
|
60
|
+
| `read_scan_sui_account_activity` | Implemented | Runs a bounded GraphQL activity scan for a known or explicit Sui account. |
|
|
61
|
+
| `read_summarize_sui_activity_scan` | Implemented | Runs a bounded Sui activity scan and returns requested-account facts plus deterministic normalized-fact analysis without full details. |
|
|
62
|
+
| `read_scan_sui_function_activity` | Implemented | Runs a bounded GraphQL scan for transactions the account sent that called one full `package::module::function`. |
|
|
63
|
+
| `read_summarize_sui_function_activity_scan` | Implemented | Runs the sent-function activity scan and returns requested-account facts plus deterministic normalized-fact analysis without full details. |
|
|
64
|
+
| `read_summarize_sui_account_activity` | Implemented | Summarizes stored normalized Sui activity facts from local SQLite. |
|
|
65
|
+
| `read_get_account_asset_timeline` | Implemented | Builds stored local account asset net-flow bars from normalized activity facts and optional DeepBook USDC token-denominated candle references. Not held balances or complete wallet history. |
|
|
66
66
|
|
|
67
67
|
Read-only tools split by address requirement.
|
|
68
68
|
|
|
69
69
|
Address-free reads do not need wallet connection. Examples include DeepBook pool lists, orderbook snapshots, mid price, and quote facts.
|
|
70
70
|
|
|
71
|
-
Current asset reads need either an explicit public Sui address supplied by the user or
|
|
71
|
+
Current asset reads need either an explicit public Sui address supplied by the user or the saved Sui read address with a usable current wallet connection. Stored activity and transaction-result reads retain their own read-context rules.
|
|
72
72
|
|
|
73
73
|
An explicit public-address read does not prove ownership, create active account context, or authorize active-account-only tools.
|
|
74
74
|
|
|
@@ -112,15 +112,15 @@ Token list entries are keyed by SDK symbol and include the pool keys that refere
|
|
|
112
112
|
|
|
113
113
|
Token entries include `decimals` derived only from pinned `mainnetCoins.scalar` when every scalar is a power of ten. If that invariant fails, the token registry tool fails closed instead of guessing.
|
|
114
114
|
|
|
115
|
-
`
|
|
115
|
+
`read_get_deepbook_mid_price` returns `priceDirection: "quote_per_base"`, so a `SUI_USDC` result is USDC per SUI.
|
|
116
116
|
|
|
117
117
|
The price is the pinned SDK `midPrice` result with `source.precision: "deepbook_v3_to_fixed_9_js_number"`.
|
|
118
118
|
|
|
119
119
|
The response includes `priceSemantics` and `userAnswerUse.cannotAnswer` for unsupported conclusions. It is a DeepBook pool snapshot, not a global market price, fiat USD cash-out estimate, external market-price conversion, USDC/USD peg assumption, quote-vs-mid slippage calculation, effective quote price, price-impact calculation, venue comparison, best-route claim, route recommendation, transaction-building input, signing data, signing readiness, P&L, or cost basis.
|
|
120
120
|
|
|
121
|
-
If the SDK returns a non-positive or non-finite mid price, both `
|
|
121
|
+
If the SDK returns a non-positive or non-finite mid price, both `read_get_deepbook_mid_price` and `read_inspect_deepbook_orderbook` fail closed with `quote_unavailable`.
|
|
122
122
|
|
|
123
|
-
`
|
|
123
|
+
`read_get_deepbook_usdc_price_history` returns DeepBookV3 official Indexer USDC candle evidence for a requested official interval.
|
|
124
124
|
|
|
125
125
|
Inputs require `start` and `end` as canonical ISO 8601 UTC timestamps and exactly one selector: `poolName`, `assetSymbol`, or `coinType`. Optional `interval` accepts only official Indexer interval values and defaults to `15m`.
|
|
126
126
|
|
|
@@ -148,7 +148,7 @@ USDC in this tool is the token-denominated quote asset for the returned official
|
|
|
148
148
|
|
|
149
149
|
This output is not a live quote, execution price, historical mid price, global market price, fiat USD cash-out estimate, external market-price conversion, USDC/USD peg assumption, route recommendation, best route, transaction-building input, signing data, signing readiness, P&L, tax evidence, cost basis, user-account transaction history, or user-account balance history.
|
|
150
150
|
|
|
151
|
-
`
|
|
151
|
+
`read_get_deepbook_usdc_price_at_time` uses the same official Indexer candle source and selector rules, but accepts one `targetTime` instead of a range. Optional `interval` defaults to `15m`. Optional `maxDistanceMinutes` limits how far from the target time the tool may select a candle.
|
|
152
152
|
|
|
153
153
|
Successful at-time responses return:
|
|
154
154
|
|
|
@@ -162,21 +162,21 @@ Successful at-time responses return:
|
|
|
162
162
|
|
|
163
163
|
`status: "no_price_in_search_window"` means no official Indexer candle was available inside the bounded search window. The tool does not synthesize a price, interpolate, carry forward a previous candle outside the search window, or perform an on-demand chain-history scan.
|
|
164
164
|
|
|
165
|
-
Internal read cards are opened with `
|
|
165
|
+
Internal read cards are opened with `ui_open_account`, `ui_open_receipt`, and `ui_open_chart`. They require a client that provides MCP Apps. A client without that UI receives `ui_unavailable`; ordinary MCP read tools remain available.
|
|
166
166
|
|
|
167
167
|
| Tool | Input and result |
|
|
168
168
|
| --- | --- |
|
|
169
|
-
| `
|
|
170
|
-
| `
|
|
171
|
-
| `
|
|
169
|
+
| `ui_open_account` | Optional explicit Sui address; otherwise use the saved Sui read address only when its wallet connection is currently usable. Missing input returns `input_required` with no card or source query. Shows name, address, coin totals, Display NFTs, other-object count, fetched time and enumeration limits; no address form. |
|
|
170
|
+
| `ui_open_receipt` | A transaction digest is required for a query. Omission returns `input_required` with no card or source query. The result view shows execution outcome, balance changes, net gas, sender, digest and fetched time; no hash form. No wallet or active account is needed. Normalized receipt evidence and private display metadata remain available under their existing boundaries. |
|
|
171
|
+
| `ui_open_chart` | Optional `poolName`, official Indexer interval, UTC `startTimeMs`/`endTimeMs`, and candle `limit`. Shows one selected USDC pool as candlesticks and volume. Range shortcuts fill these query fields. The initial time axis uses the saved request boundaries, with price-free whitespace at boundaries without candles; omitted boundaries use the returned data. |
|
|
172
172
|
|
|
173
173
|
A missing Account/Receipt target returns `data: { kind, status: "input_required", field, message }`, with no permission, card ID, saved resource or query. A host-rendered view shows the message without input controls or polling. Other errors remain errors.
|
|
174
174
|
|
|
175
|
-
A successful card-creating response contains a `cardId`, `kind`, `state`, `revision`, timestamps, original `input`, and available `data`. `inputRemainingMs` is computed by the backend; `pollAfterMs` controls sequential observation of a running read. Card `ready` permits a read selection, not signing or payment readiness. An initial supplied input uses the same admission path as a form submission. DB states are `ready`, `running`, and `closed`, with terminal reasons `completed`, `expired`, `failed`, or `
|
|
175
|
+
A successful card-creating response contains a `cardId`, `kind`, `state`, `revision`, timestamps, original `input`, and available `data`. `inputRemainingMs` is computed by the backend; `pollAfterMs` controls sequential observation of a running read. Card `ready` permits a read selection, not signing or payment readiness. An initial supplied input uses the same admission path as a form submission. DB states are `ready`, `running`, and `closed`, with terminal reasons `completed`, `expired`, `failed`, `server_restarted`, or `cancelled`.
|
|
176
176
|
|
|
177
177
|
When Chart pool choices cannot be prepared, the backend creates a `closed`/`failed` card with a readable error. No selection is admitted and no candles are requested. Reading that card again returns the stored failure; retrying the source requires an explicit request for a new card. A database access or write failure is a tool error, not a successfully stored failure card.
|
|
178
178
|
|
|
179
|
-
`
|
|
179
|
+
`ui_read_card` and `ui_submit_card` are app-only operations. Permission travels in UI metadata and is absent from model content and public saved resources. Input submission carries card ID, permission, expected revision and typed input. There is no first-view ownership or open/close operation. Recreated frames and chat returns read the same DB record. Identical duplicate input returns the stored request; conflicting input returns `card_conflict` and the authenticated current snapshot in error details. Invalid input returns `invalid_card_input` without consuming a valid selection. Invalid permission exposes neither current state nor private display data.
|
|
180
180
|
|
|
181
181
|
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.
|
|
182
182
|
|
|
@@ -210,8 +210,8 @@ current instruction or proof that a cancellation succeeded.
|
|
|
210
210
|
A failed Request delivery never triggers a repeated signature request. Same-card
|
|
211
211
|
reads still follow the existing expiry hints; a confirmed unadmitted stale review
|
|
212
212
|
may prepare new conditions, which require a new Request click. Failed initial
|
|
213
|
-
preparation can be retried for the
|
|
214
|
-
state check. A delayed action response does not clear an intervening read failure:
|
|
213
|
+
preparation can be retried for the Review's original wallet/account after another
|
|
214
|
+
state check, while that exact connection remains usable. A delayed action response does not clear an intervening read failure:
|
|
215
215
|
the card retains explicit state-read recovery until a current read succeeds.
|
|
216
216
|
|
|
217
217
|
Overlapping successful responses for the same card may arrive out of order.
|
|
@@ -219,7 +219,7 @@ A lower revision does not replace displayed facts or create a read error, and
|
|
|
219
219
|
required observations continue from the retained current state. Equal revisions
|
|
220
220
|
are validated rather than discarded. Actual error responses remain failures.
|
|
221
221
|
|
|
222
|
-
An unconfirmed Cancel review, wallet disconnection
|
|
222
|
+
An unconfirmed Cancel review, wallet disconnection or stop
|
|
223
223
|
request retains its error and pauses new automatic preparation/pairing in that
|
|
224
224
|
View. State reads still report already admitted work. Existing permitted actions
|
|
225
225
|
can be retried explicitly. An unconfirmed Cancel review followed by expired
|
|
@@ -231,12 +231,12 @@ pause does not claim that the backend or other frames stopped; new frames use
|
|
|
231
231
|
the actual saved state.
|
|
232
232
|
|
|
233
233
|
Connect eligibility and its SQLite admission use the same current-owner
|
|
234
|
-
connection
|
|
234
|
+
connection and SDK observation. An unexpired connected wallet, pending approval or pending disconnection
|
|
235
235
|
removes `connect` from `allowedActions` and prevents a second pairing even when
|
|
236
236
|
different cards race with current revisions. The losing card gets the existing
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
237
|
+
fixed no-request result, without another card's private QR or permission. It ends
|
|
238
|
+
without pairing; later availability requires a new prompted Connect card. A saved
|
|
239
|
+
result read cannot reopen it.
|
|
240
240
|
|
|
241
241
|
Failed attempts whose exact target or command authority has ended are shown as
|
|
242
242
|
earlier attempts, without a command retry or a saved-read button solely for that
|
|
@@ -244,12 +244,14 @@ old failure. The current stored result remains authoritative; natural completion
|
|
|
244
244
|
is not proof that an earlier stop was accepted. This includes failed automatic
|
|
245
245
|
connection/preparation and an unadmitted Request when its card or review expires.
|
|
246
246
|
Card action expiry does not end an already admitted request or result lookup.
|
|
247
|
-
For unadmitted disconnection
|
|
248
|
-
`
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
247
|
+
For an unadmitted disconnection, compare the attempted connection ID with the
|
|
248
|
+
current `connection` and confirmed SDK facts. A replacement connection cannot
|
|
249
|
+
be the target of that earlier attempt. Missing or unavailable observations alone
|
|
250
|
+
do not establish termination. A later state change does not revive the attempt
|
|
251
|
+
or clear its local automatic pause. A dedicated Disconnect card remains limited
|
|
252
|
+
to its original connection; a new purpose card is required for an operation on the current connection.
|
|
253
|
+
Once a result card has ended, request another lookup when needed through
|
|
254
|
+
`session_open_review_management` with the same `reviewSessionId` and `attemptId`.
|
|
253
255
|
It adds no signing authority and does not repeat the transaction.
|
|
254
256
|
|
|
255
257
|
A confirmation that joins an older in-flight read retains its obligation. After
|
|
@@ -258,25 +260,25 @@ an actual read failure instead requires explicit recovery. A valid current read
|
|
|
258
260
|
also clears an identified card's earlier opening-projection error. Neither path
|
|
259
261
|
repairs malformed permissions or changes the card's target.
|
|
260
262
|
|
|
261
|
-
Review displays
|
|
263
|
+
Review displays its exact account and wallet connection without a dropdown. Its current authenticated View executes the backend-projected `automaticAction` to prepare or renew stale verified conditions. A new Review uses the one current fixed Sui account and connection. Its public input has no account/connection selector. Disconnecting requires a new Review for the replacement connection. A failed computation requires explicit retry. `review_evidence_stale` distinguishes invalidated verified material from a failed quote/computation. Only Request wallet approval authorizes a signature request for the displayed revision. Result cards show the correct PTB, actual chain facts and one Details slide; Review keeps earlier estimates in its Reviewed conditions section.
|
|
262
264
|
|
|
263
265
|
Cards provide no clipboard actions or copy buttons. Their text remains readable and selectable. Chart values remain USDC-denominated source candles, not fiat USD, peg guarantees, route advice, portfolio valuation or P&L. Cards do not fetch chain/Indexer endpoints directly or poll completed results.
|
|
264
266
|
|
|
265
267
|
|
|
266
|
-
`
|
|
268
|
+
`read_quote_deepbook_action` and `read_quote_deepbook_display_amount` use the pinned DeepBook transaction builder quote functions.
|
|
267
269
|
|
|
268
270
|
Input kinds:
|
|
269
271
|
|
|
270
|
-
- `
|
|
271
|
-
- `
|
|
272
|
+
- `read_quote_deepbook_action`: `quantitySemantics.inputAmountKind: "raw_u64"`.
|
|
273
|
+
- `read_quote_deepbook_display_amount`: `inputAmountKind: "display_source_amount_converted_to_raw_u64"`.
|
|
272
274
|
|
|
273
275
|
Quote responses include `quantitySemantics` before the public quote values. The same response also includes `userAnswerUse.cannotAnswer` for unsupported conclusions such as payment coverage, shortfall contribution, route-dependent payment support, fiat USD cash-out, external market conversion or lookup, USDC/USD peg assumptions, P&L, cost basis, price impact, mid-price slippage, venue comparison, and route recommendation.
|
|
274
276
|
|
|
275
277
|
`canUseForPaymentAnswer: false`, `canUseForShortfallAnswer: false`, `doNotCombineWithPaymentAnswer: true`, and `paymentAnswerUseBlockedReason` mean quote output is a price estimate only. Do not add it to the payment amount, coverage status, or shortfall amount in a user answer.
|
|
276
278
|
|
|
277
|
-
`requiredPaymentAnswerTool: "
|
|
279
|
+
`requiredPaymentAnswerTool: "read_preview_intent_evidence"` and `requiredPaymentAnswerField: "responseSummary"` identify the tool and field to use for payment amount and shortfall answers.
|
|
278
280
|
|
|
279
|
-
The same response-local rule is also exposed as `userAnswerUse.followUp.tool: "
|
|
281
|
+
The same response-local rule is also exposed as `userAnswerUse.followUp.tool: "read_preview_intent_evidence"` and `userAnswerUse.followUp.answerFields: ["responseSummary"]`.
|
|
280
282
|
|
|
281
283
|
Raw quote source:
|
|
282
284
|
|
|
@@ -287,7 +289,7 @@ Raw quote source:
|
|
|
287
289
|
|
|
288
290
|
Returned raw fields are quote evidence only. They are not final min-out values, effective prices, price-impact calculations, venue comparisons, best-route claims, transaction-building inputs, signing data, or signing readiness.
|
|
289
291
|
|
|
290
|
-
`
|
|
292
|
+
`read_quote_deepbook_display_amount` accepts `amountDisplay` as the source coin input amount for the requested `direction`.
|
|
291
293
|
|
|
292
294
|
It does not accept output target amounts or inverse quote requests.
|
|
293
295
|
|
|
@@ -310,7 +312,7 @@ This quote is not a settlement asset choice.
|
|
|
310
312
|
|
|
311
313
|
### DeepBook account inventory
|
|
312
314
|
|
|
313
|
-
`
|
|
315
|
+
`read_summarize_deepbook_account_inventory` uses the saved Sui read address only when its current wallet connection is usable, to discover DeepBook BalanceManager addresses. It has no explicit public-address input. A missing or cleared read address returns `active_account_not_set`; a stored but ineligible address returns `input_invalid`. Both carry `details.reason: "connected_account_required"` and `details.followUp` naming `session_get_interaction_status` and its wallet availability, current connection, pending operations and `assetReadAccount`. A cleared read address is reported separately from disconnection and cannot be bypassed with a typed address. These responses do not request an address. Unavailable wallet operations return `wallet_unavailable` with the existing safe reason and recovery message.
|
|
314
316
|
|
|
315
317
|
With both `poolKey` and `managerAddress`, it checks pool account existence and returns display-like account inventory:
|
|
316
318
|
|
|
@@ -332,9 +334,9 @@ Returned `quantitySemantics.kind: "deepbook_display_number"` means these `number
|
|
|
332
334
|
|
|
333
335
|
They are not raw balances, route liquidity, funding sources, withdrawal readiness, transaction-building inputs, signing data, or signing readiness.
|
|
334
336
|
|
|
335
|
-
`
|
|
337
|
+
`read_summarize_wallet_assets` accepts an optional `account` input for public-address coin balance snapshots.
|
|
336
338
|
|
|
337
|
-
When `account` is omitted, it uses the same connection-qualified
|
|
339
|
+
When `account` is omitted, it uses the same connection-qualified read address as `session_get_interaction_status.assetReadAccount`. A missing or cleared read address returns `active_account_not_set` with `details.action: "provide_account"`; a stored but ineligible address returns `input_invalid` with `details.reason: "address_required"`. Both request an explicit address. SDK unavailability is not reported as absence of a stored account.
|
|
338
340
|
|
|
339
341
|
An explicit `account` read does not prove ownership, store the address as a known wallet, or create active account context.
|
|
340
342
|
|
|
@@ -356,7 +358,7 @@ If Sui metadata is unavailable, DeepBook-registered tokens can use pinned scalar
|
|
|
356
358
|
|
|
357
359
|
If no verified decimals exist, `unit.status` is `unavailable` and clients must not infer decimals from the token symbol.
|
|
358
360
|
|
|
359
|
-
`
|
|
361
|
+
`read_classify_wallet_assets` reuses the same explicit-address or active-account balance, unit, display, metadata cache behavior, and wallet snapshot quantity semantics as `read_summarize_wallet_assets`.
|
|
360
362
|
|
|
361
363
|
It wraps each coin balance in `classification.assetClass: "coin_balance"`, `classification.balanceStatus`, and role labels such as `gas_candidate` or `deepbook_registered`.
|
|
362
364
|
|
|
@@ -372,7 +374,7 @@ It also would not make them route liquidity, payment readiness, portfolio comple
|
|
|
372
374
|
|
|
373
375
|
The classifier does not create funding plans, choose routes, create review sessions, return transaction bytes, or produce signing material.
|
|
374
376
|
|
|
375
|
-
`
|
|
377
|
+
`read_list_settlement_asset_groups` returns the supported natural-language settlement asset groups.
|
|
376
378
|
|
|
377
379
|
In this release, `SUI_USD_SETTLEMENT_ASSETS` maps aliases such as dollar, dollars, USD, USD-like, stablecoin, stablecoins, and Korean dollar-word wording.
|
|
378
380
|
|
|
@@ -382,7 +384,7 @@ The asset group output includes included assets, excluded assets, source authori
|
|
|
382
384
|
|
|
383
385
|
This is static SDK registry evidence, not live liquidity, fiat USD support, payment execution, route recommendation, or signing readiness.
|
|
384
386
|
|
|
385
|
-
`
|
|
387
|
+
`read_summarize_settlement_asset_group_parity` returns internal parity evidence for a supported settlement asset group.
|
|
386
388
|
|
|
387
389
|
In this release it measures USD-denominated group assets against a declared reference asset. The default reference is USDC, but only as `measurement_reference_not_settlement_choice`.
|
|
388
390
|
|
|
@@ -398,19 +400,19 @@ Use `responseSummary` for questions about internal USD-denominated parity, highe
|
|
|
398
400
|
|
|
399
401
|
This tool is not settlement-token choice, fiat USD cash-out, external market lookup, USDC/USD peg assumption, payment readiness, best route, route recommendation, transaction building, signing readiness, P&L, or cost basis.
|
|
400
402
|
|
|
401
|
-
`
|
|
403
|
+
`read_preview_intent_evidence` accepts natural-language settlement evidence intents.
|
|
402
404
|
|
|
403
405
|
Use it this way:
|
|
404
406
|
|
|
405
407
|
- Coverage question: `intentKind: "cover_payment_like_amount"`, `denomination: "dollar"`, and `requiredDisplayAmount: "1000"`.
|
|
406
408
|
- AssetGroup-total question: `intentKind: "summarize_settlement_asset_group_balance"` and `denomination: "dollar"` without a target amount.
|
|
407
|
-
- Account scope: explicit public `account` or
|
|
409
|
+
- Account scope: explicit public `account` or the saved Sui read address with a usable current wallet connection.
|
|
408
410
|
|
|
409
411
|
For settlement-asset-only coverage, shortfall, and balance-total answers, use `responseSummary`.
|
|
410
412
|
|
|
411
413
|
The response also exposes `userAnswerUse.answerFields` with the response-specific answer path.
|
|
412
414
|
|
|
413
|
-
`responseSummary.answerCompleteness.answerCompleteFor` names the answer class. `responseSummary.answerCompleteness.requiredAnswerFields` names the fields required for that class. Do not call quote tools for the same question when `responseSummary.doNotCallQuoteToolsForThisQuestion` is `true`. If `toolAvailability.requiredToolsAvailable` is also `true`, answer from `responseSummary` and do not call `
|
|
415
|
+
`responseSummary.answerCompleteness.answerCompleteFor` names the answer class. `responseSummary.answerCompleteness.requiredAnswerFields` names the fields required for that class. Do not call quote tools for the same question when `responseSummary.doNotCallQuoteToolsForThisQuestion` is `true`. If `toolAvailability.requiredToolsAvailable` is also `true`, answer from `responseSummary` and do not call `read_classify_wallet_assets`, `read_summarize_wallet_assets`, or quote tools to look for other source tokens for that same coverage, balance-total, or shortfall question. If quote tools were already called, do not use quote output for the payment amount, coverage status, or shortfall.
|
|
414
416
|
|
|
415
417
|
`responseSummary` exposes:
|
|
416
418
|
|
|
@@ -452,7 +454,7 @@ Review activity tools read only local Sui MCP review evidence.
|
|
|
452
454
|
|
|
453
455
|
They are not complete wallet transaction history, gas history, P&L, or external wallet activity.
|
|
454
456
|
|
|
455
|
-
The optional `account` input is a read filter and does not change the
|
|
457
|
+
The optional `account` input is a read filter and does not change the saved read address. If `account` is omitted, the tools use stored read context without requiring a live wallet. If that context is absent or cleared, they return `active_account_not_set` with `details.action: "provide_account"`. Supply an explicit Sui address for the read; this error does not establish that the wallet is disconnected.
|
|
456
458
|
|
|
457
459
|
Successful review activity responses include `dataScope`, `accountSource`, `lowSampleWarning`, and `lowSampleThreshold`.
|
|
458
460
|
|
|
@@ -460,7 +462,7 @@ The current `lowSampleThreshold` is 5 local records, from `REVIEW_ACTIVITY_LOW_S
|
|
|
460
462
|
|
|
461
463
|
When `lowSampleWarning` is true, treat counts as sparse local evidence and avoid drawing behavior patterns.
|
|
462
464
|
|
|
463
|
-
For `
|
|
465
|
+
For `read_list_review_activity`, `dataScope.recordCount` is the full matching local review count.
|
|
464
466
|
|
|
465
467
|
The returned `activities` array can be shorter when `truncated.activities: true`.
|
|
466
468
|
|
|
@@ -468,25 +470,25 @@ The returned `activities` array can be shorter when `truncated.activities: true`
|
|
|
468
470
|
|
|
469
471
|
MCP error responses intentionally omit `structuredContent`; clients should read the JSON error payload from `content[0].text`.
|
|
470
472
|
|
|
471
|
-
`
|
|
473
|
+
`read_get_review_session_detail` transition rows include `isNoOp`.
|
|
472
474
|
|
|
473
475
|
A no-op transition is an observed lifecycle call whose stored status did not change, such as a repeated open or reconnect event.
|
|
474
476
|
|
|
475
|
-
`
|
|
477
|
+
`read_get_review_session_detail.userAnswerUse.answerFields` lists `execution` only when the response includes an `execution` object. If `execution` is absent and `userAnswerUse.cannotAnswer` includes `stored_review_execution_result_without_execution_field`, the response cannot answer a stored execution-result question.
|
|
476
478
|
|
|
477
479
|
Funnel summaries count distinct reviews and do not treat repeated no-op rows as additional completed steps.
|
|
478
480
|
|
|
479
481
|
Sui activity tools are user-requested read surfaces, not a background indexer.
|
|
480
482
|
|
|
481
|
-
Summary activity tools omit full transaction details by design. Digest-level detail is exposed by `
|
|
483
|
+
Summary activity tools omit full transaction details by design. Digest-level detail is exposed by `read_inspect_sui_transaction`.
|
|
482
484
|
|
|
483
485
|
Tool roles:
|
|
484
486
|
|
|
485
|
-
- `
|
|
486
|
-
- `
|
|
487
|
-
- `
|
|
488
|
-
- `
|
|
489
|
-
- `
|
|
487
|
+
- `read_inspect_sui_transaction` performs a single digest lookup.
|
|
488
|
+
- `read_scan_sui_account_activity` requests up to 100 account transactions for `affected` or `sent` relationship.
|
|
489
|
+
- `read_summarize_sui_activity_scan` reuses the live scan path and adds deterministic `analysis` without returning full `details`.
|
|
490
|
+
- `read_scan_sui_function_activity` and `read_summarize_sui_function_activity_scan` return transactions the selected account sent that called one full `package::module::function`.
|
|
491
|
+
- `read_summarize_sui_account_activity` reads only local SQLite stored facts.
|
|
490
492
|
|
|
491
493
|
This is a bounded provider page, not complete wallet history.
|
|
492
494
|
|
|
@@ -512,7 +514,7 @@ Stored summary boundaries:
|
|
|
512
514
|
- Stored summaries aggregate local account-level facts from digest lookups, account scans, or sent-function scans.
|
|
513
515
|
- Scan kind is internal provenance.
|
|
514
516
|
- Stored summary input does not accept `kind`, `function`, or function-history filters.
|
|
515
|
-
-
|
|
517
|
+
- `summary` contains the stored transaction counts.
|
|
516
518
|
- `analysis.overview.transactionCount` mirrors the stored count.
|
|
517
519
|
- `analysis.overview.analyzedTransactionCount` reports how many returned rows fed the richer aggregations.
|
|
518
520
|
- `transactionDetailAvailability` counts returned stored rows with `details`. `userAnswerUse.answerFields` includes `transactions[].compact` and `transactions[].details` only when `transactionDetailAvailability.allReturnedTransactionsHaveDetails: true`.
|
|
@@ -529,8 +531,9 @@ Coverage and pagination boundaries:
|
|
|
529
531
|
|
|
530
532
|
Local persistence boundaries:
|
|
531
533
|
|
|
532
|
-
-
|
|
533
|
-
-
|
|
534
|
+
- An omitted account uses the saved read address without a live-wallet requirement.
|
|
535
|
+
- A missing or cleared address returns `active_account_not_set` with `details.action: "provide_account"`; it does not establish wallet disconnection.
|
|
536
|
+
- An explicit account is allowed as a read filter and does not restore implicit context.
|
|
534
537
|
- The local DB stores only normalized facts for transactions tied to a known account by returned sender or balance-change owner facts.
|
|
535
538
|
- Function activity scans store only sender-matching rows for known accounts.
|
|
536
539
|
- Provider-returned account scan rows that cannot prove the local relation can appear in the current response but are counted as skipped for storage.
|
|
@@ -653,7 +656,7 @@ The local sender check is defensive. A non-conforming provider row is dropped fr
|
|
|
653
656
|
|
|
654
657
|
For a stored known-account scan, the dropped row contributes only to skipped counts. It is not treated as valid function history.
|
|
655
658
|
|
|
656
|
-
`
|
|
659
|
+
`read_scan_sui_account_activity` and `read_scan_sui_function_activity` return pagination and coverage fields:
|
|
657
660
|
|
|
658
661
|
- `hasMore`;
|
|
659
662
|
- `continuationCursor`;
|
|
@@ -671,22 +674,22 @@ Provider cursors are opaque and best-effort. Cursor rejection returns a safe err
|
|
|
671
674
|
|
|
672
675
|
Tool source comparison:
|
|
673
676
|
|
|
674
|
-
- `
|
|
677
|
+
- `read_scan_sui_account_activity`, `read_scan_sui_function_activity`, `read_summarize_sui_activity_scan`, and `read_summarize_sui_function_activity_scan` return live GraphQL row facts.
|
|
675
678
|
- Those live rows include requested-account fields, transaction context, and `detailLookup` references but no full `details`.
|
|
676
679
|
- The summary tools also return deterministic `analysis`.
|
|
677
|
-
- `
|
|
678
|
-
- `
|
|
679
|
-
- `
|
|
680
|
+
- `read_inspect_sui_transaction` is the full normalized detail path for a specific digest.
|
|
681
|
+
- `read_summarize_sui_account_activity` reads only stored normalized facts from local SQLite.
|
|
682
|
+
- `read_get_account_asset_timeline` reads only stored normalized facts from local SQLite, then can attach DeepBookV3 official Indexer USDC candle references for supported USDC-quoted assets.
|
|
680
683
|
|
|
681
|
-
If stored or summary details are missing or capped, use the digest metadata with `
|
|
684
|
+
If stored or summary details are missing or capped, use the digest metadata with `read_inspect_sui_transaction` instead of inferring missing calls, balances, objects, events, gas, or errors.
|
|
682
685
|
|
|
683
686
|
### Stored Account Asset Timeline
|
|
684
687
|
|
|
685
|
-
`
|
|
688
|
+
`read_get_account_asset_timeline` returns a stored local account asset-flow timeline for one account and UTC range.
|
|
686
689
|
|
|
687
690
|
Inputs:
|
|
688
691
|
|
|
689
|
-
- `account` is optional. If omitted, the tool uses
|
|
692
|
+
- `account` is optional. If omitted, the tool uses saved Sui read context with `accountSource: "active_account_context"`, without requiring a live wallet. Missing or cleared context returns `active_account_not_set` with `details.action: "provide_account"`; supply an explicit Sui address for this read. That error does not establish wallet disconnection. Supplying an explicit public account does not create saved read context or prove ownership.
|
|
690
693
|
- `start` and `end` are ISO 8601 UTC timestamps. The requested range is half-open: `start` is included and `end` is excluded.
|
|
691
694
|
- `interval` is optional and uses the same official Indexer interval values as DeepBook USDC price tools. Omitted `interval` uses `15m`.
|
|
692
695
|
|
|
@@ -694,7 +697,7 @@ Output fields:
|
|
|
694
697
|
|
|
695
698
|
- `coverage` describes whether stored scan rows prove the requested range is complete, partial, or absent.
|
|
696
699
|
- `status: "account_not_known"` means the explicit account is not a known local wallet in the local activity store. In that status the tool does not return `scanNeeded`.
|
|
697
|
-
- `scanNeeded`, when present, names `
|
|
700
|
+
- `scanNeeded`, when present, names `read_scan_sui_account_activity` as the bounded scan tool that can gather local evidence for a known account.
|
|
698
701
|
- `netFlowBars` are observed account-scoped raw token balance-change bars from stored normalized activity rows.
|
|
699
702
|
- `balanceStatus` is currently `unavailable_no_balance_anchor`, and `balanceBars` is empty. Do not present net-flow bars as held balances.
|
|
700
703
|
- `sourceTransactions` reports how many stored rows were read, returned, truncated, and detail-covered.
|
|
@@ -708,19 +711,22 @@ This tool does not run scans, start a background indexer, create a price cache,
|
|
|
708
711
|
|
|
709
712
|
| Tool | Status | Purpose |
|
|
710
713
|
| --- | --- | --- |
|
|
711
|
-
| `
|
|
712
|
-
| `
|
|
713
|
-
|
|
714
|
-
`
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
with `
|
|
718
|
-
`
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
714
|
+
| `action_start_review` | Internal swap Review card | Creates a local review session and internal Review card for a supported swap action proposal. Account-bound DeepBook reviews may build local unsigned transaction material inside the review server, internally bind a Sui transaction digest to it, and derive object ownership, quote/policy, human-readable review, review-time simulation, and PTB visualization evidence. When every required evidence stage completes, an explicit Review card selection can admit backend-mediated WalletConnect approval for that exact transaction. The MCP tool does not return transaction bytes, signing data, or signing readiness. |
|
|
715
|
+
| `action_create_proposal_review` | Non-signable review | Creates a local review session and internal Review card from an untrusted structured external proposal. It does not return transaction bytes. |
|
|
716
|
+
|
|
717
|
+
`action_start_review` accepts only `intent` and verifies the requested adapter
|
|
718
|
+
before resolving the current connection's fixed Sui address. Public `account` or
|
|
719
|
+
`connectionId` selectors are not accepted. No usable current target returns
|
|
720
|
+
`active_account_not_set` with `details.reason: "connection_required"`. An unexpected
|
|
721
|
+
retained SDK session returns `input_invalid` with
|
|
722
|
+
`details.reason: "connection_state_unconfirmed"`; inspect connection status and
|
|
723
|
+
remove the unwanted session in the wallet app. An unavailable service returns
|
|
724
|
+
`wallet_unavailable`. These errors create no empty Review or wallet effect.
|
|
725
|
+
The accepted account and connection are fixed in the initial card, before
|
|
726
|
+
preparation. Preparation, display and retry retain that same target, including
|
|
727
|
+
when it becomes unavailable or its saved read address is cleared.
|
|
728
|
+
|
|
729
|
+
`action_start_review` accepts a protocol-neutral swap `intent`
|
|
724
730
|
(`type: "swap"`, `from.symbol`, `from.amount`, `to.symbol`,
|
|
725
731
|
`maxSlippageBps`, optional `protocol`). The optional `protocol` field carries
|
|
726
732
|
the protocol slug from the adapter registry (the same slug vocabulary as the
|
|
@@ -731,7 +737,7 @@ omitted; once several protocols support the same action the tool returns
|
|
|
731
737
|
`intent.protocol` set - the server never picks a venue silently. An unknown
|
|
732
738
|
slug returns `reason: "unknown_protocol"` with the available slugs.
|
|
733
739
|
|
|
734
|
-
`
|
|
740
|
+
`action_create_proposal_review` accepts `proposal` with `type:
|
|
735
741
|
"payment"` or `type: "sui_action"`.
|
|
736
742
|
|
|
737
743
|
Common required fields are `id`, `source`, `network: "sui:mainnet"`,
|
|
@@ -792,7 +798,7 @@ cards display those facts; neither the model nor the card receives bytes or
|
|
|
792
798
|
signatures. Ordinary MCP calls cannot authorize signing or submission.
|
|
793
799
|
|
|
794
800
|
After the wallet account is bound to a supported swap review session, the
|
|
795
|
-
Review card and `
|
|
801
|
+
Review card and `session_get_review_status` may show protocol-specific quote
|
|
796
802
|
evidence and review-state checks for:
|
|
797
803
|
|
|
798
804
|
- resolved DeepBook direct pool;
|
|
@@ -819,8 +825,9 @@ Completed stages are review progress only. If
|
|
|
819
825
|
`transaction_material_build_or_verify` is completed, it means the local review
|
|
820
826
|
server built unsigned transaction material and kept the bytes internal. If
|
|
821
827
|
`digest_commitment` is completed, it means the server internally derived a Sui
|
|
822
|
-
transaction digest from that stored material; the
|
|
823
|
-
|
|
828
|
+
transaction digest from that stored material; the schema-validated transaction-review contract may expose its commitment
|
|
829
|
+
hash, while transaction bytes remain private. The hash is not signing authority
|
|
830
|
+
or a wallet handoff. Missing stages explain why the review
|
|
824
831
|
remains blocked. This lifecycle covers review evidence producer stages through
|
|
825
832
|
review-time simulation. Wallet requests, signature verification, submission and
|
|
826
833
|
chain observation are platform responsibilities after review, separate from
|
|
@@ -943,28 +950,95 @@ It is not a signing readiness signal. Review-state checks are pre-signing review
|
|
|
943
950
|
|
|
944
951
|
| Tool | Input and result |
|
|
945
952
|
| --- | --- |
|
|
946
|
-
| `
|
|
947
|
-
| `
|
|
948
|
-
| `
|
|
949
|
-
| `
|
|
950
|
-
| `
|
|
951
|
-
| `
|
|
952
|
-
| `
|
|
953
|
-
| `
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
`
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
operation
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
953
|
+
| `session_open_wallet_connection_card` | Opens one Connect card with empty input. Authenticated View confirmation admits its one pairing. A current session or unsettled SDK work prevents another pairing. |
|
|
954
|
+
| `session_open_wallet_disconnection_card` | Opens one Disconnect card bound to the exact current manageable session. The user confirms removal or cancels this card. It never starts pairing or targets a replacement session. |
|
|
955
|
+
| `session_get_wallet_connection_card` | Reads one `cardId`, returning `{card, operation, walletAvailability, evaluatedAt}` without UI authority or QR data. `card` is the stored snapshot; `operation` is that card's exact current public journal entry or null before admission. |
|
|
956
|
+
| `session_wait_wallet_connection_card` | Uses `cardId` and an optional timeout up to 55 seconds. Returns the same envelope plus `waitOutcome`, when that exact operation and SDK settlement end, no operation is admitted, service is unavailable, or the bounded wait ends. It accepts no operation selector. |
|
|
957
|
+
| `session_open_review_management` | Opens management for exact `reviewSessionId` + `attemptId`; no refresh or signing authority. |
|
|
958
|
+
| `session_get_interaction_status` | Stored `activeAccount`, current `connection`, optional `pendingOperation`, `assetReadAccount`, wallet availability, and bounded pending connection/review lists. `assetReadAccount` is `available` with an account only when the saved Sui read address has a usable current connection; otherwise `address_required`. Stored `activeAccount` does not prove a live connection. `address_required` reports that no implicit default is available; it does not add an address input to connected-account-only tools. When wallet availability is unavailable, connection rows are last recorded facts, not proof of presence or absence. |
|
|
959
|
+
| `session_get_review_status` | Current preparation status, review revision, optional current request and chain execution. |
|
|
960
|
+
| `session_get_execution_result` | Observes the current explicitly referenced attempt and may read its known digest; never submits again. |
|
|
961
|
+
| `session_wait_execution_result` | Bounded wait on the same request, separate from its signing and chain-observation deadlines. |
|
|
962
|
+
|
|
963
|
+
`pendingWalletConnections.items[]` identifies each admitted `operationId`, its
|
|
964
|
+
card and connection. Status is `awaiting_approval`, `disconnect_pending` or
|
|
965
|
+
`cleanup_pending`. Unadmitted cards are not pending effects. These statuses
|
|
966
|
+
describe management work, not a new wallet connection state. Interaction status has an optional top-level `pendingOperation` describing the current connection's
|
|
967
|
+
outstanding operation. It contains `operationId`, `action`
|
|
968
|
+
(`connect` or `disconnect`), `status` (`running`, `completed`, `failed` or
|
|
969
|
+
`stopped`) and `settlementPending`. It is derived from that connection's existing
|
|
970
|
+
operation when it is running or still has pending SDK work; it is not another
|
|
971
|
+
operation or authorization. Connection `status` remains the last confirmed
|
|
972
|
+
connection fact. Pending work makes that connection unavailable for a new review
|
|
973
|
+
or signature request. `observe` follows the operation's remaining progress and
|
|
974
|
+
wallet availability. SDK settlement remains observable through get/wait independently of the immutable
|
|
975
|
+
terminal card result. Unavailable progress preserves the operation and its last
|
|
976
|
+
recorded connection state. Repeating the same selection does not send another
|
|
977
|
+
SDK request.
|
|
978
|
+
|
|
979
|
+
Match `pendingOperation.operationId` to the one operation fixed to that card,
|
|
980
|
+
rather than inferring ownership from the action name. Closed card data is a
|
|
981
|
+
recorded snapshot; the get/wait envelope's `operation` reports current settlement.
|
|
982
|
+
A running disconnect is disconnecting; a completed disconnect is disconnected
|
|
983
|
+
with any outstanding cleanup reported separately. It is not another connection
|
|
984
|
+
request, and pending cleanup does not turn completion into failure or reopen a
|
|
985
|
+
cancelled card.
|
|
986
|
+
|
|
987
|
+
`connection.sessionPresence` reports whether the current connection has an SDK
|
|
988
|
+
session: `present`, `absent`, `unusable`, or `unconfirmed`. Absence includes an
|
|
989
|
+
exact current-session absence observation or a settled attempt without an approved
|
|
990
|
+
session or recorded session reference. The latter requires confirmed current-run
|
|
991
|
+
ownership, no pending connection work and no unrecorded SDK session. A missing
|
|
992
|
+
observation for a recorded session is not absence. Unavailable service or an
|
|
993
|
+
unconfirmed current-run observation is `unconfirmed`, never evidence of absence.
|
|
994
|
+
This field does not change the saved connection status or grant input authority.
|
|
995
|
+
A failed or expired connection may still need explicit disconnection. Once
|
|
996
|
+
absence is confirmed and cleanup ends, the user can request a new Connect card.
|
|
997
|
+
An ended card never offers a new connection. An existing Review bound to the ended connection requires a new Review
|
|
998
|
+
after reconnection. A declined connection alone does not require a transaction
|
|
999
|
+
Review. Stored connection messages in Details are historical facts, not current
|
|
1000
|
+
recovery instructions.
|
|
1001
|
+
|
|
1002
|
+
Live card data is purpose-specific. Connect includes fixed `requestedChains`,
|
|
1003
|
+
its optional `operation` and permitted initial `automaticAction`. Disconnect
|
|
1004
|
+
includes its exact `connection` confirmation and optional `operation`. Review
|
|
1005
|
+
includes `review`, `reviewTarget`, optional exact `request`/receipt facts, and
|
|
1006
|
+
permitted preparation action. All expose `allowedActions`, progress, service
|
|
1007
|
+
availability and `nextStep` (`kind`, optional safe `message`/`reason`). This is
|
|
1008
|
+
advisory guidance, never authorization. Read-address overview and current
|
|
1009
|
+
`pendingOperation` belong to interaction status, not the live card payloads.
|
|
1010
|
+
|
|
1011
|
+
| `nextStep.kind` | Meaning |
|
|
1012
|
+
| --- | --- |
|
|
1013
|
+
| `none` | No additional business recovery step is required by this evaluation. |
|
|
1014
|
+
| `wait` | Service startup or existing wallet/account work must finish before continuing. |
|
|
1015
|
+
| `check_status` | Read the indicated existing request or session; no new wallet effect is authorized. |
|
|
1016
|
+
| `open_settings` | Open the named Settings section for configuration or explicit service recovery. |
|
|
1017
|
+
| `request_disconnect` | Ask for a new exact-target Disconnect card before changing the connection. |
|
|
1018
|
+
| `request_review` | Ask for a new transaction Review; the old target cannot be replaced. |
|
|
1019
|
+
|
|
1020
|
+
The backend's message identifies the applicable condition. A saved preparation
|
|
1021
|
+
error does not override this guidance. Reasons such as `operation_busy`,
|
|
1022
|
+
`connection_state_unconfirmed`, `connection_target_changed`,
|
|
1023
|
+
`wallet_networks_required` and `no_session_to_disconnect` describe the particular
|
|
1024
|
+
refusal; they grant no input or effect authority. Service `initializing` and
|
|
1025
|
+
`recovering` mean wait, not another restart request.
|
|
1026
|
+
|
|
1027
|
+
A closed wallet card has no operation copy. Optional `result.pendingWork` records
|
|
1028
|
+
`approval_response`, `session_removal` or `session_status` at closure. Normal
|
|
1029
|
+
success does not create a recovery obligation from callback bookkeeping.
|
|
1030
|
+
Exact-operation get/wait still reports current `settlementPending`, including
|
|
1031
|
+
failed bookkeeping writes, without changing the card or replaying effects.
|
|
1032
|
+
A Connect card that sends no request has no network approval result or wallet
|
|
1033
|
+
name copied from another connection.
|
|
1034
|
+
|
|
1035
|
+
Every Connect and Disconnect terminal snapshot is address-free from the moment
|
|
1036
|
+
it is recorded: no address, account, address-bearing chain states or QR payload
|
|
1037
|
+
is included. Its result, recorded time, wallet name and network approval statuses
|
|
1038
|
+
stay fixed. Current `connection.chainResults` belong to interaction status;
|
|
1039
|
+
stored history and transaction targets keep their exact addresses.
|
|
1040
|
+
|
|
1041
|
+
`session_get_interaction_status` reconciles stored connections against current SDK sessions before reading dependent review/request facts. This can record a connection change and invalidate a review or interrupt an unsubmitted request under the existing rules. It preserves fixed addresses, read-address suppression and submitted chain results; it does not start pairing, SDK disconnect, signing or submission.
|
|
968
1042
|
|
|
969
1043
|
When a disconnect callback ended but its completion write failed, current reads
|
|
970
1044
|
reconcile that stored operation without another SDK disconnect. If the SDK is
|
|
@@ -998,8 +1072,9 @@ neither a completed result nor a wait timeout. A command already committed
|
|
|
998
1072
|
before its response fails remains recorded and is recovered by reading it.
|
|
999
1073
|
|
|
1000
1074
|
Wallet startup and restoration are asynchronous dependencies of the parent
|
|
1001
|
-
service. Connect
|
|
1002
|
-
|
|
1075
|
+
service. Connect can explain service initialization or failure; Disconnect
|
|
1076
|
+
creation instead returns its applicable availability error without issuing a
|
|
1077
|
+
card. Neither card provides service-restart input. Ordinary evidence
|
|
1003
1078
|
and saved-result reads do not await the SDK. The package supplies its project
|
|
1004
1079
|
identifier; these failures do not ask the user for a project ID. SDK error bodies
|
|
1005
1080
|
and private configuration values are not returned.
|
|
@@ -1012,19 +1087,16 @@ Review status is preparation state (`proposed`, `awaiting_wallet`,
|
|
|
1012
1087
|
otherwise the preparation state. The `user_action_required` category and
|
|
1013
1088
|
`pollingHint.userActionRequiredStatuses` identify states where the model-facing
|
|
1014
1089
|
wait returns; they do not require a manual preparation click. A permitted live
|
|
1015
|
-
card can prepare automatically, while
|
|
1016
|
-
can require
|
|
1017
|
-
|
|
1018
|
-
A
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
read context alone does not revoke an already valid A review's signing choice.
|
|
1026
|
-
Once a signing request consumes its card, retrying needs a new Review; a
|
|
1027
|
-
management card only refers to its existing exact attempt.
|
|
1090
|
+
card can prepare automatically, while a failed update
|
|
1091
|
+
can require an explicit retry. Preparation is not an already pending wallet signature.
|
|
1092
|
+
|
|
1093
|
+
A Review keeps its exact account and connection. Clearing the saved read address does not change its target. Disconnecting means
|
|
1094
|
+
a replacement connection needs a new Review. A new target requires
|
|
1095
|
+
a new Review; another connection with the same address cannot take over.
|
|
1096
|
+
Preparation and signing still require that original binding's current grant,
|
|
1097
|
+
method/event scope, revision and material. Saved preparation errors remain
|
|
1098
|
+
separate from current eligibility. After signing admission, a management card
|
|
1099
|
+
only refers to its exact attempt and grants no new preparation or signature.
|
|
1028
1100
|
|
|
1029
1101
|
Only `completed` has `executionResult`, with `attemptId`, review/plan IDs,
|
|
1030
1102
|
`status: success | failure`, the exact digest, verified `chainReceipt` and time.
|
|
@@ -1032,7 +1104,10 @@ Only failed chain effects have `failureReason: chain_execution_failed`. Wallet
|
|
|
1032
1104
|
rejection, local timeout, unavailable receipts and lost submission responses
|
|
1033
1105
|
never fabricate a chain failure. An unknown result retains the digest for later
|
|
1034
1106
|
reads. An explicit user stop after submission stops observation, not an on-chain
|
|
1035
|
-
transaction.
|
|
1107
|
+
transaction. Accepted `stop_waiting` also closes that card's business input;
|
|
1108
|
+
a new `session_open_review_management` card may explicitly inspect the same
|
|
1109
|
+
attempt later. A duplicate stop on the cancelled card does not stop work started
|
|
1110
|
+
from a newer card. Wallet connection changes or a requested disconnect stop pending
|
|
1036
1111
|
submission permission with their own recorded reason; they do not claim that the
|
|
1037
1112
|
user stopped waiting or that disconnection already succeeded. After submission,
|
|
1038
1113
|
those connection events preserve independent observation of the same digest,
|
|
@@ -1043,7 +1118,7 @@ The original request's stored deadlines are unchanged by a management card.
|
|
|
1043
1118
|
A new signature requires a newly reviewed revision and explicit selection.
|
|
1044
1119
|
Identical duplicate selections return the admitted attempt; no response-loss
|
|
1045
1120
|
path replays a financial request. Model tools may open/read cards; only scoped
|
|
1046
|
-
app-only `
|
|
1121
|
+
app-only `ui_act_card` performs a user selection. UI permission and pairing QR
|
|
1047
1122
|
travel in private metadata. Bytes/signatures never reach the card or model.
|
|
1048
1123
|
|
|
1049
1124
|
Connection observation uses 5 seconds and request observation 3 seconds.
|
|
@@ -1067,80 +1142,70 @@ for the last confirmed local SDK observation. Ordinary reads do not perform a
|
|
|
1067
1142
|
fresh SDK check or prove that the wallet app is online. Implicit asset reads
|
|
1068
1143
|
require an available service and a usable observation in that same run.
|
|
1069
1144
|
|
|
1070
|
-
Wallet-dependent app inputs (`connect`, `disconnect`, `
|
|
1071
|
-
`
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
`
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
`
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
qualifies
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
`
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
These fields are emitted together for current wallet eligibility. Independent
|
|
1136
|
-
historical or completed-result reads may omit them; omission does not establish
|
|
1137
|
-
current eligibility. Recorded `connections` and `activeAccount` remain facts,
|
|
1138
|
-
including expired records and a stored default that cannot currently be used.
|
|
1139
|
-
Views consume the published selection instead of counting recorded rows or
|
|
1140
|
-
using their own clock. An expired record may remain a disconnection target;
|
|
1141
|
-
expiry alone does not confirm remote removal. Final admission checks current
|
|
1142
|
-
backend facts again. Changing a read default never changes an existing review's
|
|
1143
|
-
account or grants new authority to an admitted transaction.
|
|
1145
|
+
Wallet-dependent app inputs (`connect`, `disconnect`, `prepare_review`,
|
|
1146
|
+
`request_signature`) carry the displayed `walletRunId`. A stale run cannot be
|
|
1147
|
+
transferred to a replacement SDK. Exact account, chain, method, grant revision
|
|
1148
|
+
and stored request authority are rechecked at admission. `acceptedWalletRunId`
|
|
1149
|
+
is a stored fact, not new permission.
|
|
1150
|
+
|
|
1151
|
+
In `session_get_interaction_status`, `requestedChains` is the Settings scope for new connections. Singular `connection`
|
|
1152
|
+
publishes its frozen requested scope and `chainResults`: exactly one result per
|
|
1153
|
+
requested chain, either `bound` with an address, `not_approved`, `multiple_accounts`
|
|
1154
|
+
or `invalid_response`. One valid distinct address binds automatically. There is
|
|
1155
|
+
no account selector. Only that chain becomes unavailable on multiple/invalid data.
|
|
1156
|
+
Later observations cannot change those results. Current `grants`, `grantRevisions`
|
|
1157
|
+
and `chainStates` describe availability separately; methods remain account-local.
|
|
1158
|
+
Sui actions require the fixed Sui address and exact Sui method/event scope.
|
|
1159
|
+
Ethereum/Solana address fields do not provide financial authority.
|
|
1160
|
+
|
|
1161
|
+
Both wallet gateways accept empty input. Disconnect creation checks the current
|
|
1162
|
+
exact session before issuing any card or permission. No recorded session or a
|
|
1163
|
+
confirmed absent settled session returns `input_invalid` with reason
|
|
1164
|
+
`no_session_to_disconnect`; unconfirmed or unrecorded presence uses
|
|
1165
|
+
`connection_state_unconfirmed`, and outstanding SDK work uses `operation_busy`.
|
|
1166
|
+
An unavailable service returns `wallet_unavailable` with its actual cause.
|
|
1167
|
+
These refusals create no card, operation or wallet effect. A present or unusable
|
|
1168
|
+
manageable session is fixed to the new Disconnect card; admission rechecks its
|
|
1169
|
+
run and impact. Changing wallet, address or approved network scope requires
|
|
1170
|
+
confirmed disconnection and a new explicit connection.
|
|
1171
|
+
|
|
1172
|
+
Connect fixes requested networks and expected connection identity at creation.
|
|
1173
|
+
A confirmed change before admission closes it failed, sends no wallet request,
|
|
1174
|
+
and asks for a new card; restoring the earlier Settings value does not reopen it.
|
|
1175
|
+
Transient service initialization is not proof of such a change.
|
|
1176
|
+
|
|
1177
|
+
`reviewTarget` retains the Review's original account and connection before,
|
|
1178
|
+
during and after preparation, even when that target is no longer usable.
|
|
1179
|
+
`allowedActions` lists currently permitted app input, computed for that exact
|
|
1180
|
+
target. A live Review's `nextStep` names the applicable recovery action and safe
|
|
1181
|
+
message; the view does not infer it from another connection's status. A replacement
|
|
1182
|
+
connection is never substituted for the original Review target.
|
|
1183
|
+
The interaction-status field `assetReadAccount` independently describes the fixed Sui read address as
|
|
1184
|
+
`available` with `account`, or `address_required`. Reason `read_address_cleared`
|
|
1185
|
+
means the user cleared the saved read address in Settings; this does not change
|
|
1186
|
+
fixed addresses or financial targets. `account_get_active_account` reports stored
|
|
1187
|
+
read context, not current eligibility. Restored public accounts never restore
|
|
1188
|
+
wallet or card authority.
|
|
1189
|
+
|
|
1190
|
+
The status overview returns `connection: null` when no current connection is recorded.
|
|
1191
|
+
`canDisconnect` qualifies the current exact nonpending cleanup target, including
|
|
1192
|
+
terminal or older-generation records whose SDK session is present/unusable.
|
|
1193
|
+
Current-run confirmed absence and ended I/O permit a new explicit Connect; a
|
|
1194
|
+
historical failed/expired row alone is not absence evidence. Recovery can transfer
|
|
1195
|
+
cleanup ownership without restoring usage or old card/signing authority.
|
|
1196
|
+
|
|
1197
|
+
In interaction status, `connectionReconciliationRequired: true` means current SDK presence has no approved
|
|
1198
|
+
product target after pending registration/cleanup. New pairing and financial
|
|
1199
|
+
inputs are blocked; saved evidence remains readable. Unrecorded sessions are not
|
|
1200
|
+
adopted by address or ordering. Remove unwanted retained sessions in the wallet
|
|
1201
|
+
app, then check again. Restarting inspects but neither approves nor removes them.
|
|
1202
|
+
Private topics are not exposed. An already admitted transaction still uses its
|
|
1203
|
+
original exact grant and submission checks.
|
|
1204
|
+
|
|
1205
|
+
These are backend-evaluated facts, not View row counts or clock decisions.
|
|
1206
|
+
`allowedActions` is not model authority. Scoped UI permission and the exact target
|
|
1207
|
+
remain required at atomic admission. Reconnection cannot retarget a Review or an
|
|
1208
|
+
admitted transaction.
|
|
1144
1209
|
|
|
1145
1210
|
Views additionally know whether their own confirmation read or command response
|
|
1146
1211
|
is pending. They show neutral communication guidance without synthesizing DB
|
|
@@ -1189,7 +1254,9 @@ as uncertain without resending them. Neither event establishes cancellation or
|
|
|
1189
1254
|
chain failure, and verified chain outcomes remain unchanged.
|
|
1190
1255
|
|
|
1191
1256
|
Wallet-dependent commands rejected for dependency failure use the error kind
|
|
1192
|
-
`wallet_unavailable`, with
|
|
1257
|
+
`wallet_unavailable`, with the actual safe `walletAvailability` and message.
|
|
1258
|
+
An unavailable service includes its recorded `reason`; initializing/recovering
|
|
1259
|
+
states have no failure reason, so none is invented in error details. Invalid input and domain
|
|
1193
1260
|
conflicts retain their own meaning. Validated app actions can also return a
|
|
1194
1261
|
current snapshot with `error.code: "wallet_unavailable"`; invalid permissions
|
|
1195
1262
|
and storage failures do not receive a success snapshot. Review creation can
|
|
@@ -1210,13 +1277,13 @@ retained when a later submission-admission check fails.
|
|
|
1210
1277
|
|
|
1211
1278
|
### Stored review activity
|
|
1212
1279
|
|
|
1213
|
-
`
|
|
1280
|
+
`read_list_review_activity` accepts account/time/limit and independent ANDed
|
|
1214
1281
|
`reviewStatus`, `requestStatus`, `executionStatus` filters. One row represents
|
|
1215
1282
|
one review session and its explicit current attempt, including optional
|
|
1216
1283
|
`currentAttemptId`, `reviewRevision`, `transactionDigest`, request and chain
|
|
1217
1284
|
status. `dataScope.recordCount` counts the complete filtered scope before limit.
|
|
1218
1285
|
|
|
1219
|
-
`
|
|
1286
|
+
`read_summarize_review_funnel` keeps the session denominator. `reviewStatusCounts`
|
|
1220
1287
|
is the preparation distribution; `requestStatusCounts` is a list of
|
|
1221
1288
|
`{ requestStatus, count }` entries (including zero counts); `executionStatusCounts`
|
|
1222
1289
|
has success/failure counts. Status strings are data values, not secret-like JSON
|
|
@@ -1237,7 +1304,7 @@ result counts as completed and as its verified chain outcome, but does not count
|
|
|
1237
1304
|
as `everAwaitedChainResult` unless the session actually reached that stage in an
|
|
1238
1305
|
attempt. This metric is neither a submission total nor a mandatory funnel step.
|
|
1239
1306
|
|
|
1240
|
-
`
|
|
1307
|
+
`read_get_review_session_detail` returns the current `request`, full
|
|
1241
1308
|
`requestCount`, capped `requests`, revision-bound state snapshots and transitions
|
|
1242
1309
|
with `domain` and optional attemptId. Each request may contain a verified
|
|
1243
1310
|
`execution`; absent execution does not imply failure. Current request is returned
|
|
@@ -1250,29 +1317,66 @@ facts actually exist.
|
|
|
1250
1317
|
|
|
1251
1318
|
| Tool | Status | Purpose |
|
|
1252
1319
|
| --- | --- | --- |
|
|
1253
|
-
| `
|
|
1254
|
-
|
|
1255
|
-
|
|
1320
|
+
| `account_get_active_account` | Implemented | Reads the active wallet-account read context. |
|
|
1321
|
+
|
|
1322
|
+
Settings provides Clear saved read address for the current Sui read context.
|
|
1323
|
+
The explicit app-only action `settings_clear_read_address` binds the displayed
|
|
1324
|
+
connection and address and records its effect atomically. It suppresses implicit
|
|
1325
|
+
read context for that connection across restarts, without disconnecting the wallet,
|
|
1326
|
+
changing fixed addresses or cancelling transaction requests. A fresh connection
|
|
1327
|
+
can supply its new fixed read address. Ordinary MCP calls cannot apply this effect.
|
|
1328
|
+
Changing from a restore upload to this effect invalidates the unused upload
|
|
1329
|
+
atomically with the saved result. File cleanup runs separately; a cleanup failure
|
|
1330
|
+
does not repeat the address-clearing effect or change its stored outcome.
|
|
1256
1331
|
|
|
1257
1332
|
## Settings Tools
|
|
1258
1333
|
|
|
1259
1334
|
| Tool | Status | Purpose |
|
|
1260
1335
|
| --- | --- | --- |
|
|
1261
|
-
| `
|
|
1262
|
-
| `
|
|
1336
|
+
| `settings_create_local_settings_session` | Implemented | Empty input opens Settings. `operationStatus: {operationId}` records a read-only status card. `backupDelivery: {operationId, fileId}` opens a new delivery-purpose card for the exact retained backup. These strict input forms cannot be mixed. |
|
|
1337
|
+
| `settings_get_local_settings` | Implemented | Reads requested wallet networks and stored/effective Sui endpoints, sources and pending restart information. |
|
|
1263
1338
|
|
|
1264
|
-
The
|
|
1339
|
+
The result is a `kind: "settings"` card snapshot
|
|
1265
1340
|
and a public saved-result link. Card permission is only in `sui-mcp/card` UI
|
|
1266
|
-
metadata.
|
|
1341
|
+
metadata. Every closed Settings card keeps its recorded result and has empty
|
|
1342
|
+
`allowedActions` and `allowedFileActions`. A fresh `operationStatus` card records
|
|
1343
|
+
current operation/cleanup facts once; its `createdAt` is that query's timestamp,
|
|
1344
|
+
and any stored operation result retains its original `recordedAt`. A current
|
|
1345
|
+
backup-delivery summary is recorded at the query time; do not infer a delivery
|
|
1346
|
+
completion time from that read timestamp. It issues no settings
|
|
1347
|
+
or file effect authority. A new `backupDelivery` card uses the original artifact,
|
|
1348
|
+
owner, epoch and expiry; creating it performs no transfer. Only its explicit Retry
|
|
1349
|
+
download or Save a local copy admits one attempt. A late exact Host report updates
|
|
1350
|
+
the domain journal only; it cannot change a closed card or initiate local saving. There is no `settingsUrl`, `openTarget`, external page, HTTP mutation
|
|
1267
1351
|
API or compatibility alias. A client without internal cards receives
|
|
1268
1352
|
`ui_unavailable`; ordinary model calls never apply a Settings change.
|
|
1269
1353
|
|
|
1270
|
-
Settings groups Address for viewing assets, Local records,
|
|
1271
|
-
settings.
|
|
1272
|
-
`
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1354
|
+
Settings groups Address for viewing assets, Wallet networks, Local records,
|
|
1355
|
+
Troubleshooting and Advanced settings. Address for viewing assets owns the
|
|
1356
|
+
`settings_clear_read_address` action described under Account Tools; clearing
|
|
1357
|
+
does not disconnect the wallet or change transaction targets.
|
|
1358
|
+
|
|
1359
|
+
Wallet networks uses one explicit Save networks action:
|
|
1360
|
+
`settings_save_wallet_networks` with `operationId`, the selected `chains`, and
|
|
1361
|
+
`expectedChains` containing the saved scope displayed to the user. App-only
|
|
1362
|
+
`ui_act_card` checks the card permission, owner, data epoch, revision and expiry,
|
|
1363
|
+
compares the current saved scope with `expectedChains`, and reserves, saves and
|
|
1364
|
+
records the exact selection in one transaction. Its `data.draft.kind` is
|
|
1365
|
+
`set_wallet_networks`. There is no selection/preparation/confirmation
|
|
1366
|
+
sequence for this setting. An identical admitted save returns its stored result;
|
|
1367
|
+
a conflicting selection cannot replace it. Editing checkboxes does not save,
|
|
1368
|
+
pair a wallet or update an existing connection. Saving a changed scope atomically
|
|
1369
|
+
ends unsent Connect cards with different captured networks; restoring the earlier
|
|
1370
|
+
setting does not reopen those cards. Already admitted wallet requests retain their
|
|
1371
|
+
original scope.
|
|
1372
|
+
|
|
1373
|
+
Endpoint changes (`set_endpoint`, `restore_endpoint` for gRPC or GraphQL),
|
|
1374
|
+
`import_local_data`, `reset_local_data` and `restart_wallet_service` retain a
|
|
1375
|
+
concrete impact confirmation. Selecting an endpoint change, reset or restart
|
|
1376
|
+
starts preparation directly; no intermediate Continue action is required.
|
|
1377
|
+
Selecting a backup file starts its checks. Final confirmation uses app-only
|
|
1378
|
+
`ui_act_card` with card permission, revision, operation identity and the exact
|
|
1379
|
+
preparation identity. Preparing or checking data does not apply it, contact a
|
|
1276
1380
|
wallet or restart the SDK. Duplicate confirmation returns the same admitted
|
|
1277
1381
|
result; MCP JSON-RPC request IDs do not authorize another operation.
|
|
1278
1382
|
|
|
@@ -1280,8 +1384,7 @@ Download backup uses one `settings_download_backup` action with `operationId`
|
|
|
1280
1384
|
and an `attemptId` UUID, admitted atomically through the same scoped card input.
|
|
1281
1385
|
It creates a `download_backup` operation and one immutable snapshot. It requires
|
|
1282
1386
|
no separate selection, preparation or confirmation action. The same admitted
|
|
1283
|
-
start returns the same request; a different start cannot replace it.
|
|
1284
|
-
`export_local_data` selection/preparation/confirmation is not accepted.
|
|
1387
|
+
start returns the same request; a different start cannot replace it.
|
|
1285
1388
|
|
|
1286
1389
|
The card uses plain-language display labels without changing wire fields or
|
|
1287
1390
|
enums. Wallet-service `available`, `initializing`, `recovering` and `unavailable`
|
|
@@ -1319,16 +1422,21 @@ failure-recovery policy.
|
|
|
1319
1422
|
`file.sealed` records complete, integrity-checked transfer; it does not by itself
|
|
1320
1423
|
establish a supported backup or permission to restore it. `settings_back` and user-data
|
|
1321
1424
|
changes invalidate preparation while preserving a reusable complete file.
|
|
1322
|
-
The explicit `settings_prepare` action rechecks such a file;
|
|
1323
|
-
|
|
1425
|
+
The explicit `settings_prepare` action rechecks such a file; selecting a file
|
|
1426
|
+
starts its backup check without another action. A failed check preserves its
|
|
1324
1427
|
current file/operation identity and correction path. Owner replacement ends old
|
|
1325
1428
|
input; a new card must receive a new explicit file selection.
|
|
1326
1429
|
|
|
1327
|
-
|
|
1328
|
-
|
|
1430
|
+
Physical snapshot readiness is intermediate: the delivery card stays running.
|
|
1431
|
+
Its final `result.completionScope: "backup_delivery"` records a Host report,
|
|
1432
|
+
verified local publication, cancellation, expiry or failure, not merely snapshot
|
|
1433
|
+
preparation. A Host acknowledgment is not proof that a user file was saved. `data.download` separately carries
|
|
1329
1434
|
`availability` (`preparing`, `available`, `ended`), `currentAttemptId`, an optional
|
|
1330
|
-
`hostReport` (`acknowledged`, `not_completed`, `unconfirmed`, `unsupported`), `previousUnconfirmed`,
|
|
1331
|
-
`expiresAt`, `remainingMs`, `endReason` and `allowedFileActions`.
|
|
1435
|
+
`hostReport` (`acknowledged`, `not_completed`, `unconfirmed`, `unsupported`, `not_sent`), `previousUnconfirmed`,
|
|
1436
|
+
`expiresAt`, `remainingMs`, `endReason` and `allowedFileActions`. `not_sent` is the
|
|
1437
|
+
View's report that transfer verification failed before any Host download request;
|
|
1438
|
+
it is not a Host rejection or non-support response. Like `unsupported`, it
|
|
1439
|
+
establishes no earlier Host copy for local-copy consent. End reasons are
|
|
1332
1440
|
`acknowledged`, `cancelled`, `expired`, `server_restarted`, `data_replaced`,
|
|
1333
1441
|
`source_unavailable`, `stored_locally` or `local_save_failed`. Replacement revokes the old card rather than preserving
|
|
1334
1442
|
its input. The transfer period is thirty minutes from physical readiness;
|
|
@@ -1344,13 +1452,12 @@ absence was not established, including an unreported or not-completed request.
|
|
|
1344
1452
|
|
|
1345
1453
|
A verified local `saved` result provides `data.backupLocation.directory` and
|
|
1346
1454
|
`filename` for `<SUI_MCP_DATA_DIR>/backups/<operationId>.json`. Snapshot preparation
|
|
1347
|
-
and Host acknowledgment do not provide that local success.
|
|
1348
|
-
|
|
1349
|
-
never identify the destination chosen by a Host download dialog. Existing user
|
|
1455
|
+
and Host acknowledgment do not provide that local success. These fields never
|
|
1456
|
+
identify the destination chosen by a Host download dialog. Existing user
|
|
1350
1457
|
files are never deleted by private snapshot cleanup. Private publication
|
|
1351
1458
|
identities and source inode/device facts are not public projection fields.
|
|
1352
1459
|
|
|
1353
|
-
Current `data.facts` uses the same
|
|
1460
|
+
Current `data.facts` uses the same fixed-address and connection qualification rules
|
|
1354
1461
|
as interaction status, through a fact reader that does not settle another
|
|
1355
1462
|
request's deadlines or callback writes. General counts describe stored records;
|
|
1356
1463
|
reset/import preparation and confirmation independently settle deadlines and
|
|
@@ -1383,8 +1490,10 @@ recorded idempotently without resending bytes. Public fields include
|
|
|
1383
1490
|
local operation, not a transaction's chain outcome. Optional
|
|
1384
1491
|
`temporaryFileCleanup` separately reports `pending`, `failed` or `complete`;
|
|
1385
1492
|
reading/checking it never repeats data replacement, backup creation, Host delivery or SDK
|
|
1386
|
-
replacement. Terminal business input remains closed;
|
|
1387
|
-
file continuations in `data.download.allowedFileActions`
|
|
1493
|
+
replacement. Terminal business input remains closed; the separate scoped
|
|
1494
|
+
file continuations in `data.download.allowedFileActions` are also closed. A new
|
|
1495
|
+
`backupDelivery` card is required for another attempt, while `operationStatus`
|
|
1496
|
+
reads current cleanup without granting a file effect. Public fields contain no raw file, transaction bytes, signatures,
|
|
1388
1497
|
SDK credentials or card permission.
|
|
1389
1498
|
|
|
1390
1499
|
A user-data writer invalidates its affected prepared confirmation atomically.
|
|
@@ -1403,8 +1512,8 @@ rejection can report a smaller raw chunk limit before any write. The backup chec
|
|
|
1403
1512
|
strict current backup shape/references without endpoint contact. Confirmation
|
|
1404
1513
|
verifies imported endpoints report Sui mainnet and rechecks current data and
|
|
1405
1514
|
unsettled wallet/transaction work before atomic replacement.
|
|
1406
|
-
The prepared import includes
|
|
1407
|
-
|
|
1515
|
+
The prepared import includes current/incoming record counts. Accounts and records
|
|
1516
|
+
are restored as history, never as active connection or signing authority.
|
|
1408
1517
|
Both preparation and final admission settle request deadlines before capturing
|
|
1409
1518
|
or comparing that decision basis. A newly unknown outcome requires a new backup check.
|
|
1410
1519
|
Reset/import revoke other live permissions and preserve only their own read-only card/result.
|
|
@@ -1416,8 +1525,9 @@ automatic result checks. Stopping those checks does not shorten that window.
|
|
|
1416
1525
|
They cannot cancel a transaction on Sui or disconnect a remote wallet session.
|
|
1417
1526
|
The private connection-service journal is preserved; it is not imported from
|
|
1418
1527
|
the public backup and cannot restore old permissions or signing authority.
|
|
1419
|
-
Reset
|
|
1420
|
-
|
|
1528
|
+
Reset and restore invalidate the retained connection for financial use. Neither
|
|
1529
|
+
restores a live connection reference; the retained session remains a cleanup
|
|
1530
|
+
target until disconnected. A new explicit connection establishes new fixed addresses. Outstanding connection SDK callbacks block
|
|
1421
1531
|
replacement along with unsettled transaction work.
|
|
1422
1532
|
|
|
1423
1533
|
Endpoint preparation records the gRPC/GraphQL kind, current stored/effective
|
|
@@ -1429,18 +1539,19 @@ remains set; storing an endpoint does not modify that environment.
|
|
|
1429
1539
|
|
|
1430
1540
|
Download creates and verifies one private snapshot with an exclusive generated
|
|
1431
1541
|
file identity. Supported Host delivery does not publish a second permanent backup. Response or result
|
|
1432
|
-
storage failure never regenerates that snapshot. `
|
|
1542
|
+
storage failure never regenerates that snapshot. `ui_read_settings_file` is
|
|
1433
1543
|
app-only and binds card/permission, operation, file, offset, verified hash/length
|
|
1434
1544
|
and the current `attemptId` for a private download. Its ordinary content carries
|
|
1435
1545
|
range metadata; Base64 bytes appear only in `sui-mcp/settings-file` UI metadata.
|
|
1436
1546
|
The View checks the complete hash before standard Host delivery.
|
|
1437
1547
|
|
|
1438
|
-
File continuations also use app-only `
|
|
1548
|
+
File continuations also use app-only `ui_act_card`:
|
|
1439
1549
|
|
|
1440
1550
|
- `settings_retry_download`: `operationId`, `fileId`, `previousAttemptId` and a
|
|
1441
|
-
new `attemptId`;
|
|
1551
|
+
new `attemptId`; only a new backup-delivery card may admit this attempt on the
|
|
1552
|
+
same retained snapshot. It consumes that card's one delivery input.
|
|
1442
1553
|
- `settings_report_download`: `operationId`, `fileId`, `attemptId` and `status`
|
|
1443
|
-
(`acknowledged`, `not_completed`, `unconfirmed`, `unsupported`); the same report is idempotent,
|
|
1554
|
+
(`acknowledged`, `not_completed`, `unconfirmed`, `unsupported`, `not_sent`); the same report is idempotent,
|
|
1444
1555
|
and conflicting reports for one attempt are rejected. A late older report
|
|
1445
1556
|
cannot change the current attempt or end its retention. `unsupported` requires
|
|
1446
1557
|
exactly `failure: {method: "ui/download-file", code: -32601}`; other statuses
|
|
@@ -1453,34 +1564,39 @@ File continuations also use app-only `ui.act_card`:
|
|
|
1453
1564
|
- `settings_cancel_download`: `operationId`, `fileId` and `attemptId`; ends
|
|
1454
1565
|
further delivery of that snapshot, not a Host dialog or a user-saved file.
|
|
1455
1566
|
Cancellation is refused while a local save is in progress or its outcome is
|
|
1456
|
-
uncertain.
|
|
1457
|
-
|
|
1567
|
+
uncertain. A finished failed delivery has no further cancellation or retry input;
|
|
1568
|
+
another attempt requires a new delivery card.
|
|
1458
1569
|
- `settings_store_backup`: `operationId`, `fileId`, current `attemptId`, a new
|
|
1459
1570
|
`saveAttemptId`, required boolean `allowPossibleCopy`, and optional
|
|
1460
1571
|
`previousSaveAttemptId`. It is available only for that snapshot's recorded
|
|
1461
|
-
unsupported result. Possible earlier delivery requires explicit true consent;
|
|
1572
|
+
unsupported result and a new delivery-purpose card. Possible earlier delivery requires explicit true consent;
|
|
1462
1573
|
otherwise false is required. Initial consent has no previous save ID. A retry
|
|
1463
1574
|
of a confirmed no-publication failure must name the current failed save ID.
|
|
1464
1575
|
IDs and consent are immutable per admission; duplicates do not repeat effects.
|
|
1465
1576
|
It accepts no arbitrary path, name or bytes.
|
|
1466
1577
|
|
|
1467
1578
|
These actions validate current owner, epoch, credential and exact file/attempt
|
|
1468
|
-
identity
|
|
1469
|
-
transfer period.
|
|
1579
|
+
identity. Effect admissions and file reads require an active purpose card and the
|
|
1580
|
+
original live transfer period. Closed cards grant none of these effect permissions.
|
|
1581
|
+
Only an exact late result report may update an already-admitted attempt's journal,
|
|
1582
|
+
without modifying its closed card or starting publication. A late report can record a fact after that period ends but
|
|
1470
1583
|
cannot restore the file or authority. Host acknowledgment ends retention and
|
|
1471
1584
|
requests cleanup; it does not prove a save location or completed disk storage.
|
|
1472
1585
|
`isError` does not distinguish cancellation, denial or failure. A lost response
|
|
1473
1586
|
is unconfirmed and never triggers automatic retransmission. Cleanup failure is
|
|
1474
|
-
reported separately
|
|
1587
|
+
reported separately; a new operation-status card or owner recovery can settle
|
|
1588
|
+
known cleanup without repeating the original effect.
|
|
1475
1589
|
Local publication closes further Host reads/retries for that snapshot. Its
|
|
1476
|
-
|
|
1590
|
+
file-I/O reservation lasts until the actual admitted file work ends, independently
|
|
1591
|
+
of the immutable card result.
|
|
1477
1592
|
New save admissions and retries require the original live period; admitted
|
|
1478
1593
|
file work settles even if it outlives that period. A process restart verifies
|
|
1479
1594
|
only an existing target bound to its recorded source identity/content. It never
|
|
1480
1595
|
publishes a missing target or restores the departed card's action authority.
|
|
1481
1596
|
A missing or changed source ends that private transfer; a new explicit request
|
|
1482
|
-
is required.
|
|
1483
|
-
for each range
|
|
1597
|
+
is required. Private snapshot reads verify the artifact on the same descriptor
|
|
1598
|
+
used for each range. Temporary cleanup never truncates or removes a saved
|
|
1599
|
+
local backup.
|
|
1484
1600
|
|
|
1485
1601
|
Troubleshooting recovery confirms a precise SDK run and affected unsubmitted
|
|
1486
1602
|
requests. Admission revokes their submission authority before stopping the old
|
|
@@ -1494,8 +1610,8 @@ and addresses. Historical disconnected/failed records do not prove a current
|
|
|
1494
1610
|
connection or approval. The complete recorded impact remains bound to admission;
|
|
1495
1611
|
the display does not filter it into a new wallet-eligibility rule.
|
|
1496
1612
|
|
|
1497
|
-
Endpoint changes require
|
|
1498
|
-
|
|
1613
|
+
Endpoint changes require stopping all participating MCP connections and waiting
|
|
1614
|
+
for the shared parent to exit, then reopening them to apply its configuration. Restart connection service only replaces the SDK
|
|
1499
1615
|
child. Installation environment overrides continue to take precedence. Custom
|
|
1500
1616
|
providers affect read data quality; use trusted Sui mainnet providers.
|
|
1501
1617
|
|
|
@@ -1515,12 +1631,12 @@ permissions and display facts. Clients must use the returned URI/key values.
|
|
|
1515
1631
|
| `suimcp://docs/mcp-tools` | API reference: tool contracts, response fields, statuses, follow-up fields, and output boundaries. |
|
|
1516
1632
|
| `suimcp://docs/wallet-connection` | Wallet connection reference: active read context, private SDK ownership and user-approved transaction requests. |
|
|
1517
1633
|
| `suimcp://docs/agent-behavior` | Answer playbook: user-question flows, tool selection, and response wording boundaries. |
|
|
1518
|
-
| `suimcp://protocols/deepbook-v3` | Protocol reference only; use MCP tool responses and `
|
|
1634
|
+
| `suimcp://protocols/deepbook-v3` | Protocol reference only; use MCP tool responses and `read_list_supported_protocols` for current support. |
|
|
1519
1635
|
| `suimcp://protocols/deepbook-margin` | Protocol reference only; no margin MCP read tools or signable actions are exposed in this release. |
|
|
1520
1636
|
|
|
1521
1637
|
Only allowlisted mainnet protocol references are exposed as MCP resources.
|
|
1522
1638
|
|
|
1523
|
-
Protocol resources are not runtime registries, supported-protocol lists, live liquidity sources, route recommendations, or signing-readiness signals. Use `
|
|
1639
|
+
Protocol resources are not runtime registries, supported-protocol lists, live liquidity sources, route recommendations, or signing-readiness signals. Use `read_get_server_status`, `read_list_supported_protocols`, concrete tool schemas, and concrete tool responses for current product support.
|
|
1524
1640
|
|
|
1525
1641
|
MCP resources are runtime-facing references that connected AI clients can read.
|
|
1526
1642
|
|