@goplausible/openclaw-algorand-plugin 1.9.3 → 1.9.5

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/memory/MEMORY.md CHANGED
@@ -23,7 +23,14 @@
23
23
  * `alpha-arcade-interaction` — Load for prediction market trading via MCP tools (browse markets, place orders, manage positions).
24
24
 
25
25
  ### QR Codes
26
- * `generate_algorand_qrcode` returns `qr` (UTF-8 text QR), `uri` (algorand:// URI), `link` (shareable hosted QR URL via QRClaw), and `expires_in` (link validity). Always include the UTF-8 QR block, URI string, and shareable link in your response.
26
+ * `generate_algorand_qrcode` returns `qr` (UTF-8 text QR), `uri` (algorand:// URI), `link` (shareable hosted QR URL via QRClaw), and `expires_in` (link validity).
27
+ * **Channel-aware output**: In TUI/Web channels, include UTF-8 QR block + URI + shareable link. In social channels (Telegram, Discord, WhatsApp, Slack, etc.), skip the QR block (too bulky) and show only URI + shareable link.
28
+
29
+ ### Transaction ID Delivery
30
+ * ALWAYS present transaction IDs to the user after any successful transaction submission.
31
+ * **Mainnet** explorer link: `https://allo.info/tx/{txId}`
32
+ * **Testnet** explorer link: `https://lora.algokit.io/testnet/transaction/{txId}`
33
+ * This applies to ALL transaction types: payments, transfers, opt-ins, app calls, atomic groups, Haystack swaps, Alpha Arcade trades, and x402 payments.
27
34
 
28
35
  ### Documentation
29
36
  * Use `get_knowledge_doc` MCP tool for Algorand developer documentation (categories: arcs, sdks, algokit, algokit-utils, tealscript, puya, liquid-auth, python, developers, clis, nodes, details).
@@ -62,26 +62,39 @@ When generating QR codes with `generate_algorand_qrcode`, the tool returns:
62
62
  - `link` — shareable hosted QR URL (via QRClaw service)
63
63
  - `expires_in` — link validity period
64
64
 
65
- After calling the tool, **extract and paste the QR code directly in your response**.
66
- **Always include all of these in your reply:**
65
+ **Channel-Aware Output:**
67
66
 
68
- 1. **UTF-8 QR block** — Unicode block characters from `qr`. Paste inside a code block.
69
- 2. **URI string** — always show this, users need it for wallet deep links.
70
- 3. **Shareable link** — the hosted QR URL from `link`, so users can share or open it in a browser.
67
+ After calling `generate_algorand_qrcode`, tailor output to the channel:
71
68
 
72
- ### Steps to include QR code in reply:
73
- 1. Call the tool and capture output
74
- 2. Extract `qr`, `uri`, and `link` from the response
75
- 3. Include in your reply:
69
+ **TUI / Web channels** (terminal, web UI, canvas):
70
+ 1. **UTF-8 QR block** — paste the Unicode block characters from `qr` inside a code fence
71
+ 2. **URI string** the `algorand://` URI for wallet deep links
72
+ 3. **Shareable link** the hosted QR URL from `link`
76
73
 
74
+ Example:
77
75
  ```
78
76
  [paste UTF-8 QR here]
79
77
  ```
80
-
81
78
  URI: `algorand://...`
82
-
83
79
  Shareable QR: [link URL]
84
80
 
81
+ **Social channels** (Telegram, Discord, WhatsApp, Signal, Slack, IRC, etc.):
82
+ - **Skip** the UTF-8 QR block — too bulky for chat
83
+ - Show only:
84
+ - **URI string** — for wallet deep links
85
+ - **Shareable link** — renders nicely in-app as a clickable QR image
86
+
87
+ ## Post-Transaction: Deliver Transaction ID
88
+
89
+ **ALWAYS** present the transaction ID to the user after any successful transaction. Use the correct explorer link:
90
+
91
+ | Network | Explorer Link Template |
92
+ |---------|----------------------|
93
+ | `mainnet` | `https://allo.info/tx/{txId}` |
94
+ | `testnet` | `https://lora.algokit.io/testnet/transaction/{txId}` |
95
+
96
+ This applies to ALL operations that yield a transaction ID: payments, asset transfers, opt-ins, app calls, atomic groups, Haystack Router swaps, Alpha Arcade trades, and x402 payments.
97
+
85
98
  ## Key things to remember
86
99
 
87
100
  - Always check wallet with `wallet_get_info` before blockchain operations
@@ -2,7 +2,7 @@
2
2
  "id": "openclaw-algorand-plugin",
3
3
  "name": "Algorand Integration",
4
4
  "description": "Algorand blockchain integration with MCP and skills — by GoPlausible",
5
- "version": "1.9.3",
5
+ "version": "1.9.5",
6
6
  "skills": [
7
7
  "skills/algorand-development",
8
8
  "skills/algorand-typescript",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goplausible/openclaw-algorand-plugin",
3
- "version": "1.9.3",
3
+ "version": "1.9.5",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -110,7 +110,26 @@ Always check asset's `decimals` field with `api_algod_get_asset_by_id` before co
110
110
  | 3 | `make_*_txn` | Build the transaction |
111
111
  | 4 | `wallet_sign_transaction` | Sign with active wallet account (enforces limits) |
112
112
  | 5 | `send_raw_transaction` | Submit signed transaction to network |
113
- | 6 | Query tools | Verify result on-chain |
113
+ | 6 | **Present txID** | Show transaction ID with explorer link (see below) |
114
+
115
+ ### Post-Transaction: Deliver Transaction ID
116
+
117
+ **ALWAYS** present the transaction ID to the user after any successful transaction submission. Use the correct explorer link based on the network:
118
+
119
+ | Network | Explorer Link Template |
120
+ |---------|----------------------|
121
+ | `mainnet` | `https://allo.info/tx/{txId}` |
122
+ | `testnet` | `https://lora.algokit.io/testnet/transaction/{txId}` |
123
+
124
+ Example output after a testnet transaction:
125
+ > Transaction confirmed! `TXID123...`
126
+ > View on explorer: https://lora.algokit.io/testnet/transaction/TXID123...
127
+
128
+ Example output after a mainnet transaction:
129
+ > Transaction confirmed! `TXID456...`
130
+ > View on explorer: https://allo.info/tx/TXID456...
131
+
132
+ This applies to ALL transaction types: payments, asset transfers, opt-ins, app calls, atomic groups, and any other operation that yields a transaction ID.
114
133
 
115
134
  ### One-Step Asset Opt-In
116
135
 
@@ -128,6 +147,7 @@ When the user provides their own secret key (not using the wallet):
128
147
  | 1 | `make_*_txn` | Build the transaction |
129
148
  | 2 | `sign_transaction` | Sign with provided secret key hex |
130
149
  | 3 | `send_raw_transaction` | Submit signed transaction |
150
+ | 4 | **Present txID** | Show transaction ID with explorer link |
131
151
 
132
152
  ## Atomic Group Transaction Workflow
133
153
 
@@ -139,6 +159,7 @@ For atomic (all-or-nothing) multi-transaction groups:
139
159
  | 2 | `assign_group_id` | Assign group ID to all transactions |
140
160
  | 3 | `wallet_sign_transaction_group` | Sign all transactions in group with wallet |
141
161
  | 4 | `send_raw_transaction` | Submit all signed transactions |
162
+ | 5 | **Present txIDs** | Show all transaction IDs with explorer links |
142
163
 
143
164
  ## Tool Categories
144
165
 
@@ -229,26 +250,28 @@ All prices and quantities use **microunits** (1,000,000 = $1.00 or 1 share). Ord
229
250
  - `link` — shareable hosted QR URL (via QRClaw service)
230
251
  - `expires_in` — link validity period
231
252
 
232
- After calling the tool, **extract and paste the QR code directly in your response**.
233
- **Always include all of these in your reply:**
253
+ **Channel-Aware Output:**
234
254
 
235
- 1. **UTF-8 QR block** — Unicode block characters from `qr`. Paste inside a code block.
236
- 2. **URI string** — always show this, users need it for wallet deep links.
237
- 3. **Shareable link** — the hosted QR URL from `link`, so users can share or open it in a browser.
255
+ After calling `generate_algorand_qrcode`, tailor output to the channel:
238
256
 
239
- ### Steps to include QR code in reply:
240
- 1. Call the tool and capture output
241
- 2. Extract `qr`, `uri`, and `link` from the response
242
- 3. Include in your reply:
257
+ **TUI / Web channels** (terminal, web UI, canvas):
258
+ 1. **UTF-8 QR block** — paste the Unicode block characters from `qr` inside a code fence
259
+ 2. **URI string** the `algorand://` URI for wallet deep links
260
+ 3. **Shareable link** the hosted QR URL from `link`
243
261
 
262
+ Example:
244
263
  ```
245
264
  [paste UTF-8 QR here]
246
265
  ```
247
-
248
266
  URI: `algorand://...`
249
-
250
267
  Shareable QR: [link URL]
251
268
 
269
+ **Social channels** (Telegram, Discord, WhatsApp, Signal, Slack, IRC, etc.):
270
+ - **Skip** the UTF-8 QR block — too bulky for chat
271
+ - Show only:
272
+ - **URI string** — for wallet deep links
273
+ - **Shareable link** — renders nicely in-app as a clickable QR image
274
+
252
275
  ## References
253
276
 
254
277
  For detailed tool documentation:
@@ -799,26 +799,28 @@ Mainnet asset verification via Pera Wallet API. Use to check if assets are legit
799
799
 
800
800
  ### QR Code Display
801
801
 
802
- After calling the tool, **extract and paste the QR code directly in your response**.
803
- **Always include all of these in your reply:**
802
+ **Channel-Aware Output:**
804
803
 
805
- 1. **UTF-8 QR block** — Unicode block characters from `qr`. Paste inside a code block.
806
- 2. **URI string** — always show this, users need it for wallet deep links.
807
- 3. **Shareable link** — the hosted QR URL from `link`, so users can share or open it in a browser.
804
+ After calling `generate_algorand_qrcode`, tailor output to the channel:
808
805
 
809
- **Steps to include QR code in reply:**
810
- 1. Call the tool and capture output
811
- 2. Extract `qr`, `uri`, and `link` from the response
812
- 3. Include in your reply:
806
+ **TUI / Web channels** (terminal, web UI, canvas):
807
+ 1. **UTF-8 QR block** — paste the Unicode block characters from `qr` inside a code fence
808
+ 2. **URI string** the `algorand://` URI for wallet deep links
809
+ 3. **Shareable link** the hosted QR URL from `link`
813
810
 
811
+ Example:
814
812
  ```
815
813
  [paste UTF-8 QR here]
816
814
  ```
817
-
818
815
  URI: `algorand://ADDRESS?amount=X&asset=Y`
819
-
820
816
  Shareable QR: [link URL]
821
817
 
818
+ **Social channels** (Telegram, Discord, WhatsApp, Signal, Slack, IRC, etc.):
819
+ - **Skip** the UTF-8 QR block — too bulky for chat
820
+ - Show only:
821
+ - **URI string** — for wallet deep links
822
+ - **Shareable link** — renders nicely in-app as a clickable QR image
823
+
822
824
  ---
823
825
 
824
826
  ## Knowledge Base Tools
@@ -79,10 +79,21 @@ send_raw_transaction {
79
79
  }
80
80
  ```
81
81
 
82
- ### Step 5: Verify (optional)
82
+ ### Step 5: Present transaction ID to user
83
+
84
+ **ALWAYS** show the transaction ID with the correct explorer link:
85
+
86
+ - **Mainnet**: `https://allo.info/tx/{txId}`
87
+ - **Testnet**: `https://lora.algokit.io/testnet/transaction/{txId}`
88
+
89
+ Example (testnet):
90
+ > Transaction confirmed! `[txID_from_step_4]`
91
+ > View on explorer: https://lora.algokit.io/testnet/transaction/[txID_from_step_4]
92
+
93
+ Optionally verify on-chain:
83
94
  ```
84
95
  api_indexer_lookup_transaction_by_id {
85
- "txId": "[txID_from_step_3]",
96
+ "txId": "[txID_from_step_4]",
86
97
  "network": "testnet"
87
98
  }
88
99
  ```
@@ -100,7 +111,7 @@ wallet_optin_asset {
100
111
  }
101
112
  ```
102
113
 
103
- This creates, signs, and submits the opt-in transaction in a single call.
114
+ This creates, signs, and submits the opt-in transaction in a single call. Present the returned txID with explorer link.
104
115
 
105
116
  ---
106
117
 
@@ -142,6 +153,12 @@ send_raw_transaction {
142
153
  }
143
154
  ```
144
155
 
156
+ ### Step 5: Present transaction ID to user
157
+
158
+ Show the txID with explorer link:
159
+ - **Testnet**: `https://lora.algokit.io/testnet/transaction/{txId}`
160
+ - **Mainnet**: `https://allo.info/tx/{txId}`
161
+
145
162
  ---
146
163
 
147
164
  ## Asset Transfer Workflow (USDC Example)
@@ -204,6 +221,12 @@ send_raw_transaction {
204
221
  }
205
222
  ```
206
223
 
224
+ ### Step 8: Present transaction ID to user
225
+
226
+ Show the txID with explorer link:
227
+ - **Testnet**: `https://lora.algokit.io/testnet/transaction/{txId}`
228
+ - **Mainnet**: `https://allo.info/tx/{txId}`
229
+
207
230
  ---
208
231
 
209
232
  ## Atomic Group Transaction Workflow
@@ -252,6 +275,12 @@ send_raw_transaction {
252
275
 
253
276
  > Atomic groups are all-or-nothing: either all transactions succeed or none do.
254
277
 
278
+ ### Step 5: Present transaction IDs to user
279
+
280
+ Show all txIDs from the group with explorer links:
281
+ - **Testnet**: `https://lora.algokit.io/testnet/transaction/{txId}`
282
+ - **Mainnet**: `https://allo.info/tx/{txId}`
283
+
255
284
  ---
256
285
 
257
286
  ## Create an ASA (Algorand Standard Asset)
@@ -299,6 +328,12 @@ api_algod_get_pending_transaction {
299
328
  ```
300
329
  > The `asset-index` field in the response contains the new ASA ID.
301
330
 
331
+ ### Step 5: Present transaction ID to user
332
+
333
+ Show the txID with explorer link:
334
+ - **Testnet**: `https://lora.algokit.io/testnet/transaction/{txId}`
335
+ - **Mainnet**: `https://allo.info/tx/{txId}`
336
+
302
337
  ---
303
338
 
304
339
  ## Deploy a Smart Contract
@@ -347,6 +382,12 @@ send_raw_transaction {
347
382
  }
348
383
  ```
349
384
 
385
+ ### Step 5: Present transaction ID to user
386
+
387
+ Show the txID with explorer link:
388
+ - **Testnet**: `https://lora.algokit.io/testnet/transaction/{txId}`
389
+ - **Mainnet**: `https://allo.info/tx/{txId}`
390
+
350
391
  ---
351
392
 
352
393
  ## NFD Lookup
@@ -592,6 +633,12 @@ send_raw_transaction {
592
633
  }
593
634
  ```
594
635
 
636
+ ### Step 4: Present transaction ID to user
637
+
638
+ Show the txID with explorer link:
639
+ - **Testnet**: `https://lora.algokit.io/testnet/transaction/{txId}`
640
+ - **Mainnet**: `https://allo.info/tx/{txId}`
641
+
595
642
  ---
596
643
 
597
644
  ## Top-Up QR Code (Insufficient Funds)
@@ -138,6 +138,7 @@ If a trade fails with an "overspend" error, the wallet lacks sufficient ALGO or
138
138
  2. `get_orderbook` — check available liquidity
139
139
  3. `create_market_order` (auto-matches) or `create_limit_order` (rests on book)
140
140
  4. Save the returned `escrowAppId` — you need it to cancel
141
+ 5. **Present txID** — show transaction ID with explorer link (see Post-Transaction below)
141
142
 
142
143
  ### Checking your portfolio
143
144
  1. `get_positions` — see all YES/NO token balances with market titles and asset IDs
@@ -151,15 +152,29 @@ If a trade fails with an "overspend" error, the wallet lacks sufficient ALGO or
151
152
  ### Cancelling an order
152
153
  1. `get_open_orders` — find the `escrowAppId` and `owner` address
153
154
  2. `cancel_order` with `marketAppId`, `escrowAppId`, and `orderOwner`
155
+ 3. **Present txID** — show transaction ID with explorer link
154
156
 
155
157
  ### Claiming from a resolved market
156
158
  1. `get_positions` — find markets with token balances; note the `yesAssetId` or `noAssetId`
157
159
  2. `claim` with `marketAppId` and the winning token's `assetId`
160
+ 3. **Present txID** — show transaction ID with explorer link
158
161
 
159
162
  ### Providing liquidity (split/merge)
160
163
  1. `split_shares` — convert USDC into equal YES + NO tokens
161
164
  2. Place limit orders on both sides of the book for market making
162
165
  3. `merge_shares` — convert matched YES + NO tokens back to USDC
166
+ 4. **Present txIDs** — show transaction IDs with explorer links for each operation
167
+
168
+ ## Post-Transaction: Deliver Transaction ID
169
+
170
+ **ALWAYS** present the transaction ID to the user after any successful trading operation (orders, cancellations, amendments, claims, splits, merges). Use the correct explorer link based on the network:
171
+
172
+ | Network | Explorer Link Template |
173
+ |---------|----------------------|
174
+ | `mainnet` | `https://allo.info/tx/{txId}` |
175
+ | `testnet` | `https://lora.algokit.io/testnet/transaction/{txId}` |
176
+
177
+ This applies to all Alpha Arcade trading tools: `create_market_order`, `create_limit_order`, `cancel_order`, `amend_order`, `propose_match`, `split_shares`, `merge_shares`, and `claim`.
163
178
 
164
179
  ## Common Pitfalls
165
180
 
@@ -76,6 +76,10 @@ All-in-one swap: quote → sign (via wallet) → submit → confirm. Uses the ac
76
76
 
77
77
  Returns: status, confirmedRound, txIds, signer, nickname, quote details,
78
78
  summary (inputAmount, outputAmount, totalFees, transactionCount)
79
+
80
+ ALWAYS present txIds to user with explorer links after execution:
81
+ Mainnet: https://allo.info/tx/{txId}
82
+ Testnet: https://lora.algokit.io/testnet/transaction/{txId}
79
83
  ```
80
84
 
81
85
  ### `api_haystack_needs_optin`
@@ -109,6 +113,11 @@ Step 3: Preview quote (recommended — show user before executing)
109
113
  Step 4: User confirms → Execute
110
114
  → api_haystack_execute_swap { fromASAID, toASAID, amount, slippage, network }
111
115
  → Returns confirmed result with summary
116
+
117
+ Step 5: Present transaction IDs to user
118
+ → Show all txIds from the response with explorer links:
119
+ Mainnet: https://allo.info/tx/{txId}
120
+ Testnet: https://lora.algokit.io/testnet/transaction/{txId}
112
121
  ```
113
122
 
114
123
  **Key rules:**