@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 +8 -1
- package/memory/algorand-plugin.md +24 -11
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/skills/algorand-interaction/SKILL.md +35 -12
- package/skills/algorand-interaction/references/algorand-mcp.md +13 -11
- package/skills/algorand-interaction/references/examples-algorand-mcp.md +50 -3
- package/skills/alpha-arcade-interaction/SKILL.md +15 -0
- package/skills/haystack-router-interaction/SKILL.md +9 -0
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).
|
|
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
|
-
|
|
66
|
-
**Always include all of these in your reply:**
|
|
65
|
+
**Channel-Aware Output:**
|
|
67
66
|
|
|
68
|
-
|
|
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
|
-
|
|
73
|
-
1.
|
|
74
|
-
2.
|
|
75
|
-
3.
|
|
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
|
package/openclaw.plugin.json
CHANGED
|
@@ -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.
|
|
5
|
+
"version": "1.9.5",
|
|
6
6
|
"skills": [
|
|
7
7
|
"skills/algorand-development",
|
|
8
8
|
"skills/algorand-typescript",
|
package/package.json
CHANGED
|
@@ -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 |
|
|
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
|
-
|
|
233
|
-
**Always include all of these in your reply:**
|
|
253
|
+
**Channel-Aware Output:**
|
|
234
254
|
|
|
235
|
-
|
|
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
|
-
|
|
240
|
-
1.
|
|
241
|
-
2.
|
|
242
|
-
3.
|
|
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
|
-
|
|
803
|
-
**Always include all of these in your reply:**
|
|
802
|
+
**Channel-Aware Output:**
|
|
804
803
|
|
|
805
|
-
|
|
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
|
-
**
|
|
810
|
-
1.
|
|
811
|
-
2.
|
|
812
|
-
3.
|
|
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:
|
|
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": "[
|
|
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:**
|