@goplausible/openclaw-algorand-plugin 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +112 -0
  3. package/index.ts +361 -0
  4. package/lib/mcp-servers.ts +14 -0
  5. package/lib/x402-fetch.ts +213 -0
  6. package/memory/algorand-plugin.md +82 -0
  7. package/openclaw.plugin.json +30 -0
  8. package/package.json +41 -0
  9. package/setup.ts +80 -0
  10. package/skills/algorand-development/SKILL.md +90 -0
  11. package/skills/algorand-development/references/build-smart-contracts-reference.md +79 -0
  12. package/skills/algorand-development/references/build-smart-contracts.md +52 -0
  13. package/skills/algorand-development/references/create-project-reference.md +86 -0
  14. package/skills/algorand-development/references/create-project.md +89 -0
  15. package/skills/algorand-development/references/implement-arc-standards-arc32-arc56.md +396 -0
  16. package/skills/algorand-development/references/implement-arc-standards-arc4.md +265 -0
  17. package/skills/algorand-development/references/implement-arc-standards.md +92 -0
  18. package/skills/algorand-development/references/search-algorand-examples-reference.md +119 -0
  19. package/skills/algorand-development/references/search-algorand-examples.md +89 -0
  20. package/skills/algorand-development/references/troubleshoot-errors-contract.md +373 -0
  21. package/skills/algorand-development/references/troubleshoot-errors-transaction.md +599 -0
  22. package/skills/algorand-development/references/troubleshoot-errors.md +105 -0
  23. package/skills/algorand-development/references/use-algokit-cli-reference.md +228 -0
  24. package/skills/algorand-development/references/use-algokit-cli.md +64 -0
  25. package/skills/algorand-interaction/SKILL.md +223 -0
  26. package/skills/algorand-interaction/references/algorand-mcp.md +743 -0
  27. package/skills/algorand-interaction/references/examples-algorand-mcp.md +647 -0
  28. package/skills/algorand-python/SKILL.md +95 -0
  29. package/skills/algorand-python/references/build-smart-contracts-decorators.md +413 -0
  30. package/skills/algorand-python/references/build-smart-contracts-reference.md +55 -0
  31. package/skills/algorand-python/references/build-smart-contracts-storage.md +452 -0
  32. package/skills/algorand-python/references/build-smart-contracts-transactions.md +445 -0
  33. package/skills/algorand-python/references/build-smart-contracts-types.md +438 -0
  34. package/skills/algorand-python/references/build-smart-contracts.md +82 -0
  35. package/skills/algorand-python/references/create-project-reference.md +55 -0
  36. package/skills/algorand-python/references/create-project.md +75 -0
  37. package/skills/algorand-python/references/implement-arc-standards-arc32-arc56.md +101 -0
  38. package/skills/algorand-python/references/implement-arc-standards-arc4.md +154 -0
  39. package/skills/algorand-python/references/implement-arc-standards.md +39 -0
  40. package/skills/algorand-python/references/troubleshoot-errors-contract.md +355 -0
  41. package/skills/algorand-python/references/troubleshoot-errors-transaction.md +430 -0
  42. package/skills/algorand-python/references/troubleshoot-errors.md +46 -0
  43. package/skills/algorand-python/references/use-algokit-utils-reference.md +350 -0
  44. package/skills/algorand-python/references/use-algokit-utils.md +76 -0
  45. package/skills/algorand-typescript/SKILL.md +131 -0
  46. package/skills/algorand-typescript/references/algorand-ts-migration-from-beta.md +448 -0
  47. package/skills/algorand-typescript/references/algorand-ts-migration-from-tealscript.md +487 -0
  48. package/skills/algorand-typescript/references/algorand-ts-migration.md +102 -0
  49. package/skills/algorand-typescript/references/algorand-typescript-syntax-methods-and-abi.md +134 -0
  50. package/skills/algorand-typescript/references/algorand-typescript-syntax-reference.md +58 -0
  51. package/skills/algorand-typescript/references/algorand-typescript-syntax-storage.md +154 -0
  52. package/skills/algorand-typescript/references/algorand-typescript-syntax-transactions.md +187 -0
  53. package/skills/algorand-typescript/references/algorand-typescript-syntax-types-and-values.md +150 -0
  54. package/skills/algorand-typescript/references/algorand-typescript-syntax.md +84 -0
  55. package/skills/algorand-typescript/references/build-smart-contracts-reference.md +52 -0
  56. package/skills/algorand-typescript/references/build-smart-contracts.md +74 -0
  57. package/skills/algorand-typescript/references/call-smart-contracts-reference.md +237 -0
  58. package/skills/algorand-typescript/references/call-smart-contracts.md +183 -0
  59. package/skills/algorand-typescript/references/create-project-reference.md +53 -0
  60. package/skills/algorand-typescript/references/create-project.md +86 -0
  61. package/skills/algorand-typescript/references/deploy-react-frontend-examples.md +527 -0
  62. package/skills/algorand-typescript/references/deploy-react-frontend-reference.md +412 -0
  63. package/skills/algorand-typescript/references/deploy-react-frontend.md +239 -0
  64. package/skills/algorand-typescript/references/implement-arc-standards-arc32-arc56.md +73 -0
  65. package/skills/algorand-typescript/references/implement-arc-standards-arc4.md +126 -0
  66. package/skills/algorand-typescript/references/implement-arc-standards.md +44 -0
  67. package/skills/algorand-typescript/references/test-smart-contracts-examples.md +245 -0
  68. package/skills/algorand-typescript/references/test-smart-contracts-unit-tests.md +147 -0
  69. package/skills/algorand-typescript/references/test-smart-contracts.md +127 -0
  70. package/skills/algorand-typescript/references/troubleshoot-errors-contract.md +296 -0
  71. package/skills/algorand-typescript/references/troubleshoot-errors-transaction.md +438 -0
  72. package/skills/algorand-typescript/references/troubleshoot-errors.md +56 -0
  73. package/skills/algorand-typescript/references/use-algokit-utils-reference.md +342 -0
  74. package/skills/algorand-typescript/references/use-algokit-utils.md +74 -0
  75. package/skills/algorand-x402-python/SKILL.md +113 -0
  76. package/skills/algorand-x402-python/references/create-python-x402-client-examples.md +469 -0
  77. package/skills/algorand-x402-python/references/create-python-x402-client-reference.md +313 -0
  78. package/skills/algorand-x402-python/references/create-python-x402-client.md +207 -0
  79. package/skills/algorand-x402-python/references/create-python-x402-facilitator-examples.md +924 -0
  80. package/skills/algorand-x402-python/references/create-python-x402-facilitator-reference.md +629 -0
  81. package/skills/algorand-x402-python/references/create-python-x402-facilitator.md +408 -0
  82. package/skills/algorand-x402-python/references/create-python-x402-server-examples.md +703 -0
  83. package/skills/algorand-x402-python/references/create-python-x402-server-reference.md +303 -0
  84. package/skills/algorand-x402-python/references/create-python-x402-server.md +221 -0
  85. package/skills/algorand-x402-python/references/explain-algorand-x402-python-examples.md +605 -0
  86. package/skills/algorand-x402-python/references/explain-algorand-x402-python-reference.md +315 -0
  87. package/skills/algorand-x402-python/references/explain-algorand-x402-python.md +167 -0
  88. package/skills/algorand-x402-python/references/use-python-x402-core-avm-examples.md +554 -0
  89. package/skills/algorand-x402-python/references/use-python-x402-core-avm-reference.md +278 -0
  90. package/skills/algorand-x402-python/references/use-python-x402-core-avm.md +166 -0
  91. package/skills/algorand-x402-typescript/SKILL.md +129 -0
  92. package/skills/algorand-x402-typescript/references/create-typescript-x402-client-examples.md +879 -0
  93. package/skills/algorand-x402-typescript/references/create-typescript-x402-client-reference.md +371 -0
  94. package/skills/algorand-x402-typescript/references/create-typescript-x402-client.md +236 -0
  95. package/skills/algorand-x402-typescript/references/create-typescript-x402-facilitator-examples.md +875 -0
  96. package/skills/algorand-x402-typescript/references/create-typescript-x402-facilitator-reference.md +461 -0
  97. package/skills/algorand-x402-typescript/references/create-typescript-x402-facilitator.md +270 -0
  98. package/skills/algorand-x402-typescript/references/create-typescript-x402-nextjs-examples.md +1181 -0
  99. package/skills/algorand-x402-typescript/references/create-typescript-x402-nextjs-reference.md +360 -0
  100. package/skills/algorand-x402-typescript/references/create-typescript-x402-nextjs.md +251 -0
  101. package/skills/algorand-x402-typescript/references/create-typescript-x402-paywall-examples.md +870 -0
  102. package/skills/algorand-x402-typescript/references/create-typescript-x402-paywall-reference.md +323 -0
  103. package/skills/algorand-x402-typescript/references/create-typescript-x402-paywall.md +281 -0
  104. package/skills/algorand-x402-typescript/references/create-typescript-x402-server-examples.md +1135 -0
  105. package/skills/algorand-x402-typescript/references/create-typescript-x402-server-reference.md +382 -0
  106. package/skills/algorand-x402-typescript/references/create-typescript-x402-server.md +216 -0
  107. package/skills/algorand-x402-typescript/references/explain-algorand-x402-typescript-examples.md +616 -0
  108. package/skills/algorand-x402-typescript/references/explain-algorand-x402-typescript-reference.md +323 -0
  109. package/skills/algorand-x402-typescript/references/explain-algorand-x402-typescript.md +232 -0
  110. package/skills/algorand-x402-typescript/references/use-typescript-x402-core-avm-examples.md +1417 -0
  111. package/skills/algorand-x402-typescript/references/use-typescript-x402-core-avm-reference.md +504 -0
  112. package/skills/algorand-x402-typescript/references/use-typescript-x402-core-avm.md +158 -0
@@ -0,0 +1,743 @@
1
+ # Algorand MCP — Tool Reference
2
+
3
+ > **Signing**: Use `wallet_*` tools (recommended) or provide a secret key to `sign_transaction`
4
+ > **Networks**: `mainnet`, `testnet`, `localnet`
5
+
6
+ ## Table of Contents
7
+
8
+ 1. [Wallet Management Tools](#wallet-management-tools)
9
+ 2. [Account Management Tools](#account-management-tools)
10
+ 3. [Utility Tools](#utility-tools)
11
+ 4. [Transaction Building Tools](#transaction-building-tools)
12
+ 5. [Algod Tools](#algod-tools)
13
+ 6. [Algod API Tools](#algod-api-tools)
14
+ 7. [Indexer API Tools](#indexer-api-tools)
15
+ 8. [NFDomains API Tools](#nfdomains-api-tools)
16
+ 9. [Tinyman DEX API Tools](#tinyman-dex-api-tools)
17
+ 10. [ARC-26 URI Tools](#arc-26-uri-tools)
18
+ 11. [Knowledge Base Tools](#knowledge-base-tools)
19
+
20
+ ---
21
+
22
+ ## Wallet Management Tools
23
+
24
+ Secure wallet management. Private keys are never available to you — use these tools to sign.
25
+
26
+ ### wallet_add_account
27
+ - **Purpose**: Create a new Algorand account (or import from mnemonic) with nickname and spending limits
28
+ - **Parameters**:
29
+ ```json
30
+ {
31
+ "nickname": "my-account",
32
+ "mnemonic": "optional 25-word mnemonic to import",
33
+ "allowance": 5000000,
34
+ "dailyAllowance": 10000000
35
+ }
36
+ ```
37
+ - **Returns**: `{ address, publicKey, nickname }` — mnemonic is NEVER returned
38
+
39
+ ### wallet_remove_account
40
+ - **Purpose**: Remove an account from the wallet by nickname or index
41
+ - **Parameters**: `{ "nickname": "my-account" }` or `{ "index": 0 }`
42
+
43
+ ### wallet_list_accounts
44
+ - **Purpose**: List all wallet accounts with nicknames, addresses, and spending limits
45
+ - **Parameters**: `{}`
46
+
47
+ ### wallet_switch_account
48
+ - **Purpose**: Switch the active wallet account by nickname or index
49
+ - **Parameters**: `{ "nickname": "my-account" }` or `{ "index": 0 }`
50
+
51
+ ### wallet_get_info
52
+ - **Purpose**: Get active wallet account info including address, balance, and spending limits
53
+ - **Parameters**: `{ "network": "testnet" }`
54
+ - **Use**: FIRST tool in EVERY session
55
+
56
+ ### wallet_get_assets
57
+ - **Purpose**: Get all asset holdings for the active wallet account
58
+ - **Parameters**: `{ "network": "testnet" }`
59
+
60
+ ### wallet_sign_transaction
61
+ - **Purpose**: Sign a single transaction with the active wallet account. Enforces spending limits.
62
+ - **Parameters**:
63
+ ```json
64
+ {
65
+ "transaction": { "...transaction object from make_*_txn..." },
66
+ "network": "testnet"
67
+ }
68
+ ```
69
+
70
+ ### wallet_sign_transaction_group
71
+ - **Purpose**: Sign a group of transactions. Assigns group ID automatically and enforces spending limits.
72
+ - **Parameters**:
73
+ ```json
74
+ {
75
+ "transactions": [ "...array of transaction objects..." ],
76
+ "network": "testnet"
77
+ }
78
+ ```
79
+
80
+ ### wallet_sign_data
81
+ - **Purpose**: Sign arbitrary hex data with raw Ed25519 (no Algorand SDK prefix)
82
+ - **Parameters**: `{ "data": "48656c6c6f" }`
83
+ - **Returns**: `{ signature, publicKey, dataLength }`
84
+
85
+ ### wallet_optin_asset
86
+ - **Purpose**: One-step asset opt-in — creates, signs, and submits the transaction
87
+ - **Parameters**: `{ "assetId": 31566704, "network": "testnet" }`
88
+
89
+ ---
90
+
91
+ ## Account Management Tools
92
+
93
+ Key derivation and account creation. Prefer `wallet_add_account` for secure storage.
94
+
95
+ ### create_account
96
+ - **Purpose**: Create a new Algorand account (returns address, secretKey, mnemonic)
97
+ - **Parameters**: `{}`
98
+ - **⚠️ Warning**: Secret key returned in response — never log or display it. Use `wallet_add_account` instead when possible.
99
+
100
+ ### rekey_account
101
+ - **Purpose**: Rekey an Algorand account to a new address
102
+ - **Parameters**: `{ "sourceAddress": "...", "targetAddress": "..." }`
103
+
104
+ ### mnemonic_to_mdk
105
+ - **Purpose**: Convert mnemonic to master derivation key
106
+ - **Parameters**: `{ "mnemonic": "25-word mnemonic" }`
107
+
108
+ ### mdk_to_mnemonic
109
+ - **Purpose**: Convert master derivation key to mnemonic
110
+ - **Parameters**: `{ "mdk": "hex string" }`
111
+
112
+ ### secret_key_to_mnemonic
113
+ - **Purpose**: Convert secret key to mnemonic
114
+ - **Parameters**: `{ "secretKey": "hex string" }`
115
+
116
+ ### mnemonic_to_secret_key
117
+ - **Purpose**: Convert mnemonic to secret key
118
+ - **Parameters**: `{ "mnemonic": "25-word mnemonic" }`
119
+
120
+ ### seed_from_mnemonic
121
+ - **Purpose**: Generate seed from mnemonic
122
+ - **Parameters**: `{ "mnemonic": "25-word mnemonic" }`
123
+
124
+ ### mnemonic_from_seed
125
+ - **Purpose**: Generate mnemonic from seed
126
+ - **Parameters**: `{ "seed": "hex string" }`
127
+
128
+ ---
129
+
130
+ ## Utility Tools
131
+
132
+ Address validation, encoding, signing, and server health.
133
+
134
+ ### ping
135
+ - **Purpose**: Verify server connectivity
136
+ - **Parameters**: `{}`
137
+
138
+ ### validate_address
139
+ - **Purpose**: Check if an Algorand address is valid
140
+ - **Parameters**: `{ "address": "ALGO_ADDRESS" }`
141
+
142
+ ### encode_address
143
+ - **Purpose**: Encode a public key to an Algorand address
144
+ - **Parameters**: `{ "publicKey": "hex string" }`
145
+
146
+ ### decode_address
147
+ - **Purpose**: Decode an Algorand address to a public key
148
+ - **Parameters**: `{ "address": "ALGO_ADDRESS" }`
149
+
150
+ ### get_application_address
151
+ - **Purpose**: Get the address for a given application ID
152
+ - **Parameters**: `{ "appId": 123456 }`
153
+
154
+ ### bytes_to_bigint
155
+ - **Purpose**: Convert bytes to BigInt
156
+ - **Parameters**: `{ "bytes": "hex string" }`
157
+
158
+ ### bigint_to_bytes
159
+ - **Purpose**: Convert BigInt to bytes
160
+ - **Parameters**: `{ "value": "12345", "size": 8 }`
161
+
162
+ ### encode_uint64
163
+ - **Purpose**: Encode uint64 to bytes
164
+ - **Parameters**: `{ "value": "12345" }`
165
+
166
+ ### decode_uint64
167
+ - **Purpose**: Decode bytes to uint64
168
+ - **Parameters**: `{ "bytes": "hex string" }`
169
+
170
+ ### verify_bytes
171
+ - **Purpose**: Verify a signature against bytes with an Algorand address
172
+ - **Parameters**: `{ "bytes": "hex", "signature": "base64", "address": "ALGO_ADDRESS" }`
173
+ - **Returns**: `{ verified: boolean }`
174
+
175
+ ### sign_bytes
176
+ - **Purpose**: Sign bytes with a secret key
177
+ - **Parameters**: `{ "bytes": "hex", "sk": "hex" }`
178
+
179
+ ### encode_obj
180
+ - **Purpose**: Encode object to msgpack format
181
+ - **Parameters**: `{ "obj": { "key": "value" } }`
182
+
183
+ ### decode_obj
184
+ - **Purpose**: Decode msgpack bytes to object
185
+ - **Parameters**: `{ "bytes": "base64 string" }`
186
+
187
+ ---
188
+
189
+ ## Transaction Building Tools
190
+
191
+ Build unsigned transaction objects. Must be signed before submission.
192
+
193
+ ### make_payment_txn
194
+ - **Purpose**: Create an ALGO payment transaction
195
+ - **Parameters**:
196
+ ```json
197
+ {
198
+ "from": "sender_address",
199
+ "to": "receiver_address",
200
+ "amount": 1000000,
201
+ "note": "optional note",
202
+ "fee": 1000,
203
+ "flatFee": false,
204
+ "closeRemainderTo": "optional",
205
+ "rekeyTo": "optional",
206
+ "network": "testnet"
207
+ }
208
+ ```
209
+ > Amount in microAlgos: 1 ALGO = 1,000,000
210
+ > `fee` (optional): transaction fee in microAlgos. Default: 1000 (minimum fee).
211
+ > `flatFee` (optional): if `true`, use `fee` exactly as specified; if `false` (default), SDK may adjust fee based on transaction size.
212
+
213
+ ### make_keyreg_txn
214
+ - **Purpose**: Create a key registration transaction for consensus participation
215
+ - **Parameters**:
216
+ ```json
217
+ {
218
+ "from": "address",
219
+ "voteKey": "base64",
220
+ "selectionKey": "base64",
221
+ "stateProofKey": "base64",
222
+ "voteFirst": 1000,
223
+ "voteLast": 2000000,
224
+ "voteKeyDilution": 10000,
225
+ "nonParticipation": false,
226
+ "network": "testnet"
227
+ }
228
+ ```
229
+
230
+ ### make_asset_create_txn
231
+ - **Purpose**: Create an asset (ASA) creation transaction
232
+ - **Parameters**:
233
+ ```json
234
+ {
235
+ "from": "creator_address",
236
+ "total": 1000000,
237
+ "decimals": 6,
238
+ "defaultFrozen": false,
239
+ "unitName": "TKN",
240
+ "assetName": "My Token",
241
+ "assetURL": "https://example.com",
242
+ "manager": "optional",
243
+ "reserve": "optional",
244
+ "freeze": "optional",
245
+ "clawback": "optional",
246
+ "network": "testnet"
247
+ }
248
+ ```
249
+
250
+ ### make_asset_config_txn
251
+ - **Purpose**: Reconfigure an asset (change manager, reserve, freeze, clawback)
252
+ - **Parameters**:
253
+ ```json
254
+ {
255
+ "from": "manager_address",
256
+ "assetIndex": 12345,
257
+ "strictEmptyAddressChecking": true,
258
+ "manager": "optional",
259
+ "reserve": "optional",
260
+ "freeze": "optional",
261
+ "clawback": "optional",
262
+ "network": "testnet"
263
+ }
264
+ ```
265
+
266
+ ### make_asset_destroy_txn
267
+ - **Purpose**: Destroy an asset (all units must be held by creator)
268
+ - **Parameters**: `{ "from": "creator_address", "assetIndex": 12345, "network": "testnet" }`
269
+
270
+ ### make_asset_freeze_txn
271
+ - **Purpose**: Freeze or unfreeze an asset for a specific account
272
+ - **Parameters**:
273
+ ```json
274
+ {
275
+ "from": "freeze_address",
276
+ "assetIndex": 12345,
277
+ "freezeTarget": "target_address",
278
+ "freezeState": true,
279
+ "network": "testnet"
280
+ }
281
+ ```
282
+
283
+ ### make_asset_transfer_txn
284
+ - **Purpose**: Transfer an ASA or opt-in (0-amount self-transfer)
285
+ - **Parameters**:
286
+ ```json
287
+ {
288
+ "from": "sender_address",
289
+ "to": "receiver_address",
290
+ "assetIndex": 31566704,
291
+ "amount": 1000000,
292
+ "fee": 1000,
293
+ "flatFee": false,
294
+ "network": "testnet"
295
+ }
296
+ ```
297
+ > `fee` (optional): transaction fee in microAlgos. Default: 1000 (minimum fee).
298
+ > `flatFee` (optional): if `true`, use `fee` exactly as specified; if `false` (default), SDK may adjust fee based on transaction size.
299
+
300
+ ### make_app_create_txn
301
+ - **Purpose**: Deploy a smart contract
302
+ - **Parameters**:
303
+ ```json
304
+ {
305
+ "from": "creator_address",
306
+ "approvalProgram": "base64 compiled TEAL",
307
+ "clearProgram": "base64 compiled TEAL",
308
+ "numGlobalByteSlices": 0,
309
+ "numGlobalInts": 1,
310
+ "numLocalByteSlices": 0,
311
+ "numLocalInts": 0,
312
+ "extraPages": 0,
313
+ "appArgs": ["base64 arg1"],
314
+ "accounts": ["address1"],
315
+ "foreignApps": [123],
316
+ "foreignAssets": [456],
317
+ "network": "testnet"
318
+ }
319
+ ```
320
+
321
+ ### make_app_update_txn
322
+ - **Purpose**: Update a smart contract's approval and clear programs
323
+ - **Parameters**:
324
+ ```json
325
+ {
326
+ "from": "creator_address",
327
+ "appIndex": 123456,
328
+ "approvalProgram": "base64 compiled TEAL",
329
+ "clearProgram": "base64 compiled TEAL",
330
+ "network": "testnet"
331
+ }
332
+ ```
333
+
334
+ ### make_app_delete_txn
335
+ - **Purpose**: Delete a smart contract
336
+ - **Parameters**: `{ "from": "creator_address", "appIndex": 123456, "network": "testnet" }`
337
+
338
+ ### make_app_optin_txn
339
+ - **Purpose**: Opt-in to a smart contract (allocate local state)
340
+ - **Parameters**: `{ "from": "user_address", "appIndex": 123456, "network": "testnet" }`
341
+
342
+ ### make_app_closeout_txn
343
+ - **Purpose**: Close out of a smart contract (deallocate local state)
344
+ - **Parameters**: `{ "from": "user_address", "appIndex": 123456, "network": "testnet" }`
345
+
346
+ ### make_app_clear_txn
347
+ - **Purpose**: Force-clear local state for a smart contract
348
+ - **Parameters**: `{ "from": "user_address", "appIndex": 123456, "network": "testnet" }`
349
+
350
+ ### make_app_call_txn
351
+ - **Purpose**: Call a smart contract method (NoOp)
352
+ - **Parameters**:
353
+ ```json
354
+ {
355
+ "from": "caller_address",
356
+ "appIndex": 123456,
357
+ "appArgs": ["base64 encoded args"],
358
+ "accounts": ["referenced addresses"],
359
+ "foreignApps": [789],
360
+ "foreignAssets": [101],
361
+ "network": "testnet"
362
+ }
363
+ ```
364
+
365
+ ### assign_group_id
366
+ - **Purpose**: Assign a group ID to multiple transactions for atomic execution
367
+ - **Parameters**: `{ "transactions": [ txn1, txn2, ... ] }`
368
+
369
+ ### sign_transaction
370
+ - **Purpose**: Sign a transaction with a provided secret key (not the wallet)
371
+ - **Parameters**:
372
+ ```json
373
+ {
374
+ "transaction": { "...transaction object..." },
375
+ "sk": "hex encoded secret key"
376
+ }
377
+ ```
378
+ - **Returns**: `{ txID, blob }`
379
+
380
+ ---
381
+
382
+ ## Algod Tools
383
+
384
+ TEAL compilation, transaction simulation, and submission.
385
+
386
+ ### compile_teal
387
+ - **Purpose**: Compile TEAL source code to bytecode
388
+ - **Parameters**: `{ "source": "#pragma version 10\nint 1\nreturn", "network": "testnet" }`
389
+ - **Returns**: `{ result (base64 bytecode), hash }`
390
+
391
+ ### disassemble_teal
392
+ - **Purpose**: Disassemble TEAL bytecode back to source
393
+ - **Parameters**: `{ "bytecode": "base64 encoded bytecode", "network": "testnet" }`
394
+
395
+ ### send_raw_transaction
396
+ - **Purpose**: Submit signed transactions to the network
397
+ - **Parameters**:
398
+ ```json
399
+ {
400
+ "signedTxns": ["base64 encoded signed transaction"],
401
+ "network": "testnet"
402
+ }
403
+ ```
404
+
405
+ ### simulate_raw_transactions
406
+ - **Purpose**: Simulate raw transactions without submitting
407
+ - **Parameters**: `{ "txns": ["base64 encoded transactions"], "network": "testnet" }`
408
+
409
+ ### simulate_transactions
410
+ - **Purpose**: Simulate transactions with detailed configuration
411
+ - **Parameters**:
412
+ ```json
413
+ {
414
+ "txnGroups": [ "...transaction groups..." ],
415
+ "allowEmptySignatures": true,
416
+ "allowMoreLogging": true,
417
+ "allowUnnamedResources": true,
418
+ "network": "testnet"
419
+ }
420
+ ```
421
+
422
+ ---
423
+
424
+ ## Algod API Tools
425
+
426
+ Direct algod node queries. All accept optional `network`, `itemsPerPage`, `pageToken`.
427
+
428
+ ### api_algod_get_account_info
429
+ - **Purpose**: Get account balance, assets, auth address, and app local states
430
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "network": "testnet" }`
431
+
432
+ ### api_algod_get_account_application_info
433
+ - **Purpose**: Get account-specific application local state
434
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "appId": 123456, "network": "testnet" }`
435
+
436
+ ### api_algod_get_account_asset_info
437
+ - **Purpose**: Check if account holds a specific asset and get balance
438
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "assetId": 31566704, "network": "testnet" }`
439
+
440
+ ### api_algod_get_application_by_id
441
+ - **Purpose**: Get application information (global state, programs)
442
+ - **Parameters**: `{ "appId": 123456, "network": "testnet" }`
443
+
444
+ ### api_algod_get_application_box
445
+ - **Purpose**: Get a specific application box by name
446
+ - **Parameters**: `{ "appId": 123456, "boxName": "box_name", "network": "testnet" }`
447
+
448
+ ### api_algod_get_application_boxes
449
+ - **Purpose**: Get all boxes for an application
450
+ - **Parameters**: `{ "appId": 123456, "maxBoxes": 100, "network": "testnet" }`
451
+
452
+ ### api_algod_get_asset_by_id
453
+ - **Purpose**: Get asset configuration (total, decimals, unit name, manager, etc.)
454
+ - **Parameters**: `{ "assetId": 31566704, "network": "testnet" }`
455
+
456
+ ### api_algod_get_pending_transaction
457
+ - **Purpose**: Get pending transaction info by ID
458
+ - **Parameters**: `{ "txId": "TXID", "network": "testnet" }`
459
+
460
+ ### api_algod_get_pending_transactions_by_address
461
+ - **Purpose**: Get pending transactions for a specific address
462
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "network": "testnet" }`
463
+
464
+ ### api_algod_get_pending_transactions
465
+ - **Purpose**: Get all pending transactions in the pool
466
+ - **Parameters**: `{ "maxTxns": 100, "network": "testnet" }`
467
+
468
+ ### api_algod_get_transaction_params
469
+ - **Purpose**: Get suggested transaction parameters (fee, first/last valid round, genesis info)
470
+ - **Parameters**: `{ "network": "testnet" }`
471
+
472
+ ### api_algod_get_node_status
473
+ - **Purpose**: Get current node status (last round, time since last round, etc.)
474
+ - **Parameters**: `{ "network": "testnet" }`
475
+
476
+ ### api_algod_get_node_status_after_block
477
+ - **Purpose**: Wait for a specific round and get node status
478
+ - **Parameters**: `{ "round": 12345678, "network": "testnet" }`
479
+
480
+ ---
481
+
482
+ ## Indexer API Tools
483
+
484
+ Historical blockchain queries. All accept optional `network`, `itemsPerPage`, `pageToken`.
485
+
486
+ ### api_indexer_lookup_account_by_id
487
+ - **Purpose**: Get historical account information
488
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "network": "testnet" }`
489
+
490
+ ### api_indexer_lookup_account_assets
491
+ - **Purpose**: Get all assets held by an account
492
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "network": "testnet" }`
493
+
494
+ ### api_indexer_lookup_account_app_local_states
495
+ - **Purpose**: Get all application local states for an account
496
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "network": "testnet" }`
497
+
498
+ ### api_indexer_lookup_account_created_applications
499
+ - **Purpose**: Get all applications created by an account
500
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "network": "testnet" }`
501
+
502
+ ### api_indexer_search_for_accounts
503
+ - **Purpose**: Search for accounts with various filters
504
+ - **Parameters**: `{ "assetId": 31566704, "limit": 10, "network": "testnet" }`
505
+
506
+ ### api_indexer_lookup_applications
507
+ - **Purpose**: Get application information from indexer
508
+ - **Parameters**: `{ "appId": 123456, "network": "testnet" }`
509
+
510
+ ### api_indexer_lookup_application_logs
511
+ - **Purpose**: Get application log messages
512
+ - **Parameters**: `{ "appId": 123456, "network": "testnet" }`
513
+
514
+ ### api_indexer_search_for_applications
515
+ - **Purpose**: Search for applications with filters
516
+ - **Parameters**: `{ "limit": 10, "network": "testnet" }`
517
+
518
+ ### api_indexer_lookup_application_box
519
+ - **Purpose**: Get a specific application box from indexer
520
+ - **Parameters**: `{ "appId": 123456, "boxName": "box_name", "network": "testnet" }`
521
+
522
+ ### api_indexer_lookup_application_boxes
523
+ - **Purpose**: Get all boxes for an application from indexer
524
+ - **Parameters**: `{ "appId": 123456, "network": "testnet" }`
525
+
526
+ ### api_indexer_lookup_asset_by_id
527
+ - **Purpose**: Get asset information and configuration
528
+ - **Parameters**: `{ "assetId": 31566704, "network": "testnet" }`
529
+
530
+ ### api_indexer_lookup_asset_balances
531
+ - **Purpose**: Get all accounts holding a specific asset
532
+ - **Parameters**: `{ "assetId": 31566704, "network": "testnet" }`
533
+
534
+ ### api_indexer_lookup_asset_transactions
535
+ - **Purpose**: Get transactions involving a specific asset
536
+ - **Parameters**: `{ "assetId": 31566704, "network": "testnet" }`
537
+
538
+ ### api_indexer_search_for_assets
539
+ - **Purpose**: Search for assets by name, unit, or creator
540
+ - **Parameters**: `{ "name": "USDC", "limit": 10, "network": "testnet" }`
541
+
542
+ ### api_indexer_lookup_transaction_by_id
543
+ - **Purpose**: Get transaction details by ID
544
+ - **Parameters**: `{ "txId": "TXID", "network": "testnet" }`
545
+
546
+ ### api_indexer_lookup_account_transactions
547
+ - **Purpose**: Get transaction history for an account
548
+ - **Parameters**: `{ "address": "ALGO_ADDRESS", "network": "testnet" }`
549
+
550
+ ### api_indexer_search_for_transactions
551
+ - **Purpose**: Search for transactions with various filters
552
+ - **Parameters**: `{ "limit": 10, "network": "testnet" }`
553
+
554
+ ---
555
+
556
+ ## NFDomains API Tools
557
+
558
+ Algorand Name Service (`.algo` names).
559
+
560
+ ### api_nfd_get_nfd
561
+ - **Purpose**: Get NFD info by name or application ID
562
+ - **Parameters**:
563
+ ```json
564
+ {
565
+ "nameOrID": "example.algo",
566
+ "view": "brief",
567
+ "poll": false,
568
+ "nocache": false,
569
+ "network": "mainnet"
570
+ }
571
+ ```
572
+ - **⚠️ CRITICAL**: Use `depositAccount` for transactions, NOT other address fields!
573
+
574
+ ### api_nfd_get_nfds_for_addresses
575
+ - **Purpose**: Get NFDs owned by specific addresses
576
+ - **Parameters**:
577
+ ```json
578
+ {
579
+ "address": ["ALGO_ADDRESS_1", "ALGO_ADDRESS_2"],
580
+ "limit": 10,
581
+ "view": "brief",
582
+ "network": "mainnet"
583
+ }
584
+ ```
585
+
586
+ ### api_nfd_get_nfd_activity
587
+ - **Purpose**: Get activity/changes for NFDs
588
+ - **Parameters**:
589
+ ```json
590
+ {
591
+ "name": ["example.algo"],
592
+ "type": "changes",
593
+ "limit": 10,
594
+ "sort": "timeDesc",
595
+ "network": "mainnet"
596
+ }
597
+ ```
598
+
599
+ ### api_nfd_get_nfd_analytics
600
+ - **Purpose**: Get analytics data for NFD sales and transfers
601
+ - **Parameters**:
602
+ ```json
603
+ {
604
+ "name": "example.algo",
605
+ "buyer": "address",
606
+ "seller": "address",
607
+ "limit": 10,
608
+ "sort": "timeDesc",
609
+ "network": "mainnet"
610
+ }
611
+ ```
612
+
613
+ ### api_nfd_browse_nfds
614
+ - **Purpose**: Browse NFDs with filters (category, sale type, price range)
615
+ - **Parameters**:
616
+ ```json
617
+ {
618
+ "category": ["curated"],
619
+ "saleType": ["buyItNow"],
620
+ "minPrice": 0,
621
+ "maxPrice": 1000000,
622
+ "limit": 10,
623
+ "sort": "priceAsc",
624
+ "view": "brief",
625
+ "network": "mainnet"
626
+ }
627
+ ```
628
+
629
+ ### api_nfd_search_nfds
630
+ - **Purpose**: Search NFDs by name
631
+ - **Parameters**:
632
+ ```json
633
+ {
634
+ "name": "algo",
635
+ "limit": 10,
636
+ "view": "brief",
637
+ "network": "mainnet"
638
+ }
639
+ ```
640
+
641
+ ---
642
+
643
+ ## Tinyman DEX API Tools
644
+
645
+ Decentralized exchange operations on Tinyman AMM.
646
+
647
+ ### api_tinyman_get_pool
648
+ - **Purpose**: Get pool information for an asset pair
649
+ - **Parameters**:
650
+ ```json
651
+ {
652
+ "asset1Id": 0,
653
+ "asset2Id": 31566704,
654
+ "version": "v2",
655
+ "network": "mainnet"
656
+ }
657
+ ```
658
+ > Asset ID 0 = ALGO
659
+
660
+ ### api_tinyman_get_pool_analytics
661
+ - **Purpose**: Get pool analytics data (volume, TVL, fees)
662
+ - **Parameters**: `{ "asset1Id": 0, "asset2Id": 31566704, "network": "mainnet" }`
663
+
664
+ ### api_tinyman_get_pool_creation_quote
665
+ - **Purpose**: Get a quote for creating a new liquidity pool
666
+ - **Parameters**: Pool creation parameters
667
+
668
+ ### api_tinyman_get_liquidity_quote
669
+ - **Purpose**: Get a quote for adding liquidity to a pool
670
+ - **Parameters**: Liquidity parameters
671
+
672
+ ### api_tinyman_get_remove_liquidity_quote
673
+ - **Purpose**: Get a quote for removing liquidity from a pool
674
+ - **Parameters**: Removal parameters
675
+
676
+ ### api_tinyman_get_swap_quote
677
+ - **Purpose**: Get a swap quote (price, slippage, route)
678
+ - **Parameters**: Swap parameters including asset IDs and amount
679
+
680
+ ### api_tinyman_get_asset_optin_quote
681
+ - **Purpose**: Get a quote for opting into a Tinyman asset
682
+ - **Parameters**: Asset opt-in parameters
683
+
684
+ ### api_tinyman_get_validator_optin_quote
685
+ - **Purpose**: Get a quote for opting into the Tinyman validator
686
+ - **Parameters**: Validator opt-in parameters
687
+
688
+ ### api_tinyman_get_validator_optout_quote
689
+ - **Purpose**: Get a quote for opting out of the Tinyman validator
690
+ - **Parameters**: Validator opt-out parameters
691
+
692
+ ---
693
+
694
+ ## ARC-26 URI Tools
695
+
696
+ ### generate_algorand_uri
697
+ - **Purpose**: Generate an Algorand payment URI and QR code per ARC-26 specification
698
+ - **Parameters**:
699
+ ```json
700
+ {
701
+ "address": "receiver_address",
702
+ "label": "Payment label",
703
+ "amount": 1000000,
704
+ "asset": 31566704,
705
+ "note": "Payment note",
706
+ "xnote": "Exclusive note"
707
+ }
708
+ ```
709
+ - **Returns**: URI string + SVG QR code
710
+
711
+ ---
712
+
713
+ ## Knowledge Base Tools
714
+
715
+ ### get_knowledge_doc
716
+ - **Purpose**: Get markdown content for specified knowledge documents
717
+ - **Parameters**: `{ "documents": ["arcs:specs:arc-0003.md"] }`
718
+ - **Categories**:
719
+ - `arcs`: Algorand Request for Comments
720
+ - `sdks`: Software Development Kits
721
+ - `algokit`: AlgoKit
722
+ - `algokit-utils`: AlgoKit Utils
723
+ - `tealscript`: TEALScript
724
+ - `puya`: Puya
725
+ - `liquid-auth`: Liquid Auth
726
+ - `python`: Python Development
727
+ - `developers`: Developer Documentation
728
+ - `clis`: CLI Tools
729
+ - `nodes`: Node Management
730
+ - `details`: Developer Details
731
+
732
+ ---
733
+
734
+ ## Error Reference
735
+
736
+ | Error | Cause | Solution |
737
+ |-------|-------|----------|
738
+ | `No active account` | No wallet account configured | Guide user to `wallet_add_account` |
739
+ | `Invalid Algorand address format` | Bad address | Check with `validate_address` |
740
+ | `Spending limit exceeded` | Transaction exceeds `allowance` or `dailyAllowance` | Inform user, adjust limits |
741
+ | `Asset hasn't been opted in` | Recipient not opted in to ASA | Opt-in first with `wallet_optin_asset` or `make_asset_transfer_txn` |
742
+ | `Overspend` / negative balance | Insufficient funds for amount + fee + MBR | Add funds or reduce amount |
743
+ | `Do not know how to serialize a BigInt` | BigInt in JSON response | Should not occur (patched globally) |