botmancers 0.0.0-stage → 0.1.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.
@@ -0,0 +1,542 @@
1
+ {
2
+ "contract": "botmancers.mcp.v1",
3
+ "tools": [
4
+ {
5
+ "name": "botmancers_start_task",
6
+ "title": "Start a Botmancers task",
7
+ "description": "Send one objective to an allowlisted Botmancers coordinator Agent as a new conversation. The coordinator answers read-only; any implementation or review it decides on runs only under the Botmancers owner's grants. Returns durable request_id and conversation_id to poll. Retrying with the same idempotency_key and objective returns the original ids.",
8
+ "inputSchema": {
9
+ "type": "object",
10
+ "properties": {
11
+ "coordinator": {
12
+ "type": "string",
13
+ "minLength": 1,
14
+ "maxLength": 100,
15
+ "description": "Name of an allowlisted coordinator Agent (see botmancers_health)."
16
+ },
17
+ "objective": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "maxLength": 20000,
21
+ "description": "What the coordinator should achieve, in plain language."
22
+ },
23
+ "idempotency_key": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "maxLength": 128,
27
+ "pattern": "^[A-Za-z0-9._:-]+$",
28
+ "description": "Caller-chosen key for this task. Reuse it to retry safely; reusing it for a different objective or coordinator is a conflict."
29
+ }
30
+ },
31
+ "required": [
32
+ "coordinator",
33
+ "objective",
34
+ "idempotency_key"
35
+ ],
36
+ "additionalProperties": false
37
+ },
38
+ "outputSchema": {
39
+ "type": "object",
40
+ "properties": {
41
+ "contract": {
42
+ "type": "string",
43
+ "const": "botmancers.mcp.v1"
44
+ },
45
+ "request_id": {
46
+ "type": "string"
47
+ },
48
+ "conversation_id": {
49
+ "type": "string"
50
+ },
51
+ "coordinator": {
52
+ "type": "object",
53
+ "properties": {
54
+ "agent_id": {
55
+ "type": "string"
56
+ },
57
+ "name": {
58
+ "type": "string"
59
+ }
60
+ },
61
+ "required": [
62
+ "agent_id",
63
+ "name"
64
+ ],
65
+ "additionalProperties": false
66
+ },
67
+ "status": {
68
+ "type": "string",
69
+ "enum": [
70
+ "pending",
71
+ "running",
72
+ "succeeded",
73
+ "failed",
74
+ "cancelled"
75
+ ],
76
+ "description": "pending (accepted, not started) | running | succeeded | failed | cancelled. The last three are terminal."
77
+ },
78
+ "replayed": {
79
+ "type": "boolean"
80
+ }
81
+ },
82
+ "required": [
83
+ "contract",
84
+ "request_id",
85
+ "conversation_id",
86
+ "coordinator",
87
+ "status",
88
+ "replayed"
89
+ ],
90
+ "additionalProperties": false
91
+ },
92
+ "annotations": {
93
+ "readOnlyHint": false,
94
+ "destructiveHint": false,
95
+ "idempotentHint": true,
96
+ "openWorldHint": false
97
+ },
98
+ "_meta": {
99
+ "botmancers/contract": "botmancers.mcp.v1"
100
+ }
101
+ },
102
+ {
103
+ "name": "botmancers_get_request",
104
+ "title": "Get a Botmancers task request",
105
+ "description": "Poll the status of a request returned by botmancers_start_task. When terminal, result or failure is set.",
106
+ "inputSchema": {
107
+ "type": "object",
108
+ "properties": {
109
+ "request_id": {
110
+ "type": "string",
111
+ "minLength": 1,
112
+ "maxLength": 200,
113
+ "description": "request_id returned by botmancers_start_task."
114
+ }
115
+ },
116
+ "required": [
117
+ "request_id"
118
+ ],
119
+ "additionalProperties": false
120
+ },
121
+ "outputSchema": {
122
+ "type": "object",
123
+ "properties": {
124
+ "contract": {
125
+ "type": "string",
126
+ "const": "botmancers.mcp.v1"
127
+ },
128
+ "request_id": {
129
+ "type": "string"
130
+ },
131
+ "conversation_id": {
132
+ "type": "string"
133
+ },
134
+ "coordinator": {
135
+ "type": "object",
136
+ "properties": {
137
+ "agent_id": {
138
+ "type": "string"
139
+ },
140
+ "name": {
141
+ "type": "string"
142
+ }
143
+ },
144
+ "required": [
145
+ "agent_id",
146
+ "name"
147
+ ],
148
+ "additionalProperties": false
149
+ },
150
+ "status": {
151
+ "type": "string",
152
+ "enum": [
153
+ "pending",
154
+ "running",
155
+ "succeeded",
156
+ "failed",
157
+ "cancelled"
158
+ ],
159
+ "description": "pending (accepted, not started) | running | succeeded | failed | cancelled. The last three are terminal."
160
+ },
161
+ "terminal": {
162
+ "type": "boolean"
163
+ },
164
+ "result": {
165
+ "type": [
166
+ "object",
167
+ "null"
168
+ ],
169
+ "properties": {
170
+ "message_id": {
171
+ "type": "string"
172
+ },
173
+ "content": {
174
+ "type": "string"
175
+ }
176
+ },
177
+ "required": [
178
+ "message_id",
179
+ "content"
180
+ ],
181
+ "additionalProperties": false
182
+ },
183
+ "failure": {
184
+ "type": [
185
+ "object",
186
+ "null"
187
+ ],
188
+ "properties": {
189
+ "code": {
190
+ "type": "string"
191
+ },
192
+ "message": {
193
+ "type": "string"
194
+ }
195
+ },
196
+ "required": [
197
+ "code",
198
+ "message"
199
+ ],
200
+ "additionalProperties": false
201
+ },
202
+ "created_at": {
203
+ "type": "integer",
204
+ "description": "Epoch milliseconds."
205
+ },
206
+ "updated_at": {
207
+ "type": "integer",
208
+ "description": "Epoch milliseconds."
209
+ }
210
+ },
211
+ "required": [
212
+ "contract",
213
+ "request_id",
214
+ "conversation_id",
215
+ "coordinator",
216
+ "status",
217
+ "terminal",
218
+ "result",
219
+ "failure",
220
+ "created_at",
221
+ "updated_at"
222
+ ],
223
+ "additionalProperties": false
224
+ },
225
+ "annotations": {
226
+ "readOnlyHint": true,
227
+ "destructiveHint": false,
228
+ "idempotentHint": true,
229
+ "openWorldHint": false
230
+ },
231
+ "_meta": {
232
+ "botmancers/contract": "botmancers.mcp.v1"
233
+ }
234
+ },
235
+ {
236
+ "name": "botmancers_get_conversation",
237
+ "title": "Get a Botmancers task conversation",
238
+ "description": "Read the conversation a task opened: ordered messages from the coordinator and any Agents it woke, and lifecycle events. status is active while any request in it is still open.",
239
+ "inputSchema": {
240
+ "type": "object",
241
+ "properties": {
242
+ "conversation_id": {
243
+ "type": "string",
244
+ "minLength": 1,
245
+ "maxLength": 200,
246
+ "description": "conversation_id returned by botmancers_start_task."
247
+ }
248
+ },
249
+ "required": [
250
+ "conversation_id"
251
+ ],
252
+ "additionalProperties": false
253
+ },
254
+ "outputSchema": {
255
+ "type": "object",
256
+ "properties": {
257
+ "contract": {
258
+ "type": "string",
259
+ "const": "botmancers.mcp.v1"
260
+ },
261
+ "conversation_id": {
262
+ "type": "string"
263
+ },
264
+ "status": {
265
+ "type": "string",
266
+ "enum": [
267
+ "active",
268
+ "idle"
269
+ ]
270
+ },
271
+ "open_request_count": {
272
+ "type": "integer"
273
+ },
274
+ "origin": {
275
+ "anyOf": [
276
+ {
277
+ "type": "object",
278
+ "properties": {
279
+ "kind": {
280
+ "type": "string",
281
+ "enum": [
282
+ "person",
283
+ "bot",
284
+ "service"
285
+ ]
286
+ },
287
+ "id": {
288
+ "type": "string"
289
+ },
290
+ "name": {
291
+ "type": [
292
+ "string",
293
+ "null"
294
+ ]
295
+ }
296
+ },
297
+ "required": [
298
+ "kind",
299
+ "id",
300
+ "name"
301
+ ],
302
+ "additionalProperties": false
303
+ },
304
+ {
305
+ "type": "null"
306
+ }
307
+ ]
308
+ },
309
+ "participants": {
310
+ "type": "array",
311
+ "items": {
312
+ "type": "object",
313
+ "properties": {
314
+ "kind": {
315
+ "type": "string",
316
+ "enum": [
317
+ "person",
318
+ "bot",
319
+ "service"
320
+ ]
321
+ },
322
+ "id": {
323
+ "type": "string"
324
+ },
325
+ "name": {
326
+ "type": [
327
+ "string",
328
+ "null"
329
+ ]
330
+ }
331
+ },
332
+ "required": [
333
+ "kind",
334
+ "id",
335
+ "name"
336
+ ],
337
+ "additionalProperties": false
338
+ }
339
+ },
340
+ "messages": {
341
+ "type": "array",
342
+ "items": {
343
+ "type": "object",
344
+ "properties": {
345
+ "seq": {
346
+ "type": "integer"
347
+ },
348
+ "message_id": {
349
+ "type": "string"
350
+ },
351
+ "sender": {
352
+ "type": "object",
353
+ "properties": {
354
+ "kind": {
355
+ "type": "string",
356
+ "enum": [
357
+ "person",
358
+ "bot",
359
+ "service"
360
+ ]
361
+ },
362
+ "id": {
363
+ "type": "string"
364
+ },
365
+ "name": {
366
+ "type": [
367
+ "string",
368
+ "null"
369
+ ]
370
+ }
371
+ },
372
+ "required": [
373
+ "kind",
374
+ "id",
375
+ "name"
376
+ ],
377
+ "additionalProperties": false
378
+ },
379
+ "content": {
380
+ "type": "string"
381
+ },
382
+ "request_id": {
383
+ "type": [
384
+ "string",
385
+ "null"
386
+ ]
387
+ },
388
+ "created_at": {
389
+ "type": "integer"
390
+ }
391
+ },
392
+ "required": [
393
+ "seq",
394
+ "message_id",
395
+ "sender",
396
+ "content",
397
+ "request_id",
398
+ "created_at"
399
+ ],
400
+ "additionalProperties": false
401
+ }
402
+ },
403
+ "events": {
404
+ "type": "array",
405
+ "items": {
406
+ "type": "object",
407
+ "properties": {
408
+ "seq": {
409
+ "type": "integer"
410
+ },
411
+ "kind": {
412
+ "type": "string"
413
+ },
414
+ "request_id": {
415
+ "type": [
416
+ "string",
417
+ "null"
418
+ ]
419
+ },
420
+ "wake_id": {
421
+ "type": [
422
+ "string",
423
+ "null"
424
+ ]
425
+ },
426
+ "text": {
427
+ "type": "string"
428
+ },
429
+ "created_at": {
430
+ "type": "integer"
431
+ }
432
+ },
433
+ "required": [
434
+ "seq",
435
+ "kind",
436
+ "request_id",
437
+ "wake_id",
438
+ "text",
439
+ "created_at"
440
+ ],
441
+ "additionalProperties": false
442
+ }
443
+ }
444
+ },
445
+ "required": [
446
+ "contract",
447
+ "conversation_id",
448
+ "status",
449
+ "open_request_count",
450
+ "origin",
451
+ "participants",
452
+ "messages",
453
+ "events"
454
+ ],
455
+ "additionalProperties": false
456
+ },
457
+ "annotations": {
458
+ "readOnlyHint": true,
459
+ "destructiveHint": false,
460
+ "idempotentHint": true,
461
+ "openWorldHint": false
462
+ },
463
+ "_meta": {
464
+ "botmancers/contract": "botmancers.mcp.v1"
465
+ }
466
+ },
467
+ {
468
+ "name": "botmancers_health",
469
+ "title": "Botmancers bridge health",
470
+ "description": "Confirm the bridge is reachable and authenticated, and list the coordinators this caller may start tasks with.",
471
+ "inputSchema": {
472
+ "type": "object",
473
+ "properties": {},
474
+ "additionalProperties": false
475
+ },
476
+ "outputSchema": {
477
+ "type": "object",
478
+ "properties": {
479
+ "contract": {
480
+ "type": "string",
481
+ "const": "botmancers.mcp.v1"
482
+ },
483
+ "status": {
484
+ "type": "string",
485
+ "const": "ok"
486
+ },
487
+ "principal": {
488
+ "type": "object",
489
+ "properties": {
490
+ "kind": {
491
+ "type": "string"
492
+ },
493
+ "id": {
494
+ "type": "string"
495
+ }
496
+ },
497
+ "required": [
498
+ "kind",
499
+ "id"
500
+ ],
501
+ "additionalProperties": false
502
+ },
503
+ "coordinators": {
504
+ "type": "array",
505
+ "items": {
506
+ "type": "object",
507
+ "properties": {
508
+ "name": {
509
+ "type": "string"
510
+ },
511
+ "available": {
512
+ "type": "boolean"
513
+ }
514
+ },
515
+ "required": [
516
+ "name",
517
+ "available"
518
+ ],
519
+ "additionalProperties": false
520
+ }
521
+ }
522
+ },
523
+ "required": [
524
+ "contract",
525
+ "status",
526
+ "principal",
527
+ "coordinators"
528
+ ],
529
+ "additionalProperties": false
530
+ },
531
+ "annotations": {
532
+ "readOnlyHint": true,
533
+ "destructiveHint": false,
534
+ "idempotentHint": true,
535
+ "openWorldHint": false
536
+ },
537
+ "_meta": {
538
+ "botmancers/contract": "botmancers.mcp.v1"
539
+ }
540
+ }
541
+ ]
542
+ }