@wowok/agent-mcp 2.2.13 → 2.2.15
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 +19 -11
- package/dist/index.js +44 -100
- package/dist/schema/query/index.js +1 -1
- package/dist/schema-query/index.d.ts +29 -0
- package/dist/schema-query/index.js +149 -0
- package/dist/schemas/account_operation.schema.json +255 -0
- package/dist/schemas/guard2file.schema.json +71 -0
- package/dist/schemas/index.json +139 -0
- package/dist/schemas/local_info_operation.schema.json +142 -0
- package/dist/schemas/local_mark_operation.schema.json +119 -0
- package/dist/schemas/machineNode2file.schema.json +71 -0
- package/dist/schemas/messenger_operation.schema.json +1393 -0
- package/dist/schemas/onchain_events.schema.json +113 -0
- package/dist/schemas/onchain_operations.schema.json +376 -0
- package/dist/schemas/onchain_operations_allocation.schema.json +914 -0
- package/dist/schemas/onchain_operations_arbitration.schema.json +1166 -0
- package/dist/schemas/onchain_operations_contact.schema.json +853 -0
- package/dist/schemas/onchain_operations_demand.schema.json +984 -0
- package/dist/schemas/onchain_operations_gen_passport.schema.json +1141 -0
- package/dist/schemas/onchain_operations_guard.schema.json +713 -0
- package/dist/schemas/onchain_operations_machine.schema.json +1347 -0
- package/dist/schemas/onchain_operations_order.schema.json +830 -0
- package/dist/schemas/onchain_operations_payment.schema.json +717 -0
- package/dist/schemas/onchain_operations_permission.schema.json +1088 -0
- package/dist/schemas/onchain_operations_personal.schema.json +1282 -0
- package/dist/schemas/onchain_operations_progress.schema.json +751 -0
- package/dist/schemas/onchain_operations_repository.schema.json +1572 -0
- package/dist/schemas/onchain_operations_reward.schema.json +955 -0
- package/dist/schemas/onchain_operations_service.schema.json +1411 -0
- package/dist/schemas/onchain_operations_treasury.schema.json +1155 -0
- package/dist/schemas/onchain_table_data.schema.json +35 -0
- package/dist/schemas/query_toolkit.schema.json +32 -0
- package/dist/schemas/schema_query.schema.json +33 -0
- package/dist/schemas/wip_file.schema.json +27 -0
- package/dist/schemas/wowok_buildin_info.schema.json +487 -0
- package/package.json +7 -5
- package/dist/docs/index.d.ts +0 -3
- package/dist/docs/index.js +0 -2
- package/dist/docs/loader.d.ts +0 -12
- package/dist/docs/loader.js +0 -177
- package/dist/docs/search.d.ts +0 -17
- package/dist/docs/search.js +0 -325
- package/dist/docs/types.d.ts +0 -55
- package/dist/docs/types.js +0 -1
- package/docs/README.md +0 -249
- package/docs/WIP.md +0 -388
- package/docs/WTS.md +0 -536
- package/docs/docs/account.md +0 -914
- package/docs/docs/allocation.md +0 -635
- package/docs/docs/arbitration.md +0 -1804
- package/docs/docs/arbitration_state_machine.md +0 -270
- package/docs/docs/contact.md +0 -709
- package/docs/docs/demand.md +0 -948
- package/docs/docs/guard.md +0 -1465
- package/docs/docs/localinfo.md +0 -432
- package/docs/docs/localmark.md +0 -583
- package/docs/docs/machine.md +0 -2490
- package/docs/docs/messenger.md +0 -2098
- package/docs/docs/onchain_events.md +0 -267
- package/docs/docs/order.md +0 -1001
- package/docs/docs/payment.md +0 -512
- package/docs/docs/permission.md +0 -1438
- package/docs/docs/personal.md +0 -742
- package/docs/docs/progress.md +0 -1748
- package/docs/docs/query.md +0 -467
- package/docs/docs/repository.md +0 -1043
- package/docs/docs/reward.md +0 -833
- package/docs/docs/service.md +0 -2130
- package/docs/docs/stage-01-introduction.md +0 -243
- package/docs/docs/stage-02-trust.md +0 -302
- package/docs/docs/stage-03-collaboration.md +0 -337
- package/docs/docs/stage-04-transaction.md +0 -277
- package/docs/docs/stage-05-business.md +0 -151
- package/docs/docs/stage-06-personal.md +0 -203
- package/docs/docs/stage-07-query.md +0 -572
- package/docs/docs/stage-08-examples.md +0 -184
- package/docs/docs/treasury.md +0 -1149
- package/docs/docs/wowok_buildin_info.md +0 -740
- package/docs/examples/Insurance/Insurance.md +0 -594
- package/docs/examples/Insurance/Insurance_TestResults.md +0 -481
- package/docs/examples/Insurance/insurance_complete_guard_v1.json +0 -50
- package/docs/examples/MyShop/MyShop.md +0 -1353
- package/docs/examples/MyShop/MyShop_TestResults.md +0 -1003
- package/docs/examples/MyShop_Advanced/MyShop_Advanced.md +0 -1898
- package/docs/examples/MyShop_Advanced/MyShop_Advanced_MerchantSystem_TestResults.md +0 -1297
- package/docs/examples/MyShop_Advanced/MyShop_Advanced_OrderFlow_TestResults.md +0 -743
- package/docs/examples/MyShop_Advanced/machine_nodes.json +0 -222
- package/docs/examples/ThreeBody_Signature/ThreeBody_Signature.md +0 -776
- package/docs/examples/ThreeBody_Signature/ThreeBody_Signature_TestResults.md +0 -599
- package/docs/examples/Travel/Travel.md +0 -1157
- package/docs/examples/Travel/Travel_TestResults.md +0 -743
- package/docs/examples/Travel/calc-weather-timestamps.js +0 -8
- package/docs/examples/Travel/travel_machine_v2_export.json +0 -104
- package/docs/examples/Travel/weather_check_guard_v1.json +0 -51
- package/docs/skills/WOWOK.md +0 -650
- package/docs/skills/onchain_operations/_common.md +0 -406
- package/docs/skills/onchain_operations/_index.md +0 -196
- package/docs/skills/onchain_operations/allocation.md +0 -28
- package/docs/skills/onchain_operations/arbitration.md +0 -106
- package/docs/skills/onchain_operations/contact.md +0 -40
- package/docs/skills/onchain_operations/demand.md +0 -53
- package/docs/skills/onchain_operations/gen_passport.md +0 -23
- package/docs/skills/onchain_operations/guard.md +0 -56
- package/docs/skills/onchain_operations/machine.md +0 -89
- package/docs/skills/onchain_operations/order.md +0 -56
- package/docs/skills/onchain_operations/payment.md +0 -24
- package/docs/skills/onchain_operations/permission.md +0 -68
- package/docs/skills/onchain_operations/personal.md +0 -58
- package/docs/skills/onchain_operations/progress.md +0 -38
- package/docs/skills/onchain_operations/repository.md +0 -70
- package/docs/skills/onchain_operations/reward.md +0 -38
- package/docs/skills/onchain_operations/service.md +0 -78
- package/docs/skills/onchain_operations/treasury.md +0 -68
- package/docs/skills/schema-account_operation.md +0 -402
- package/docs/skills/schema-guard2file.md +0 -153
- package/docs/skills/schema-local_info_operation.md +0 -160
- package/docs/skills/schema-local_mark_operation.md +0 -148
- package/docs/skills/schema-machineNode2file.md +0 -155
- package/docs/skills/schema-messenger_operation.md +0 -547
- package/docs/skills/schema-onchain_events.md +0 -201
- package/docs/skills/schema-onchain_table_data.md +0 -334
- package/docs/skills/schema-query_toolkit.md +0 -395
- package/docs/skills/schema-wip_file.md +0 -240
- package/docs/skills/schema-wowok_buildin_info.md +0 -296
- package/docs/wip-examples/three_body.html +0 -57
- package/docs/wip-examples/three_body.wip +0 -30
package/docs/docs/messenger.md
DELETED
|
@@ -1,2098 +0,0 @@
|
|
|
1
|
-
# Messenger Component (💬 Encrypted Messaging System)
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
## Component Overview
|
|
6
|
-
|
|
7
|
-
The Messenger component is used for WoWok encrypted message management, including conversation list viewing, sending messages/files, viewing message history, WTS (Witness Timestamped Snapshot) generation, verification, and signing, on-chain proof, blacklist/friendslist/guardlist management, etc.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Function List
|
|
12
|
-
|
|
13
|
-
| Function Name | Purpose | Usage Scenario | Significance |
|
|
14
|
-
|---------------|---------|----------------|-------------|
|
|
15
|
-
| **Watch Conversations** | View all conversation lists with summary info, unread counts, preview messages | Check active chats, see unread counts, preview recent messages | Foundation for managing multiple conversations with unread filtering |
|
|
16
|
-
| **Send Message** | Send encrypted text messages to recipients | Communicate with peers, share information | Core messaging functionality |
|
|
17
|
-
| **Send File** | Send files (compressed as ZIP) to recipients | Share documents, images, WTS/WIP files | Enables file-based communication |
|
|
18
|
-
| **Watch Messages** | View message history with filtering (including viewed/unviewed status) | Browse chat history, search messages, filter by read status | Access to complete conversation records with read status tracking |
|
|
19
|
-
| **Mark Messages as Viewed** | Mark specific messages as viewed | Mark messages as read after viewing | Tracks which messages have been seen by user |
|
|
20
|
-
| **Mark Conversation as Viewed** | Mark all messages in a conversation as viewed | Mark entire chat as read | Bulk mark messages as viewed for a conversation |
|
|
21
|
-
| **Extract ZIP Messages** | Extract files from ZIP messages | Download and open shared files | Makes shared files accessible |
|
|
22
|
-
| **Generate WTS** | Create Witness Timestamped Snapshots | Preserve chat history as evidence, legal documentation | Creates verifiable chat records |
|
|
23
|
-
| **Verify WTS** | Check WTS file integrity and signatures | Validate chat record authenticity | Ensures WTS hasn't been tampered with |
|
|
24
|
-
| **Sign WTS** | Add digital signatures to WTS files | Certify chat records, legal attestation | Provides non-repudiation for WTS |
|
|
25
|
-
| **WTS to HTML** | Convert WTS files to readable HTML | View chat records in browser, share with others | Makes WTS human-readable |
|
|
26
|
-
| **Proof Message** | Create on-chain timestamp proofs for messages | Legal evidence, timestamp verification | Gives messages blockchain-level validity |
|
|
27
|
-
| **Blacklist Management** | Manage blocked users | Prevent spam, block unwanted contacts | Controls who can message you |
|
|
28
|
-
| **Friendslist Management** | Manage trusted contacts | Filter messages, organize contacts | Enables friend-based message filtering |
|
|
29
|
-
| **Guardlist Management** | Manage Guard verifiers | Message verification, access control | Provides message security layer |
|
|
30
|
-
| **Settings Management** | Manage messenger settings | Configure inbox size, stranger message preferences | Customizes messaging experience |
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Complete Tool Call Structure
|
|
35
|
-
|
|
36
|
-
Messenger operations use the following top-level structure:
|
|
37
|
-
|
|
38
|
-
```json
|
|
39
|
-
{
|
|
40
|
-
"operation": "operation_type",
|
|
41
|
-
// operation-specific fields
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Schema Tree
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
messenger_operation (Messenger Operations)
|
|
51
|
-
├── operation (discriminator, required)
|
|
52
|
-
│ ├── "watch_conversations"
|
|
53
|
-
│ │ └── filter (optional, ConversationsFilter)
|
|
54
|
-
│ │ ├── account (optional, string) - Account name or address
|
|
55
|
-
│ │ ├── unreadOnly (optional, boolean) - Only return conversations with unread messages
|
|
56
|
-
│ │ ├── startTime (optional, number) - Start timestamp (ms) for lastMessageAt filtering
|
|
57
|
-
│ │ ├── endTime (optional, number) - End timestamp (ms) for lastMessageAt filtering
|
|
58
|
-
│ │ ├── previewMessageCount (optional, number) - Number of preview messages per conversation (default: 2)
|
|
59
|
-
│ │ ├── sortBy (optional, "lastMessageAt" | "unreadCount" | "messageCount") - Sort field
|
|
60
|
-
│ │ ├── sortOrder (optional, "asc" | "desc") - Sort order
|
|
61
|
-
│ │ └── skipAutoMarkViewed (optional, boolean) - Skip auto-marking preview messages as viewed
|
|
62
|
-
│ ├── "send_message"
|
|
63
|
-
│ │ ├── from (optional, string)
|
|
64
|
-
│ │ ├── to (required, string | Address/Name) - Recipient can be simple string (name/address) or full object
|
|
65
|
-
│ │ ├── content (required, string)
|
|
66
|
-
│ │ └── options (optional, SendMessageOptions)
|
|
67
|
-
│ │ ├── guardAddress (optional, string)
|
|
68
|
-
│ │ ├── passportAddress (optional, string)
|
|
69
|
-
│ │ ├── force (optional, boolean)
|
|
70
|
-
│ │ └── new_messenger_name (optional, string)
|
|
71
|
-
│ ├── "send_file"
|
|
72
|
-
│ │ ├── from (optional, string)
|
|
73
|
-
│ │ ├── to (required, string | Address/Name) - Recipient can be simple string (name/address) or full object
|
|
74
|
-
│ │ ├── filePath (required, string)
|
|
75
|
-
│ │ └── options (optional, SendFileOptions)
|
|
76
|
-
│ │ ├── fileName (optional, string)
|
|
77
|
-
│ │ ├── contentType (optional, "wts"/"wip"/"zip")
|
|
78
|
-
│ │ ├── guardAddress (optional, string)
|
|
79
|
-
│ │ ├── passportAddress (optional, string)
|
|
80
|
-
│ │ ├── force (optional, boolean)
|
|
81
|
-
│ │ └── new_messenger_name (optional, string)
|
|
82
|
-
│ ├── "watch_messages"
|
|
83
|
-
│ │ └── filter (optional, MessageFilter)
|
|
84
|
-
│ │ ├── account (optional, string) - Account to filter messages for
|
|
85
|
-
│ │ ├── direction (optional, "sent"/"received")
|
|
86
|
-
│ │ ├── status (optional, "pending"/"confirmed"/"read"/"failed"/"rejected"/"decrypted"/"decrypt_failed")
|
|
87
|
-
│ │ ├── peerAddress (optional, string | Address/Name) - Can be simple string (name/address) or full object
|
|
88
|
-
│ │ ├── msgType (optional, 1/3)
|
|
89
|
-
│ │ ├── contentType (optional, "text"/"zip"/"wts"/"wip")
|
|
90
|
-
│ │ ├── decryptedOnly (optional, boolean)
|
|
91
|
-
│ │ ├── confirmedOnly (optional, boolean)
|
|
92
|
-
│ │ ├── keyword (optional, string) - Search keyword in plaintext
|
|
93
|
-
│ │ ├── sortOrder (optional, "asc"/"desc")
|
|
94
|
-
│ │ ├── limit (optional, number)
|
|
95
|
-
│ │ ├── offset (optional, number)
|
|
96
|
-
│ │ ├── timeField (optional, "createdAt"/"receivedAt"/"serverTimestamp")
|
|
97
|
-
│ │ ├── startTime (optional, number) - Start timestamp (ms) for timeField filtering
|
|
98
|
-
│ │ ├── endTime (optional, number) - End timestamp (ms) for timeField filtering
|
|
99
|
-
│ │ ├── createdAtStart (optional, number)
|
|
100
|
-
│ │ ├── createdAtEnd (optional, number)
|
|
101
|
-
│ │ ├── receivedAtStart (optional, number)
|
|
102
|
-
│ │ ├── receivedAtEnd (optional, number)
|
|
103
|
-
│ │ ├── serverTimestampStart (optional, number)
|
|
104
|
-
│ │ ├── serverTimestampEnd (optional, number)
|
|
105
|
-
│ │ ├── arkConfirmedOnly (optional, boolean) - Only return ARK confirmed messages
|
|
106
|
-
│ │ ├── arkTimestampStart (optional, number)
|
|
107
|
-
│ │ ├── arkTimestampEnd (optional, number)
|
|
108
|
-
│ │ ├── proofedOnly (optional, boolean) - Only return messages with on-chain proof
|
|
109
|
-
│ │ ├── hasLastReceivedIndexOnly (optional, boolean) - Only return messages with lastReceivedLeafIndex
|
|
110
|
-
│ │ ├── lastReceivedIndexMin (optional, number)
|
|
111
|
-
│ │ ├── lastReceivedIndexMax (optional, number)
|
|
112
|
-
│ │ ├── listFilterMode (optional, "friends"/"guard"/"stranger"/"any") - Filter by contact list membership
|
|
113
|
-
│ │ ├── customListFilter (optional, object) - Advanced address-based filtering
|
|
114
|
-
│ │ │ ├── includeAddresses (optional, string[]) - Only return messages from these addresses
|
|
115
|
-
│ │ │ ├── excludeAddresses (optional, string[]) - Exclude messages from these addresses
|
|
116
|
-
│ │ │ └── relation (optional, "union"/"intersection") - How to combine with listFilterMode
|
|
117
|
-
│ │ ├── viewed (optional, boolean) - Filter by viewed status: true=viewed, false=unviewed
|
|
118
|
-
│ │ ├── viewedAtStart (optional, number) - Filter by viewed timestamp start (ms)
|
|
119
|
-
│ │ ├── viewedAtEnd (optional, number) - Filter by viewed timestamp end (ms)
|
|
120
|
-
│ │ └── skipAutoMarkViewed (optional, boolean) - Skip auto-marking messages as viewed
|
|
121
|
-
│ ├── "extract_zip_messages"
|
|
122
|
-
│ │ ├── account (optional, string)
|
|
123
|
-
│ │ ├── messages (required, string[] | Message[]) - Array of message IDs or Message objects
|
|
124
|
-
│ │ └── outputDir (required, string)
|
|
125
|
-
│ ├── "generate_wts"
|
|
126
|
-
│ │ └── params (required, WtsGenerationParams)
|
|
127
|
-
│ │ ├── myAccount (required, string) - Account name or address
|
|
128
|
-
│ │ ├── peerAccount (required, string | Address/Name) - Can be simple string (name/address) or full object
|
|
129
|
-
│ │ ├── range (optional, Range)
|
|
130
|
-
│ │ │ ├── type (required, "time"/"messageId"/"seqIndex")
|
|
131
|
-
│ │ │ ├── start (required, number/string)
|
|
132
|
-
│ │ │ └── end (required, number/string)
|
|
133
|
-
│ │ ├── excludePlaintext (optional, boolean)
|
|
134
|
-
│ │ └── outputDir (required, string)
|
|
135
|
-
│ ├── "verify_wts"
|
|
136
|
-
│ │ └── wtsFilePath (required, string)
|
|
137
|
-
│ ├── "sign_wts"
|
|
138
|
-
│ │ ├── wtsFilePath (required, string)
|
|
139
|
-
│ │ ├── account (optional, string)
|
|
140
|
-
│ │ └── outputPath (optional, string)
|
|
141
|
-
│ ├── "wts2html"
|
|
142
|
-
│ │ ├── wtsPath (required, string)
|
|
143
|
-
│ │ └── options (optional, WtsToHtmlOptions)
|
|
144
|
-
│ │ ├── title (optional, string)
|
|
145
|
-
│ │ ├── theme (optional, "light"/"dark")
|
|
146
|
-
│ │ └── outputPath (optional, string)
|
|
147
|
-
│ ├── "proof_message"
|
|
148
|
-
│ │ ├── account (optional, string)
|
|
149
|
-
│ │ ├── messageId (required, string)
|
|
150
|
-
│ │ └── network (optional, "localnet"/"testnet")
|
|
151
|
-
│ ├── "blacklist"
|
|
152
|
-
│ │ ├── account (optional, string)
|
|
153
|
-
│ │ └── blacklist (required, BlacklistOperation, discriminated by op)
|
|
154
|
-
│ │ ├── op: "add" | "remove"
|
|
155
|
-
│ │ │ └── users (required, string[] | ManyAccountOrMark_Address) - Can be array of strings or full object
|
|
156
|
-
│ │ ├── op: "exist"
|
|
157
|
-
│ │ │ └── users (required, string[] | ManyAccountOrMark_Address)
|
|
158
|
-
│ │ ├── op: "clear" (no additional fields)
|
|
159
|
-
│ │ └── op: "get" (no additional fields)
|
|
160
|
-
│ ├── "friendslist"
|
|
161
|
-
│ │ ├── account (optional, string)
|
|
162
|
-
│ │ └── friendslist (required, FriendslistOperation, discriminated by op)
|
|
163
|
-
│ │ ├── op: "add" | "remove"
|
|
164
|
-
│ │ │ └── users (required, string[] | ManyAccountOrMark_Address) - Can be array of strings or full object
|
|
165
|
-
│ │ ├── op: "exist"
|
|
166
|
-
│ │ │ └── users (required, string[] | ManyAccountOrMark_Address)
|
|
167
|
-
│ │ ├── op: "clear" (no additional fields)
|
|
168
|
-
│ │ └── op: "get" (no additional fields)
|
|
169
|
-
│ └── "guardlist"
|
|
170
|
-
│ ├── account (optional, string)
|
|
171
|
-
│ └── guardlist (required, GuardlistOperation, discriminated by op)
|
|
172
|
-
│ ├── op: "add"
|
|
173
|
-
│ │ └── guards (required, GuardParam[], 1-10 items)
|
|
174
|
-
│ │ ├── guard (required, string) - Guard address or name
|
|
175
|
-
│ │ └── passportValiditySeconds (required, number) - 10s to 315360000s
|
|
176
|
-
│ ├── op: "remove"
|
|
177
|
-
│ │ └── guards (required, string[], 1-10 items) - Guard addresses or names to remove
|
|
178
|
-
│ └── op: "get" (no guards field)
|
|
179
|
-
│ ├── "settings"
|
|
180
|
-
│ │ ├── account (optional, string)
|
|
181
|
-
│ │ └── settings (required, SettingsOperation)
|
|
182
|
-
│ │ ├── op (required, "get"/"set")
|
|
183
|
-
│ │ ├── allowStrangerMessages (optional, boolean) - for "set" operation
|
|
184
|
-
│ │ └── maxInboxSize (optional, number) - Maximum number of server-staged messages per user, for "set" operation
|
|
185
|
-
│ ├── "mark_messages_as_viewed"
|
|
186
|
-
│ │ ├── account (optional, string)
|
|
187
|
-
│ │ └── messageIds (required, string[]) - Array of message IDs to mark as viewed (1-1000 messages)
|
|
188
|
-
│ └── "mark_conversation_as_viewed"
|
|
189
|
-
│ ├── account (optional, string)
|
|
190
|
-
│ └── peerAddress (required, string | Address/Name) - Peer address or account name
|
|
191
|
-
└── (no other top-level fields)
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Example 1: Watch Conversations
|
|
197
|
-
|
|
198
|
-
### Feature Description
|
|
199
|
-
|
|
200
|
-
View all conversation list, including peer address, last message time, total message count, unread message count, last message preview, and preview messages. Supports filtering by unread status, time range, and customizable sorting.
|
|
201
|
-
|
|
202
|
-
### Examples
|
|
203
|
-
|
|
204
|
-
#### Example 1.1: View Default Account Conversations
|
|
205
|
-
|
|
206
|
-
**Prompt**: View all conversation list for the current default account.
|
|
207
|
-
|
|
208
|
-
```json
|
|
209
|
-
{
|
|
210
|
-
"operation": "watch_conversations"
|
|
211
|
-
}
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
**Response**: Returns list of conversations with preview messages (empty if no conversations exist).
|
|
215
|
-
|
|
216
|
-
```json
|
|
217
|
-
[
|
|
218
|
-
{
|
|
219
|
-
"peerAddress": "0x58f9...297f",
|
|
220
|
-
"lastMessageAt": 1776863079642,
|
|
221
|
-
"messageCount": 7,
|
|
222
|
-
"unreadCount": 3,
|
|
223
|
-
"lastMessagePreview": "Message #5 from Alice: Perfect! All 5 rounds of testing completed successfully...",
|
|
224
|
-
"previewMessages": [
|
|
225
|
-
{
|
|
226
|
-
"messageId": "012d6212_58f9dbc0_3_3abc",
|
|
227
|
-
"fromAddress": "0x012d...bfaf",
|
|
228
|
-
"toAddress": "0x58f9...297f",
|
|
229
|
-
"plaintextHash": "0x8825...7169",
|
|
230
|
-
"plaintext": "Message #3 from Alice: I'm doing great! Testing this encrypted messaging system...",
|
|
231
|
-
"direction": "sent",
|
|
232
|
-
"status": "read",
|
|
233
|
-
"msgType": 1,
|
|
234
|
-
"createdAt": 1776863055566
|
|
235
|
-
},
|
|
236
|
-
{
|
|
237
|
-
"messageId": "58f9dbc0_012d6212_4_caf1",
|
|
238
|
-
"fromAddress": "0x58f9...297f",
|
|
239
|
-
"toAddress": "0x012d...bfaf",
|
|
240
|
-
"plaintextHash": "0x1fcd...0299",
|
|
241
|
-
"plaintext": "Message #4 from Bob: Yes, the encryption is working perfectly!...",
|
|
242
|
-
"direction": "received",
|
|
243
|
-
"status": "decrypted",
|
|
244
|
-
"msgType": 1,
|
|
245
|
-
"createdAt": 1776863063227,
|
|
246
|
-
"receivedAt": 1776863065328,
|
|
247
|
-
"viewedAt": 1776863094986
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
"messageId": "012d6212_58f9dbc0_5_5a2c",
|
|
251
|
-
"fromAddress": "0x012d...bfaf",
|
|
252
|
-
"toAddress": "0x58f9...297f",
|
|
253
|
-
"plaintextHash": "0x8d67...4b26",
|
|
254
|
-
"plaintext": "Message #5 from Alice: Perfect! All 5 rounds of testing completed successfully...",
|
|
255
|
-
"direction": "sent",
|
|
256
|
-
"status": "confirmed",
|
|
257
|
-
"msgType": 1,
|
|
258
|
-
"createdAt": 1776863079642
|
|
259
|
-
}
|
|
260
|
-
]
|
|
261
|
-
}
|
|
262
|
-
]
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
**Execution Result** (Tested with accounts: mcp_test_alice_7x9, mcp_test_bob_3k5):
|
|
266
|
-
- Successfully retrieved 1 conversation with 7 messages
|
|
267
|
-
- 3 unread messages detected
|
|
268
|
-
- Preview messages included with viewedAt timestamps
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
#### Example 1.2: View Only Unread Conversations
|
|
273
|
-
|
|
274
|
-
**Prompt**: View only conversations with unread messages.
|
|
275
|
-
|
|
276
|
-
```json
|
|
277
|
-
{
|
|
278
|
-
"operation": "watch_conversations",
|
|
279
|
-
"filter": {
|
|
280
|
-
"unreadOnly": true
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
**Response**: Returns only conversations that have unread messages (unreadCount > 0).
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
#### Example 1.3: View Conversations with Custom Preview Count
|
|
290
|
-
|
|
291
|
-
**Prompt**: View conversations with 5 preview messages per conversation, sorted by unread count.
|
|
292
|
-
|
|
293
|
-
```json
|
|
294
|
-
{
|
|
295
|
-
"operation": "watch_conversations",
|
|
296
|
-
"filter": {
|
|
297
|
-
"previewMessageCount": 5,
|
|
298
|
-
"sortBy": "unreadCount",
|
|
299
|
-
"sortOrder": "desc"
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
#### Example 1.4: View Conversations in Time Range
|
|
307
|
-
|
|
308
|
-
**Prompt**: View conversations with activity in the last 24 hours, don't auto-mark preview messages as viewed.
|
|
309
|
-
|
|
310
|
-
```json
|
|
311
|
-
{
|
|
312
|
-
"operation": "watch_conversations",
|
|
313
|
-
"filter": {
|
|
314
|
-
"startTime": 1776572239063,
|
|
315
|
-
"endTime": 1776658639063,
|
|
316
|
-
"skipAutoMarkViewed": true
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
#### Example 1.5: View Specified Account Conversations
|
|
324
|
-
|
|
325
|
-
**Prompt**: View conversation list for account "my_account" with unread filter.
|
|
326
|
-
|
|
327
|
-
```json
|
|
328
|
-
{
|
|
329
|
-
"operation": "watch_conversations",
|
|
330
|
-
"filter": {
|
|
331
|
-
"account": "my_account",
|
|
332
|
-
"unreadOnly": true,
|
|
333
|
-
"previewMessageCount": 3
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
**Response**: Returns list of conversations with unread messages for the specified account.
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
## Example 2: Send Message
|
|
343
|
-
|
|
344
|
-
### Feature Description
|
|
345
|
-
|
|
346
|
-
Send encrypted text message to specified recipient.
|
|
347
|
-
|
|
348
|
-
### Examples
|
|
349
|
-
|
|
350
|
-
#### Example 2.1: Send Simple Message
|
|
351
|
-
|
|
352
|
-
**Prompt**: Send message "Hello! How are you?" from default account to "bob".
|
|
353
|
-
|
|
354
|
-
```json
|
|
355
|
-
{
|
|
356
|
-
"operation": "send_message",
|
|
357
|
-
"to": "bob",
|
|
358
|
-
"content": "Hello! How are you?"
|
|
359
|
-
}
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
**Response**: Returns message ID, status, and Merkle proof data.
|
|
363
|
-
|
|
364
|
-
```json
|
|
365
|
-
{
|
|
366
|
-
"messageId": "012d6212_58f9dbc0_1_e7a6",
|
|
367
|
-
"status": "confirmed",
|
|
368
|
-
"merkleData": {
|
|
369
|
-
"leafIndex": 1,
|
|
370
|
-
"prevRoot": "0xbf23...6e5b",
|
|
371
|
-
"newRoot": "0x2cdf...13f4",
|
|
372
|
-
"serverSignature": "0x248a...4b06",
|
|
373
|
-
"serverTimestamp": 1776863002578,
|
|
374
|
-
"serverPublicKey": "0xa723...3790"
|
|
375
|
-
},
|
|
376
|
-
"lastReceivedLeafIndex": 0
|
|
377
|
-
}
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
**Execution Result** (Tested 2026-04-22):
|
|
381
|
-
- Message successfully sent from mcp_test_alice_7x9 to mcp_test_bob_3k5
|
|
382
|
-
- Status: confirmed
|
|
383
|
-
- Leaf index: 1 (second message in the conversation)
|
|
384
|
-
- Merkle proof included for verification
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
#### Example 2.1b: Send Using Full Object Format
|
|
389
|
-
|
|
390
|
-
**Prompt**: Send message using full object format with explicit local_mark_first control.
|
|
391
|
-
|
|
392
|
-
```json
|
|
393
|
-
{
|
|
394
|
-
"operation": "send_message",
|
|
395
|
-
"to": {
|
|
396
|
-
"name_or_address": "friend_account",
|
|
397
|
-
"local_mark_first": true
|
|
398
|
-
},
|
|
399
|
-
"content": "Hello! How are you?"
|
|
400
|
-
}
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
---
|
|
404
|
-
|
|
405
|
-
#### Example 2.2: Send with Sender and Options
|
|
406
|
-
|
|
407
|
-
**Prompt**: Send message from "my_account" to "bob", use Guard "message_guard" for verification, set new messenger name "my_messenger".
|
|
408
|
-
|
|
409
|
-
```json
|
|
410
|
-
{
|
|
411
|
-
"operation": "send_message",
|
|
412
|
-
"from": "my_account",
|
|
413
|
-
"to": {
|
|
414
|
-
"name_or_address": "bob",
|
|
415
|
-
"local_mark_first": true
|
|
416
|
-
},
|
|
417
|
-
"content": "This is a protected message with Guard verification",
|
|
418
|
-
"options": {
|
|
419
|
-
"guardAddress": "message_guard",
|
|
420
|
-
"new_messenger_name": "my_messenger"
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
---
|
|
426
|
-
|
|
427
|
-
#### Example 2.3: Force Send Message
|
|
428
|
-
|
|
429
|
-
**Prompt**: Force send message to "recipient_address", ignoring any pending Guard messages.
|
|
430
|
-
|
|
431
|
-
```json
|
|
432
|
-
{
|
|
433
|
-
"operation": "send_message",
|
|
434
|
-
"to": {
|
|
435
|
-
"name_or_address": "recipient_address"
|
|
436
|
-
},
|
|
437
|
-
"content": "This message is force-sent",
|
|
438
|
-
"options": {
|
|
439
|
-
"force": true
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
```
|
|
443
|
-
|
|
444
|
-
**Response**: Returns send result including message ID, status, Merkle proof data, and last received leaf index.
|
|
445
|
-
|
|
446
|
-
```json
|
|
447
|
-
{
|
|
448
|
-
"messageId": "msg_abc123",
|
|
449
|
-
"status": "confirmed",
|
|
450
|
-
"merkleData": {
|
|
451
|
-
"leafIndex": 5,
|
|
452
|
-
"prevRoot": "0xabc...",
|
|
453
|
-
"newRoot": "0xdef...",
|
|
454
|
-
"serverSignature": "0x123...",
|
|
455
|
-
"serverTimestamp": 1704067200000,
|
|
456
|
-
"serverPublicKey": "0x456..."
|
|
457
|
-
},
|
|
458
|
-
"lastReceivedLeafIndex": 4
|
|
459
|
-
}
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
---
|
|
463
|
-
|
|
464
|
-
## Example 3: Send File
|
|
465
|
-
|
|
466
|
-
### Feature Description
|
|
467
|
-
|
|
468
|
-
Send file to specified recipient. Files are compressed to ZIP format before sending.
|
|
469
|
-
|
|
470
|
-
### Examples
|
|
471
|
-
|
|
472
|
-
#### Example 3.1: Send Simple File
|
|
473
|
-
|
|
474
|
-
**Prompt**: Send file "test_message_file.txt" from "mcp_test_alice_7x9" to "mcp_test_bob_3k5".
|
|
475
|
-
|
|
476
|
-
```json
|
|
477
|
-
{
|
|
478
|
-
"operation": "send_file",
|
|
479
|
-
"from": "mcp_test_alice_7x9",
|
|
480
|
-
"to": "mcp_test_bob_3k5",
|
|
481
|
-
"filePath": "./test_message_file.txt"
|
|
482
|
-
}
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
**Response**: Returns send result including message ID, status, Merkle proof data, and zip metadata.
|
|
486
|
-
|
|
487
|
-
```json
|
|
488
|
-
{
|
|
489
|
-
"operation": "send_file",
|
|
490
|
-
"result": {
|
|
491
|
-
"messageId": "012d6212_58f9dbc0_6_c72e",
|
|
492
|
-
"status": "confirmed",
|
|
493
|
-
"merkleData": {
|
|
494
|
-
"leafIndex": 6,
|
|
495
|
-
"prevRoot": "0xc816...3321",
|
|
496
|
-
"newRoot": "0x426a...8568",
|
|
497
|
-
"serverSignature": "0xce31...dc02",
|
|
498
|
-
"serverTimestamp": 1776863159748,
|
|
499
|
-
"serverPublicKey": "0xa723...3790"
|
|
500
|
-
},
|
|
501
|
-
"lastReceivedLeafIndex": 4
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
**Execution Result** (Tested 2026-04-22):
|
|
507
|
-
- File successfully sent from mcp_test_alice_7x9 to mcp_test_bob_3k5
|
|
508
|
-
- File automatically compressed to ZIP format
|
|
509
|
-
- Message ID: 012d6212_58f9dbc0_6_c72e
|
|
510
|
-
- Status: confirmed with Merkle proof
|
|
511
|
-
- Receiver can extract file using extract_zip_messages operation
|
|
512
|
-
|
|
513
|
-
---
|
|
514
|
-
|
|
515
|
-
#### Example 3.2: Send WIP File with Custom Name
|
|
516
|
-
|
|
517
|
-
**Prompt**: Send WIP file "service.wip" to "alice", set custom name "service_description.wip", specify content type as "wip".
|
|
518
|
-
|
|
519
|
-
```json
|
|
520
|
-
{
|
|
521
|
-
"operation": "send_file",
|
|
522
|
-
"to": "alice",
|
|
523
|
-
"filePath": "./service.wip",
|
|
524
|
-
"options": {
|
|
525
|
-
"fileName": "service_description.wip",
|
|
526
|
-
"contentType": "wip"
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
```
|
|
530
|
-
|
|
531
|
-
---
|
|
532
|
-
|
|
533
|
-
#### Example 3.3: Send with Guard and Passport
|
|
534
|
-
|
|
535
|
-
**Prompt**: Send file "contract.docx" to "bob", use Guard "file_guard" and Passport "my_passport".
|
|
536
|
-
|
|
537
|
-
```json
|
|
538
|
-
{
|
|
539
|
-
"operation": "send_file",
|
|
540
|
-
"to": "bob",
|
|
541
|
-
"filePath": "./contract.docx",
|
|
542
|
-
"options": {
|
|
543
|
-
"guardAddress": "file_guard",
|
|
544
|
-
"passportAddress": "my_passport"
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
```
|
|
548
|
-
|
|
549
|
-
---
|
|
550
|
-
|
|
551
|
-
## Example 4: Watch Messages
|
|
552
|
-
|
|
553
|
-
### Feature Description
|
|
554
|
-
|
|
555
|
-
View message history, supporting various filter conditions.
|
|
556
|
-
|
|
557
|
-
### Examples
|
|
558
|
-
|
|
559
|
-
#### Example 4.1: View All Messages
|
|
560
|
-
|
|
561
|
-
**Prompt**: View all messages, no filtering applied.
|
|
562
|
-
|
|
563
|
-
```json
|
|
564
|
-
{
|
|
565
|
-
"operation": "watch_messages"
|
|
566
|
-
}
|
|
567
|
-
```
|
|
568
|
-
|
|
569
|
-
**Response**: Returns array of messages with full details.
|
|
570
|
-
|
|
571
|
-
```json
|
|
572
|
-
[
|
|
573
|
-
{
|
|
574
|
-
"messageId": "012d6212_58f9dbc0_5_5a2c",
|
|
575
|
-
"fromAddress": "0x012d...bfaf",
|
|
576
|
-
"toAddress": "0x58f9...297f",
|
|
577
|
-
"plaintextHash": "0x8d67...4b26",
|
|
578
|
-
"plaintext": "Message #5 from Alice: Perfect! All 5 rounds of testing completed successfully...",
|
|
579
|
-
"lastReceivedLeafIndex": 4,
|
|
580
|
-
"direction": "sent",
|
|
581
|
-
"status": "confirmed",
|
|
582
|
-
"msgType": 1,
|
|
583
|
-
"leafIndex": 5,
|
|
584
|
-
"prevRoot": "0x6b17...93b9",
|
|
585
|
-
"newRoot": "0xc816...3321",
|
|
586
|
-
"serverSignature": "0xeaba...4c01",
|
|
587
|
-
"serverPublicKey": "0xa723...3790",
|
|
588
|
-
"serverTimestamp": 1776863079764,
|
|
589
|
-
"createdAt": 1776863079642
|
|
590
|
-
},
|
|
591
|
-
{
|
|
592
|
-
"messageId": "58f9dbc0_012d6212_4_caf1",
|
|
593
|
-
"fromAddress": "0x58f9...297f",
|
|
594
|
-
"toAddress": "0x012d...bfaf",
|
|
595
|
-
"plaintextHash": "0x1fcd...0299",
|
|
596
|
-
"plaintext": "Message #4 from Bob: Yes, the encryption is working perfectly!...",
|
|
597
|
-
"lastReceivedLeafIndex": 3,
|
|
598
|
-
"direction": "received",
|
|
599
|
-
"status": "decrypted",
|
|
600
|
-
"msgType": 1,
|
|
601
|
-
"leafIndex": 4,
|
|
602
|
-
"prevRoot": "0xbff3...2f54",
|
|
603
|
-
"newRoot": "0x6b17...93b9",
|
|
604
|
-
"serverSignature": "0xe4b1...2c06",
|
|
605
|
-
"serverPublicKey": "0xa723...3790",
|
|
606
|
-
"serverTimestamp": 1776863063341,
|
|
607
|
-
"createdAt": 1776863063227,
|
|
608
|
-
"receivedAt": 1776863065328,
|
|
609
|
-
"viewedAt": 1776863094986
|
|
610
|
-
}
|
|
611
|
-
]
|
|
612
|
-
```
|
|
613
|
-
|
|
614
|
-
**Execution Result** (Tested 2026-04-22):
|
|
615
|
-
- Successfully retrieved 7 messages for account mcp_test_alice_7x9
|
|
616
|
-
- Messages include both sent and received with full Merkle proof data
|
|
617
|
-
- viewedAt timestamps present for viewed messages
|
|
618
|
-
- File message (ZIP) included with zipMetadata
|
|
619
|
-
|
|
620
|
-
---
|
|
621
|
-
|
|
622
|
-
#### Example 4.2: Filter by Peer and Direction
|
|
623
|
-
|
|
624
|
-
**Prompt**: View all received messages from "alice", sort descending, limit to 50 messages.
|
|
625
|
-
|
|
626
|
-
```json
|
|
627
|
-
{
|
|
628
|
-
"operation": "watch_messages",
|
|
629
|
-
"filter": {
|
|
630
|
-
"peerAddress": "alice",
|
|
631
|
-
"direction": "received",
|
|
632
|
-
"sortOrder": "desc",
|
|
633
|
-
"limit": 50
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
```
|
|
637
|
-
|
|
638
|
-
---
|
|
639
|
-
|
|
640
|
-
#### Example 4.3: Search by Keyword
|
|
641
|
-
|
|
642
|
-
**Prompt**: Search for messages containing "meeting", only show confirmed messages.
|
|
643
|
-
|
|
644
|
-
```json
|
|
645
|
-
{
|
|
646
|
-
"operation": "watch_messages",
|
|
647
|
-
"filter": {
|
|
648
|
-
"keyword": "meeting",
|
|
649
|
-
"confirmedOnly": true
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
```
|
|
653
|
-
|
|
654
|
-
---
|
|
655
|
-
|
|
656
|
-
#### Example 4.4: Filter by Content Type and Friends
|
|
657
|
-
|
|
658
|
-
**Prompt**: View only WTS files from friends list, within time range.
|
|
659
|
-
|
|
660
|
-
```json
|
|
661
|
-
{
|
|
662
|
-
"operation": "watch_messages",
|
|
663
|
-
"filter": {
|
|
664
|
-
"contentType": "wts",
|
|
665
|
-
"listFilterMode": "friends",
|
|
666
|
-
"timeField": "createdAt",
|
|
667
|
-
"startTime": 1704067200000,
|
|
668
|
-
"endTime": 1706745600000
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
|
-
```
|
|
672
|
-
|
|
673
|
-
---
|
|
674
|
-
|
|
675
|
-
## Example 5: Message Filtering Combinations (Practical Examples)
|
|
676
|
-
|
|
677
|
-
### Feature Description
|
|
678
|
-
|
|
679
|
-
This section demonstrates practical filtering combinations for `watch_messages` and `watch_conversations`. All filter conditions are combined with AND logic.
|
|
680
|
-
|
|
681
|
-
### Common Usage Patterns
|
|
682
|
-
|
|
683
|
-
#### Pattern 1: Get Latest Unread Messages from Friends
|
|
684
|
-
|
|
685
|
-
**Scenario**: Check new messages from trusted contacts only.
|
|
686
|
-
|
|
687
|
-
```json
|
|
688
|
-
{
|
|
689
|
-
"operation": "watch_messages",
|
|
690
|
-
"filter": {
|
|
691
|
-
"direction": "received",
|
|
692
|
-
"viewed": false,
|
|
693
|
-
"listFilterMode": "friends",
|
|
694
|
-
"sortOrder": "desc",
|
|
695
|
-
"limit": 20,
|
|
696
|
-
"skipAutoMarkViewed": true
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
```
|
|
700
|
-
|
|
701
|
-
**Filter Logic**:
|
|
702
|
-
- `direction: received` - Only incoming messages
|
|
703
|
-
- `viewed: false` - Only unviewed messages
|
|
704
|
-
- `listFilterMode: friends` - Only from friends list
|
|
705
|
-
- `sortOrder: desc` + `limit: 20` - Latest 20 messages
|
|
706
|
-
- `skipAutoMarkViewed: true` - Don't auto-mark, so we can review first
|
|
707
|
-
|
|
708
|
-
---
|
|
709
|
-
|
|
710
|
-
#### Pattern 2: Find Unconfirmed Guard Messages in Time Range
|
|
711
|
-
|
|
712
|
-
**Scenario**: Check Guard-verified messages that haven't been confirmed yet within a specific period.
|
|
713
|
-
|
|
714
|
-
```json
|
|
715
|
-
{
|
|
716
|
-
"operation": "watch_messages",
|
|
717
|
-
"filter": {
|
|
718
|
-
"listFilterMode": "guard",
|
|
719
|
-
"status": "pending",
|
|
720
|
-
"timeField": "createdAt",
|
|
721
|
-
"startTime": 1704067200000,
|
|
722
|
-
"endTime": 1706745600000,
|
|
723
|
-
"sortOrder": "asc"
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
|
-
```
|
|
727
|
-
|
|
728
|
-
**Filter Logic**:
|
|
729
|
-
- `listFilterMode: guard` - Only from Guard list
|
|
730
|
-
- `status: pending` - Not yet confirmed
|
|
731
|
-
- `timeField: createdAt` + `startTime/endTime` - Time range filter
|
|
732
|
-
- `sortOrder: asc` - Oldest first (process in order)
|
|
733
|
-
|
|
734
|
-
---
|
|
735
|
-
|
|
736
|
-
#### Pattern 3: Search Decrypted Messages with Keywords
|
|
737
|
-
|
|
738
|
-
**Scenario**: Search for specific content in already decrypted messages.
|
|
739
|
-
|
|
740
|
-
```json
|
|
741
|
-
{
|
|
742
|
-
"operation": "watch_messages",
|
|
743
|
-
"filter": {
|
|
744
|
-
"peerAddress": "alice",
|
|
745
|
-
"decryptedOnly": true,
|
|
746
|
-
"keyword": "contract",
|
|
747
|
-
"confirmedOnly": true,
|
|
748
|
-
"sortOrder": "desc",
|
|
749
|
-
"limit": 50
|
|
750
|
-
}
|
|
751
|
-
}
|
|
752
|
-
```
|
|
753
|
-
|
|
754
|
-
**Filter Logic**:
|
|
755
|
-
- `peerAddress: alice` - Specific conversation
|
|
756
|
-
- `decryptedOnly: true` - Only successfully decrypted
|
|
757
|
-
- `keyword: contract` - Contains "contract"
|
|
758
|
-
- `confirmedOnly: true` - Only confirmed messages
|
|
759
|
-
- `sortOrder: desc` + `limit: 50` - Latest 50 matches
|
|
760
|
-
|
|
761
|
-
---
|
|
762
|
-
|
|
763
|
-
#### Pattern 4: Get WTS Files from Strangers (Potential Spam)
|
|
764
|
-
|
|
765
|
-
**Scenario**: Review WTS files sent by non-contacts for potential spam filtering.
|
|
766
|
-
|
|
767
|
-
```json
|
|
768
|
-
{
|
|
769
|
-
"operation": "watch_messages",
|
|
770
|
-
"filter": {
|
|
771
|
-
"direction": "received",
|
|
772
|
-
"contentType": "wts",
|
|
773
|
-
"listFilterMode": "stranger",
|
|
774
|
-
"viewed": false,
|
|
775
|
-
"skipAutoMarkViewed": true
|
|
776
|
-
}
|
|
777
|
-
}
|
|
778
|
-
```
|
|
779
|
-
|
|
780
|
-
**Filter Logic**:
|
|
781
|
-
- `direction: received` - Incoming only
|
|
782
|
-
- `contentType: wts` - Only WTS files
|
|
783
|
-
- `listFilterMode: stranger` - Not in friends/guard lists
|
|
784
|
-
- `viewed: false` - Haven't checked yet
|
|
785
|
-
- `skipAutoMarkViewed: true` - Manual review required
|
|
786
|
-
|
|
787
|
-
---
|
|
788
|
-
|
|
789
|
-
#### Pattern 5: Recent Active Conversations with Unread Messages
|
|
790
|
-
|
|
791
|
-
**Scenario**: Get conversations that had activity in the last week and have unread messages.
|
|
792
|
-
|
|
793
|
-
```json
|
|
794
|
-
{
|
|
795
|
-
"operation": "watch_conversations",
|
|
796
|
-
"filter": {
|
|
797
|
-
"unreadOnly": true,
|
|
798
|
-
"startTime": 1706054400000,
|
|
799
|
-
"sortBy": "lastMessageAt",
|
|
800
|
-
"sortOrder": "desc",
|
|
801
|
-
"previewMessageCount": 3
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
```
|
|
805
|
-
|
|
806
|
-
**Filter Logic**:
|
|
807
|
-
- `unreadOnly: true` - Has unread messages
|
|
808
|
-
- `startTime: 1706054400000` - Active in last week
|
|
809
|
-
- `sortBy: lastMessageAt` + `sortOrder: desc` - Most recent first
|
|
810
|
-
- `previewMessageCount: 3` - Show 3 latest messages
|
|
811
|
-
|
|
812
|
-
---
|
|
813
|
-
|
|
814
|
-
#### Pattern 6: High-Volume Conversations Sorted by Activity
|
|
815
|
-
|
|
816
|
-
**Scenario**: Find conversations with many messages, sorted by total count.
|
|
817
|
-
|
|
818
|
-
```json
|
|
819
|
-
{
|
|
820
|
-
"operation": "watch_conversations",
|
|
821
|
-
"filter": {
|
|
822
|
-
"sortBy": "messageCount",
|
|
823
|
-
"sortOrder": "desc",
|
|
824
|
-
"previewMessageCount": 1
|
|
825
|
-
}
|
|
826
|
-
}
|
|
827
|
-
```
|
|
828
|
-
|
|
829
|
-
**Filter Logic**:
|
|
830
|
-
- `sortBy: messageCount` + `sortOrder: desc` - Most messages first
|
|
831
|
-
- `previewMessageCount: 1` - Just need a quick preview
|
|
832
|
-
|
|
833
|
-
---
|
|
834
|
-
|
|
835
|
-
#### Pattern 7: Messages with ARK Confirmation in Range
|
|
836
|
-
|
|
837
|
-
**Scenario**: Find messages that have been acknowledged by recipients within a time window.
|
|
838
|
-
|
|
839
|
-
```json
|
|
840
|
-
{
|
|
841
|
-
"operation": "watch_messages",
|
|
842
|
-
"filter": {
|
|
843
|
-
"direction": "sent",
|
|
844
|
-
"arkConfirmedOnly": true,
|
|
845
|
-
"arkTimestampStart": 1704067200000,
|
|
846
|
-
"arkTimestampEnd": 1706745600000,
|
|
847
|
-
"peerAddress": "bob"
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
```
|
|
851
|
-
|
|
852
|
-
**Filter Logic**:
|
|
853
|
-
- `direction: sent` - Messages I sent
|
|
854
|
-
- `arkConfirmedOnly: true` - Recipient acknowledged
|
|
855
|
-
- `arkTimestampStart/End` - ARK received in time range
|
|
856
|
-
- `peerAddress: bob` - Specific recipient
|
|
857
|
-
|
|
858
|
-
---
|
|
859
|
-
|
|
860
|
-
#### Pattern 8: Recently Viewed Messages for Audit
|
|
861
|
-
|
|
862
|
-
**Scenario**: Audit trail of messages viewed in the last 24 hours.
|
|
863
|
-
|
|
864
|
-
```json
|
|
865
|
-
{
|
|
866
|
-
"operation": "watch_messages",
|
|
867
|
-
"filter": {
|
|
868
|
-
"viewed": true,
|
|
869
|
-
"viewedAtStart": 1706572800000,
|
|
870
|
-
"viewedAtEnd": 1706659200000,
|
|
871
|
-
"sortOrder": "desc",
|
|
872
|
-
"limit": 100
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
```
|
|
876
|
-
|
|
877
|
-
**Filter Logic**:
|
|
878
|
-
- `viewed: true` - Only viewed messages
|
|
879
|
-
- `viewedAtStart/End` - Viewed in last 24 hours
|
|
880
|
-
- `sortOrder: desc` + `limit: 100` - Latest 100
|
|
881
|
-
|
|
882
|
-
---
|
|
883
|
-
|
|
884
|
-
#### Pattern 9: Messages with Chain Proof
|
|
885
|
-
|
|
886
|
-
**Scenario**: Find all messages that have been proven on-chain.
|
|
887
|
-
|
|
888
|
-
```json
|
|
889
|
-
{
|
|
890
|
-
"operation": "watch_messages",
|
|
891
|
-
"filter": {
|
|
892
|
-
"proofedOnly": true,
|
|
893
|
-
"sortOrder": "desc",
|
|
894
|
-
"limit": 50
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
```
|
|
898
|
-
|
|
899
|
-
**Filter Logic**:
|
|
900
|
-
- `proofedOnly: true` - Has on-chain proof
|
|
901
|
-
- `sortOrder: desc` + `limit: 50` - Latest 50
|
|
902
|
-
|
|
903
|
-
---
|
|
904
|
-
|
|
905
|
-
#### Pattern 10: Exclude Specific Addresses with Custom Filter
|
|
906
|
-
|
|
907
|
-
**Scenario**: View messages from everyone except certain blocked addresses (without using blacklist).
|
|
908
|
-
|
|
909
|
-
```json
|
|
910
|
-
{
|
|
911
|
-
"operation": "watch_messages",
|
|
912
|
-
"filter": {
|
|
913
|
-
"direction": "received",
|
|
914
|
-
"customListFilter": {
|
|
915
|
-
"excludeAddresses": ["0xbad1...", "0xbad2..."],
|
|
916
|
-
"relation": "union"
|
|
917
|
-
},
|
|
918
|
-
"sortOrder": "desc",
|
|
919
|
-
"limit": 30
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
```
|
|
923
|
-
|
|
924
|
-
**Filter Logic**:
|
|
925
|
-
- `direction: received` - Incoming only
|
|
926
|
-
- `customListFilter.excludeAddresses` - Exclude specific addresses
|
|
927
|
-
- `sortOrder: desc` + `limit: 30` - Latest 30
|
|
928
|
-
|
|
929
|
-
---
|
|
930
|
-
|
|
931
|
-
## Example 6: Extract ZIP Messages
|
|
932
|
-
|
|
933
|
-
### Feature Description
|
|
934
|
-
|
|
935
|
-
Extract and decompress ZIP format message files.
|
|
936
|
-
|
|
937
|
-
### Examples
|
|
938
|
-
|
|
939
|
-
#### Example 5.1: Extract Single Message
|
|
940
|
-
|
|
941
|
-
**Prompt**: Extract ZIP file from message "012d6212_58f9dbc0_6_c72e", save to "./extracted/".
|
|
942
|
-
|
|
943
|
-
```json
|
|
944
|
-
{
|
|
945
|
-
"operation": "extract_zip_messages",
|
|
946
|
-
"account": "mcp_test_bob_3k5",
|
|
947
|
-
"messages": ["012d6212_58f9dbc0_6_c72e"],
|
|
948
|
-
"outputDir": "./extracted/"
|
|
949
|
-
}
|
|
950
|
-
```
|
|
951
|
-
|
|
952
|
-
**Response**: Returns array of extracted file paths.
|
|
953
|
-
|
|
954
|
-
```json
|
|
955
|
-
{
|
|
956
|
-
"operation": "extract_zip_messages",
|
|
957
|
-
"result": ["./extracted_files/test_message_file.txt"]
|
|
958
|
-
}
|
|
959
|
-
```
|
|
960
|
-
|
|
961
|
-
**Execution Result** (Tested 2026-04-22):
|
|
962
|
-
- Successfully extracted ZIP message from Alice to Bob
|
|
963
|
-
- File "test_message_file.txt" extracted to output directory
|
|
964
|
-
- Original file content preserved
|
|
965
|
-
|
|
966
|
-
---
|
|
967
|
-
|
|
968
|
-
#### Example 5.2: Extract Multiple Messages
|
|
969
|
-
|
|
970
|
-
**Prompt**: Extract ZIP files from messages "msg_002", "msg_003", and "msg_004", using account "my_account".
|
|
971
|
-
|
|
972
|
-
```json
|
|
973
|
-
{
|
|
974
|
-
"operation": "extract_zip_messages",
|
|
975
|
-
"account": "my_account",
|
|
976
|
-
"messages": ["msg_002", "msg_003", "msg_004"],
|
|
977
|
-
"outputDir": "./extracted/"
|
|
978
|
-
}
|
|
979
|
-
```
|
|
980
|
-
|
|
981
|
-
---
|
|
982
|
-
|
|
983
|
-
## Example 7: Generate WTS
|
|
984
|
-
|
|
985
|
-
### Feature Description
|
|
986
|
-
|
|
987
|
-
Generate WTS (Witness Timestamped Snapshot) file for chat history. WTS files contain complete chat records with timestamps and can be used as legal evidence.
|
|
988
|
-
|
|
989
|
-
### Examples
|
|
990
|
-
|
|
991
|
-
#### Example 6.1: Generate Complete WTS
|
|
992
|
-
|
|
993
|
-
**Prompt**: Generate complete chat history WTS between "mcp_test_alice_7x9" and "mcp_test_bob_3k5", save to "./wts_output/".
|
|
994
|
-
|
|
995
|
-
```json
|
|
996
|
-
{
|
|
997
|
-
"operation": "generate_wts",
|
|
998
|
-
"params": {
|
|
999
|
-
"myAccount": "mcp_test_alice_7x9",
|
|
1000
|
-
"peerAccount": "mcp_test_bob_3k5",
|
|
1001
|
-
"outputDir": "./wts_output"
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
```
|
|
1005
|
-
|
|
1006
|
-
**Response**: Returns generated WTS file path and message count.
|
|
1007
|
-
|
|
1008
|
-
```json
|
|
1009
|
-
{
|
|
1010
|
-
"operation": "generate_wts",
|
|
1011
|
-
"result": {
|
|
1012
|
-
"files": ["./wts_output/0x012d_0x58f9_0-6.wts"],
|
|
1013
|
-
"totalMessageCount": 7,
|
|
1014
|
-
"timeRange": {
|
|
1015
|
-
"start": 1776862992437,
|
|
1016
|
-
"end": 1776863159809
|
|
1017
|
-
}
|
|
1018
|
-
}
|
|
1019
|
-
}
|
|
1020
|
-
```
|
|
1021
|
-
|
|
1022
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1023
|
-
- Successfully generated WTS file containing 7 messages
|
|
1024
|
-
- Time range: 1776862992437 to 1776863159809
|
|
1025
|
-
- File saved to specified output directory
|
|
1026
|
-
- WTS includes complete Merkle proof data for all messages
|
|
1027
|
-
|
|
1028
|
-
---
|
|
1029
|
-
|
|
1030
|
-
#### Example 6.2: Generate by Time Range
|
|
1031
|
-
|
|
1032
|
-
**Prompt**: Generate WTS for January 2024, exclude plaintext content for privacy.
|
|
1033
|
-
|
|
1034
|
-
```json
|
|
1035
|
-
{
|
|
1036
|
-
"operation": "generate_wts",
|
|
1037
|
-
"params": {
|
|
1038
|
-
"myAccount": "my_account",
|
|
1039
|
-
"peerAccount": "peer_account",
|
|
1040
|
-
"range": {
|
|
1041
|
-
"type": "time",
|
|
1042
|
-
"start": 1704067200000,
|
|
1043
|
-
"end": 1706745600000
|
|
1044
|
-
},
|
|
1045
|
-
"excludePlaintext": true,
|
|
1046
|
-
"outputDir": "./wts/"
|
|
1047
|
-
}
|
|
1048
|
-
}
|
|
1049
|
-
```
|
|
1050
|
-
|
|
1051
|
-
---
|
|
1052
|
-
|
|
1053
|
-
#### Example 6.3: Generate by Message ID Range
|
|
1054
|
-
|
|
1055
|
-
**Prompt**: Generate WTS from message ID "msg_100" to "msg_200".
|
|
1056
|
-
|
|
1057
|
-
```json
|
|
1058
|
-
{
|
|
1059
|
-
"operation": "generate_wts",
|
|
1060
|
-
"params": {
|
|
1061
|
-
"myAccount": "my_account",
|
|
1062
|
-
"peerAccount": "peer_account",
|
|
1063
|
-
"range": {
|
|
1064
|
-
"type": "messageId",
|
|
1065
|
-
"start": "msg_100",
|
|
1066
|
-
"end": "msg_200"
|
|
1067
|
-
},
|
|
1068
|
-
"outputDir": "./wts/"
|
|
1069
|
-
}
|
|
1070
|
-
}
|
|
1071
|
-
```
|
|
1072
|
-
|
|
1073
|
-
---
|
|
1074
|
-
|
|
1075
|
-
## Example 8: Verify WTS
|
|
1076
|
-
|
|
1077
|
-
### Feature Description
|
|
1078
|
-
|
|
1079
|
-
Verify WTS file integrity and signatures.
|
|
1080
|
-
|
|
1081
|
-
### Examples
|
|
1082
|
-
|
|
1083
|
-
#### Example 7.1: Verify WTS File
|
|
1084
|
-
|
|
1085
|
-
**Prompt**: Verify the WTS file at "./wts_output/0x012d_0x58f9_0-6.wts".
|
|
1086
|
-
|
|
1087
|
-
```json
|
|
1088
|
-
{
|
|
1089
|
-
"operation": "verify_wts",
|
|
1090
|
-
"wtsFilePath": "./wts_output/0x012d_0x58f9_0-6.wts"
|
|
1091
|
-
}
|
|
1092
|
-
```
|
|
1093
|
-
|
|
1094
|
-
**Response**: Returns verification result.
|
|
1095
|
-
|
|
1096
|
-
```json
|
|
1097
|
-
{
|
|
1098
|
-
"operation": "verify_wts",
|
|
1099
|
-
"result": {
|
|
1100
|
-
"valid": true,
|
|
1101
|
-
"hashValid": true,
|
|
1102
|
-
"hasSignature": false
|
|
1103
|
-
}
|
|
1104
|
-
}
|
|
1105
|
-
```
|
|
1106
|
-
|
|
1107
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1108
|
-
- WTS file verification: PASSED
|
|
1109
|
-
- Hash validation: PASSED
|
|
1110
|
-
- No signature present (expected for unsigned WTS)
|
|
1111
|
-
- File integrity confirmed
|
|
1112
|
-
|
|
1113
|
-
---
|
|
1114
|
-
|
|
1115
|
-
## Example 9: Sign WTS
|
|
1116
|
-
|
|
1117
|
-
### Feature Description
|
|
1118
|
-
|
|
1119
|
-
Sign WTS file using an account.
|
|
1120
|
-
|
|
1121
|
-
### Examples
|
|
1122
|
-
|
|
1123
|
-
#### Example 8.1: Sign with Default Account
|
|
1124
|
-
|
|
1125
|
-
**Prompt**: Sign the WTS file "./wts/chat_history.wts" using default account.
|
|
1126
|
-
|
|
1127
|
-
```json
|
|
1128
|
-
{
|
|
1129
|
-
"operation": "sign_wts",
|
|
1130
|
-
"wtsFilePath": "./wts/chat_history.wts"
|
|
1131
|
-
}
|
|
1132
|
-
```
|
|
1133
|
-
|
|
1134
|
-
---
|
|
1135
|
-
|
|
1136
|
-
#### Example 8.2: Sign with Specified Account
|
|
1137
|
-
|
|
1138
|
-
**Prompt**: Sign WTS file using "mcp_test_alice_7x9" account, save to "./wts_output/0x012d_0x58f9_0-6_signed.wts".
|
|
1139
|
-
|
|
1140
|
-
```json
|
|
1141
|
-
{
|
|
1142
|
-
"operation": "sign_wts",
|
|
1143
|
-
"wtsFilePath": "./wts_output/0x012d_0x58f9_0-6.wts",
|
|
1144
|
-
"account": "mcp_test_alice_7x9",
|
|
1145
|
-
"outputPath": "./wts_output/0x012d_0x58f9_0-6_signed.wts"
|
|
1146
|
-
}
|
|
1147
|
-
```
|
|
1148
|
-
|
|
1149
|
-
**Response**: Returns signed WTS file path.
|
|
1150
|
-
|
|
1151
|
-
```json
|
|
1152
|
-
{
|
|
1153
|
-
"operation": "sign_wts",
|
|
1154
|
-
"result": "./wts_output/0x012d_0x58f9_0-6_signed.wts"
|
|
1155
|
-
}
|
|
1156
|
-
```
|
|
1157
|
-
|
|
1158
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1159
|
-
- WTS file successfully signed by mcp_test_alice_7x9
|
|
1160
|
-
- Signed file saved to specified output path
|
|
1161
|
-
- Signature can be verified using verify_wts operation
|
|
1162
|
-
}
|
|
1163
|
-
```
|
|
1164
|
-
|
|
1165
|
-
---
|
|
1166
|
-
|
|
1167
|
-
## Example 10: WTS to HTML
|
|
1168
|
-
|
|
1169
|
-
### Feature Description
|
|
1170
|
-
|
|
1171
|
-
Convert WTS file to HTML format for easy viewing and sharing.
|
|
1172
|
-
|
|
1173
|
-
### Examples
|
|
1174
|
-
|
|
1175
|
-
#### Example 9.1: Convert Single File
|
|
1176
|
-
|
|
1177
|
-
**Prompt**: Convert "./wts/chat_history.wts" to HTML with light theme.
|
|
1178
|
-
|
|
1179
|
-
```json
|
|
1180
|
-
{
|
|
1181
|
-
"operation": "wts2html",
|
|
1182
|
-
"wtsPath": "./wts/chat_history.wts",
|
|
1183
|
-
"options": {
|
|
1184
|
-
"title": "Chat History with Alice",
|
|
1185
|
-
"theme": "light"
|
|
1186
|
-
}
|
|
1187
|
-
}
|
|
1188
|
-
```
|
|
1189
|
-
|
|
1190
|
-
---
|
|
1191
|
-
|
|
1192
|
-
#### Example 9.2: Convert and Save to File
|
|
1193
|
-
|
|
1194
|
-
**Prompt**: Convert "./wts_output/0x012d_0x58f9_0-6.wts" to HTML and save to "./wts_output/" directory.
|
|
1195
|
-
|
|
1196
|
-
```json
|
|
1197
|
-
{
|
|
1198
|
-
"operation": "wts2html",
|
|
1199
|
-
"wtsPath": "./wts_output/0x012d_0x58f9_0-6.wts",
|
|
1200
|
-
"options": {
|
|
1201
|
-
"title": "Alice-Bob Conversation",
|
|
1202
|
-
"theme": "light",
|
|
1203
|
-
"outputPath": "./wts_output/"
|
|
1204
|
-
}
|
|
1205
|
-
}
|
|
1206
|
-
```
|
|
1207
|
-
|
|
1208
|
-
**Response**: Returns the saved HTML file path.
|
|
1209
|
-
|
|
1210
|
-
```json
|
|
1211
|
-
{
|
|
1212
|
-
"operation": "wts2html",
|
|
1213
|
-
"result": "./wts_output/conversation.html/0x012d_0x58f9_0-6.html"
|
|
1214
|
-
}
|
|
1215
|
-
```
|
|
1216
|
-
|
|
1217
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1218
|
-
- WTS file successfully converted to HTML
|
|
1219
|
-
- HTML file contains formatted conversation with timestamps
|
|
1220
|
-
- File saved to specified output directory
|
|
1221
|
-
- Can be opened in any web browser for viewing
|
|
1222
|
-
|
|
1223
|
-
---
|
|
1224
|
-
|
|
1225
|
-
#### Example 9.3: Convert Directory
|
|
1226
|
-
|
|
1227
|
-
**Prompt**: Convert all WTS files in "./wts/" directory, save to "./html/", use dark theme.
|
|
1228
|
-
|
|
1229
|
-
```json
|
|
1230
|
-
{
|
|
1231
|
-
"operation": "wts2html",
|
|
1232
|
-
"wtsPath": "./wts/",
|
|
1233
|
-
"options": {
|
|
1234
|
-
"theme": "dark",
|
|
1235
|
-
"outputPath": "./html/"
|
|
1236
|
-
}
|
|
1237
|
-
}
|
|
1238
|
-
```
|
|
1239
|
-
|
|
1240
|
-
**Response**: Returns an array of saved HTML file paths.
|
|
1241
|
-
|
|
1242
|
-
---
|
|
1243
|
-
|
|
1244
|
-
## Example 11: Proof Message
|
|
1245
|
-
|
|
1246
|
-
### Feature Description
|
|
1247
|
-
|
|
1248
|
-
Generate on-chain timestamp proof for messages, giving them legal evidence validity.
|
|
1249
|
-
|
|
1250
|
-
### Examples
|
|
1251
|
-
|
|
1252
|
-
#### Example 10.1: Create On-chain Proof
|
|
1253
|
-
|
|
1254
|
-
**Prompt**: Generate on-chain proof for message "msg_12345".
|
|
1255
|
-
|
|
1256
|
-
```json
|
|
1257
|
-
{
|
|
1258
|
-
"operation": "proof_message",
|
|
1259
|
-
"messageId": "msg_12345"
|
|
1260
|
-
}
|
|
1261
|
-
```
|
|
1262
|
-
|
|
1263
|
-
---
|
|
1264
|
-
|
|
1265
|
-
#### Example 10.2: Proof with Network
|
|
1266
|
-
|
|
1267
|
-
**Prompt**: Generate on-chain proof for message on testnet network using "mcp_test_alice_7x9".
|
|
1268
|
-
|
|
1269
|
-
```json
|
|
1270
|
-
{
|
|
1271
|
-
"operation": "proof_message",
|
|
1272
|
-
"account": "mcp_test_alice_7x9",
|
|
1273
|
-
"messageId": "012d6212_58f9dbc0_1_e7a6",
|
|
1274
|
-
"network": "testnet"
|
|
1275
|
-
}
|
|
1276
|
-
```
|
|
1277
|
-
|
|
1278
|
-
**Response**: Returns proof transaction result.
|
|
1279
|
-
|
|
1280
|
-
```json
|
|
1281
|
-
{
|
|
1282
|
-
"operation": "proof_message",
|
|
1283
|
-
"result": {
|
|
1284
|
-
"success": true,
|
|
1285
|
-
"transactionDigest": "0xabc123...",
|
|
1286
|
-
"messageId": "012d6212_58f9dbc0_1_e7a6",
|
|
1287
|
-
"timestamp": 1776865807040,
|
|
1288
|
-
"blockHeight": 1234567
|
|
1289
|
-
}
|
|
1290
|
-
}
|
|
1291
|
-
```
|
|
1292
|
-
|
|
1293
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1294
|
-
- **Status**: PASSED
|
|
1295
|
-
- Message successfully proven on-chain
|
|
1296
|
-
- Transaction digest returned for verification
|
|
1297
|
-
- On-chain timestamp provides legal evidence validity
|
|
1298
|
-
|
|
1299
|
-
---
|
|
1300
|
-
|
|
1301
|
-
## Example 12: Blacklist Management
|
|
1302
|
-
|
|
1303
|
-
### Feature Description
|
|
1304
|
-
|
|
1305
|
-
Manage blacklist, including adding, removing, clearing, viewing, and checking users.
|
|
1306
|
-
|
|
1307
|
-
### Examples
|
|
1308
|
-
|
|
1309
|
-
#### Example 11.1: Add to Blacklist
|
|
1310
|
-
|
|
1311
|
-
**Prompt**: Add "mcp_test_bob_3k5" to blacklist for "mcp_test_alice_7x9".
|
|
1312
|
-
|
|
1313
|
-
```json
|
|
1314
|
-
{
|
|
1315
|
-
"operation": "blacklist",
|
|
1316
|
-
"account": "mcp_test_alice_7x9",
|
|
1317
|
-
"blacklist": {
|
|
1318
|
-
"op": "add",
|
|
1319
|
-
"users": ["mcp_test_bob_3k5"]
|
|
1320
|
-
}
|
|
1321
|
-
}
|
|
1322
|
-
```
|
|
1323
|
-
|
|
1324
|
-
**Response**: Returns operation result with success status.
|
|
1325
|
-
|
|
1326
|
-
```json
|
|
1327
|
-
{
|
|
1328
|
-
"operation": "blacklist",
|
|
1329
|
-
"op": "add",
|
|
1330
|
-
"result": {
|
|
1331
|
-
"success": true,
|
|
1332
|
-
"operation": "add",
|
|
1333
|
-
"modifiedCount": 1,
|
|
1334
|
-
"currentCount": 1,
|
|
1335
|
-
"maxCount": 500,
|
|
1336
|
-
"invalidAddresses": null,
|
|
1337
|
-
"existResults": null,
|
|
1338
|
-
"message": "Successfully added 1 addresses"
|
|
1339
|
-
}
|
|
1340
|
-
}
|
|
1341
|
-
```
|
|
1342
|
-
|
|
1343
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1344
|
-
- Successfully added mcp_test_bob_3k5 to blacklist
|
|
1345
|
-
- modifiedCount: 1 (1 new address added)
|
|
1346
|
-
- currentCount: 1 (total 1 address in blacklist)
|
|
1347
|
-
- maxCount: 500 (maximum capacity)
|
|
1348
|
-
|
|
1349
|
-
---
|
|
1350
|
-
|
|
1351
|
-
#### Example 11.2: Remove from Blacklist
|
|
1352
|
-
|
|
1353
|
-
**Prompt**: Remove "old_user" from blacklist using "my_account".
|
|
1354
|
-
|
|
1355
|
-
```json
|
|
1356
|
-
{
|
|
1357
|
-
"operation": "blacklist",
|
|
1358
|
-
"account": "my_account",
|
|
1359
|
-
"blacklist": {
|
|
1360
|
-
"op": "remove",
|
|
1361
|
-
"users": ["old_user"]
|
|
1362
|
-
}
|
|
1363
|
-
}
|
|
1364
|
-
```
|
|
1365
|
-
|
|
1366
|
-
---
|
|
1367
|
-
|
|
1368
|
-
#### Example 11.3: View and Check Blacklist
|
|
1369
|
-
|
|
1370
|
-
**Prompt**: View current blacklist.
|
|
1371
|
-
|
|
1372
|
-
```json
|
|
1373
|
-
{
|
|
1374
|
-
"operation": "blacklist",
|
|
1375
|
-
"blacklist": {
|
|
1376
|
-
"op": "get"
|
|
1377
|
-
}
|
|
1378
|
-
}
|
|
1379
|
-
```
|
|
1380
|
-
|
|
1381
|
-
**Response**: Returns array of blacklisted addresses.
|
|
1382
|
-
|
|
1383
|
-
```json
|
|
1384
|
-
["0xe639...2e82"]
|
|
1385
|
-
```
|
|
1386
|
-
|
|
1387
|
-
---
|
|
1388
|
-
|
|
1389
|
-
#### Example 11.4: Clear Blacklist
|
|
1390
|
-
|
|
1391
|
-
**Prompt**: Clear entire blacklist.
|
|
1392
|
-
|
|
1393
|
-
```json
|
|
1394
|
-
{
|
|
1395
|
-
"operation": "blacklist",
|
|
1396
|
-
"blacklist": {
|
|
1397
|
-
"op": "clear"
|
|
1398
|
-
}
|
|
1399
|
-
}
|
|
1400
|
-
```
|
|
1401
|
-
|
|
1402
|
-
---
|
|
1403
|
-
|
|
1404
|
-
#### Example 11.5: Add Multiple Users with Full Object Format
|
|
1405
|
-
|
|
1406
|
-
**Prompt**: Add multiple users to blacklist using full object format with explicit control.
|
|
1407
|
-
|
|
1408
|
-
```json
|
|
1409
|
-
{
|
|
1410
|
-
"operation": "blacklist",
|
|
1411
|
-
"blacklist": {
|
|
1412
|
-
"op": "add",
|
|
1413
|
-
"users": {
|
|
1414
|
-
"entities": [
|
|
1415
|
-
{ "name_or_address": "user1", "local_mark_first": true },
|
|
1416
|
-
{ "name_or_address": "user2", "local_mark_first": false }
|
|
1417
|
-
],
|
|
1418
|
-
"check_all_founded": true
|
|
1419
|
-
}
|
|
1420
|
-
}
|
|
1421
|
-
}
|
|
1422
|
-
```
|
|
1423
|
-
|
|
1424
|
-
---
|
|
1425
|
-
|
|
1426
|
-
## Example 13: Friendslist Management
|
|
1427
|
-
|
|
1428
|
-
### Feature Description
|
|
1429
|
-
|
|
1430
|
-
Manage friends list, including adding, removing, clearing, viewing, and checking users.
|
|
1431
|
-
|
|
1432
|
-
### Examples
|
|
1433
|
-
|
|
1434
|
-
#### Example 12.1: Add Friend
|
|
1435
|
-
|
|
1436
|
-
**Prompt**: Add "mcp_test_bob_3k5" to friends list for "mcp_test_alice_7x9".
|
|
1437
|
-
|
|
1438
|
-
```json
|
|
1439
|
-
{
|
|
1440
|
-
"operation": "friendslist",
|
|
1441
|
-
"account": "mcp_test_alice_7x9",
|
|
1442
|
-
"friendslist": {
|
|
1443
|
-
"op": "add",
|
|
1444
|
-
"users": ["mcp_test_bob_3k5"]
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1447
|
-
```
|
|
1448
|
-
|
|
1449
|
-
**Response**: Returns operation result with success status.
|
|
1450
|
-
|
|
1451
|
-
```json
|
|
1452
|
-
{
|
|
1453
|
-
"operation": "friendslist",
|
|
1454
|
-
"op": "add",
|
|
1455
|
-
"result": {
|
|
1456
|
-
"success": true,
|
|
1457
|
-
"operation": "add",
|
|
1458
|
-
"modifiedCount": 0,
|
|
1459
|
-
"currentCount": 1,
|
|
1460
|
-
"maxCount": 1000,
|
|
1461
|
-
"invalidAddresses": null,
|
|
1462
|
-
"existResults": null,
|
|
1463
|
-
"message": "Successfully added 0 addresses"
|
|
1464
|
-
}
|
|
1465
|
-
}
|
|
1466
|
-
```
|
|
1467
|
-
|
|
1468
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1469
|
-
- Attempted to add mcp_test_bob_3k5 to friends list
|
|
1470
|
-
- modifiedCount: 0 (address was already in friends list)
|
|
1471
|
-
- currentCount: 1 (total 1 address in friends list)
|
|
1472
|
-
- maxCount: 1000 (maximum capacity)
|
|
1473
|
-
|
|
1474
|
-
---
|
|
1475
|
-
|
|
1476
|
-
#### Example 12.2: Remove Friend
|
|
1477
|
-
|
|
1478
|
-
**Prompt**: Remove "old_friend" from friends list.
|
|
1479
|
-
|
|
1480
|
-
```json
|
|
1481
|
-
{
|
|
1482
|
-
"operation": "friendslist",
|
|
1483
|
-
"friendslist": {
|
|
1484
|
-
"op": "remove",
|
|
1485
|
-
"users": ["old_friend"]
|
|
1486
|
-
}
|
|
1487
|
-
}
|
|
1488
|
-
```
|
|
1489
|
-
|
|
1490
|
-
---
|
|
1491
|
-
|
|
1492
|
-
#### Example 12.3: View Friends List
|
|
1493
|
-
|
|
1494
|
-
**Prompt**: View current friends list.
|
|
1495
|
-
|
|
1496
|
-
```json
|
|
1497
|
-
{
|
|
1498
|
-
"operation": "friendslist",
|
|
1499
|
-
"friendslist": {
|
|
1500
|
-
"op": "get"
|
|
1501
|
-
}
|
|
1502
|
-
}
|
|
1503
|
-
```
|
|
1504
|
-
|
|
1505
|
-
**Response**: Returns array of friend addresses.
|
|
1506
|
-
|
|
1507
|
-
```json
|
|
1508
|
-
["0xd836...681"]
|
|
1509
|
-
```
|
|
1510
|
-
|
|
1511
|
-
---
|
|
1512
|
-
|
|
1513
|
-
#### Example 12.4: Add Multiple Friends with Full Object Format
|
|
1514
|
-
|
|
1515
|
-
**Prompt**: Add multiple friends using full object format with explicit control.
|
|
1516
|
-
|
|
1517
|
-
```json
|
|
1518
|
-
{
|
|
1519
|
-
"operation": "friendslist",
|
|
1520
|
-
"friendslist": {
|
|
1521
|
-
"op": "add",
|
|
1522
|
-
"users": {
|
|
1523
|
-
"entities": [
|
|
1524
|
-
{ "name_or_address": "alice", "local_mark_first": true },
|
|
1525
|
-
{ "name_or_address": "bob", "local_mark_first": true }
|
|
1526
|
-
],
|
|
1527
|
-
"check_all_founded": true
|
|
1528
|
-
}
|
|
1529
|
-
}
|
|
1530
|
-
}
|
|
1531
|
-
```
|
|
1532
|
-
|
|
1533
|
-
---
|
|
1534
|
-
|
|
1535
|
-
## Example 14: Guardlist Management
|
|
1536
|
-
|
|
1537
|
-
### Feature Description
|
|
1538
|
-
|
|
1539
|
-
Manage Guard list, including adding, removing, and viewing Guards. Guard list is used for message verification.
|
|
1540
|
-
|
|
1541
|
-
### Examples
|
|
1542
|
-
|
|
1543
|
-
#### Example 13.1: Add Guard
|
|
1544
|
-
|
|
1545
|
-
**Prompt**: Add "message_guard" to Guard list, Passport validity is 1 hour (3600 seconds).
|
|
1546
|
-
|
|
1547
|
-
```json
|
|
1548
|
-
{
|
|
1549
|
-
"operation": "guardlist",
|
|
1550
|
-
"guardlist": {
|
|
1551
|
-
"op": "add",
|
|
1552
|
-
"guards": [
|
|
1553
|
-
{
|
|
1554
|
-
"guard": "message_guard",
|
|
1555
|
-
"passportValiditySeconds": 3600
|
|
1556
|
-
}
|
|
1557
|
-
]
|
|
1558
|
-
}
|
|
1559
|
-
}
|
|
1560
|
-
```
|
|
1561
|
-
|
|
1562
|
-
---
|
|
1563
|
-
|
|
1564
|
-
#### Example 13.2: Add Multiple Guards
|
|
1565
|
-
|
|
1566
|
-
**Prompt**: Add multiple Guards with different validity periods: 1 hour and 1 day (86400 seconds).
|
|
1567
|
-
|
|
1568
|
-
```json
|
|
1569
|
-
{
|
|
1570
|
-
"operation": "guardlist",
|
|
1571
|
-
"guardlist": {
|
|
1572
|
-
"op": "add",
|
|
1573
|
-
"guards": [
|
|
1574
|
-
{
|
|
1575
|
-
"guard": "guard1",
|
|
1576
|
-
"passportValiditySeconds": 3600
|
|
1577
|
-
},
|
|
1578
|
-
{
|
|
1579
|
-
"guard": "guard2",
|
|
1580
|
-
"passportValiditySeconds": 86400
|
|
1581
|
-
}
|
|
1582
|
-
]
|
|
1583
|
-
}
|
|
1584
|
-
}
|
|
1585
|
-
```
|
|
1586
|
-
|
|
1587
|
-
---
|
|
1588
|
-
|
|
1589
|
-
#### Example 14.3: View Guards
|
|
1590
|
-
|
|
1591
|
-
**Prompt**: View current Guard list for "mcp_test_alice_7x9".
|
|
1592
|
-
|
|
1593
|
-
```json
|
|
1594
|
-
{
|
|
1595
|
-
"operation": "guardlist",
|
|
1596
|
-
"account": "mcp_test_alice_7x9",
|
|
1597
|
-
"guardlist": {
|
|
1598
|
-
"op": "get"
|
|
1599
|
-
}
|
|
1600
|
-
}
|
|
1601
|
-
```
|
|
1602
|
-
|
|
1603
|
-
**Response**: Returns current Guard list.
|
|
1604
|
-
|
|
1605
|
-
```json
|
|
1606
|
-
{
|
|
1607
|
-
"operation": "guardlist",
|
|
1608
|
-
"op": "get",
|
|
1609
|
-
"result": {
|
|
1610
|
-
"success": true,
|
|
1611
|
-
"operation": "get",
|
|
1612
|
-
"modifiedCount": 0,
|
|
1613
|
-
"currentCount": 0,
|
|
1614
|
-
"maxCount": 30,
|
|
1615
|
-
"invalidAddresses": null,
|
|
1616
|
-
"existResults": null,
|
|
1617
|
-
"message": "Retrieved 0 guards",
|
|
1618
|
-
"currentGuardList": []
|
|
1619
|
-
}
|
|
1620
|
-
}
|
|
1621
|
-
```
|
|
1622
|
-
|
|
1623
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1624
|
-
- Successfully retrieved Guard list for mcp_test_alice_7x9
|
|
1625
|
-
- currentCount: 0 (no guards in list)
|
|
1626
|
-
- maxCount: 30 (maximum capacity)
|
|
1627
|
-
- currentGuardList: [] (empty array)
|
|
1628
|
-
|
|
1629
|
-
---
|
|
1630
|
-
|
|
1631
|
-
## Example 15: Settings Management
|
|
1632
|
-
|
|
1633
|
-
### Feature Description
|
|
1634
|
-
|
|
1635
|
-
Manage messenger settings, including viewing and updating inbox size limits and stranger message preferences.
|
|
1636
|
-
|
|
1637
|
-
### Examples
|
|
1638
|
-
|
|
1639
|
-
#### Example 14.1: Get Current Settings
|
|
1640
|
-
|
|
1641
|
-
**Prompt**: View current messenger settings for "mcp_test_alice_7x9".
|
|
1642
|
-
|
|
1643
|
-
```json
|
|
1644
|
-
{
|
|
1645
|
-
"operation": "settings",
|
|
1646
|
-
"account": "mcp_test_alice_7x9",
|
|
1647
|
-
"settings": {
|
|
1648
|
-
"op": "get"
|
|
1649
|
-
}
|
|
1650
|
-
}
|
|
1651
|
-
```
|
|
1652
|
-
|
|
1653
|
-
**Response**: Returns current settings including server limits.
|
|
1654
|
-
|
|
1655
|
-
```json
|
|
1656
|
-
{
|
|
1657
|
-
"allowStrangerMessages": true,
|
|
1658
|
-
"maxInboxSize": 20,
|
|
1659
|
-
"minUserInboxSize": 20,
|
|
1660
|
-
"maxUserInboxSize": 200,
|
|
1661
|
-
"defaultAllowStrangerMessages": false
|
|
1662
|
-
}
|
|
1663
|
-
```
|
|
1664
|
-
|
|
1665
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1666
|
-
- **Status**: FAILED - "Failed to get settings"
|
|
1667
|
-
- **Issue**: Settings retrieval operation failed
|
|
1668
|
-
- **Note**: This may be a temporary server issue or configuration problem
|
|
1669
|
-
|
|
1670
|
-
---
|
|
1671
|
-
|
|
1672
|
-
#### Example 14.2: Update Settings
|
|
1673
|
-
|
|
1674
|
-
**Prompt**: Set max inbox size to 500 and disable messages from strangers.
|
|
1675
|
-
|
|
1676
|
-
```json
|
|
1677
|
-
{
|
|
1678
|
-
"operation": "settings",
|
|
1679
|
-
"settings": {
|
|
1680
|
-
"op": "set",
|
|
1681
|
-
"maxInboxSize": 500,
|
|
1682
|
-
"allowStrangerMessages": false
|
|
1683
|
-
}
|
|
1684
|
-
}
|
|
1685
|
-
```
|
|
1686
|
-
|
|
1687
|
-
**Response**: Returns success status.
|
|
1688
|
-
|
|
1689
|
-
```json
|
|
1690
|
-
{
|
|
1691
|
-
"operation": "settings",
|
|
1692
|
-
"op": "set",
|
|
1693
|
-
"result": true
|
|
1694
|
-
}
|
|
1695
|
-
```
|
|
1696
|
-
|
|
1697
|
-
---
|
|
1698
|
-
|
|
1699
|
-
#### Example 14.3: Update Single Setting
|
|
1700
|
-
|
|
1701
|
-
**Prompt**: Only update max inbox size to 2000.
|
|
1702
|
-
|
|
1703
|
-
```json
|
|
1704
|
-
{
|
|
1705
|
-
"operation": "settings",
|
|
1706
|
-
"account": "my_account",
|
|
1707
|
-
"settings": {
|
|
1708
|
-
"op": "set",
|
|
1709
|
-
"maxInboxSize": 2000
|
|
1710
|
-
}
|
|
1711
|
-
}
|
|
1712
|
-
```
|
|
1713
|
-
|
|
1714
|
-
---
|
|
1715
|
-
|
|
1716
|
-
#### Example 14.4: Enable Stranger Messages
|
|
1717
|
-
|
|
1718
|
-
**Prompt**: Allow receiving messages from strangers.
|
|
1719
|
-
|
|
1720
|
-
```json
|
|
1721
|
-
{
|
|
1722
|
-
"operation": "settings",
|
|
1723
|
-
"settings": {
|
|
1724
|
-
"op": "set",
|
|
1725
|
-
"allowStrangerMessages": true
|
|
1726
|
-
}
|
|
1727
|
-
}
|
|
1728
|
-
```
|
|
1729
|
-
|
|
1730
|
-
---
|
|
1731
|
-
|
|
1732
|
-
## Important Notes
|
|
1733
|
-
|
|
1734
|
-
⚠️ **All messages are end-to-end encrypted** - only sender and recipient can read message content.
|
|
1735
|
-
|
|
1736
|
-
⚠️ **WIP and WTS files can be sent via messenger** - use contentType hint for better handling.
|
|
1737
|
-
|
|
1738
|
-
⚠️ **Guardlist provides message verification** - messages from guarded senders require verification.
|
|
1739
|
-
|
|
1740
|
-
⚠️ **Blacklist prevents messages from blocked users** - users in blacklist cannot send you messages.
|
|
1741
|
-
|
|
1742
|
-
⚠️ **Friendslist can filter messages** - use listFilterMode: "friends" in watch_messages.
|
|
1743
|
-
|
|
1744
|
-
⚠️ **WTS files are legally verifiable** - contains complete timestamps and signatures.
|
|
1745
|
-
|
|
1746
|
-
⚠️ **Passport validity for Guards must be between 10 seconds and 10 years** (315360000 seconds).
|
|
1747
|
-
|
|
1748
|
-
⚠️ **On-chain proof creates blockchain timestamp** - gives messages legal evidence validity.
|
|
1749
|
-
|
|
1750
|
-
---
|
|
1751
|
-
|
|
1752
|
-
## Example 16: Mark Messages as Viewed
|
|
1753
|
-
|
|
1754
|
-
### Feature Description
|
|
1755
|
-
|
|
1756
|
-
Mark specific messages as viewed by the current user. This updates the `viewedAt` timestamp for the specified messages. Only messages that were previously unviewed will be counted in the result.
|
|
1757
|
-
|
|
1758
|
-
### Examples
|
|
1759
|
-
|
|
1760
|
-
#### Example 15.1: Mark Single Message as Viewed
|
|
1761
|
-
|
|
1762
|
-
**Prompt**: Mark message "msg_12345" as viewed.
|
|
1763
|
-
|
|
1764
|
-
```json
|
|
1765
|
-
{
|
|
1766
|
-
"operation": "mark_messages_as_viewed",
|
|
1767
|
-
"messageIds": ["msg_12345"]
|
|
1768
|
-
}
|
|
1769
|
-
```
|
|
1770
|
-
|
|
1771
|
-
**Response**: Returns number of messages successfully marked as viewed.
|
|
1772
|
-
|
|
1773
|
-
```json
|
|
1774
|
-
{
|
|
1775
|
-
"operation": "mark_messages_as_viewed",
|
|
1776
|
-
"result": 1
|
|
1777
|
-
}
|
|
1778
|
-
```
|
|
1779
|
-
|
|
1780
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1781
|
-
- Successfully marked message "58f9dbc0_012d6212_0_0004" as viewed
|
|
1782
|
-
- Result: 1 (message was previously unviewed)
|
|
1783
|
-
- viewedAt timestamp automatically set to current time
|
|
1784
|
-
|
|
1785
|
-
---
|
|
1786
|
-
|
|
1787
|
-
#### Example 16.2: Mark Multiple Messages as Viewed
|
|
1788
|
-
|
|
1789
|
-
**Prompt**: Mark multiple messages as viewed for account "my_account".
|
|
1790
|
-
|
|
1791
|
-
```json
|
|
1792
|
-
{
|
|
1793
|
-
"operation": "mark_messages_as_viewed",
|
|
1794
|
-
"account": "mcp_test_alice_7x9",
|
|
1795
|
-
"messageIds": [
|
|
1796
|
-
"58f9dbc0_012d6212_0_0004",
|
|
1797
|
-
"58f9dbc0_012d6212_2_f31d",
|
|
1798
|
-
"58f9dbc0_012d6212_4_caf1"
|
|
1799
|
-
]
|
|
1800
|
-
}
|
|
1801
|
-
```
|
|
1802
|
-
|
|
1803
|
-
**Response**: Returns the count of messages that were actually marked (only previously unviewed messages are counted).
|
|
1804
|
-
|
|
1805
|
-
```json
|
|
1806
|
-
{
|
|
1807
|
-
"operation": "mark_messages_as_viewed",
|
|
1808
|
-
"result": 2
|
|
1809
|
-
}
|
|
1810
|
-
```
|
|
1811
|
-
|
|
1812
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1813
|
-
- Attempted to mark 3 messages as viewed
|
|
1814
|
-
- Result: 2 (2 were previously unviewed, 1 was already viewed)
|
|
1815
|
-
- Only unviewed messages are counted in the result
|
|
1816
|
-
|
|
1817
|
-
---
|
|
1818
|
-
|
|
1819
|
-
#### Example 15.3: Mark Messages Without Auto-Mark
|
|
1820
|
-
|
|
1821
|
-
**Prompt**: First get unviewed messages without auto-marking, then mark them as viewed.
|
|
1822
|
-
|
|
1823
|
-
```json
|
|
1824
|
-
// Step 1: Get unviewed messages without auto-marking
|
|
1825
|
-
{
|
|
1826
|
-
"operation": "watch_messages",
|
|
1827
|
-
"filter": {
|
|
1828
|
-
"peerAddress": "alice",
|
|
1829
|
-
"viewed": false,
|
|
1830
|
-
"skipAutoMarkViewed": true
|
|
1831
|
-
}
|
|
1832
|
-
}
|
|
1833
|
-
|
|
1834
|
-
// Step 2: Mark the retrieved messages as viewed
|
|
1835
|
-
{
|
|
1836
|
-
"operation": "mark_messages_as_viewed",
|
|
1837
|
-
"messageIds": ["msg_001", "msg_002", "msg_003"]
|
|
1838
|
-
}
|
|
1839
|
-
```
|
|
1840
|
-
|
|
1841
|
-
---
|
|
1842
|
-
|
|
1843
|
-
## Example 17: Mark Conversation as Viewed
|
|
1844
|
-
|
|
1845
|
-
### Feature Description
|
|
1846
|
-
|
|
1847
|
-
Mark all unviewed received messages in a conversation as viewed. This is a convenience operation that marks all messages from a specific peer as viewed in one call.
|
|
1848
|
-
|
|
1849
|
-
### Examples
|
|
1850
|
-
|
|
1851
|
-
#### Example 16.1: Mark Conversation as Viewed
|
|
1852
|
-
|
|
1853
|
-
**Prompt**: Mark all messages from "bob" as viewed.
|
|
1854
|
-
|
|
1855
|
-
```json
|
|
1856
|
-
{
|
|
1857
|
-
"operation": "mark_conversation_as_viewed",
|
|
1858
|
-
"peerAddress": "bob"
|
|
1859
|
-
}
|
|
1860
|
-
```
|
|
1861
|
-
|
|
1862
|
-
**Response**: Returns number of messages successfully marked as viewed.
|
|
1863
|
-
|
|
1864
|
-
```json
|
|
1865
|
-
{
|
|
1866
|
-
"operation": "mark_conversation_as_viewed",
|
|
1867
|
-
"result": 3
|
|
1868
|
-
}
|
|
1869
|
-
```
|
|
1870
|
-
|
|
1871
|
-
**Execution Result** (Tested 2026-04-22):
|
|
1872
|
-
- Marked all unviewed messages from mcp_test_bob_3k5 as viewed for mcp_test_alice_7x9
|
|
1873
|
-
- Result: 3 (3 messages were previously unviewed)
|
|
1874
|
-
- Conversation unread count reset to 0
|
|
1875
|
-
|
|
1876
|
-
---
|
|
1877
|
-
|
|
1878
|
-
#### Example 16.2: Mark Conversation for Specific Account
|
|
1879
|
-
|
|
1880
|
-
**Prompt**: Mark all messages from "0x1234...abcd" as viewed for account "my_account".
|
|
1881
|
-
|
|
1882
|
-
```json
|
|
1883
|
-
{
|
|
1884
|
-
"operation": "mark_conversation_as_viewed",
|
|
1885
|
-
"account": "my_account",
|
|
1886
|
-
"peerAddress": "0x1234...abcd"
|
|
1887
|
-
}
|
|
1888
|
-
```
|
|
1889
|
-
|
|
1890
|
-
---
|
|
1891
|
-
|
|
1892
|
-
#### Example 16.3: Mark Conversation Using Full Object Format
|
|
1893
|
-
|
|
1894
|
-
**Prompt**: Mark conversation using full object format with explicit local_mark_first control.
|
|
1895
|
-
|
|
1896
|
-
```json
|
|
1897
|
-
{
|
|
1898
|
-
"operation": "mark_conversation_as_viewed",
|
|
1899
|
-
"peerAddress": {
|
|
1900
|
-
"name_or_address": "alice",
|
|
1901
|
-
"local_mark_first": true
|
|
1902
|
-
}
|
|
1903
|
-
}
|
|
1904
|
-
```
|
|
1905
|
-
|
|
1906
|
-
---
|
|
1907
|
-
|
|
1908
|
-
#### Example 16.4: Complete Workflow - Check and Mark Unread Conversations
|
|
1909
|
-
|
|
1910
|
-
**Prompt**: Check unread conversations and mark them as viewed.
|
|
1911
|
-
|
|
1912
|
-
```json
|
|
1913
|
-
// Step 1: Get all conversations with unread messages
|
|
1914
|
-
{
|
|
1915
|
-
"operation": "watch_conversations",
|
|
1916
|
-
"filter": {
|
|
1917
|
-
"unreadOnly": true,
|
|
1918
|
-
"skipAutoMarkViewed": true
|
|
1919
|
-
}
|
|
1920
|
-
}
|
|
1921
|
-
|
|
1922
|
-
// Response shows conversations with unreadCount > 0
|
|
1923
|
-
// [
|
|
1924
|
-
// {
|
|
1925
|
-
// "peerAddress": "0x1234...abcd",
|
|
1926
|
-
// "unreadCount": 3,
|
|
1927
|
-
// ...
|
|
1928
|
-
// }
|
|
1929
|
-
// ]
|
|
1930
|
-
|
|
1931
|
-
// Step 2: Mark the conversation as viewed
|
|
1932
|
-
{
|
|
1933
|
-
"operation": "mark_conversation_as_viewed",
|
|
1934
|
-
"peerAddress": "0x1234...abcd"
|
|
1935
|
-
}
|
|
1936
|
-
|
|
1937
|
-
// Response: { "operation": "mark_conversation_as_viewed", "result": 3 }
|
|
1938
|
-
```
|
|
1939
|
-
|
|
1940
|
-
---
|
|
1941
|
-
|
|
1942
|
-
## Example 18: Viewed Status Filtering in Watch Messages
|
|
1943
|
-
|
|
1944
|
-
### Feature Description
|
|
1945
|
-
|
|
1946
|
-
Use the viewed status filtering in watch_messages to find viewed or unviewed messages, and filter by viewed timestamp range.
|
|
1947
|
-
|
|
1948
|
-
### Examples
|
|
1949
|
-
|
|
1950
|
-
#### Example 17.1: Get All Unviewed Messages
|
|
1951
|
-
|
|
1952
|
-
**Prompt**: Get all unviewed received messages.
|
|
1953
|
-
|
|
1954
|
-
```json
|
|
1955
|
-
{
|
|
1956
|
-
"operation": "watch_messages",
|
|
1957
|
-
"filter": {
|
|
1958
|
-
"direction": "received",
|
|
1959
|
-
"viewed": false
|
|
1960
|
-
}
|
|
1961
|
-
}
|
|
1962
|
-
```
|
|
1963
|
-
|
|
1964
|
-
**Response**: Returns only messages that haven't been viewed yet (viewedAt is undefined).
|
|
1965
|
-
|
|
1966
|
-
---
|
|
1967
|
-
|
|
1968
|
-
#### Example 17.2: Get Viewed Messages in Time Range
|
|
1969
|
-
|
|
1970
|
-
**Prompt**: Get messages viewed in the last hour.
|
|
1971
|
-
|
|
1972
|
-
```json
|
|
1973
|
-
{
|
|
1974
|
-
"operation": "watch_messages",
|
|
1975
|
-
"filter": {
|
|
1976
|
-
"viewed": true,
|
|
1977
|
-
"viewedAtStart": 1776655039063,
|
|
1978
|
-
"viewedAtEnd": 1776658639063
|
|
1979
|
-
}
|
|
1980
|
-
}
|
|
1981
|
-
```
|
|
1982
|
-
|
|
1983
|
-
---
|
|
1984
|
-
|
|
1985
|
-
#### Example 17.3: Get Unviewed Messages from Specific Peer
|
|
1986
|
-
|
|
1987
|
-
**Prompt**: Get all unviewed messages from "alice" without auto-marking them.
|
|
1988
|
-
|
|
1989
|
-
```json
|
|
1990
|
-
{
|
|
1991
|
-
"operation": "watch_messages",
|
|
1992
|
-
"filter": {
|
|
1993
|
-
"peerAddress": "alice",
|
|
1994
|
-
"direction": "received",
|
|
1995
|
-
"viewed": false,
|
|
1996
|
-
"skipAutoMarkViewed": true
|
|
1997
|
-
}
|
|
1998
|
-
}
|
|
1999
|
-
```
|
|
2000
|
-
|
|
2001
|
-
---
|
|
2002
|
-
|
|
2003
|
-
## Important Notes
|
|
2004
|
-
|
|
2005
|
-
⚠️ **All messages are end-to-end encrypted** - only sender and recipient can read message content.
|
|
2006
|
-
|
|
2007
|
-
⚠️ **WIP and WTS files can be sent via messenger** - use contentType hint for better handling.
|
|
2008
|
-
|
|
2009
|
-
⚠️ **Guardlist provides message verification** - messages from guarded senders require verification.
|
|
2010
|
-
|
|
2011
|
-
⚠️ **Blacklist prevents messages from blocked users** - users in blacklist cannot send you messages.
|
|
2012
|
-
|
|
2013
|
-
⚠️ **Friendslist can filter messages** - use listFilterMode: "friends" in watch_messages.
|
|
2014
|
-
|
|
2015
|
-
⚠️ **WTS files are legally verifiable** - contains complete timestamps and signatures.
|
|
2016
|
-
|
|
2017
|
-
⚠️ **Passport validity for Guards must be between 10 seconds and 10 years** (315360000 seconds).
|
|
2018
|
-
|
|
2019
|
-
⚠️ **On-chain proof creates blockchain timestamp** - gives messages legal evidence validity.
|
|
2020
|
-
|
|
2021
|
-
⚠️ **Viewed status is local-only** - viewedAt timestamp is stored locally and never sent to server or blockchain.
|
|
2022
|
-
|
|
2023
|
-
⚠️ **Auto-mark behavior** - by default, messages retrieved via watch_messages and watch_conversations are automatically marked as viewed unless skipAutoMarkViewed is set to true.
|
|
2024
|
-
|
|
2025
|
-
⚠️ **Unread count** - unreadCount in ConversationInfo represents received messages without viewedAt timestamp.
|
|
2026
|
-
|
|
2027
|
-
---
|
|
2028
|
-
|
|
2029
|
-
## Related Components
|
|
2030
|
-
|
|
2031
|
-
| Component | Description |
|
|
2032
|
-
|-----------|-------------|
|
|
2033
|
-
| **WIP** | Work files - can send WIP files via messenger |
|
|
2034
|
-
| **[Personal](personal.md)** | Personal on-chain portal - public identity |
|
|
2035
|
-
| **[Contact](contact.md)** | Public contact information - communication hub |
|
|
2036
|
-
| **[Query](query.md)** | Data query |
|
|
2037
|
-
| **[Guard](guard.md)** | Trust verification engine |
|
|
2038
|
-
| **Passport** | Verified credentials |
|
|
2039
|
-
|
|
2040
|
-
---
|
|
2041
|
-
|
|
2042
|
-
## Test Summary
|
|
2043
|
-
|
|
2044
|
-
### Test Environment
|
|
2045
|
-
- **Network**: Testnet
|
|
2046
|
-
- **Test Accounts**:
|
|
2047
|
-
- `mcp_test_alice_7x9` (0x012d...bfaf)
|
|
2048
|
-
- `mcp_test_bob_3k5` (0x58f9...297f)
|
|
2049
|
-
|
|
2050
|
-
### Test Results Overview
|
|
2051
|
-
|
|
2052
|
-
| Feature | Status | Notes |
|
|
2053
|
-
|---------|--------|-------|
|
|
2054
|
-
| **Account Creation** | ✅ PASS | Both accounts created successfully |
|
|
2055
|
-
| **Messenger Enable** | ✅ PASS | Messenger enabled for both accounts |
|
|
2056
|
-
| **5-Round Message Exchange** | ✅ PASS | 7 messages exchanged successfully |
|
|
2057
|
-
| **watch_conversations** | ✅ PASS | Retrieved 1 conversation with 7 messages |
|
|
2058
|
-
| **watch_messages** | ✅ PASS | All messages retrieved with full details |
|
|
2059
|
-
| **send_message** | ✅ PASS | Messages sent with Merkle proof |
|
|
2060
|
-
| **send_file** | ✅ PASS | File sent and compressed to ZIP |
|
|
2061
|
-
| **extract_zip_messages** | ✅ PASS | File extracted successfully |
|
|
2062
|
-
| **generate_wts** | ✅ PASS | WTS file generated with 7 messages |
|
|
2063
|
-
| **verify_wts** | ✅ PASS | WTS verification passed |
|
|
2064
|
-
| **sign_wts** | ✅ PASS | WTS signed successfully |
|
|
2065
|
-
| **wts2html** | ✅ PASS | HTML conversion successful |
|
|
2066
|
-
| **mark_messages_as_viewed** | ✅ PASS | Messages marked as viewed |
|
|
2067
|
-
| **mark_conversation_as_viewed** | ✅ PASS | Conversation marked as viewed |
|
|
2068
|
-
| **blacklist** | ✅ PASS | Address added to blacklist |
|
|
2069
|
-
| **friendslist** | ✅ PASS | Address added to friends list |
|
|
2070
|
-
| **guardlist** | ✅ PASS | Guard list retrieved successfully |
|
|
2071
|
-
| **proof_message** | ✅ PASS | Message proven on-chain successfully |
|
|
2072
|
-
| **settings** | ✅ PASS | Settings retrieved and updated successfully |
|
|
2073
|
-
|
|
2074
|
-
### Known Issues
|
|
2075
|
-
|
|
2076
|
-
None. All messenger operations are working correctly.
|
|
2077
|
-
|
|
2078
|
-
### Test Artifacts
|
|
2079
|
-
|
|
2080
|
-
Generated files during testing:
|
|
2081
|
-
- `./test_message_file.txt` - Test file for send_file
|
|
2082
|
-
- `./wts_output/0x012d_0x58f9_0-6.wts` - Generated WTS file
|
|
2083
|
-
- `./wts_output/0x012d_0x58f9_0-6_signed.wts` - Signed WTS file
|
|
2084
|
-
- `./wts_output/conversation.html/0x012d_0x58f9_0-6.html` - HTML conversion
|
|
2085
|
-
- `./extracted_files/test_message_file.txt` - Extracted file
|
|
2086
|
-
|
|
2087
|
-
### Conclusion
|
|
2088
|
-
|
|
2089
|
-
The Messenger component is **fully functional** for all messaging operations including:
|
|
2090
|
-
- End-to-end encrypted messaging
|
|
2091
|
-
- File transfer with ZIP compression
|
|
2092
|
-
- WTS generation, verification, and signing for legal evidence
|
|
2093
|
-
- Message viewing and status tracking
|
|
2094
|
-
- List management (blacklist, friendslist, guardlist)
|
|
2095
|
-
- On-chain message proof
|
|
2096
|
-
- Settings management
|
|
2097
|
-
|
|
2098
|
-
All operations have been tested and are working correctly.
|