@zktx.io/sui-mcp 0.6.2 → 0.7.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 +13 -12
- package/dist/adapters/adapterPromptSurfaces.js +1 -1
- package/dist/core/read/deepbookReadHelpers.js +1 -1
- package/dist/core/read/readResponseGuidance.js +6 -6
- package/dist/core/session/settingsFileProtocol.js +1 -1
- package/dist/mcp/prompts.js +10 -4
- package/dist/mcp/resources.js +1 -1
- package/dist/mcp/server.js +2 -2
- package/dist/mcp/serverInfo.js +13 -12
- package/dist/mcp/toolNames.js +46 -46
- package/dist/mcp/tools/action/prepareSuiActionReview.js +4 -4
- 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 +1 -1
- package/dist/mcp/tools/read/serverStatusTools.js +4 -5
- package/dist/mcp/tools/read/transactionActivityTools.js +3 -3
- package/dist/mcp/tools/session/walletConnectionTools.js +5 -5
- package/dist/mcp-app/account.html +1 -1
- package/dist/mcp-app/chart.html +1 -1
- package/dist/mcp-app/connect.html +1 -1
- package/dist/mcp-app/receipt.html +1 -1
- package/dist/mcp-app/review.html +1 -1
- package/dist/mcp-app/settings.html +1 -1
- package/dist/runtime/application.js +2 -2
- package/dist/runtime/config.js +3 -6
- package/dist/runtime/localSettingsService.js +4 -4
- package/dist/runtime/shared/control.js +2 -2
- package/dist/runtime/smokeMainnetRead.js +18 -18
- package/dist/runtime/smokeReview.js +7 -7
- package/dist/runtime/start.js +1 -1
- package/docs/AGENT_BEHAVIOR.md +78 -77
- package/docs/LOCAL_DB_ARCHITECTURE.md +5 -7
- package/docs/MCP_SETUP.md +76 -73
- package/docs/MCP_TOOLS.md +103 -102
- package/docs/SDK_API.md +8 -5
- package/docs/SIGNABLE_ADAPTER_CONTRACT.md +6 -6
- package/docs/TRANSACTION_ACTIVITY_LOG.md +7 -7
- package/docs/UTILITY_INDEX.md +59 -59
- package/docs/WALLET_CONNECTION.md +6 -5
- 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,32 +37,32 @@ 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
|
|
|
@@ -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,13 +162,13 @@ 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 selected read account 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
|
|
|
@@ -176,7 +176,7 @@ A successful card-creating response contains a `cardId`, `kind`, `state`, `revis
|
|
|
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
|
|
|
@@ -249,7 +249,7 @@ For unadmitted disconnection or account selection, the exact target in
|
|
|
249
249
|
card input remains available. An account returning later does not revive that
|
|
250
250
|
attempt or clear its local automatic pause; the user can make a new selection.
|
|
251
251
|
If an unknown result needs another lookup after the card's action period, request
|
|
252
|
-
`
|
|
252
|
+
`session_open_review_management` with the same `reviewSessionId` and `attemptId`.
|
|
253
253
|
It adds no signing authority and does not repeat the transaction.
|
|
254
254
|
|
|
255
255
|
A confirmation that joins an older in-flight read retains its obligation. After
|
|
@@ -263,20 +263,20 @@ Review displays one current wallet candidate without a dropdown. Its current aut
|
|
|
263
263
|
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
264
|
|
|
265
265
|
|
|
266
|
-
`
|
|
266
|
+
`read_quote_deepbook_action` and `read_quote_deepbook_display_amount` use the pinned DeepBook transaction builder quote functions.
|
|
267
267
|
|
|
268
268
|
Input kinds:
|
|
269
269
|
|
|
270
|
-
- `
|
|
271
|
-
- `
|
|
270
|
+
- `read_quote_deepbook_action`: `quantitySemantics.inputAmountKind: "raw_u64"`.
|
|
271
|
+
- `read_quote_deepbook_display_amount`: `inputAmountKind: "display_source_amount_converted_to_raw_u64"`.
|
|
272
272
|
|
|
273
273
|
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
274
|
|
|
275
275
|
`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
276
|
|
|
277
|
-
`requiredPaymentAnswerTool: "
|
|
277
|
+
`requiredPaymentAnswerTool: "read_preview_intent_evidence"` and `requiredPaymentAnswerField: "responseSummary"` identify the tool and field to use for payment amount and shortfall answers.
|
|
278
278
|
|
|
279
|
-
The same response-local rule is also exposed as `userAnswerUse.followUp.tool: "
|
|
279
|
+
The same response-local rule is also exposed as `userAnswerUse.followUp.tool: "read_preview_intent_evidence"` and `userAnswerUse.followUp.answerFields: ["responseSummary"]`.
|
|
280
280
|
|
|
281
281
|
Raw quote source:
|
|
282
282
|
|
|
@@ -287,7 +287,7 @@ Raw quote source:
|
|
|
287
287
|
|
|
288
288
|
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
289
|
|
|
290
|
-
`
|
|
290
|
+
`read_quote_deepbook_display_amount` accepts `amountDisplay` as the source coin input amount for the requested `direction`.
|
|
291
291
|
|
|
292
292
|
It does not accept output target amounts or inverse quote requests.
|
|
293
293
|
|
|
@@ -310,7 +310,7 @@ This quote is not a settlement asset choice.
|
|
|
310
310
|
|
|
311
311
|
### DeepBook account inventory
|
|
312
312
|
|
|
313
|
-
`
|
|
313
|
+
`read_summarize_deepbook_account_inventory` uses the selected account only when its current wallet connection is usable, to discover DeepBook BalanceManager addresses. It has no explicit public-address input. Without a usable default, a missing selection returns `active_account_not_set`, and a stored but ineligible selection returns `input_invalid`; both carry `details.reason: "connected_account_required"` and `details.followUp` naming `session_get_interaction_status` and its connection/availability/pending/default-account fields. These responses do not request an address. Unavailable wallet operations return `wallet_unavailable` with the existing safe reason and recovery message.
|
|
314
314
|
|
|
315
315
|
With both `poolKey` and `managerAddress`, it checks pool account existence and returns display-like account inventory:
|
|
316
316
|
|
|
@@ -332,9 +332,9 @@ Returned `quantitySemantics.kind: "deepbook_display_number"` means these `number
|
|
|
332
332
|
|
|
333
333
|
They are not raw balances, route liquidity, funding sources, withdrawal readiness, transaction-building inputs, signing data, or signing readiness.
|
|
334
334
|
|
|
335
|
-
`
|
|
335
|
+
`read_summarize_wallet_assets` accepts an optional `account` input for public-address coin balance snapshots.
|
|
336
336
|
|
|
337
|
-
When `account` is omitted, it uses the same connection-qualified default as `
|
|
337
|
+
When `account` is omitted, it uses the same connection-qualified default as `session_get_interaction_status.assetReadAccount`. No stored selection returns `active_account_not_set` with `details.action: "provide_account"`; a stored but ineligible selection 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
338
|
|
|
339
339
|
An explicit `account` read does not prove ownership, store the address as a known wallet, or create active account context.
|
|
340
340
|
|
|
@@ -356,7 +356,7 @@ If Sui metadata is unavailable, DeepBook-registered tokens can use pinned scalar
|
|
|
356
356
|
|
|
357
357
|
If no verified decimals exist, `unit.status` is `unavailable` and clients must not infer decimals from the token symbol.
|
|
358
358
|
|
|
359
|
-
`
|
|
359
|
+
`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
360
|
|
|
361
361
|
It wraps each coin balance in `classification.assetClass: "coin_balance"`, `classification.balanceStatus`, and role labels such as `gas_candidate` or `deepbook_registered`.
|
|
362
362
|
|
|
@@ -372,7 +372,7 @@ It also would not make them route liquidity, payment readiness, portfolio comple
|
|
|
372
372
|
|
|
373
373
|
The classifier does not create funding plans, choose routes, create review sessions, return transaction bytes, or produce signing material.
|
|
374
374
|
|
|
375
|
-
`
|
|
375
|
+
`read_list_settlement_asset_groups` returns the supported natural-language settlement asset groups.
|
|
376
376
|
|
|
377
377
|
In this release, `SUI_USD_SETTLEMENT_ASSETS` maps aliases such as dollar, dollars, USD, USD-like, stablecoin, stablecoins, and Korean dollar-word wording.
|
|
378
378
|
|
|
@@ -382,7 +382,7 @@ The asset group output includes included assets, excluded assets, source authori
|
|
|
382
382
|
|
|
383
383
|
This is static SDK registry evidence, not live liquidity, fiat USD support, payment execution, route recommendation, or signing readiness.
|
|
384
384
|
|
|
385
|
-
`
|
|
385
|
+
`read_summarize_settlement_asset_group_parity` returns internal parity evidence for a supported settlement asset group.
|
|
386
386
|
|
|
387
387
|
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
388
|
|
|
@@ -398,7 +398,7 @@ Use `responseSummary` for questions about internal USD-denominated parity, highe
|
|
|
398
398
|
|
|
399
399
|
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
400
|
|
|
401
|
-
`
|
|
401
|
+
`read_preview_intent_evidence` accepts natural-language settlement evidence intents.
|
|
402
402
|
|
|
403
403
|
Use it this way:
|
|
404
404
|
|
|
@@ -410,7 +410,7 @@ For settlement-asset-only coverage, shortfall, and balance-total answers, use `r
|
|
|
410
410
|
|
|
411
411
|
The response also exposes `userAnswerUse.answerFields` with the response-specific answer path.
|
|
412
412
|
|
|
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 `
|
|
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 `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
414
|
|
|
415
415
|
`responseSummary` exposes:
|
|
416
416
|
|
|
@@ -460,7 +460,7 @@ The current `lowSampleThreshold` is 5 local records, from `REVIEW_ACTIVITY_LOW_S
|
|
|
460
460
|
|
|
461
461
|
When `lowSampleWarning` is true, treat counts as sparse local evidence and avoid drawing behavior patterns.
|
|
462
462
|
|
|
463
|
-
For `
|
|
463
|
+
For `read_list_review_activity`, `dataScope.recordCount` is the full matching local review count.
|
|
464
464
|
|
|
465
465
|
The returned `activities` array can be shorter when `truncated.activities: true`.
|
|
466
466
|
|
|
@@ -468,25 +468,25 @@ The returned `activities` array can be shorter when `truncated.activities: true`
|
|
|
468
468
|
|
|
469
469
|
MCP error responses intentionally omit `structuredContent`; clients should read the JSON error payload from `content[0].text`.
|
|
470
470
|
|
|
471
|
-
`
|
|
471
|
+
`read_get_review_session_detail` transition rows include `isNoOp`.
|
|
472
472
|
|
|
473
473
|
A no-op transition is an observed lifecycle call whose stored status did not change, such as a repeated open or reconnect event.
|
|
474
474
|
|
|
475
|
-
`
|
|
475
|
+
`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
476
|
|
|
477
477
|
Funnel summaries count distinct reviews and do not treat repeated no-op rows as additional completed steps.
|
|
478
478
|
|
|
479
479
|
Sui activity tools are user-requested read surfaces, not a background indexer.
|
|
480
480
|
|
|
481
|
-
Summary activity tools omit full transaction details by design. Digest-level detail is exposed by `
|
|
481
|
+
Summary activity tools omit full transaction details by design. Digest-level detail is exposed by `read_inspect_sui_transaction`.
|
|
482
482
|
|
|
483
483
|
Tool roles:
|
|
484
484
|
|
|
485
|
-
- `
|
|
486
|
-
- `
|
|
487
|
-
- `
|
|
488
|
-
- `
|
|
489
|
-
- `
|
|
485
|
+
- `read_inspect_sui_transaction` performs a single digest lookup.
|
|
486
|
+
- `read_scan_sui_account_activity` requests up to 100 account transactions for `affected` or `sent` relationship.
|
|
487
|
+
- `read_summarize_sui_activity_scan` reuses the live scan path and adds deterministic `analysis` without returning full `details`.
|
|
488
|
+
- `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`.
|
|
489
|
+
- `read_summarize_sui_account_activity` reads only local SQLite stored facts.
|
|
490
490
|
|
|
491
491
|
This is a bounded provider page, not complete wallet history.
|
|
492
492
|
|
|
@@ -512,7 +512,7 @@ Stored summary boundaries:
|
|
|
512
512
|
- Stored summaries aggregate local account-level facts from digest lookups, account scans, or sent-function scans.
|
|
513
513
|
- Scan kind is internal provenance.
|
|
514
514
|
- Stored summary input does not accept `kind`, `function`, or function-history filters.
|
|
515
|
-
-
|
|
515
|
+
- `summary` contains the stored transaction counts.
|
|
516
516
|
- `analysis.overview.transactionCount` mirrors the stored count.
|
|
517
517
|
- `analysis.overview.analyzedTransactionCount` reports how many returned rows fed the richer aggregations.
|
|
518
518
|
- `transactionDetailAvailability` counts returned stored rows with `details`. `userAnswerUse.answerFields` includes `transactions[].compact` and `transactions[].details` only when `transactionDetailAvailability.allReturnedTransactionsHaveDetails: true`.
|
|
@@ -653,7 +653,7 @@ The local sender check is defensive. A non-conforming provider row is dropped fr
|
|
|
653
653
|
|
|
654
654
|
For a stored known-account scan, the dropped row contributes only to skipped counts. It is not treated as valid function history.
|
|
655
655
|
|
|
656
|
-
`
|
|
656
|
+
`read_scan_sui_account_activity` and `read_scan_sui_function_activity` return pagination and coverage fields:
|
|
657
657
|
|
|
658
658
|
- `hasMore`;
|
|
659
659
|
- `continuationCursor`;
|
|
@@ -671,18 +671,18 @@ Provider cursors are opaque and best-effort. Cursor rejection returns a safe err
|
|
|
671
671
|
|
|
672
672
|
Tool source comparison:
|
|
673
673
|
|
|
674
|
-
- `
|
|
674
|
+
- `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
675
|
- Those live rows include requested-account fields, transaction context, and `detailLookup` references but no full `details`.
|
|
676
676
|
- The summary tools also return deterministic `analysis`.
|
|
677
|
-
- `
|
|
678
|
-
- `
|
|
679
|
-
- `
|
|
677
|
+
- `read_inspect_sui_transaction` is the full normalized detail path for a specific digest.
|
|
678
|
+
- `read_summarize_sui_account_activity` reads only stored normalized facts from local SQLite.
|
|
679
|
+
- `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
680
|
|
|
681
|
-
If stored or summary details are missing or capped, use the digest metadata with `
|
|
681
|
+
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
682
|
|
|
683
683
|
### Stored Account Asset Timeline
|
|
684
684
|
|
|
685
|
-
`
|
|
685
|
+
`read_get_account_asset_timeline` returns a stored local account asset-flow timeline for one account and UTC range.
|
|
686
686
|
|
|
687
687
|
Inputs:
|
|
688
688
|
|
|
@@ -694,7 +694,7 @@ Output fields:
|
|
|
694
694
|
|
|
695
695
|
- `coverage` describes whether stored scan rows prove the requested range is complete, partial, or absent.
|
|
696
696
|
- `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 `
|
|
697
|
+
- `scanNeeded`, when present, names `read_scan_sui_account_activity` as the bounded scan tool that can gather local evidence for a known account.
|
|
698
698
|
- `netFlowBars` are observed account-scoped raw token balance-change bars from stored normalized activity rows.
|
|
699
699
|
- `balanceStatus` is currently `unavailable_no_balance_anchor`, and `balanceBars` is empty. Do not present net-flow bars as held balances.
|
|
700
700
|
- `sourceTransactions` reports how many stored rows were read, returned, truncated, and detail-covered.
|
|
@@ -708,19 +708,19 @@ This tool does not run scans, start a background indexer, create a price cache,
|
|
|
708
708
|
|
|
709
709
|
| Tool | Status | Purpose |
|
|
710
710
|
| --- | --- | --- |
|
|
711
|
-
| `
|
|
712
|
-
| `
|
|
711
|
+
| `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. |
|
|
712
|
+
| `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. |
|
|
713
713
|
|
|
714
|
-
`
|
|
714
|
+
`action_start_review` is account-bound: a swap review computes
|
|
715
715
|
its evidence (balances, transaction material, digest, simulation) for a
|
|
716
716
|
specific sender, so the tool requires an active wallet account. Connect first
|
|
717
|
-
with `
|
|
717
|
+
with `session_open_wallet_connection_card`; with no active account the tool returns
|
|
718
718
|
`active_account_not_set` with `details.action: "connect_wallet_connection"`
|
|
719
719
|
instead of creating a proposal that can never be computed or signed. The
|
|
720
720
|
Review card reads that account from the server as the single source of truth
|
|
721
721
|
and never connects a wallet itself.
|
|
722
722
|
|
|
723
|
-
`
|
|
723
|
+
`action_start_review` accepts a protocol-neutral swap `intent`
|
|
724
724
|
(`type: "swap"`, `from.symbol`, `from.amount`, `to.symbol`,
|
|
725
725
|
`maxSlippageBps`, optional `protocol`). The optional `protocol` field carries
|
|
726
726
|
the protocol slug from the adapter registry (the same slug vocabulary as the
|
|
@@ -731,7 +731,7 @@ omitted; once several protocols support the same action the tool returns
|
|
|
731
731
|
`intent.protocol` set - the server never picks a venue silently. An unknown
|
|
732
732
|
slug returns `reason: "unknown_protocol"` with the available slugs.
|
|
733
733
|
|
|
734
|
-
`
|
|
734
|
+
`action_create_proposal_review` accepts `proposal` with `type:
|
|
735
735
|
"payment"` or `type: "sui_action"`.
|
|
736
736
|
|
|
737
737
|
Common required fields are `id`, `source`, `network: "sui:mainnet"`,
|
|
@@ -792,7 +792,7 @@ cards display those facts; neither the model nor the card receives bytes or
|
|
|
792
792
|
signatures. Ordinary MCP calls cannot authorize signing or submission.
|
|
793
793
|
|
|
794
794
|
After the wallet account is bound to a supported swap review session, the
|
|
795
|
-
Review card and `
|
|
795
|
+
Review card and `session_get_review_status` may show protocol-specific quote
|
|
796
796
|
evidence and review-state checks for:
|
|
797
797
|
|
|
798
798
|
- resolved DeepBook direct pool;
|
|
@@ -819,8 +819,9 @@ Completed stages are review progress only. If
|
|
|
819
819
|
`transaction_material_build_or_verify` is completed, it means the local review
|
|
820
820
|
server built unsigned transaction material and kept the bytes internal. If
|
|
821
821
|
`digest_commitment` is completed, it means the server internally derived a Sui
|
|
822
|
-
transaction digest from that stored material; the
|
|
823
|
-
|
|
822
|
+
transaction digest from that stored material; the schema-validated transaction-review contract may expose its commitment
|
|
823
|
+
hash, while transaction bytes remain private. The hash is not signing authority
|
|
824
|
+
or a wallet handoff. Missing stages explain why the review
|
|
824
825
|
remains blocked. This lifecycle covers review evidence producer stages through
|
|
825
826
|
review-time simulation. Wallet requests, signature verification, submission and
|
|
826
827
|
chain observation are platform responsibilities after review, separate from
|
|
@@ -943,14 +944,14 @@ It is not a signing readiness signal. Review-state checks are pre-signing review
|
|
|
943
944
|
|
|
944
945
|
| Tool | Input and result |
|
|
945
946
|
| --- | --- |
|
|
946
|
-
| `
|
|
947
|
-
| `
|
|
948
|
-
| `
|
|
949
|
-
| `
|
|
950
|
-
| `
|
|
951
|
-
| `
|
|
952
|
-
| `
|
|
953
|
-
| `
|
|
947
|
+
| `session_open_wallet_connection_card` | Opens an internal card with `intent: connect`, `disconnect` or `manage` (default). A connect-intent View automatically starts pairing after authenticated state confirmation; manage pairs only after the user chooses Connect wallet. A disconnect-intent card opens confirmation for a unique connected target. Disconnection requires target-specific confirmation and does not revoke onchain permissions. |
|
|
948
|
+
| `session_get_wallet_connection_card` | Reads one `cardId`; public response excludes pairing and permission. |
|
|
949
|
+
| `session_wait_wallet_connection_card` | Waits on one `cardId`, with an optional timeout up to 55 seconds; stops when user input is needed or the admitted connection/disconnection operation ends. |
|
|
950
|
+
| `session_open_review_management` | Opens management for exact `reviewSessionId` + `attemptId`; no refresh or signing authority. |
|
|
951
|
+
| `session_get_interaction_status` | Stored `activeAccount`, current-owner `connections`, `assetReadAccount`, wallet availability, and bounded pending connection/review lists. `assetReadAccount` is `available` with an account only when that selected 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. |
|
|
952
|
+
| `session_get_review_status` | Current preparation status, review revision, optional current request and chain execution. |
|
|
953
|
+
| `session_get_execution_result` | Observes the current explicitly referenced attempt and may read its known digest; never submits again. |
|
|
954
|
+
| `session_wait_execution_result` | Bounded wait on the same request, separate from its signing and chain-observation deadlines. |
|
|
954
955
|
|
|
955
956
|
`pendingWalletConnections.items[].status` is `input_required`,
|
|
956
957
|
`awaiting_approval`, or `disconnect_pending`. The last value describes an
|
|
@@ -964,7 +965,7 @@ While its SDK callback remains pending, unavailable progress preserves the
|
|
|
964
965
|
operation and its last recorded connection state. Repeating the same selection
|
|
965
966
|
does not send another SDK request.
|
|
966
967
|
|
|
967
|
-
`
|
|
968
|
+
`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 the stored account selection and submitted chain results; it does not start pairing, SDK disconnect, signing or submission.
|
|
968
969
|
|
|
969
970
|
When a disconnect callback ended but its completion write failed, current reads
|
|
970
971
|
reconcile that stored operation without another SDK disconnect. If the SDK is
|
|
@@ -1043,7 +1044,7 @@ The original request's stored deadlines are unchanged by a management card.
|
|
|
1043
1044
|
A new signature requires a newly reviewed revision and explicit selection.
|
|
1044
1045
|
Identical duplicate selections return the admitted attempt; no response-loss
|
|
1045
1046
|
path replays a financial request. Model tools may open/read cards; only scoped
|
|
1046
|
-
app-only `
|
|
1047
|
+
app-only `ui_act_card` performs a user selection. UI permission and pairing QR
|
|
1047
1048
|
travel in private metadata. Bytes/signatures never reach the card or model.
|
|
1048
1049
|
|
|
1049
1050
|
Connection observation uses 5 seconds and request observation 3 seconds.
|
|
@@ -1210,13 +1211,13 @@ retained when a later submission-admission check fails.
|
|
|
1210
1211
|
|
|
1211
1212
|
### Stored review activity
|
|
1212
1213
|
|
|
1213
|
-
`
|
|
1214
|
+
`read_list_review_activity` accepts account/time/limit and independent ANDed
|
|
1214
1215
|
`reviewStatus`, `requestStatus`, `executionStatus` filters. One row represents
|
|
1215
1216
|
one review session and its explicit current attempt, including optional
|
|
1216
1217
|
`currentAttemptId`, `reviewRevision`, `transactionDigest`, request and chain
|
|
1217
1218
|
status. `dataScope.recordCount` counts the complete filtered scope before limit.
|
|
1218
1219
|
|
|
1219
|
-
`
|
|
1220
|
+
`read_summarize_review_funnel` keeps the session denominator. `reviewStatusCounts`
|
|
1220
1221
|
is the preparation distribution; `requestStatusCounts` is a list of
|
|
1221
1222
|
`{ requestStatus, count }` entries (including zero counts); `executionStatusCounts`
|
|
1222
1223
|
has success/failure counts. Status strings are data values, not secret-like JSON
|
|
@@ -1237,7 +1238,7 @@ result counts as completed and as its verified chain outcome, but does not count
|
|
|
1237
1238
|
as `everAwaitedChainResult` unless the session actually reached that stage in an
|
|
1238
1239
|
attempt. This metric is neither a submission total nor a mandatory funnel step.
|
|
1239
1240
|
|
|
1240
|
-
`
|
|
1241
|
+
`read_get_review_session_detail` returns the current `request`, full
|
|
1241
1242
|
`requestCount`, capped `requests`, revision-bound state snapshots and transitions
|
|
1242
1243
|
with `domain` and optional attemptId. Each request may contain a verified
|
|
1243
1244
|
`execution`; absent execution does not imply failure. Current request is returned
|
|
@@ -1250,7 +1251,7 @@ facts actually exist.
|
|
|
1250
1251
|
|
|
1251
1252
|
| Tool | Status | Purpose |
|
|
1252
1253
|
| --- | --- | --- |
|
|
1253
|
-
| `
|
|
1254
|
+
| `account_get_active_account` | Implemented | Reads the active wallet-account read context. |
|
|
1254
1255
|
|
|
1255
1256
|
The user clears the default read address through a confirmed Settings card action. Ordinary MCP calls do not clear it.
|
|
1256
1257
|
|
|
@@ -1258,10 +1259,10 @@ The user clears the default read address through a confirmed Settings card actio
|
|
|
1258
1259
|
|
|
1259
1260
|
| Tool | Status | Purpose |
|
|
1260
1261
|
| --- | --- | --- |
|
|
1261
|
-
| `
|
|
1262
|
-
| `
|
|
1262
|
+
| `settings_create_local_settings_session` | Implemented | Opens one internal Settings card with an unsubmitted draft. |
|
|
1263
|
+
| `settings_get_local_settings` | Implemented | Reads stored/effective Sui gRPC and GraphQL endpoints, sources and pending restart information. |
|
|
1263
1264
|
|
|
1264
|
-
The
|
|
1265
|
+
The result is a `kind: "settings"` card snapshot
|
|
1265
1266
|
and a public saved-result link. Card permission is only in `sui-mcp/card` UI
|
|
1266
1267
|
metadata. There is no `settingsUrl`, `openTarget`, external page, HTTP mutation
|
|
1267
1268
|
API or compatibility alias. A client without internal cards receives
|
|
@@ -1271,7 +1272,7 @@ Settings groups Address for viewing assets, Local records, Troubleshooting and A
|
|
|
1271
1272
|
settings. Confirmed changes are `clear_read_address`, `set_endpoint`,
|
|
1272
1273
|
`restore_endpoint` (gRPC or GraphQL), `import_local_data`, `reset_local_data`
|
|
1273
1274
|
and `restart_wallet_service`. Their preparation and confirmation use app-only
|
|
1274
|
-
`
|
|
1275
|
+
`ui_act_card` with card permission, revision, operation identity and the exact
|
|
1275
1276
|
preparation identity. Choosing or checking data does not apply it, contact a
|
|
1276
1277
|
wallet or restart the SDK. Duplicate confirmation returns the same admitted
|
|
1277
1278
|
result; MCP JSON-RPC request IDs do not authorize another operation.
|
|
@@ -1429,13 +1430,13 @@ remains set; storing an endpoint does not modify that environment.
|
|
|
1429
1430
|
|
|
1430
1431
|
Download creates and verifies one private snapshot with an exclusive generated
|
|
1431
1432
|
file identity. Supported Host delivery does not publish a second permanent backup. Response or result
|
|
1432
|
-
storage failure never regenerates that snapshot. `
|
|
1433
|
+
storage failure never regenerates that snapshot. `ui_read_settings_file` is
|
|
1433
1434
|
app-only and binds card/permission, operation, file, offset, verified hash/length
|
|
1434
1435
|
and the current `attemptId` for a private download. Its ordinary content carries
|
|
1435
1436
|
range metadata; Base64 bytes appear only in `sui-mcp/settings-file` UI metadata.
|
|
1436
1437
|
The View checks the complete hash before standard Host delivery.
|
|
1437
1438
|
|
|
1438
|
-
File continuations also use app-only `
|
|
1439
|
+
File continuations also use app-only `ui_act_card`:
|
|
1439
1440
|
|
|
1440
1441
|
- `settings_retry_download`: `operationId`, `fileId`, `previousAttemptId` and a
|
|
1441
1442
|
new `attemptId`; atomically advances one attempt on the same live snapshot.
|
|
@@ -1494,8 +1495,8 @@ and addresses. Historical disconnected/failed records do not prove a current
|
|
|
1494
1495
|
connection or approval. The complete recorded impact remains bound to admission;
|
|
1495
1496
|
the display does not filter it into a new wallet-eligibility rule.
|
|
1496
1497
|
|
|
1497
|
-
Endpoint changes require
|
|
1498
|
-
|
|
1498
|
+
Endpoint changes require stopping all participating MCP connections and waiting
|
|
1499
|
+
for the shared parent to exit, then reopening them to apply its configuration. Restart connection service only replaces the SDK
|
|
1499
1500
|
child. Installation environment overrides continue to take precedence. Custom
|
|
1500
1501
|
providers affect read data quality; use trusted Sui mainnet providers.
|
|
1501
1502
|
|
|
@@ -1515,12 +1516,12 @@ permissions and display facts. Clients must use the returned URI/key values.
|
|
|
1515
1516
|
| `suimcp://docs/mcp-tools` | API reference: tool contracts, response fields, statuses, follow-up fields, and output boundaries. |
|
|
1516
1517
|
| `suimcp://docs/wallet-connection` | Wallet connection reference: active read context, private SDK ownership and user-approved transaction requests. |
|
|
1517
1518
|
| `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 `
|
|
1519
|
+
| `suimcp://protocols/deepbook-v3` | Protocol reference only; use MCP tool responses and `read_list_supported_protocols` for current support. |
|
|
1519
1520
|
| `suimcp://protocols/deepbook-margin` | Protocol reference only; no margin MCP read tools or signable actions are exposed in this release. |
|
|
1520
1521
|
|
|
1521
1522
|
Only allowlisted mainnet protocol references are exposed as MCP resources.
|
|
1522
1523
|
|
|
1523
|
-
Protocol resources are not runtime registries, supported-protocol lists, live liquidity sources, route recommendations, or signing-readiness signals. Use `
|
|
1524
|
+
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
1525
|
|
|
1525
1526
|
MCP resources are runtime-facing references that connected AI clients can read.
|
|
1526
1527
|
|
package/docs/SDK_API.md
CHANGED
|
@@ -72,8 +72,11 @@ file/mainnet rejection is independent of local-data confirmation revision and
|
|
|
72
72
|
survives Back until explicit file selection changes. The View's current file-job
|
|
73
73
|
progress describes communication only; it cannot grant restoration authority.
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
Download backup prepares one verified snapshot and calls `App.downloadFile`.
|
|
76
|
+
Only that function's exact method-not-found result selects local publication of
|
|
77
|
+
the same snapshot. A possibly handled earlier attempt requires explicit local-copy
|
|
78
|
+
consent. Host acknowledgment does not prove a save destination or disk storage;
|
|
79
|
+
Folder and File name identify only a verified local backup result.
|
|
77
80
|
|
|
78
81
|
The shared server uses the pinned MCP SDK Streamable HTTP transport behind authenticated loopback access. Stdio clients forward tool, resource and prompt requests with their original client identity and capabilities. The SDK limits each internal HTTP request body to 4 MiB, including its complete MCP JSON-RPC envelope and metadata. Oversized bodies are refused before tool or card dispatch. Card calls additionally have a 64 KiB envelope budget; ordinary MCP calls do not inherit that smaller limit. Restore uploads retain their 16 MiB file limit and are split into messages within the card budget. The SDK's internal HTTP batch guard does not expose a stdio batch feature. SDK HTTP errors expose the HTTP status separately from their local error code; the stdio forwarding boundary retains that numeric status in the MCP error. Handler cancellation and request identity use `context.mcpReq.signal` and `context.mcpReq.id`. The current private transport uses the SDK's default initialized connection behavior; it does not opt into automatic protocol probes or request retries.
|
|
79
82
|
|
|
@@ -142,7 +145,7 @@ Verified from `node_modules/@mysten/deepbook-v3/src/client.ts` and `node_modules
|
|
|
142
145
|
|
|
143
146
|
The `address` is used by the SDK as the transaction simulation sender for read queries. For sender-independent DeepBook orderbook, raw-quantity quote, and display-amount quote reads, Sui MCP supplies an internal mainnet placeholder address. This placeholder is not user identity and must not be represented as wallet authorization.
|
|
144
147
|
|
|
145
|
-
Account-bound DeepBook reads, such as `
|
|
148
|
+
Account-bound DeepBook reads, such as `read_summarize_deepbook_account_inventory`, use the active account address as the simulation sender. The product filters manager detail reads through on-chain `getBalanceManagerIds(owner)` discovery before calling account-bound detail methods; this is active read context, not signing authorization or custody.
|
|
146
149
|
|
|
147
150
|
Confirmed methods:
|
|
148
151
|
|
|
@@ -190,12 +193,12 @@ type BaseQuantityOut = {
|
|
|
190
193
|
};
|
|
191
194
|
```
|
|
192
195
|
|
|
193
|
-
The pinned SDK accepts `number | bigint` quote inputs. Its high-level quote query objects include an input echo field (`baseQuantity` or `quoteQuantity`) produced with `Number(inputRaw)`, plus display quote fields (`baseOut`, `quoteOut`, and `deepRequired`) produced after scalar division and `Number(...)` conversion. Sui MCP does not use those high-level query objects as the canonical quote source for adapter preparation. It uses the pinned SDK transaction builder quote functions, requests `client.core.simulateTransaction` command results, and parses raw `u64` return values. The simulated public Move entrypoint is `pool::get_quote_quantity_out` for base-to-quote reads and `pool::get_base_quantity_out` for quote-to-base reads; both delegate to `pool::get_quantity_out`, whose official Move source defines the return order as `base_quantity_out`, `quote_quantity_out`, and `deep_quantity_required`. Public `quote` fields are exact decimal display strings derived from those raw values through pinned DeepBook scalars; `rawQuote` carries the raw evidence. `
|
|
196
|
+
The pinned SDK accepts `number | bigint` quote inputs. Its high-level quote query objects include an input echo field (`baseQuantity` or `quoteQuantity`) produced with `Number(inputRaw)`, plus display quote fields (`baseOut`, `quoteOut`, and `deepRequired`) produced after scalar division and `Number(...)` conversion. Sui MCP does not use those high-level query objects as the canonical quote source for adapter preparation. It uses the pinned SDK transaction builder quote functions, requests `client.core.simulateTransaction` command results, and parses raw `u64` return values. The simulated public Move entrypoint is `pool::get_quote_quantity_out` for base-to-quote reads and `pool::get_base_quantity_out` for quote-to-base reads; both delegate to `pool::get_quantity_out`, whose official Move source defines the return order as `base_quantity_out`, `quote_quantity_out`, and `deep_quantity_required`. Public `quote` fields are exact decimal display strings derived from those raw values through pinned DeepBook scalars; `rawQuote` carries the raw evidence. `read_quote_deepbook_action` marks the input as raw `u64`, while `read_quote_deepbook_display_amount` marks the input as a source display amount converted to raw `u64`. Raw quote evidence is not an effective price, price-impact calculation, quote-vs-mid slippage calculation, venue comparison, best-route claim, fiat cash-out estimate, external market lookup, USDC/USD peg assumption, P&L, cost basis, final min-out, signing data, or signing readiness. The account-bound DeepBook review may derive a fresh raw quote policy from this evidence and use that derived policy for local unsigned transaction material build, while keeping bytes private to the backend until a scoped user selection admits a WalletConnect request for that reviewed revision. MCP and ordinary review-status outputs still do not contain transaction bytes, signing data, or signing readiness. When the digest commitment stage completes, it is derived from the locally stored transaction bytes through pinned SDK `Transaction.from(...).getDigest()` and remains an internal binding, not a public signing artifact.
|
|
194
197
|
|
|
195
198
|
## Runtime Boundary
|
|
196
199
|
|
|
197
200
|
- JSON-RPC client imports are not used.
|
|
198
|
-
- Sui gRPC and GraphQL endpoints are resolved from local SQLite settings by default. `
|
|
201
|
+
- Sui gRPC and GraphQL endpoints are resolved from local SQLite settings by default. `SUI_MCP_GRPC_URL` and `SUI_MCP_GRAPHQL_URL` are advanced temporary overrides and do not mutate stored settings.
|
|
199
202
|
- Sui gRPC URLs must include an explicit port and no credentials, path, query string, or fragment.
|
|
200
203
|
- Sui GraphQL URLs must use `https` and must not include credentials, query string, or fragment.
|
|
201
204
|
- The gRPC endpoint is verified during runtime startup. The GraphQL endpoint is verified when saved, imported, or first used by Sui activity tools.
|