@stelis/say-ur-intent 0.0.8 → 0.1.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 +2 -140
- package/docs/LOCAL_DB_ARCHITECTURE.md +33 -0
- package/docs/MCP_SETUP.md +49 -1
- package/docs/UTILITY_INDEX.md +25 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -88,17 +88,6 @@ It can also create a read-only, non-signable local review session from a
|
|
|
88
88
|
structured external payment or Sui action proposal. External proposal ingestion
|
|
89
89
|
does not trust external transaction material or send anything for wallet signing.
|
|
90
90
|
|
|
91
|
-
Key terms used below:
|
|
92
|
-
|
|
93
|
-
- Sui: the mainnet blockchain whose DeFi state this project reads.
|
|
94
|
-
- MCP: Model Context Protocol, the tool-calling interface used by AI clients.
|
|
95
|
-
- DeepBook: Sui's onchain order book protocol.
|
|
96
|
-
- SDK: Software Development Kit, a version-pinned library dependency used by this repository.
|
|
97
|
-
- gRPC and GraphQL: Sui SDK transports used by this runtime for mainnet reads.
|
|
98
|
-
- dApp Kit: Sui's wallet connection library for web apps.
|
|
99
|
-
- stdio: standard input/output, the local transport used by MCP clients to talk to this server.
|
|
100
|
-
- Stelis: the GitHub and npm namespace for this package. Say Ur Intent is the product and runtime name.
|
|
101
|
-
|
|
102
91
|
For setup, see [docs/MCP_SETUP.md](docs/MCP_SETUP.md).
|
|
103
92
|
For the MCP API reference, see [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md).
|
|
104
93
|
For the AI-client answer playbook, see [docs/AGENT_BEHAVIOR.md](docs/AGENT_BEHAVIOR.md).
|
|
@@ -215,38 +204,9 @@ For quote responses alone, these conclusions are unsupported:
|
|
|
215
204
|
- cost basis is not available;
|
|
216
205
|
- actionable signing data is not available.
|
|
217
206
|
|
|
218
|
-
##
|
|
219
|
-
|
|
220
|
-
This package targets Node.js 22+. Node 22 or 24 LTS is recommended.
|
|
221
|
-
|
|
222
|
-
Use this path when you download the repository from GitHub and want to test the local build in an MCP client:
|
|
223
|
-
|
|
224
|
-
```bash
|
|
225
|
-
git clone https://github.com/stelis-dev/say-ur-intent.git
|
|
226
|
-
cd say-ur-intent
|
|
227
|
-
npm install
|
|
228
|
-
npm run build
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
No Sui endpoint setup is required for the default path. For MCP stdio configuration from a local checkout, point the client at the built runtime:
|
|
207
|
+
## Install
|
|
232
208
|
|
|
233
|
-
|
|
234
|
-
{
|
|
235
|
-
"command": "node",
|
|
236
|
-
"args": ["/absolute/path/to/say-ur-intent/dist/runtime/start.js"]
|
|
237
|
-
}
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
Do not wrap the stdio server in a shell command that writes ordinary text to stdout. Stdout is reserved for MCP JSON-RPC messages; logs go to stderr.
|
|
241
|
-
|
|
242
|
-
Client-specific setup for Claude Code, Claude Desktop, Codex, and Cursor lives in [docs/MCP_SETUP.md](docs/MCP_SETUP.md). That file is the canonical setup guide; this README keeps only the short path.
|
|
243
|
-
|
|
244
|
-
To delegate local setup to an AI coding agent, tell it:
|
|
245
|
-
|
|
246
|
-
```text
|
|
247
|
-
Register this repository as a local stdio MCP server using the built /absolute/path/to/say-ur-intent/dist/runtime/start.js file.
|
|
248
|
-
Use the default Sui mainnet endpoint unless I explicitly ask for a custom provider.
|
|
249
|
-
```
|
|
209
|
+
Install from the MCP registry (server `io.github.stelis-dev/say-ur-intent`) or with `npx -y @stelis/say-ur-intent`. For per-client configuration (Claude Code, Claude Desktop, Codex, Cursor) and running from a local checkout, see [docs/MCP_SETUP.md](docs/MCP_SETUP.md).
|
|
250
210
|
|
|
251
211
|
After the MCP server is connected, use [docs/MCP_SETUP.md](docs/MCP_SETUP.md#first-use-flow) for first-use setup, [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) for API fields and statuses, and [docs/AGENT_BEHAVIOR.md](docs/AGENT_BEHAVIOR.md) for user-question flow and response wording.
|
|
252
212
|
|
|
@@ -256,20 +216,6 @@ Product docs, registry, AI responses, UX copy, and signable actions are mainnet-
|
|
|
256
216
|
|
|
257
217
|
Unsupported protocol experiments are not product functionality and are not included in the package docs, MCP resources, registry support lists, UX copy, or signable-action lists.
|
|
258
218
|
|
|
259
|
-
## Commands
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
npm install
|
|
263
|
-
npm run typecheck
|
|
264
|
-
npm run build
|
|
265
|
-
npm test
|
|
266
|
-
npm run release:check
|
|
267
|
-
npm run generate:deepbook-registry
|
|
268
|
-
npm run smoke:mainnet
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
`npm run generate:deepbook-registry` writes `registry/generated/deepbook-mainnet.json`, which is ignored by Git because generated registry data must include provenance and should be regenerated from the pinned SDK.
|
|
272
|
-
|
|
273
219
|
## MCP Tools
|
|
274
220
|
|
|
275
221
|
The canonical MCP API reference lives in [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md).
|
|
@@ -341,87 +287,3 @@ If you maintain a Sui DeFi protocol that has a registered MVR name and want its
|
|
|
341
287
|
package to display that name in the review graph, open a pull request adding your
|
|
342
288
|
mainnet package address and MVR name to the package registry. Every unregistered
|
|
343
289
|
address keeps its raw form.
|
|
344
|
-
|
|
345
|
-
## For Maintainers
|
|
346
|
-
|
|
347
|
-
This section is for people operating releases, running smoke checks, changing runtime storage, or debugging startup. Normal users and MCP client users can stop at the documentation map above.
|
|
348
|
-
|
|
349
|
-
### Mainnet Read Smoke
|
|
350
|
-
|
|
351
|
-
Normal quickstart use does not require Sui endpoint setup. The smoke script is a manual maintainer check for a specific mainnet provider:
|
|
352
|
-
|
|
353
|
-
```bash
|
|
354
|
-
export SUI_GRPC_URL="https://fullnode.mainnet.sui.io:443"
|
|
355
|
-
export SUI_GRAPHQL_URL="https://graphql.mainnet.sui.io/graphql" # optional override; default is the built-in mainnet GraphQL endpoint
|
|
356
|
-
export SMOKE_SUI_ADDRESS="0x..."
|
|
357
|
-
export SMOKE_DEEPBOOK_POOL_KEY="DEEP_SUI"
|
|
358
|
-
export SMOKE_QUOTE_AMOUNT="1000000000" # raw integer units; for SUI, 1000000000 = 1 SUI
|
|
359
|
-
# Optional: export SMOKE_INSPECT_DIGEST="..."
|
|
360
|
-
# Optional: export SMOKE_INSPECT_RANDOM_LATEST="true"
|
|
361
|
-
npm run build
|
|
362
|
-
npm run smoke:mainnet
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
`SUI_GRPC_URL` must be only scheme, host, and explicit port. Do not include credentials, a path, query string, or fragment.
|
|
366
|
-
`SMOKE_SUI_ADDRESS` must be a 32-byte hex Sui address, for example `0x` followed by 64 hex characters.
|
|
367
|
-
`SMOKE_INSPECT_DIGEST` is optional. Use a digest whose sender or returned balance-change owner is `SMOKE_SUI_ADDRESS` to exercise the stored digest-lookup path; otherwise the lookup can still return `ok` with `persistence.stored: false`.
|
|
368
|
-
`SMOKE_INSPECT_RANDOM_LATEST=true` is optional and only used when `SMOKE_INSPECT_DIGEST` is unset.
|
|
369
|
-
|
|
370
|
-
It samples one digest from the latest GraphQL transaction page and calls `read.inspect_sui_transaction` without passing the smoke address.
|
|
371
|
-
|
|
372
|
-
This checks current transaction-read shape without pinning a specific user address or exercising the stored relation path.
|
|
373
|
-
|
|
374
|
-
The smoke script currently calls:
|
|
375
|
-
|
|
376
|
-
- wallet assets;
|
|
377
|
-
- DeepBook orderbook;
|
|
378
|
-
- raw-quantity quote;
|
|
379
|
-
- `read.scan_sui_account_activity` for `SMOKE_SUI_ADDRESS` with limit 5;
|
|
380
|
-
- `read.summarize_sui_activity_scan` through active account context with limit 5.
|
|
381
|
-
|
|
382
|
-
If `SMOKE_FUNCTION_TARGET` is set to a full `package::module::function`, it also calls `read.scan_sui_function_activity` and `read.summarize_sui_function_activity_scan` with limit 5.
|
|
383
|
-
|
|
384
|
-
If unset, function activity smoke is recorded as not run with `notRunReason: "missing_env"`.
|
|
385
|
-
|
|
386
|
-
Empty activity pages are valid smoke outcomes. They are recorded with `rowCount: 0` and `emptyAccepted: true`.
|
|
387
|
-
|
|
388
|
-
If `SMOKE_INSPECT_DIGEST` is set, the script also calls `read.inspect_sui_transaction` for that digest and the smoke address.
|
|
389
|
-
|
|
390
|
-
DeepBook orderbook and raw-quantity quote reads use an internal mainnet SDK simulation sender placeholder, not a user's wallet. The display-amount quote path is covered by automated tests, not by this smoke script. This smoke script does not exercise account-bound DeepBook transaction-material build or digest binding; that path needs a separate funded-account material-build smoke before smoke results are treated as product-grade proof for that review stage.
|
|
391
|
-
|
|
392
|
-
Wallet asset summaries and active-account activity summaries use the smoke address through a wallet identity session created by the smoke script. Browser wallet behavior is checked separately.
|
|
393
|
-
|
|
394
|
-
Smoke result files record activity status, row count, source, window/order flags, persistence, and evidence summary only. They do not record raw GraphQL payloads, transaction bytes, signatures, raw transaction details, or compact transaction aggregates.
|
|
395
|
-
|
|
396
|
-
### Runtime Boundary
|
|
397
|
-
|
|
398
|
-
The runtime starts these local components:
|
|
399
|
-
|
|
400
|
-
- a local SQLite store;
|
|
401
|
-
- a mainnet guard for the configured Sui gRPC endpoint;
|
|
402
|
-
- the local review HTTP server on `127.0.0.1`;
|
|
403
|
-
- the stdio MCP transport.
|
|
404
|
-
|
|
405
|
-
The GraphQL endpoint is also mainnet-guarded when it is saved through settings, imported from a local-data backup, or first used by Sui activity tools.
|
|
406
|
-
|
|
407
|
-
Stdout is reserved for MCP JSON-RPC messages. Logs go to stderr.
|
|
408
|
-
|
|
409
|
-
### Local Data
|
|
410
|
-
|
|
411
|
-
The runtime creates a local SQLite file for account read context and Say Ur Intent review activity evidence. Users do not install a database server separately.
|
|
412
|
-
|
|
413
|
-
Override the app data directory only when needed:
|
|
414
|
-
|
|
415
|
-
```bash
|
|
416
|
-
export SAY_UR_INTENT_DATA_DIR="/path/to/local/app-data"
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
The stored active account is for reading wallet state only. It does not let the toolkit sign transactions on your behalf.
|
|
420
|
-
|
|
421
|
-
User-requested bounded transaction scans can store normalized facts only when a transaction is related to a known local wallet. This product does not run a background or complete wallet history indexer.
|
|
422
|
-
|
|
423
|
-
The default Sui mainnet gRPC and GraphQL endpoints are stored in the local SQLite settings table on first run.
|
|
424
|
-
|
|
425
|
-
To inspect settings or change local data, ask your AI client to create a Say Ur Intent local settings session and open the returned settings URL in the same machine's system browser.
|
|
426
|
-
|
|
427
|
-
Endpoint changes apply after the MCP server restarts.
|
|
@@ -4,6 +4,39 @@ Say Ur Intent uses a local SQLite database for durable product state that must s
|
|
|
4
4
|
|
|
5
5
|
This document is for maintainers and contributors who change local state, import/export behavior, activity queries, or review evidence storage. Product users normally need only the README and `docs/MCP_SETUP.md`.
|
|
6
6
|
|
|
7
|
+
## Runtime Boundary
|
|
8
|
+
|
|
9
|
+
The runtime starts these local components:
|
|
10
|
+
|
|
11
|
+
- a local SQLite store;
|
|
12
|
+
- a mainnet guard for the configured Sui gRPC endpoint;
|
|
13
|
+
- the local review HTTP server on `127.0.0.1`;
|
|
14
|
+
- the stdio MCP transport.
|
|
15
|
+
|
|
16
|
+
The GraphQL endpoint is also mainnet-guarded when it is saved through settings, imported from a local-data backup, or first used by Sui activity tools.
|
|
17
|
+
|
|
18
|
+
Stdout is reserved for MCP JSON-RPC messages. Logs go to stderr.
|
|
19
|
+
|
|
20
|
+
## Local Data
|
|
21
|
+
|
|
22
|
+
The runtime creates a local SQLite file for account read context and Say Ur Intent review activity evidence. Users do not install a database server separately.
|
|
23
|
+
|
|
24
|
+
Override the app data directory only when needed:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
export SAY_UR_INTENT_DATA_DIR="/path/to/local/app-data"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The stored active account is for reading wallet state only. It does not let the toolkit sign transactions on your behalf.
|
|
31
|
+
|
|
32
|
+
User-requested bounded transaction scans can store normalized facts only when a transaction is related to a known local wallet. This product does not run a background or complete wallet history indexer.
|
|
33
|
+
|
|
34
|
+
The default Sui mainnet gRPC and GraphQL endpoints are stored in the local SQLite settings table on first run.
|
|
35
|
+
|
|
36
|
+
To inspect settings or change local data, ask your AI client to create a Say Ur Intent local settings session and open the returned settings URL in the same machine's system browser.
|
|
37
|
+
|
|
38
|
+
Endpoint changes apply after the MCP server restarts.
|
|
39
|
+
|
|
7
40
|
## Engine
|
|
8
41
|
|
|
9
42
|
The runtime uses the `better-sqlite3` npm package for normal SQLite file semantics and incremental writes. Users do not install a separate database server.
|
package/docs/MCP_SETUP.md
CHANGED
|
@@ -8,6 +8,17 @@ The README keeps only the short entry path; client-specific setup, restart behav
|
|
|
8
8
|
|
|
9
9
|
Say Ur Intent is tested from a local checkout in this repository state.
|
|
10
10
|
|
|
11
|
+
## Key terms
|
|
12
|
+
|
|
13
|
+
- Sui: the mainnet blockchain whose DeFi state this project reads.
|
|
14
|
+
- MCP: Model Context Protocol, the tool-calling interface used by AI clients.
|
|
15
|
+
- DeepBook: Sui's onchain order book protocol.
|
|
16
|
+
- SDK: Software Development Kit, a version-pinned library dependency used by this repository.
|
|
17
|
+
- gRPC and GraphQL: Sui SDK transports used by this runtime for mainnet reads.
|
|
18
|
+
- dApp Kit: Sui's wallet connection library for web apps.
|
|
19
|
+
- stdio: standard input/output, the local transport used by MCP clients to talk to this server.
|
|
20
|
+
- Stelis: the GitHub and npm namespace for this package. Say Ur Intent is the product and runtime name.
|
|
21
|
+
|
|
11
22
|
## Requirements
|
|
12
23
|
|
|
13
24
|
- Node.js 22+. Node 22 or 24 LTS is recommended.
|
|
@@ -64,9 +75,46 @@ On native Windows clients that need `cmd`, use the same command through `cmd /c`
|
|
|
64
75
|
}
|
|
65
76
|
```
|
|
66
77
|
|
|
78
|
+
To delegate local setup to an AI coding agent, tell it:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
Register this repository as a local stdio MCP server using the built /absolute/path/to/say-ur-intent/dist/runtime/start.js file.
|
|
82
|
+
Use the default Sui mainnet endpoint unless I explicitly ask for a custom provider.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Commands
|
|
86
|
+
|
|
87
|
+
These `npm run` scripts run from a local checkout. They are developer and maintainer scripts, not MCP tools or packaged product commands:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npm install
|
|
91
|
+
npm run typecheck
|
|
92
|
+
npm run build
|
|
93
|
+
npm test
|
|
94
|
+
npm run release:check
|
|
95
|
+
npm run generate:deepbook-registry
|
|
96
|
+
npm run smoke:mainnet
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`npm run generate:deepbook-registry` writes `registry/generated/deepbook-mainnet.json`, which is ignored by Git because generated registry data must include provenance and should be regenerated from the pinned SDK.
|
|
100
|
+
|
|
101
|
+
## Install from the MCP Registry
|
|
102
|
+
|
|
103
|
+
If your MCP client can install servers from the
|
|
104
|
+
[MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=say-ur-intent),
|
|
105
|
+
find the `io.github.stelis-dev/say-ur-intent` entry and install it through your
|
|
106
|
+
client. The resulting stdio server command is equivalent to:
|
|
107
|
+
|
|
108
|
+
```sh
|
|
109
|
+
npx -y @stelis/say-ur-intent
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Clients that do not install from the registry use the published-package and
|
|
113
|
+
per-client configuration below, which give the exact `command` and `args`.
|
|
114
|
+
|
|
67
115
|
## Published Package Setup
|
|
68
116
|
|
|
69
|
-
|
|
117
|
+
`@stelis/say-ur-intent` is on npm; there are two ways to run it. Both start
|
|
70
118
|
the same `say-ur-intent` stdio MCP server; pick based on whether you want
|
|
71
119
|
automatic updates or the fastest, most reliable startup.
|
|
72
120
|
|
package/docs/UTILITY_INDEX.md
CHANGED
|
@@ -44,6 +44,31 @@ Source-checkout scripts are not packaged product commands, MCP tools, review-tim
|
|
|
44
44
|
| Sui GraphQL function filter probe | `npm exec -- tsx scripts/sui-graphql-function-filter-probe.ts [--endpoint <mainnet-graphql-url>] [--sample-size <1-50>] [--timeout-ms <ms>]` | Manual, source evidence only | Runs a read-only Sui mainnet GraphQL source-shape probe for function-filter diagnostics; see notes below. |
|
|
45
45
|
| Sui CLI transaction diagnostics | `npm exec -- tsx scripts/sui-cli-transaction-diagnostics.ts -- --help` | Manual, source checkout only | Allowlisted local `sui` CLI debug evidence. See notes below. |
|
|
46
46
|
|
|
47
|
+
## Mainnet Read Smoke
|
|
48
|
+
|
|
49
|
+
This is a manual maintainer check for a specific mainnet provider. Normal quickstart use does not require Sui endpoint setup. Run it for people operating releases or debugging mainnet read shape.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
export SUI_GRPC_URL="https://fullnode.mainnet.sui.io:443"
|
|
53
|
+
export SUI_GRAPHQL_URL="https://graphql.mainnet.sui.io/graphql" # optional override; default is the built-in mainnet GraphQL endpoint
|
|
54
|
+
export SMOKE_SUI_ADDRESS="0x..."
|
|
55
|
+
export SMOKE_DEEPBOOK_POOL_KEY="DEEP_SUI"
|
|
56
|
+
export SMOKE_QUOTE_AMOUNT="1000000000" # raw integer units; for SUI, 1000000000 = 1 SUI
|
|
57
|
+
# Optional: export SMOKE_INSPECT_DIGEST="..."
|
|
58
|
+
# Optional: export SMOKE_INSPECT_RANDOM_LATEST="true"
|
|
59
|
+
npm run build
|
|
60
|
+
npm run smoke:mainnet
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`SUI_GRPC_URL` must be only scheme, host, and explicit port. Do not include credentials, a path, query string, or fragment.
|
|
64
|
+
`SMOKE_SUI_ADDRESS` must be a 32-byte hex Sui address, for example `0x` followed by 64 hex characters.
|
|
65
|
+
`SMOKE_INSPECT_DIGEST` is optional. Use a digest whose sender or returned balance-change owner is `SMOKE_SUI_ADDRESS` to exercise the stored digest-lookup path; otherwise the lookup can still return `ok` with `persistence.stored: false`.
|
|
66
|
+
`SMOKE_INSPECT_RANDOM_LATEST=true` is optional and only used when `SMOKE_INSPECT_DIGEST` is unset. It samples one digest from the latest GraphQL transaction page and calls `read.inspect_sui_transaction` without passing the smoke address. This checks current transaction-read shape without pinning a specific user address or exercising the stored relation path.
|
|
67
|
+
|
|
68
|
+
DeepBook orderbook and raw-quantity quote reads use an internal mainnet SDK simulation sender placeholder, not a user's wallet. The display-amount quote path is covered by automated tests, not by this smoke script. This smoke script does not exercise account-bound DeepBook transaction-material build or digest binding; that path needs a separate funded-account material-build smoke before smoke results are treated as product-grade proof for that review stage.
|
|
69
|
+
|
|
70
|
+
Wallet asset summaries and active-account activity summaries use the smoke address through a wallet identity session created by the smoke script. Browser wallet behavior is checked separately. This smoke script does not record raw GraphQL payloads, transaction bytes, signatures, raw transaction details, or compact transaction aggregates.
|
|
71
|
+
|
|
47
72
|
## Mainnet Read Smoke Notes
|
|
48
73
|
|
|
49
74
|
Run `npm run build` first because `npm run smoke:mainnet` executes `dist/runtime/smokeMainnetRead.js`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stelis/say-ur-intent",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"mcpName": "io.github.stelis-dev/say-ur-intent",
|
|
5
5
|
"description": "Say Ur Intent is a local-first toolkit for helping AI applications and users inspect Sui DeFi actions before execution.",
|
|
6
6
|
"license": "MIT",
|