@didcid/mcp-server 0.1.1 → 0.1.2
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 +256 -28
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/redact.js +4 -3
- package/dist/redact.js.map +1 -1
- package/dist/tools.d.ts +12 -0
- package/dist/tools.js +226 -49
- package/dist/tools.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -38,42 +38,270 @@ Example MCP client config:
|
|
|
38
38
|
| `ARCHON_WALLET_PATH` | `./wallet.json` | Wallet file path |
|
|
39
39
|
| `ARCHON_PASSPHRASE` | unset | Required for wallet-backed tools; node health tools work without it |
|
|
40
40
|
| `ARCHON_DEFAULT_REGISTRY` | Keymaster default | Default registry for new DIDs |
|
|
41
|
-
| `ARCHON_MCP_READ_ONLY` | `false` | Set to `true` to
|
|
41
|
+
| `ARCHON_MCP_READ_ONLY` | `false` | Set to `true` to omit mutating tools from `tools/list` |
|
|
42
42
|
|
|
43
43
|
## Tools
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
The MCP server maps every Keymaster CLI command to one MCP tool. Tool names use the CLI command with `archon_` prefixed and hyphens changed to underscores.
|
|
46
|
+
|
|
47
|
+
MCP-only helper tools:
|
|
46
48
|
|
|
47
49
|
- `archon_get_version`
|
|
48
50
|
- `archon_get_status`
|
|
49
|
-
- `archon_list_registries`
|
|
50
|
-
- `archon_list_ids`
|
|
51
51
|
- `archon_get_current_id`
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- `
|
|
67
|
-
- `archon_add_address`
|
|
68
|
-
- `archon_remove_address`
|
|
69
|
-
- `archon_publish_address`
|
|
70
|
-
- `archon_unpublish_address`
|
|
71
|
-
- `archon_create_asset_json`
|
|
72
|
-
- `archon_update_asset_json`
|
|
73
|
-
- `archon_transfer_asset`
|
|
52
|
+
|
|
53
|
+
CLI file commands use inline data instead of arbitrary local paths. Binary/text payloads use:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"name": "example.txt",
|
|
58
|
+
"mimeType": "text/plain",
|
|
59
|
+
"encoding": "base64",
|
|
60
|
+
"data": "aGVsbG8="
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Use `"encoding": "utf8"` when passing plain text directly. Returned file-like data uses the same shape with base64 encoding.
|
|
65
|
+
|
|
66
|
+
Destructive tools require `"confirm": true`, secret-revealing tools require `"reveal": true`, and Lightning payment/broadcast tools require `"confirmPayment": true`.
|
|
74
67
|
|
|
75
68
|
Set `ARCHON_MCP_READ_ONLY=true` to omit mutating tools from the advertised MCP tool list.
|
|
76
69
|
|
|
77
|
-
##
|
|
70
|
+
## Examples
|
|
71
|
+
|
|
72
|
+
Create an ID:
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"name": "archon_create_id",
|
|
77
|
+
"arguments": {
|
|
78
|
+
"name": "alice",
|
|
79
|
+
"registry": "hyperswarm"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Rotate the current ID keys:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"name": "archon_rotate_keys",
|
|
89
|
+
"arguments": {
|
|
90
|
+
"confirm": true
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Create a JSON asset:
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"name": "archon_create_asset_json",
|
|
100
|
+
"arguments": {
|
|
101
|
+
"data": {
|
|
102
|
+
"title": "Example",
|
|
103
|
+
"status": "draft"
|
|
104
|
+
},
|
|
105
|
+
"alias": "example-asset"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Create a file asset from inline data:
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"name": "archon_create_asset_file",
|
|
115
|
+
"arguments": {
|
|
116
|
+
"file": {
|
|
117
|
+
"name": "hello.txt",
|
|
118
|
+
"mimeType": "text/plain",
|
|
119
|
+
"encoding": "utf8",
|
|
120
|
+
"data": "hello"
|
|
121
|
+
},
|
|
122
|
+
"alias": "hello-file"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Issue a credential from inline JSON:
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"name": "archon_issue_credential",
|
|
132
|
+
"arguments": {
|
|
133
|
+
"credential": {
|
|
134
|
+
"@context": ["https://www.w3.org/ns/credentials/v2"],
|
|
135
|
+
"type": ["VerifiableCredential"],
|
|
136
|
+
"issuer": "did:cid:issuer",
|
|
137
|
+
"credentialSubject": {
|
|
138
|
+
"id": "did:cid:subject"
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Reveal a credential in the current ID manifest:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"name": "archon_reveal_credential",
|
|
150
|
+
"arguments": {
|
|
151
|
+
"did": "did:cid:credential",
|
|
152
|
+
"reveal": true
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Pay a Lightning invoice:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"name": "archon_lightning_pay",
|
|
162
|
+
"arguments": {
|
|
163
|
+
"bolt11": "lnbc...",
|
|
164
|
+
"confirmPayment": true
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Keymaster CLI mapping
|
|
78
170
|
|
|
79
|
-
|
|
171
|
+
| CLI command | MCP tool |
|
|
172
|
+
| --- | --- |
|
|
173
|
+
| `create-wallet` | `archon_create_wallet` |
|
|
174
|
+
| `new-wallet` | `archon_new_wallet` |
|
|
175
|
+
| `change-passphrase` | `archon_change_passphrase` |
|
|
176
|
+
| `check-wallet` | `archon_check_wallet` |
|
|
177
|
+
| `fix-wallet` | `archon_fix_wallet` |
|
|
178
|
+
| `import-wallet` | `archon_import_wallet` |
|
|
179
|
+
| `show-wallet` | `archon_show_wallet` |
|
|
180
|
+
| `backup-wallet-file` | `archon_backup_wallet_file` |
|
|
181
|
+
| `restore-wallet-file` | `archon_restore_wallet_file` |
|
|
182
|
+
| `show-mnemonic` | `archon_show_mnemonic` |
|
|
183
|
+
| `backup-wallet-did` | `archon_backup_wallet_did` |
|
|
184
|
+
| `recover-wallet-did` | `archon_recover_wallet_did` |
|
|
185
|
+
| `create-id` | `archon_create_id` |
|
|
186
|
+
| `resolve-id` | `archon_resolve_id` |
|
|
187
|
+
| `backup-id` | `archon_backup_id` |
|
|
188
|
+
| `recover-id` | `archon_recover_id` |
|
|
189
|
+
| `remove-id` | `archon_remove_id` |
|
|
190
|
+
| `rename-id` | `archon_rename_id` |
|
|
191
|
+
| `list-ids` | `archon_list_ids` |
|
|
192
|
+
| `list-registries` | `archon_list_registries` |
|
|
193
|
+
| `use-id` | `archon_use_id` |
|
|
194
|
+
| `rotate-keys` | `archon_rotate_keys` |
|
|
195
|
+
| `resolve-did` | `archon_resolve_did` |
|
|
196
|
+
| `resolve-did-version` | `archon_resolve_did_version` |
|
|
197
|
+
| `revoke-did` | `archon_revoke_did` |
|
|
198
|
+
| `change-registry` | `archon_change_registry` |
|
|
199
|
+
| `encrypt-message` | `archon_encrypt_message` |
|
|
200
|
+
| `encrypt-file` | `archon_encrypt_file` |
|
|
201
|
+
| `decrypt-did` | `archon_decrypt_did` |
|
|
202
|
+
| `decrypt-json` | `archon_decrypt_json` |
|
|
203
|
+
| `sign-file` | `archon_sign_file` |
|
|
204
|
+
| `verify-file` | `archon_verify_file` |
|
|
205
|
+
| `create-challenge` | `archon_create_challenge` |
|
|
206
|
+
| `create-challenge-cc` | `archon_create_challenge_cc` |
|
|
207
|
+
| `create-response` | `archon_create_response` |
|
|
208
|
+
| `verify-response` | `archon_verify_response` |
|
|
209
|
+
| `bind-credential` | `archon_bind_credential` |
|
|
210
|
+
| `issue-credential` | `archon_issue_credential` |
|
|
211
|
+
| `list-issued` | `archon_list_issued` |
|
|
212
|
+
| `update-credential` | `archon_update_credential` |
|
|
213
|
+
| `revoke-credential` | `archon_revoke_credential` |
|
|
214
|
+
| `accept-credential` | `archon_accept_credential` |
|
|
215
|
+
| `list-credentials` | `archon_list_credentials` |
|
|
216
|
+
| `get-credential` | `archon_get_credential` |
|
|
217
|
+
| `view-credential` | `archon_view_credential` |
|
|
218
|
+
| `publish-credential` | `archon_publish_credential` |
|
|
219
|
+
| `reveal-credential` | `archon_reveal_credential` |
|
|
220
|
+
| `unpublish-credential` | `archon_unpublish_credential` |
|
|
221
|
+
| `add-alias` | `archon_add_alias` |
|
|
222
|
+
| `get-alias` | `archon_get_alias` |
|
|
223
|
+
| `remove-alias` | `archon_remove_alias` |
|
|
224
|
+
| `list-aliases` | `archon_list_aliases` |
|
|
225
|
+
| `list-addresses` | `archon_list_addresses` |
|
|
226
|
+
| `get-address` | `archon_get_address` |
|
|
227
|
+
| `import-address` | `archon_import_address` |
|
|
228
|
+
| `check-address` | `archon_check_address` |
|
|
229
|
+
| `add-address` | `archon_add_address` |
|
|
230
|
+
| `remove-address` | `archon_remove_address` |
|
|
231
|
+
| `publish-address` | `archon_publish_address` |
|
|
232
|
+
| `unpublish-address` | `archon_unpublish_address` |
|
|
233
|
+
| `add-nostr` | `archon_add_nostr` |
|
|
234
|
+
| `import-nostr` | `archon_import_nostr` |
|
|
235
|
+
| `remove-nostr` | `archon_remove_nostr` |
|
|
236
|
+
| `add-lightning` | `archon_add_lightning` |
|
|
237
|
+
| `remove-lightning` | `archon_remove_lightning` |
|
|
238
|
+
| `lightning-balance` | `archon_lightning_balance` |
|
|
239
|
+
| `lightning-decode` | `archon_lightning_decode` |
|
|
240
|
+
| `lightning-invoice` | `archon_lightning_invoice` |
|
|
241
|
+
| `lightning-pay` | `archon_lightning_pay` |
|
|
242
|
+
| `lightning-check` | `archon_lightning_check` |
|
|
243
|
+
| `publish-lightning` | `archon_publish_lightning` |
|
|
244
|
+
| `unpublish-lightning` | `archon_unpublish_lightning` |
|
|
245
|
+
| `lightning-zap` | `archon_lightning_zap` |
|
|
246
|
+
| `lightning-payments` | `archon_lightning_payments` |
|
|
247
|
+
| `create-group` | `archon_create_group` |
|
|
248
|
+
| `list-groups` | `archon_list_groups` |
|
|
249
|
+
| `get-group` | `archon_get_group` |
|
|
250
|
+
| `add-group-member` | `archon_add_group_member` |
|
|
251
|
+
| `remove-group-member` | `archon_remove_group_member` |
|
|
252
|
+
| `test-group` | `archon_test_group` |
|
|
253
|
+
| `create-schema` | `archon_create_schema` |
|
|
254
|
+
| `list-schemas` | `archon_list_schemas` |
|
|
255
|
+
| `get-schema` | `archon_get_schema` |
|
|
256
|
+
| `create-schema-template` | `archon_create_schema_template` |
|
|
257
|
+
| `create-asset` | `archon_create_asset` |
|
|
258
|
+
| `create-asset-json` | `archon_create_asset_json` |
|
|
259
|
+
| `create-asset-image` | `archon_create_asset_image` |
|
|
260
|
+
| `create-asset-file` | `archon_create_asset_file` |
|
|
261
|
+
| `get-asset` | `archon_get_asset` |
|
|
262
|
+
| `get-asset-json` | `archon_get_asset_json` |
|
|
263
|
+
| `get-asset-image` | `archon_get_asset_image` |
|
|
264
|
+
| `get-asset-file` | `archon_get_asset_file` |
|
|
265
|
+
| `update-asset-json` | `archon_update_asset_json` |
|
|
266
|
+
| `update-asset-image` | `archon_update_asset_image` |
|
|
267
|
+
| `update-asset-file` | `archon_update_asset_file` |
|
|
268
|
+
| `transfer-asset` | `archon_transfer_asset` |
|
|
269
|
+
| `clone-asset` | `archon_clone_asset` |
|
|
270
|
+
| `get-property` | `archon_get_property` |
|
|
271
|
+
| `set-property` | `archon_set_property` |
|
|
272
|
+
| `list-assets` | `archon_list_assets` |
|
|
273
|
+
| `create-poll-template` | `archon_create_poll_template` |
|
|
274
|
+
| `create-poll` | `archon_create_poll` |
|
|
275
|
+
| `add-poll-voter` | `archon_add_poll_voter` |
|
|
276
|
+
| `remove-poll-voter` | `archon_remove_poll_voter` |
|
|
277
|
+
| `list-poll-voters` | `archon_list_poll_voters` |
|
|
278
|
+
| `view-poll` | `archon_view_poll` |
|
|
279
|
+
| `vote-poll` | `archon_vote_poll` |
|
|
280
|
+
| `send-poll` | `archon_send_poll` |
|
|
281
|
+
| `send-ballot` | `archon_send_ballot` |
|
|
282
|
+
| `view-ballot` | `archon_view_ballot` |
|
|
283
|
+
| `update-poll` | `archon_update_poll` |
|
|
284
|
+
| `publish-poll` | `archon_publish_poll` |
|
|
285
|
+
| `reveal-poll` | `archon_reveal_poll` |
|
|
286
|
+
| `unpublish-poll` | `archon_unpublish_poll` |
|
|
287
|
+
| `create-vault` | `archon_create_vault` |
|
|
288
|
+
| `list-vault-items` | `archon_list_vault_items` |
|
|
289
|
+
| `add-vault-member` | `archon_add_vault_member` |
|
|
290
|
+
| `remove-vault-member` | `archon_remove_vault_member` |
|
|
291
|
+
| `list-vault-members` | `archon_list_vault_members` |
|
|
292
|
+
| `add-vault-item` | `archon_add_vault_item` |
|
|
293
|
+
| `remove-vault-item` | `archon_remove_vault_item` |
|
|
294
|
+
| `get-vault-item` | `archon_get_vault_item` |
|
|
295
|
+
| `create-dmail` | `archon_create_dmail` |
|
|
296
|
+
| `update-dmail` | `archon_update_dmail` |
|
|
297
|
+
| `send-dmail` | `archon_send_dmail` |
|
|
298
|
+
| `get-dmail` | `archon_get_dmail` |
|
|
299
|
+
| `list-dmail` | `archon_list_dmail` |
|
|
300
|
+
| `file-dmail` | `archon_file_dmail` |
|
|
301
|
+
| `refresh-dmail` | `archon_refresh_dmail` |
|
|
302
|
+
| `import-dmail` | `archon_import_dmail` |
|
|
303
|
+
| `remove-dmail` | `archon_remove_dmail` |
|
|
304
|
+
| `add-dmail-attachment` | `archon_add_dmail_attachment` |
|
|
305
|
+
| `remove-dmail-attachment` | `archon_remove_dmail_attachment` |
|
|
306
|
+
| `get-dmail-attachment` | `archon_get_dmail_attachment` |
|
|
307
|
+
| `list-dmail-attachments` | `archon_list_dmail_attachments` |
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export { loadConfig, walletLocation } from './config.js';
|
|
|
2
2
|
export type { McpServerConfig, WalletType } from './config.js';
|
|
3
3
|
export { createArchonRuntime, createWallet } from './runtime.js';
|
|
4
4
|
export type { ArchonRuntime } from './runtime.js';
|
|
5
|
-
export { registerArchonTools } from './tools.js';
|
|
5
|
+
export { ARCHON_MCP_CLI_COMMANDS, ARCHON_MCP_TOOL_DEFINITIONS, registerArchonTools } from './tools.js';
|
|
6
|
+
export type { ArchonToolDefinition } from './tools.js';
|
|
6
7
|
export declare function main(): Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { createArchonRuntime } from './runtime.js';
|
|
|
5
5
|
import { registerArchonTools } from './tools.js';
|
|
6
6
|
export { loadConfig, walletLocation } from './config.js';
|
|
7
7
|
export { createArchonRuntime, createWallet } from './runtime.js';
|
|
8
|
-
export { registerArchonTools } from './tools.js';
|
|
8
|
+
export { ARCHON_MCP_CLI_COMMANDS, ARCHON_MCP_TOOL_DEFINITIONS, registerArchonTools } from './tools.js';
|
|
9
9
|
export async function main() {
|
|
10
10
|
const config = loadConfig();
|
|
11
11
|
const runtime = await createArchonRuntime(config);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGvG,MAAM,CAAC,KAAK,UAAU,IAAI;IACtB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,mBAAmB,CAAC,MAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/redact.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
1
|
+
const SECRET_KEYS = 'ARCHON_(?:ADMIN_API_KEY|PASSPHRASE|ENCRYPTED_PASSPHRASE)|api[_-]?key|apikey|token|access_token|passphrase|password|mnemonic|recovery[_-]?phrase|recoveryPhrase|nsec|bolt11|adminKey|invoiceKey';
|
|
2
|
+
const QUOTED_SECRET_ASSIGNMENT = new RegExp(`\\b(${SECRET_KEYS})=("[^"]*"|'[^']*')`, 'gi');
|
|
3
|
+
const SPACED_SECRET_ASSIGNMENT = /\b(ARCHON_(?:PASSPHRASE|ENCRYPTED_PASSPHRASE)|passphrase|password|mnemonic|recovery[_-]?phrase|recoveryPhrase)=([^&\r\n]*?)(?=\shttps?:\/\/|\s[A-Za-z_][A-Za-z0-9_-]*=|[&\r\n]|$)/gi;
|
|
4
|
+
const SECRET_ASSIGNMENT = new RegExp(`\\b(${SECRET_KEYS})=([^&\\s]+)`, 'gi');
|
|
4
5
|
const URL_TEXT = /https?:\/\/[^\s"'<>]+/gi;
|
|
5
6
|
const URL_SECRET_PARAMS = new Set(['api_key', 'apikey', 'access_token', 'token', 'key', 'password', 'passphrase']);
|
|
6
7
|
const TOKEN_PATH_HOSTS = [
|
package/dist/redact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA,MAAM,wBAAwB,GAAG,
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
import { McpServerConfig } from './config.js';
|
|
2
3
|
import { ArchonRuntime } from './runtime.js';
|
|
4
|
+
type ToolHandler = (runtime: ArchonRuntime, args: any) => Promise<unknown> | unknown;
|
|
3
5
|
type RegisterableServer = {
|
|
4
6
|
registerTool?: (name: string, config: any, handler: (args: unknown) => Promise<unknown>) => void;
|
|
5
7
|
tool?: (name: string, description: string, schema: unknown, handler: (args: unknown) => Promise<unknown>) => void;
|
|
6
8
|
};
|
|
9
|
+
export type ArchonToolDefinition = {
|
|
10
|
+
name: string;
|
|
11
|
+
cliCommand?: string;
|
|
12
|
+
description: string;
|
|
13
|
+
schema: z.ZodTypeAny;
|
|
14
|
+
mutates?: boolean;
|
|
15
|
+
handler: ToolHandler;
|
|
16
|
+
};
|
|
17
|
+
export declare const ARCHON_MCP_TOOL_DEFINITIONS: ArchonToolDefinition[];
|
|
18
|
+
export declare const ARCHON_MCP_CLI_COMMANDS: string[];
|
|
7
19
|
export declare function registerArchonTools(server: RegisterableServer, runtime: ArchonRuntime, config: McpServerConfig): void;
|
|
8
20
|
export {};
|
package/dist/tools.js
CHANGED
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { errorMessage } from './redact.js';
|
|
3
3
|
const EmptySchema = z.object({});
|
|
4
|
+
const IdSchema = z.object({ id: z.string() });
|
|
5
|
+
const DidSchema = z.object({ did: z.string() });
|
|
6
|
+
const AliasOptionsSchema = z.object({ alias: z.string().optional(), registry: z.string().optional() });
|
|
7
|
+
const AssetOptionsSchema = AliasOptionsSchema.extend({
|
|
8
|
+
controller: z.string().optional(),
|
|
9
|
+
validUntil: z.string().optional(),
|
|
10
|
+
});
|
|
11
|
+
const VaultOptionsSchema = AliasOptionsSchema.extend({ secretMembers: z.boolean().optional() });
|
|
4
12
|
const ResolveOptionsSchema = z.object({
|
|
5
13
|
confirm: z.boolean().optional(),
|
|
6
14
|
verify: z.boolean().optional(),
|
|
7
15
|
versionTime: z.string().optional(),
|
|
8
16
|
versionSequence: z.number().int().optional(),
|
|
9
17
|
});
|
|
18
|
+
const ConfirmSchema = z.object({ confirm: z.literal(true) });
|
|
19
|
+
const RevealSchema = z.object({ reveal: z.literal(true) });
|
|
20
|
+
const ConfirmPaymentSchema = z.object({ confirmPayment: z.literal(true) });
|
|
10
21
|
const JsonObjectSchema = z.record(z.unknown());
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
22
|
+
const JsonValueSchema = z.unknown();
|
|
23
|
+
const InlineDataSchema = z.object({
|
|
24
|
+
name: z.string().optional(),
|
|
25
|
+
mimeType: z.string().optional(),
|
|
26
|
+
encoding: z.enum(['base64', 'utf8']).optional(),
|
|
27
|
+
data: z.string(),
|
|
16
28
|
});
|
|
17
29
|
function jsonResult(result) {
|
|
18
30
|
return {
|
|
@@ -36,68 +48,233 @@ function requireKeymaster(runtime) {
|
|
|
36
48
|
}
|
|
37
49
|
return runtime.keymaster;
|
|
38
50
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
51
|
+
function compactOptions(options) {
|
|
52
|
+
const entries = Object.entries(options).filter(([, value]) => value !== undefined);
|
|
53
|
+
return entries.length > 0 ? Object.fromEntries(entries) : undefined;
|
|
54
|
+
}
|
|
55
|
+
function bufferFromInlineData(input) {
|
|
56
|
+
return Buffer.from(input.data, input.encoding === 'utf8' ? 'utf8' : 'base64');
|
|
57
|
+
}
|
|
58
|
+
function inlineDataFromBuffer(buffer, name, mimeType) {
|
|
59
|
+
return {
|
|
60
|
+
name,
|
|
61
|
+
mimeType,
|
|
62
|
+
encoding: 'base64',
|
|
63
|
+
data: buffer.toString('base64'),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function signableJson(input) {
|
|
67
|
+
if (!input || typeof input !== 'object' || Array.isArray(input)) {
|
|
68
|
+
throw new Error('object must be a JSON object');
|
|
69
|
+
}
|
|
70
|
+
return input;
|
|
71
|
+
}
|
|
72
|
+
function tool(definition) {
|
|
73
|
+
return definition;
|
|
74
|
+
}
|
|
75
|
+
export const ARCHON_MCP_TOOL_DEFINITIONS = [
|
|
76
|
+
tool({ name: 'archon_get_version', description: 'Get Archon node version information.', schema: EmptySchema, handler: runtime => runtime.node.getVersion() }),
|
|
77
|
+
tool({ name: 'archon_get_status', description: 'Get Archon node status.', schema: EmptySchema, handler: runtime => runtime.node.getStatus() }),
|
|
78
|
+
tool({ name: 'archon_create_wallet', cliCommand: 'create-wallet', description: 'Create or load the local wallet.', schema: EmptySchema, mutates: true, handler: runtime => requireKeymaster(runtime).loadWallet() }),
|
|
79
|
+
tool({ name: 'archon_new_wallet', cliCommand: 'new-wallet', description: 'Create a new local wallet, replacing the existing wallet.', schema: ConfirmSchema, mutates: true, handler: runtime => requireKeymaster(runtime).newWallet('', true) }),
|
|
80
|
+
tool({ name: 'archon_change_passphrase', cliCommand: 'change-passphrase', description: 'Re-encrypt the local wallet with a new passphrase.', schema: z.object({ newPassphrase: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { newPassphrase }) => requireKeymaster(runtime).changePassphrase(newPassphrase) }),
|
|
81
|
+
tool({ name: 'archon_check_wallet', cliCommand: 'check-wallet', description: 'Validate DIDs in the local wallet.', schema: EmptySchema, handler: runtime => requireKeymaster(runtime).checkWallet() }),
|
|
82
|
+
tool({ name: 'archon_fix_wallet', cliCommand: 'fix-wallet', description: 'Remove invalid DIDs from the local wallet.', schema: ConfirmSchema, mutates: true, handler: runtime => requireKeymaster(runtime).fixWallet() }),
|
|
83
|
+
tool({ name: 'archon_import_wallet', cliCommand: 'import-wallet', description: 'Create a new wallet from a recovery phrase.', schema: z.object({ recoveryPhrase: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { recoveryPhrase }) => requireKeymaster(runtime).newWallet(recoveryPhrase, true) }),
|
|
84
|
+
tool({ name: 'archon_show_wallet', cliCommand: 'show-wallet', description: 'Show the decrypted local wallet.', schema: RevealSchema, handler: runtime => requireKeymaster(runtime).loadWallet() }),
|
|
85
|
+
tool({ name: 'archon_backup_wallet_file', cliCommand: 'backup-wallet-file', description: 'Return the encrypted wallet backup payload.', schema: RevealSchema, handler: runtime => requireKeymaster(runtime).exportEncryptedWallet() }),
|
|
86
|
+
tool({ name: 'archon_restore_wallet_file', cliCommand: 'restore-wallet-file', description: 'Restore the local wallet from an encrypted wallet payload.', schema: z.object({ wallet: JsonObjectSchema }).merge(ConfirmSchema), mutates: true, handler: (runtime, { wallet }) => requireKeymaster(runtime).saveWallet(wallet, true) }),
|
|
87
|
+
tool({ name: 'archon_show_mnemonic', cliCommand: 'show-mnemonic', description: 'Reveal the wallet recovery phrase.', schema: RevealSchema, handler: runtime => requireKeymaster(runtime).decryptMnemonic() }),
|
|
88
|
+
tool({ name: 'archon_backup_wallet_did', cliCommand: 'backup-wallet-did', description: 'Backup wallet to an encrypted DID and seed bank.', schema: ConfirmSchema, mutates: true, handler: runtime => requireKeymaster(runtime).backupWallet() }),
|
|
89
|
+
tool({ name: 'archon_recover_wallet_did', cliCommand: 'recover-wallet-did', description: 'Recover wallet from seed bank or encrypted DID.', schema: z.object({ did: z.string().optional() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).recoverWallet(did) }),
|
|
90
|
+
tool({ name: 'archon_create_id', cliCommand: 'create-id', description: 'Create a new local Keymaster wallet ID.', schema: z.object({ name: z.string(), registry: z.string().optional() }), mutates: true, handler: (runtime, { name, registry }) => requireKeymaster(runtime).createId(name, compactOptions({ registry })) }),
|
|
91
|
+
tool({ name: 'archon_resolve_id', cliCommand: 'resolve-id', description: 'Resolve a local ID name, alias, DID, or the current ID when id is omitted.', schema: z.object({ id: z.string().optional() }).merge(ResolveOptionsSchema), handler: async (runtime, { id, ...options }) => {
|
|
92
|
+
const keymaster = requireKeymaster(runtime);
|
|
93
|
+
const resolvedId = id ?? await keymaster.getCurrentId();
|
|
94
|
+
if (!resolvedId)
|
|
95
|
+
throw new Error('No current ID');
|
|
96
|
+
return keymaster.resolveDID(resolvedId, compactOptions(options));
|
|
97
|
+
} }),
|
|
98
|
+
tool({ name: 'archon_backup_id', cliCommand: 'backup-id', description: 'Backup the current or selected ID.', schema: z.object({ id: z.string().optional() }), mutates: true, handler: (runtime, { id }) => requireKeymaster(runtime).backupId(id) }),
|
|
99
|
+
tool({ name: 'archon_recover_id', cliCommand: 'recover-id', description: 'Recover an ID from a backup DID.', schema: DidSchema, mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).recoverId(did) }),
|
|
100
|
+
tool({ name: 'archon_remove_id', cliCommand: 'remove-id', description: 'Remove a local ID from the wallet.', schema: z.object({ name: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { name }) => requireKeymaster(runtime).removeId(name) }),
|
|
101
|
+
tool({ name: 'archon_rename_id', cliCommand: 'rename-id', description: 'Rename a local ID.', schema: z.object({ oldName: z.string(), newName: z.string() }), mutates: true, handler: (runtime, { oldName, newName }) => requireKeymaster(runtime).renameId(oldName, newName) }),
|
|
102
|
+
tool({ name: 'archon_list_ids', cliCommand: 'list-ids', description: 'List IDs in the local Keymaster wallet.', schema: EmptySchema, handler: runtime => requireKeymaster(runtime).listIds() }),
|
|
103
|
+
tool({ name: 'archon_list_registries', cliCommand: 'list-registries', description: 'List registries supported by the connected Archon node.', schema: EmptySchema, handler: runtime => runtime.node.listRegistries() }),
|
|
104
|
+
tool({ name: 'archon_get_current_id', description: 'Get the current local Keymaster wallet ID name.', schema: EmptySchema, handler: runtime => requireKeymaster(runtime).getCurrentId() }),
|
|
105
|
+
tool({ name: 'archon_use_id', cliCommand: 'use-id', description: 'Set the current local Keymaster wallet ID name.', schema: z.object({ name: z.string() }), mutates: true, handler: (runtime, { name }) => requireKeymaster(runtime).setCurrentId(name) }),
|
|
106
|
+
tool({ name: 'archon_rotate_keys', cliCommand: 'rotate-keys', description: 'Generate and publish new keys for the current ID.', schema: ConfirmSchema, mutates: true, handler: runtime => requireKeymaster(runtime).rotateKeys() }),
|
|
107
|
+
tool({ name: 'archon_resolve_did', cliCommand: 'resolve-did', description: 'Resolve a DID or DID-like Archon identifier.', schema: DidSchema.merge(ResolveOptionsSchema), handler: (runtime, { did, ...options }) => requireKeymaster(runtime).resolveDID(did, compactOptions(options)) }),
|
|
108
|
+
tool({ name: 'archon_resolve_did_version', cliCommand: 'resolve-did-version', description: 'Resolve a specific DID version.', schema: DidSchema.extend({ version: z.number().int() }), handler: (runtime, { did, version }) => requireKeymaster(runtime).resolveDID(did, { versionSequence: version }) }),
|
|
109
|
+
tool({ name: 'archon_revoke_did', cliCommand: 'revoke-did', description: 'Permanently revoke a DID.', schema: DidSchema.merge(ConfirmSchema), mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).revokeDID(did) }),
|
|
110
|
+
tool({ name: 'archon_change_registry', cliCommand: 'change-registry', description: 'Change the registry for an existing DID.', schema: IdSchema.extend({ registry: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { id, registry }) => requireKeymaster(runtime).changeRegistry(id, registry) }),
|
|
111
|
+
tool({ name: 'archon_encrypt_message', cliCommand: 'encrypt-message', description: 'Encrypt a message for a DID.', schema: z.object({ message: z.string(), did: z.string() }), mutates: true, handler: (runtime, { message, did }) => requireKeymaster(runtime).encryptMessage(message, did) }),
|
|
112
|
+
tool({ name: 'archon_encrypt_file', cliCommand: 'encrypt-file', description: 'Encrypt inline text data for a DID.', schema: z.object({ file: InlineDataSchema, did: z.string() }), mutates: true, handler: (runtime, { file, did }) => requireKeymaster(runtime).encryptMessage(bufferFromInlineData(file).toString('utf8'), did) }),
|
|
113
|
+
tool({ name: 'archon_decrypt_did', cliCommand: 'decrypt-did', description: 'Decrypt an encrypted message DID.', schema: DidSchema.merge(RevealSchema), handler: (runtime, { did }) => requireKeymaster(runtime).decryptMessage(did) }),
|
|
114
|
+
tool({ name: 'archon_decrypt_json', cliCommand: 'decrypt-json', description: 'Decrypt an encrypted JSON DID.', schema: DidSchema.merge(RevealSchema), handler: (runtime, { did }) => requireKeymaster(runtime).decryptJSON(did) }),
|
|
115
|
+
tool({ name: 'archon_sign_file', cliCommand: 'sign-file', description: 'Sign an inline JSON object.', schema: z.object({ object: JsonObjectSchema }), handler: (runtime, { object }) => requireKeymaster(runtime).addProof(signableJson(object)) }),
|
|
116
|
+
tool({ name: 'archon_verify_file', cliCommand: 'verify-file', description: 'Verify the proof in an inline JSON object.', schema: z.object({ object: JsonObjectSchema }), handler: (runtime, { object }) => requireKeymaster(runtime).verifyProof(object) }),
|
|
117
|
+
tool({ name: 'archon_create_challenge', cliCommand: 'create-challenge', description: 'Create a challenge DID.', schema: z.object({ challenge: JsonObjectSchema.optional(), alias: z.string().optional(), registry: z.string().optional() }), mutates: true, handler: (runtime, { challenge, alias, registry }) => requireKeymaster(runtime).createChallenge(challenge, compactOptions({ alias, registry })) }),
|
|
118
|
+
tool({ name: 'archon_create_challenge_cc', cliCommand: 'create-challenge-cc', description: 'Create a challenge from a credential DID.', schema: z.object({ did: z.string(), alias: z.string().optional(), registry: z.string().optional() }), mutates: true, handler: (runtime, { did, alias, registry }) => requireKeymaster(runtime).createChallenge({ credentials: [{ schema: did }] }, compactOptions({ alias, registry })) }),
|
|
119
|
+
tool({ name: 'archon_create_response', cliCommand: 'create-response', description: 'Create a response to a challenge.', schema: z.object({ challenge: z.string(), registry: z.string().optional(), validUntil: z.string().optional() }), mutates: true, handler: (runtime, { challenge, registry, validUntil }) => requireKeymaster(runtime).createResponse(challenge, compactOptions({ registry, validUntil })) }),
|
|
120
|
+
tool({ name: 'archon_verify_response', cliCommand: 'verify-response', description: 'Decrypt and validate a response to a challenge.', schema: z.object({ response: z.string() }), handler: (runtime, { response }) => requireKeymaster(runtime).verifyResponse(response) }),
|
|
121
|
+
tool({ name: 'archon_bind_credential', cliCommand: 'bind-credential', description: 'Create a bound credential for a subject.', schema: z.object({ schema: z.string(), subject: z.string(), claims: JsonObjectSchema.optional(), validFrom: z.string().optional(), validUntil: z.string().optional() }), handler: (runtime, { subject, schema, claims, validFrom, validUntil }) => requireKeymaster(runtime).bindCredential(subject, compactOptions({ schema, claims, validFrom, validUntil })) }),
|
|
122
|
+
tool({ name: 'archon_issue_credential', cliCommand: 'issue-credential', description: 'Sign and encrypt a bound credential.', schema: z.object({ credential: JsonObjectSchema, alias: z.string().optional(), registry: z.string().optional() }), mutates: true, handler: (runtime, { credential, alias, registry }) => requireKeymaster(runtime).issueCredential(credential, compactOptions({ alias, registry })) }),
|
|
123
|
+
tool({ name: 'archon_list_issued', cliCommand: 'list-issued', description: 'List issued credentials.', schema: z.object({ issuer: z.string().optional() }), handler: (runtime, { issuer }) => requireKeymaster(runtime).listIssued(issuer) }),
|
|
124
|
+
tool({ name: 'archon_update_credential', cliCommand: 'update-credential', description: 'Update an issued credential.', schema: z.object({ did: z.string(), credential: JsonObjectSchema }), mutates: true, handler: (runtime, { did, credential }) => requireKeymaster(runtime).updateCredential(did, credential) }),
|
|
125
|
+
tool({ name: 'archon_revoke_credential', cliCommand: 'revoke-credential', description: 'Revoke a verifiable credential.', schema: DidSchema.merge(ConfirmSchema), mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).revokeCredential(did) }),
|
|
126
|
+
tool({ name: 'archon_accept_credential', cliCommand: 'accept-credential', description: 'Save a verifiable credential for the current ID.', schema: DidSchema.extend({ alias: z.string().optional() }), mutates: true, handler: async (runtime, { did, alias }) => {
|
|
127
|
+
const keymaster = requireKeymaster(runtime);
|
|
128
|
+
const accepted = await keymaster.acceptCredential(did);
|
|
129
|
+
if (accepted && alias)
|
|
130
|
+
await keymaster.addAlias(alias, did);
|
|
131
|
+
return accepted;
|
|
132
|
+
} }),
|
|
133
|
+
tool({ name: 'archon_list_credentials', cliCommand: 'list-credentials', description: 'List credentials held by an ID.', schema: z.object({ id: z.string().optional() }), handler: (runtime, { id }) => requireKeymaster(runtime).listCredentials(id) }),
|
|
134
|
+
tool({ name: 'archon_get_credential', cliCommand: 'get-credential', description: 'Get a credential by DID.', schema: DidSchema, handler: (runtime, { did }) => requireKeymaster(runtime).getCredential(did) }),
|
|
135
|
+
tool({ name: 'archon_view_credential', cliCommand: 'view-credential', description: 'Get a credential with proof validity.', schema: DidSchema, handler: async (runtime, { did }) => {
|
|
136
|
+
const keymaster = requireKeymaster(runtime);
|
|
137
|
+
const credential = await keymaster.getCredential(did);
|
|
138
|
+
return { credential, proofValid: credential ? await keymaster.verifyProof(credential) : false };
|
|
139
|
+
} }),
|
|
140
|
+
tool({ name: 'archon_publish_credential', cliCommand: 'publish-credential', description: 'Publish the existence of a credential to the current user manifest.', schema: DidSchema, mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).publishCredential(did, { reveal: false }) }),
|
|
141
|
+
tool({ name: 'archon_reveal_credential', cliCommand: 'reveal-credential', description: 'Reveal a credential to the current user manifest.', schema: DidSchema.merge(RevealSchema), mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).publishCredential(did, { reveal: true }) }),
|
|
142
|
+
tool({ name: 'archon_unpublish_credential', cliCommand: 'unpublish-credential', description: 'Remove a credential from the current user manifest.', schema: DidSchema, mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).unpublishCredential(did) }),
|
|
143
|
+
tool({ name: 'archon_add_alias', cliCommand: 'add-alias', description: 'Add a DID alias to the local Keymaster wallet.', schema: z.object({ alias: z.string(), did: z.string() }), mutates: true, handler: (runtime, { alias, did }) => requireKeymaster(runtime).addAlias(alias, did) }),
|
|
144
|
+
tool({ name: 'archon_get_alias', cliCommand: 'get-alias', description: 'Get the DID assigned to a local alias.', schema: z.object({ alias: z.string() }), handler: (runtime, { alias }) => requireKeymaster(runtime).getAlias(alias) }),
|
|
145
|
+
tool({ name: 'archon_remove_alias', cliCommand: 'remove-alias', description: 'Remove a DID alias from the local wallet.', schema: z.object({ alias: z.string() }), mutates: true, handler: (runtime, { alias }) => requireKeymaster(runtime).removeAlias(alias) }),
|
|
146
|
+
tool({ name: 'archon_list_aliases', cliCommand: 'list-aliases', description: 'List DID aliases in the local wallet.', schema: z.object({ includeIds: z.boolean().optional() }), handler: (runtime, { includeIds }) => requireKeymaster(runtime).listAliases(includeIds === undefined ? undefined : { includeIDs: includeIds }) }),
|
|
147
|
+
tool({ name: 'archon_list_addresses', cliCommand: 'list-addresses', description: 'List wallet addresses claimed through Herald domains.', schema: EmptySchema, handler: runtime => requireKeymaster(runtime).listAddresses() }),
|
|
148
|
+
tool({ name: 'archon_get_address', cliCommand: 'get-address', description: 'Get the current address for a domain.', schema: z.object({ domain: z.string() }), handler: (runtime, { domain }) => requireKeymaster(runtime).getAddress(domain) }),
|
|
149
|
+
tool({ name: 'archon_import_address', cliCommand: 'import-address', description: 'Import an existing address for the current ID from a domain.', schema: z.object({ domain: z.string() }), mutates: true, handler: (runtime, { domain }) => requireKeymaster(runtime).importAddress(domain) }),
|
|
150
|
+
tool({ name: 'archon_check_address', cliCommand: 'check-address', description: 'Check whether a Herald address is available.', schema: z.object({ address: z.string() }), handler: (runtime, { address }) => requireKeymaster(runtime).checkAddress(address) }),
|
|
151
|
+
tool({ name: 'archon_add_address', cliCommand: 'add-address', description: 'Claim a Herald address for the current ID.', schema: z.object({ address: z.string() }), mutates: true, handler: (runtime, { address }) => requireKeymaster(runtime).addAddress(address) }),
|
|
152
|
+
tool({ name: 'archon_remove_address', cliCommand: 'remove-address', description: 'Remove a Herald address from the current ID.', schema: z.object({ address: z.string() }), mutates: true, handler: (runtime, { address }) => requireKeymaster(runtime).removeAddress(address) }),
|
|
153
|
+
tool({ name: 'archon_publish_address', cliCommand: 'publish-address', description: 'Publish a stored Herald address on a DID document.', schema: z.object({ address: z.string().optional(), id: z.string().optional() }), mutates: true, handler: (runtime, { address, id }) => requireKeymaster(runtime).publishAddress(address, id) }),
|
|
154
|
+
tool({ name: 'archon_unpublish_address', cliCommand: 'unpublish-address', description: 'Remove a published Herald address from a DID document.', schema: z.object({ id: z.string().optional() }), mutates: true, handler: (runtime, { id }) => requireKeymaster(runtime).unpublishAddress(id) }),
|
|
155
|
+
tool({ name: 'archon_add_nostr', cliCommand: 'add-nostr', description: 'Derive and add Nostr keys to an agent DID.', schema: z.object({ id: z.string().optional() }), mutates: true, handler: (runtime, { id }) => requireKeymaster(runtime).addNostr(id) }),
|
|
156
|
+
tool({ name: 'archon_import_nostr', cliCommand: 'import-nostr', description: 'Import Nostr keys from an nsec private key.', schema: z.object({ nsec: z.string(), id: z.string().optional() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { nsec, id }) => requireKeymaster(runtime).importNostr(nsec, id) }),
|
|
157
|
+
tool({ name: 'archon_remove_nostr', cliCommand: 'remove-nostr', description: 'Remove Nostr keys from an agent DID.', schema: z.object({ id: z.string().optional() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { id }) => requireKeymaster(runtime).removeNostr(id) }),
|
|
158
|
+
tool({ name: 'archon_add_lightning', cliCommand: 'add-lightning', description: 'Create a Lightning wallet for a DID.', schema: z.object({ id: z.string().optional() }), mutates: true, handler: (runtime, { id }) => requireKeymaster(runtime).addLightning(id) }),
|
|
159
|
+
tool({ name: 'archon_remove_lightning', cliCommand: 'remove-lightning', description: 'Remove Lightning wallet from a DID.', schema: z.object({ id: z.string().optional() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { id }) => requireKeymaster(runtime).removeLightning(id) }),
|
|
160
|
+
tool({ name: 'archon_lightning_balance', cliCommand: 'lightning-balance', description: 'Check Lightning wallet balance.', schema: z.object({ id: z.string().optional() }), handler: (runtime, { id }) => requireKeymaster(runtime).getLightningBalance(id) }),
|
|
161
|
+
tool({ name: 'archon_lightning_decode', cliCommand: 'lightning-decode', description: 'Decode a Lightning BOLT11 invoice.', schema: z.object({ bolt11: z.string() }), handler: (runtime, { bolt11 }) => requireKeymaster(runtime).decodeLightningInvoice(bolt11) }),
|
|
162
|
+
tool({ name: 'archon_lightning_invoice', cliCommand: 'lightning-invoice', description: 'Create a Lightning invoice.', schema: z.object({ amount: z.number().int().positive(), memo: z.string(), id: z.string().optional() }), mutates: true, handler: (runtime, { amount, memo, id }) => requireKeymaster(runtime).createLightningInvoice(amount, memo, id) }),
|
|
163
|
+
tool({ name: 'archon_lightning_pay', cliCommand: 'lightning-pay', description: 'Pay a Lightning invoice.', schema: z.object({ bolt11: z.string(), id: z.string().optional() }).merge(ConfirmPaymentSchema), mutates: true, handler: (runtime, { bolt11, id }) => requireKeymaster(runtime).payLightningInvoice(bolt11, id) }),
|
|
164
|
+
tool({ name: 'archon_lightning_check', cliCommand: 'lightning-check', description: 'Check status of a Lightning payment.', schema: z.object({ paymentHash: z.string(), id: z.string().optional() }), handler: (runtime, { paymentHash, id }) => requireKeymaster(runtime).checkLightningPayment(paymentHash, id) }),
|
|
165
|
+
tool({ name: 'archon_publish_lightning', cliCommand: 'publish-lightning', description: 'Publish Lightning service endpoint for a DID.', schema: z.object({ id: z.string().optional() }), mutates: true, handler: (runtime, { id }) => requireKeymaster(runtime).publishLightning(id) }),
|
|
166
|
+
tool({ name: 'archon_unpublish_lightning', cliCommand: 'unpublish-lightning', description: 'Remove Lightning service endpoint from a DID.', schema: z.object({ id: z.string().optional() }), mutates: true, handler: (runtime, { id }) => requireKeymaster(runtime).unpublishLightning(id) }),
|
|
167
|
+
tool({ name: 'archon_lightning_zap', cliCommand: 'lightning-zap', description: 'Send sats via Lightning to a DID, alias, or Lightning address.', schema: z.object({ recipient: z.string(), amount: z.number().int().positive(), memo: z.string().optional(), id: z.string().optional() }).merge(ConfirmPaymentSchema), mutates: true, handler: (runtime, { recipient, amount, memo, id }) => requireKeymaster(runtime).zapLightning(recipient, amount, memo, id) }),
|
|
168
|
+
tool({ name: 'archon_lightning_payments', cliCommand: 'lightning-payments', description: 'Show Lightning payment history.', schema: z.object({ id: z.string().optional() }), handler: (runtime, { id }) => requireKeymaster(runtime).getLightningPayments(id) }),
|
|
169
|
+
tool({ name: 'archon_create_group', cliCommand: 'create-group', description: 'Create a new group.', schema: z.object({ groupName: z.string() }).merge(AliasOptionsSchema), mutates: true, handler: (runtime, { groupName, alias, registry }) => requireKeymaster(runtime).createGroup(groupName, compactOptions({ alias, registry })) }),
|
|
170
|
+
tool({ name: 'archon_list_groups', cliCommand: 'list-groups', description: 'List groups owned by an ID.', schema: z.object({ owner: z.string().optional() }), handler: (runtime, { owner }) => requireKeymaster(runtime).listGroups(owner) }),
|
|
171
|
+
tool({ name: 'archon_get_group', cliCommand: 'get-group', description: 'Get a group by DID.', schema: DidSchema, handler: (runtime, { did }) => requireKeymaster(runtime).getGroup(did) }),
|
|
172
|
+
tool({ name: 'archon_add_group_member', cliCommand: 'add-group-member', description: 'Add a member to a group.', schema: z.object({ group: z.string(), member: z.string() }), mutates: true, handler: (runtime, { group, member }) => requireKeymaster(runtime).addGroupMember(group, member) }),
|
|
173
|
+
tool({ name: 'archon_remove_group_member', cliCommand: 'remove-group-member', description: 'Remove a member from a group.', schema: z.object({ group: z.string(), member: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { group, member }) => requireKeymaster(runtime).removeGroupMember(group, member) }),
|
|
174
|
+
tool({ name: 'archon_test_group', cliCommand: 'test-group', description: 'Determine if a member is in a group.', schema: z.object({ group: z.string(), member: z.string().optional() }), handler: (runtime, { group, member }) => requireKeymaster(runtime).testGroup(group, member) }),
|
|
175
|
+
tool({ name: 'archon_create_schema', cliCommand: 'create-schema', description: 'Create a schema DID from inline JSON.', schema: z.object({ schema: JsonObjectSchema, alias: z.string().optional(), registry: z.string().optional() }), mutates: true, handler: (runtime, { schema, alias, registry }) => requireKeymaster(runtime).createSchema(schema, compactOptions({ alias, registry })) }),
|
|
176
|
+
tool({ name: 'archon_list_schemas', cliCommand: 'list-schemas', description: 'List schemas owned by an ID.', schema: z.object({ owner: z.string().optional() }), handler: (runtime, { owner }) => requireKeymaster(runtime).listSchemas(owner) }),
|
|
177
|
+
tool({ name: 'archon_get_schema', cliCommand: 'get-schema', description: 'Get a schema by DID.', schema: DidSchema, handler: (runtime, { did }) => requireKeymaster(runtime).getSchema(did) }),
|
|
178
|
+
tool({ name: 'archon_create_schema_template', cliCommand: 'create-schema-template', description: 'Create a JSON template from a schema.', schema: z.object({ schema: z.string() }), handler: (runtime, { schema }) => requireKeymaster(runtime).createTemplate(schema) }),
|
|
179
|
+
tool({ name: 'archon_create_asset', cliCommand: 'create-asset', description: 'Create an empty JSON asset.', schema: AssetOptionsSchema, mutates: true, handler: (runtime, options) => requireKeymaster(runtime).createAsset({}, compactOptions(options)) }),
|
|
180
|
+
tool({ name: 'archon_create_asset_json', cliCommand: 'create-asset-json', description: 'Create a JSON asset DID from inline JSON data.', schema: z.object({ data: JsonObjectSchema }).merge(AssetOptionsSchema), mutates: true, handler: (runtime, { data, ...options }) => requireKeymaster(runtime).createAsset(data, compactOptions(options)) }),
|
|
181
|
+
tool({ name: 'archon_create_asset_image', cliCommand: 'create-asset-image', description: 'Create an image asset DID from an inline base64 payload.', schema: z.object({ file: InlineDataSchema }).merge(AssetOptionsSchema), mutates: true, handler: (runtime, { file, ...options }) => requireKeymaster(runtime).createImage(bufferFromInlineData(file), compactOptions({ ...options, filename: file.name })) }),
|
|
182
|
+
tool({ name: 'archon_create_asset_file', cliCommand: 'create-asset-file', description: 'Create a file asset DID from an inline payload.', schema: z.object({ file: InlineDataSchema }).merge(AssetOptionsSchema), mutates: true, handler: (runtime, { file, ...options }) => requireKeymaster(runtime).createFile(bufferFromInlineData(file), compactOptions({ ...options, filename: file.name, contentType: file.mimeType })) }),
|
|
183
|
+
tool({ name: 'archon_get_asset', cliCommand: 'get-asset', description: 'Resolve an asset by local name, alias, or DID.', schema: IdSchema.merge(ResolveOptionsSchema), handler: (runtime, { id, ...options }) => requireKeymaster(runtime).resolveAsset(id, compactOptions(options)) }),
|
|
184
|
+
tool({ name: 'archon_get_asset_json', cliCommand: 'get-asset-json', description: 'Return a JSON asset as an inline object.', schema: IdSchema.merge(ResolveOptionsSchema), handler: (runtime, { id, ...options }) => requireKeymaster(runtime).resolveAsset(id, compactOptions(options)) }),
|
|
185
|
+
tool({ name: 'archon_get_asset_image', cliCommand: 'get-asset-image', description: 'Return an image asset as an inline base64 payload.', schema: IdSchema, handler: async (runtime, { id }) => {
|
|
186
|
+
const image = await requireKeymaster(runtime).getImage(id);
|
|
187
|
+
return image?.file?.data ? {
|
|
188
|
+
file: inlineDataFromBuffer(Buffer.from(image.file.data), image.file.filename, image.file.type),
|
|
189
|
+
image: image.image,
|
|
190
|
+
} : null;
|
|
191
|
+
} }),
|
|
192
|
+
tool({ name: 'archon_get_asset_file', cliCommand: 'get-asset-file', description: 'Return a file asset as an inline base64 payload.', schema: IdSchema, handler: async (runtime, { id }) => {
|
|
193
|
+
const file = await requireKeymaster(runtime).getFile(id);
|
|
194
|
+
return file?.data ? inlineDataFromBuffer(Buffer.from(file.data), file.filename, file.type) : null;
|
|
195
|
+
} }),
|
|
196
|
+
tool({ name: 'archon_update_asset_json', cliCommand: 'update-asset-json', description: 'Merge JSON object data into an existing asset.', schema: IdSchema.extend({ data: JsonObjectSchema }), mutates: true, handler: (runtime, { id, data }) => requireKeymaster(runtime).mergeData(id, data) }),
|
|
197
|
+
tool({ name: 'archon_update_asset_image', cliCommand: 'update-asset-image', description: 'Update an image asset from an inline payload.', schema: IdSchema.extend({ file: InlineDataSchema }), mutates: true, handler: (runtime, { id, file }) => requireKeymaster(runtime).updateImage(id, bufferFromInlineData(file), compactOptions({ filename: file.name })) }),
|
|
198
|
+
tool({ name: 'archon_update_asset_file', cliCommand: 'update-asset-file', description: 'Update a file asset from an inline payload.', schema: IdSchema.extend({ file: InlineDataSchema }), mutates: true, handler: (runtime, { id, file }) => requireKeymaster(runtime).updateFile(id, bufferFromInlineData(file), compactOptions({ filename: file.name, contentType: file.mimeType })) }),
|
|
199
|
+
tool({ name: 'archon_transfer_asset', cliCommand: 'transfer-asset', description: 'Transfer an asset to a new controller DID.', schema: IdSchema.extend({ controller: z.string() }), mutates: true, handler: (runtime, { id, controller }) => requireKeymaster(runtime).transferAsset(id, controller) }),
|
|
200
|
+
tool({ name: 'archon_clone_asset', cliCommand: 'clone-asset', description: 'Clone an asset.', schema: IdSchema.merge(AliasOptionsSchema), mutates: true, handler: (runtime, { id, alias, registry }) => requireKeymaster(runtime).cloneAsset(id, compactOptions({ alias, registry })) }),
|
|
201
|
+
tool({ name: 'archon_get_property', cliCommand: 'get-property', description: 'Get a property from a DID document data object.', schema: IdSchema.extend({ key: z.string() }), handler: async (runtime, { id, key }) => (await requireKeymaster(runtime).resolveDID(id)).didDocumentData?.[key] }),
|
|
202
|
+
tool({ name: 'archon_set_property', cliCommand: 'set-property', description: 'Set a property on a DID document data object.', schema: IdSchema.extend({ key: z.string(), value: JsonValueSchema.nullable().optional() }), mutates: true, handler: (runtime, { id, key, value }) => requireKeymaster(runtime).mergeData(id, { [key]: value ?? null }) }),
|
|
203
|
+
tool({ name: 'archon_list_assets', cliCommand: 'list-assets', description: 'List assets owned by an ID.', schema: z.object({ owner: z.string().optional() }), handler: (runtime, { owner }) => requireKeymaster(runtime).listAssets(owner) }),
|
|
204
|
+
tool({ name: 'archon_create_poll_template', cliCommand: 'create-poll-template', description: 'Create a poll config template.', schema: EmptySchema, handler: runtime => requireKeymaster(runtime).pollTemplate() }),
|
|
205
|
+
tool({ name: 'archon_create_poll', cliCommand: 'create-poll', description: 'Create a poll from inline JSON config.', schema: z.object({ config: JsonObjectSchema }).merge(VaultOptionsSchema), mutates: true, handler: (runtime, { config, ...options }) => requireKeymaster(runtime).createPoll(config, compactOptions(options)) }),
|
|
206
|
+
tool({ name: 'archon_add_poll_voter', cliCommand: 'add-poll-voter', description: 'Add a voter to a poll.', schema: z.object({ poll: z.string(), member: z.string() }), mutates: true, handler: (runtime, { poll, member }) => requireKeymaster(runtime).addPollVoter(poll, member) }),
|
|
207
|
+
tool({ name: 'archon_remove_poll_voter', cliCommand: 'remove-poll-voter', description: 'Remove a voter from a poll.', schema: z.object({ poll: z.string(), member: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { poll, member }) => requireKeymaster(runtime).removePollVoter(poll, member) }),
|
|
208
|
+
tool({ name: 'archon_list_poll_voters', cliCommand: 'list-poll-voters', description: 'List eligible voters in a poll.', schema: z.object({ poll: z.string() }), handler: (runtime, { poll }) => requireKeymaster(runtime).listPollVoters(poll) }),
|
|
209
|
+
tool({ name: 'archon_view_poll', cliCommand: 'view-poll', description: 'View poll details.', schema: z.object({ poll: z.string() }), handler: (runtime, { poll }) => requireKeymaster(runtime).viewPoll(poll) }),
|
|
210
|
+
tool({ name: 'archon_vote_poll', cliCommand: 'vote-poll', description: 'Vote in a poll.', schema: z.object({ poll: z.string(), vote: z.number().int(), registry: z.string().optional(), validUntil: z.string().optional() }), mutates: true, handler: (runtime, { poll, vote, registry, validUntil }) => requireKeymaster(runtime).votePoll(poll, vote, compactOptions({ registry, validUntil })) }),
|
|
211
|
+
tool({ name: 'archon_send_poll', cliCommand: 'send-poll', description: 'Send a poll notice to voters.', schema: z.object({ poll: z.string() }), mutates: true, handler: (runtime, { poll }) => requireKeymaster(runtime).sendPoll(poll) }),
|
|
212
|
+
tool({ name: 'archon_send_ballot', cliCommand: 'send-ballot', description: 'Send a ballot to the poll owner.', schema: z.object({ ballot: z.string(), poll: z.string() }), mutates: true, handler: (runtime, { ballot, poll }) => requireKeymaster(runtime).sendBallot(ballot, poll) }),
|
|
213
|
+
tool({ name: 'archon_view_ballot', cliCommand: 'view-ballot', description: 'View ballot details.', schema: z.object({ ballot: z.string() }), handler: (runtime, { ballot }) => requireKeymaster(runtime).viewBallot(ballot) }),
|
|
214
|
+
tool({ name: 'archon_update_poll', cliCommand: 'update-poll', description: 'Add a ballot to a poll.', schema: z.object({ ballot: z.string() }), mutates: true, handler: (runtime, { ballot }) => requireKeymaster(runtime).updatePoll(ballot) }),
|
|
215
|
+
tool({ name: 'archon_publish_poll', cliCommand: 'publish-poll', description: 'Publish poll results without revealing ballots.', schema: z.object({ poll: z.string() }), mutates: true, handler: (runtime, { poll }) => requireKeymaster(runtime).publishPoll(poll) }),
|
|
216
|
+
tool({ name: 'archon_reveal_poll', cliCommand: 'reveal-poll', description: 'Publish poll results and reveal ballots.', schema: z.object({ poll: z.string() }).merge(RevealSchema), mutates: true, handler: (runtime, { poll }) => requireKeymaster(runtime).publishPoll(poll, { reveal: true }) }),
|
|
217
|
+
tool({ name: 'archon_unpublish_poll', cliCommand: 'unpublish-poll', description: 'Remove results from a poll.', schema: z.object({ poll: z.string() }), mutates: true, handler: (runtime, { poll }) => requireKeymaster(runtime).unpublishPoll(poll) }),
|
|
218
|
+
tool({ name: 'archon_create_vault', cliCommand: 'create-vault', description: 'Create a vault.', schema: VaultOptionsSchema, mutates: true, handler: (runtime, options) => requireKeymaster(runtime).createVault(compactOptions(options)) }),
|
|
219
|
+
tool({ name: 'archon_list_vault_items', cliCommand: 'list-vault-items', description: 'List items in a vault.', schema: IdSchema.merge(ResolveOptionsSchema), handler: (runtime, { id, ...options }) => requireKeymaster(runtime).listVaultItems(id, compactOptions(options)) }),
|
|
220
|
+
tool({ name: 'archon_add_vault_member', cliCommand: 'add-vault-member', description: 'Add a member to a vault.', schema: IdSchema.extend({ member: z.string() }), mutates: true, handler: (runtime, { id, member }) => requireKeymaster(runtime).addVaultMember(id, member) }),
|
|
221
|
+
tool({ name: 'archon_remove_vault_member', cliCommand: 'remove-vault-member', description: 'Remove a member from a vault.', schema: IdSchema.extend({ member: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { id, member }) => requireKeymaster(runtime).removeVaultMember(id, member) }),
|
|
222
|
+
tool({ name: 'archon_list_vault_members', cliCommand: 'list-vault-members', description: 'List members of a vault.', schema: IdSchema, handler: (runtime, { id }) => requireKeymaster(runtime).listVaultMembers(id) }),
|
|
223
|
+
tool({ name: 'archon_add_vault_item', cliCommand: 'add-vault-item', description: 'Add an inline item to a vault.', schema: IdSchema.extend({ item: InlineDataSchema }), mutates: true, handler: (runtime, { id, item }) => requireKeymaster(runtime).addVaultItem(id, item.name ?? 'item', bufferFromInlineData(item)) }),
|
|
224
|
+
tool({ name: 'archon_remove_vault_item', cliCommand: 'remove-vault-item', description: 'Remove an item from a vault.', schema: IdSchema.extend({ item: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { id, item }) => requireKeymaster(runtime).removeVaultItem(id, item) }),
|
|
225
|
+
tool({ name: 'archon_get_vault_item', cliCommand: 'get-vault-item', description: 'Return a vault item as inline base64 data.', schema: IdSchema.extend({ item: z.string() }).merge(ResolveOptionsSchema), handler: async (runtime, { id, item, ...options }) => {
|
|
226
|
+
const buffer = await requireKeymaster(runtime).getVaultItem(id, item, compactOptions(options));
|
|
227
|
+
return buffer ? inlineDataFromBuffer(Buffer.from(buffer), item) : null;
|
|
228
|
+
} }),
|
|
229
|
+
tool({ name: 'archon_create_dmail', cliCommand: 'create-dmail', description: 'Create a dmail from inline JSON.', schema: z.object({ message: JsonObjectSchema }).merge(VaultOptionsSchema), mutates: true, handler: (runtime, { message, ...options }) => requireKeymaster(runtime).createDmail(message, compactOptions(options)) }),
|
|
230
|
+
tool({ name: 'archon_update_dmail', cliCommand: 'update-dmail', description: 'Update an existing dmail from inline JSON.', schema: DidSchema.extend({ message: JsonObjectSchema }), mutates: true, handler: (runtime, { did, message }) => requireKeymaster(runtime).updateDmail(did, message) }),
|
|
231
|
+
tool({ name: 'archon_send_dmail', cliCommand: 'send-dmail', description: 'Send a dmail and return the notice DID.', schema: DidSchema, mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).sendDmail(did) }),
|
|
232
|
+
tool({ name: 'archon_get_dmail', cliCommand: 'get-dmail', description: 'Get a dmail message by DID.', schema: DidSchema.merge(ResolveOptionsSchema), handler: (runtime, { did, ...options }) => requireKeymaster(runtime).getDmailMessage(did, compactOptions(options)) }),
|
|
233
|
+
tool({ name: 'archon_list_dmail', cliCommand: 'list-dmail', description: 'List dmails for the current ID.', schema: EmptySchema, handler: runtime => requireKeymaster(runtime).listDmail() }),
|
|
234
|
+
tool({ name: 'archon_file_dmail', cliCommand: 'file-dmail', description: 'Assign tags to a dmail.', schema: DidSchema.extend({ tags: z.array(z.string()) }), mutates: true, handler: (runtime, { did, tags }) => requireKeymaster(runtime).fileDmail(did, tags) }),
|
|
235
|
+
tool({ name: 'archon_refresh_dmail', cliCommand: 'refresh-dmail', description: 'Check for new dmails and clean up expired notices.', schema: EmptySchema, mutates: true, handler: runtime => requireKeymaster(runtime).refreshNotices() }),
|
|
236
|
+
tool({ name: 'archon_import_dmail', cliCommand: 'import-dmail', description: 'Import a dmail into the inbox.', schema: DidSchema, mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).importDmail(did) }),
|
|
237
|
+
tool({ name: 'archon_remove_dmail', cliCommand: 'remove-dmail', description: 'Delete a dmail from the local list.', schema: DidSchema.merge(ConfirmSchema), mutates: true, handler: (runtime, { did }) => requireKeymaster(runtime).removeDmail(did) }),
|
|
238
|
+
tool({ name: 'archon_add_dmail_attachment', cliCommand: 'add-dmail-attachment', description: 'Add an inline attachment to a dmail.', schema: DidSchema.extend({ attachment: InlineDataSchema }), mutates: true, handler: (runtime, { did, attachment }) => requireKeymaster(runtime).addDmailAttachment(did, attachment.name ?? 'attachment', bufferFromInlineData(attachment)) }),
|
|
239
|
+
tool({ name: 'archon_remove_dmail_attachment', cliCommand: 'remove-dmail-attachment', description: 'Remove an attachment from a dmail.', schema: DidSchema.extend({ name: z.string() }).merge(ConfirmSchema), mutates: true, handler: (runtime, { did, name }) => requireKeymaster(runtime).removeDmailAttachment(did, name) }),
|
|
240
|
+
tool({ name: 'archon_get_dmail_attachment', cliCommand: 'get-dmail-attachment', description: 'Return a dmail attachment as inline base64 data.', schema: DidSchema.extend({ name: z.string() }), handler: async (runtime, { did, name }) => {
|
|
241
|
+
const buffer = await requireKeymaster(runtime).getDmailAttachment(did, name);
|
|
242
|
+
return buffer ? inlineDataFromBuffer(Buffer.from(buffer), name) : null;
|
|
243
|
+
} }),
|
|
244
|
+
tool({ name: 'archon_list_dmail_attachments', cliCommand: 'list-dmail-attachments', description: 'List attachments of a dmail.', schema: DidSchema.merge(ResolveOptionsSchema), handler: (runtime, { did, ...options }) => requireKeymaster(runtime).listDmailAttachments(did, compactOptions(options)) }),
|
|
245
|
+
];
|
|
246
|
+
export const ARCHON_MCP_CLI_COMMANDS = ARCHON_MCP_TOOL_DEFINITIONS
|
|
247
|
+
.map(definition => definition.cliCommand)
|
|
248
|
+
.filter((command) => !!command);
|
|
249
|
+
function registerToolDefinition(server, runtime, config, definition) {
|
|
250
|
+
if (definition.mutates && config.readOnly) {
|
|
41
251
|
return;
|
|
42
252
|
}
|
|
43
253
|
const wrapped = async (rawArgs) => {
|
|
44
254
|
try {
|
|
45
|
-
if (
|
|
255
|
+
if (definition.mutates && config.readOnly) {
|
|
46
256
|
throw new Error('Tool disabled by ARCHON_MCP_READ_ONLY=true');
|
|
47
257
|
}
|
|
48
|
-
const args = schema.parse(rawArgs ?? {});
|
|
49
|
-
return ok(await handler(args));
|
|
258
|
+
const args = definition.schema.parse(rawArgs ?? {});
|
|
259
|
+
return ok(await definition.handler(runtime, args));
|
|
50
260
|
}
|
|
51
261
|
catch (error) {
|
|
52
262
|
return fail(error);
|
|
53
263
|
}
|
|
54
264
|
};
|
|
55
265
|
if (server.registerTool) {
|
|
56
|
-
server.registerTool(name, { description, inputSchema: schema }, wrapped);
|
|
266
|
+
server.registerTool(definition.name, { description: definition.description, inputSchema: definition.schema }, wrapped);
|
|
57
267
|
return;
|
|
58
268
|
}
|
|
59
|
-
if (server.tool && schema instanceof z.ZodObject) {
|
|
60
|
-
server.tool(name, description, schema.shape, wrapped);
|
|
269
|
+
if (server.tool && definition.schema instanceof z.ZodObject) {
|
|
270
|
+
server.tool(definition.name, definition.description, definition.schema.shape, wrapped);
|
|
61
271
|
return;
|
|
62
272
|
}
|
|
63
273
|
throw new Error('MCP server does not support tool registration');
|
|
64
274
|
}
|
|
65
|
-
function compactOptions(options) {
|
|
66
|
-
const entries = Object.entries(options).filter(([, value]) => value !== undefined);
|
|
67
|
-
return entries.length > 0 ? Object.fromEntries(entries) : undefined;
|
|
68
|
-
}
|
|
69
275
|
export function registerArchonTools(server, runtime, config) {
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
registerTool(server, 'archon_list_registries', 'List registries supported by the connected Archon node.', EmptySchema, async () => runtime.node.listRegistries());
|
|
74
|
-
registerTool(server, 'archon_list_ids', 'List IDs in the local Keymaster wallet.', EmptySchema, async () => requireKeymaster(runtime).listIds());
|
|
75
|
-
registerTool(server, 'archon_get_current_id', 'Get the current local Keymaster wallet ID name.', EmptySchema, async () => requireKeymaster(runtime).getCurrentId());
|
|
76
|
-
registerTool(server, 'archon_use_id', 'Set the current local Keymaster wallet ID name.', z.object({ name: z.string() }), async ({ name }) => requireKeymaster(runtime).setCurrentId(name), mutating);
|
|
77
|
-
registerTool(server, 'archon_create_id', 'Create a new local Keymaster wallet ID.', z.object({ name: z.string(), registry: z.string().optional() }), async ({ name, registry }) => requireKeymaster(runtime).createId(name, compactOptions({ registry })), mutating);
|
|
78
|
-
registerTool(server, 'archon_resolve_did', 'Resolve a DID or DID-like Archon identifier.', z.object({ did: z.string() }).merge(ResolveOptionsSchema), async ({ did, ...options }) => requireKeymaster(runtime).resolveDID(did, compactOptions(options)));
|
|
79
|
-
registerTool(server, 'archon_resolve_id', 'Resolve a local ID name, alias, DID, or the current ID when id is omitted.', z.object({ id: z.string().optional() }).merge(ResolveOptionsSchema), async ({ id, ...options }) => {
|
|
80
|
-
const keymaster = requireKeymaster(runtime);
|
|
81
|
-
const resolvedId = id ?? await keymaster.getCurrentId();
|
|
82
|
-
if (!resolvedId) {
|
|
83
|
-
throw new Error('No current ID');
|
|
84
|
-
}
|
|
85
|
-
return keymaster.resolveDID(resolvedId, compactOptions(options));
|
|
86
|
-
});
|
|
87
|
-
registerTool(server, 'archon_list_aliases', 'List DID aliases in the local Keymaster wallet.', EmptySchema, async () => requireKeymaster(runtime).listAliases());
|
|
88
|
-
registerTool(server, 'archon_add_alias', 'Add a DID alias to the local Keymaster wallet.', z.object({ alias: z.string(), did: z.string() }), async ({ alias, did }) => requireKeymaster(runtime).addAlias(alias, did), mutating);
|
|
89
|
-
registerTool(server, 'archon_get_alias', 'Get the DID assigned to a local alias.', z.object({ alias: z.string() }), async ({ alias }) => requireKeymaster(runtime).getAlias(alias));
|
|
90
|
-
registerTool(server, 'archon_remove_alias', 'Remove a DID alias from the local Keymaster wallet.', z.object({ alias: z.string() }), async ({ alias }) => requireKeymaster(runtime).removeAlias(alias), mutating);
|
|
91
|
-
registerTool(server, 'archon_list_addresses', 'List wallet addresses claimed through Herald domains.', EmptySchema, async () => requireKeymaster(runtime).listAddresses());
|
|
92
|
-
registerTool(server, 'archon_check_address', 'Check whether a Herald address is available.', z.object({ address: z.string() }), async ({ address }) => requireKeymaster(runtime).checkAddress(address));
|
|
93
|
-
registerTool(server, 'archon_add_address', 'Claim a Herald address for the current ID.', z.object({ address: z.string() }), async ({ address }) => requireKeymaster(runtime).addAddress(address), mutating);
|
|
94
|
-
registerTool(server, 'archon_remove_address', 'Remove a Herald address from the current ID.', z.object({ address: z.string() }), async ({ address }) => requireKeymaster(runtime).removeAddress(address), mutating);
|
|
95
|
-
registerTool(server, 'archon_publish_address', 'Publish a stored Herald address on a DID document.', z.object({ address: z.string().optional(), id: z.string().optional() }), async ({ address, id }) => requireKeymaster(runtime).publishAddress(address, id), mutating);
|
|
96
|
-
registerTool(server, 'archon_unpublish_address', 'Remove a published Herald address from a DID document.', z.object({ id: z.string().optional() }), async ({ id }) => requireKeymaster(runtime).unpublishAddress(id), mutating);
|
|
97
|
-
registerTool(server, 'archon_list_assets', 'List assets owned by the current local ID.', EmptySchema, async () => requireKeymaster(runtime).listAssets());
|
|
98
|
-
registerTool(server, 'archon_create_asset_json', 'Create a JSON asset DID from inline JSON data.', z.object({ data: JsonObjectSchema }).merge(AssetOptionsSchema), async ({ data, ...options }) => requireKeymaster(runtime).createAsset(data, compactOptions(options)), mutating);
|
|
99
|
-
registerTool(server, 'archon_get_asset', 'Resolve an asset by local name, alias, or DID.', z.object({ id: z.string() }).merge(ResolveOptionsSchema), async ({ id, ...options }) => requireKeymaster(runtime).resolveAsset(id, compactOptions(options)));
|
|
100
|
-
registerTool(server, 'archon_update_asset_json', 'Merge JSON object data into an existing asset.', z.object({ id: z.string(), data: JsonObjectSchema }), async ({ id, data }) => requireKeymaster(runtime).mergeData(id, data), mutating);
|
|
101
|
-
registerTool(server, 'archon_transfer_asset', 'Transfer an asset to a new controller DID.', z.object({ id: z.string(), controller: z.string() }), async ({ id, controller }) => requireKeymaster(runtime).transferAsset(id, controller), mutating);
|
|
276
|
+
for (const definition of ARCHON_MCP_TOOL_DEFINITIONS) {
|
|
277
|
+
registerToolDefinition(server, runtime, config, definition);
|
|
278
|
+
}
|
|
102
279
|
}
|
|
103
280
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@didcid/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Archon MCP server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"author": "David McFadzean <davidmc@gmail.com>",
|
|
36
36
|
"license": "MIT",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@didcid/cipher": "^0.2.
|
|
39
|
-
"@didcid/gatekeeper": "^0.4.
|
|
40
|
-
"@didcid/keymaster": "^0.4.
|
|
38
|
+
"@didcid/cipher": "^0.2.13",
|
|
39
|
+
"@didcid/gatekeeper": "^0.4.13",
|
|
40
|
+
"@didcid/keymaster": "^0.4.13",
|
|
41
41
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
42
42
|
"dotenv": "^16.4.5",
|
|
43
43
|
"zod": "^3.25.76"
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/node": "^22.18.11"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "ecd16e30d8c8ae9af77541eab4108308a14b529f"
|
|
53
53
|
}
|