caplets 0.12.0 → 0.12.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.
@@ -1,1310 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://raw.githubusercontent.com/spiritledsoftware/caplets/main/schemas/caplets-config.schema.json",
4
- "title": "Caplets config",
5
- "description": "Configuration file for the Caplets progressive MCP disclosure gateway.",
6
- "type": "object",
7
- "properties": {
8
- "$schema": {
9
- "description": "Optional JSON Schema URL for editor validation.",
10
- "type": "string",
11
- "format": "uri"
12
- },
13
- "version": {
14
- "default": 1,
15
- "description": "Caplets config schema version.",
16
- "type": "number",
17
- "const": 1
18
- },
19
- "defaultSearchLimit": {
20
- "default": 20,
21
- "description": "Default maximum number of same-server search results.",
22
- "type": "integer",
23
- "exclusiveMinimum": 0,
24
- "maximum": 9007199254740991
25
- },
26
- "maxSearchLimit": {
27
- "default": 50,
28
- "description": "Maximum accepted search_tools limit.",
29
- "type": "integer",
30
- "exclusiveMinimum": 0,
31
- "maximum": 50
32
- },
33
- "mcpServers": {
34
- "default": {},
35
- "description": "Downstream MCP servers keyed by stable server ID.",
36
- "type": "object",
37
- "propertyNames": {
38
- "type": "string",
39
- "pattern": "^[a-zA-Z0-9_-]{1,64}$"
40
- },
41
- "additionalProperties": {
42
- "type": "object",
43
- "properties": {
44
- "name": {
45
- "type": "string",
46
- "minLength": 1,
47
- "maxLength": 80,
48
- "description": "Human-readable server display name."
49
- },
50
- "description": {
51
- "type": "string",
52
- "description": "Capability description shown to agents before downstream tools are disclosed."
53
- },
54
- "transport": {
55
- "description": "Downstream MCP transport. Defaults to stdio when command is present.",
56
- "type": "string",
57
- "enum": ["stdio", "http", "sse"]
58
- },
59
- "command": {
60
- "description": "Executable command for stdio servers.",
61
- "type": "string",
62
- "minLength": 1
63
- },
64
- "args": {
65
- "description": "Arguments passed to the stdio command.",
66
- "type": "array",
67
- "items": {
68
- "type": "string"
69
- }
70
- },
71
- "env": {
72
- "description": "Environment variables for stdio servers. Supports ${VAR} and $env:VAR.",
73
- "type": "object",
74
- "propertyNames": {
75
- "type": "string"
76
- },
77
- "additionalProperties": {
78
- "type": "string"
79
- }
80
- },
81
- "cwd": {
82
- "description": "Working directory for stdio servers.",
83
- "type": "string",
84
- "minLength": 1
85
- },
86
- "url": {
87
- "description": "Remote MCP server URL for http or sse transport.",
88
- "type": "string",
89
- "format": "uri"
90
- },
91
- "auth": {
92
- "oneOf": [
93
- {
94
- "type": "object",
95
- "properties": {
96
- "type": {
97
- "type": "string",
98
- "const": "none"
99
- }
100
- },
101
- "required": ["type"],
102
- "additionalProperties": false
103
- },
104
- {
105
- "type": "object",
106
- "properties": {
107
- "type": {
108
- "type": "string",
109
- "const": "bearer"
110
- },
111
- "token": {
112
- "type": "string",
113
- "minLength": 1
114
- }
115
- },
116
- "required": ["type", "token"],
117
- "additionalProperties": false
118
- },
119
- {
120
- "type": "object",
121
- "properties": {
122
- "type": {
123
- "type": "string",
124
- "const": "headers"
125
- },
126
- "headers": {
127
- "type": "object",
128
- "propertyNames": {
129
- "type": "string"
130
- },
131
- "additionalProperties": {
132
- "type": "string",
133
- "minLength": 1
134
- }
135
- }
136
- },
137
- "required": ["type", "headers"],
138
- "additionalProperties": false
139
- },
140
- {
141
- "type": "object",
142
- "properties": {
143
- "type": {
144
- "type": "string",
145
- "const": "oauth2"
146
- },
147
- "authorizationUrl": {
148
- "type": "string",
149
- "format": "uri"
150
- },
151
- "tokenUrl": {
152
- "type": "string",
153
- "format": "uri"
154
- },
155
- "issuer": {
156
- "type": "string",
157
- "format": "uri"
158
- },
159
- "resourceMetadataUrl": {
160
- "type": "string",
161
- "format": "uri"
162
- },
163
- "authorizationServerMetadataUrl": {
164
- "type": "string",
165
- "format": "uri"
166
- },
167
- "openidConfigurationUrl": {
168
- "type": "string",
169
- "format": "uri"
170
- },
171
- "clientMetadataUrl": {
172
- "type": "string",
173
- "format": "uri"
174
- },
175
- "clientId": {
176
- "type": "string",
177
- "minLength": 1
178
- },
179
- "clientSecret": {
180
- "type": "string",
181
- "minLength": 1
182
- },
183
- "scopes": {
184
- "type": "array",
185
- "items": {
186
- "type": "string",
187
- "minLength": 1
188
- }
189
- },
190
- "redirectUri": {
191
- "type": "string",
192
- "format": "uri"
193
- }
194
- },
195
- "required": ["type"],
196
- "additionalProperties": false
197
- },
198
- {
199
- "type": "object",
200
- "properties": {
201
- "type": {
202
- "type": "string",
203
- "const": "oidc"
204
- },
205
- "authorizationUrl": {
206
- "type": "string",
207
- "format": "uri"
208
- },
209
- "tokenUrl": {
210
- "type": "string",
211
- "format": "uri"
212
- },
213
- "issuer": {
214
- "type": "string",
215
- "format": "uri"
216
- },
217
- "resourceMetadataUrl": {
218
- "type": "string",
219
- "format": "uri"
220
- },
221
- "authorizationServerMetadataUrl": {
222
- "type": "string",
223
- "format": "uri"
224
- },
225
- "openidConfigurationUrl": {
226
- "type": "string",
227
- "format": "uri"
228
- },
229
- "clientMetadataUrl": {
230
- "type": "string",
231
- "format": "uri"
232
- },
233
- "clientId": {
234
- "type": "string",
235
- "minLength": 1
236
- },
237
- "clientSecret": {
238
- "type": "string",
239
- "minLength": 1
240
- },
241
- "scopes": {
242
- "type": "array",
243
- "items": {
244
- "type": "string",
245
- "minLength": 1
246
- }
247
- },
248
- "redirectUri": {
249
- "type": "string",
250
- "format": "uri"
251
- }
252
- },
253
- "required": ["type"],
254
- "additionalProperties": false
255
- }
256
- ],
257
- "description": "Authentication settings for a remote MCP server."
258
- },
259
- "tags": {
260
- "type": "array",
261
- "items": {
262
- "type": "string",
263
- "minLength": 1,
264
- "maxLength": 80
265
- }
266
- },
267
- "startupTimeoutMs": {
268
- "default": 10000,
269
- "description": "Timeout in milliseconds for starting or checking a downstream server.",
270
- "type": "integer",
271
- "exclusiveMinimum": 0,
272
- "maximum": 9007199254740991
273
- },
274
- "callTimeoutMs": {
275
- "default": 60000,
276
- "description": "Timeout in milliseconds for downstream tool calls.",
277
- "type": "integer",
278
- "exclusiveMinimum": 0,
279
- "maximum": 9007199254740991
280
- },
281
- "toolCacheTtlMs": {
282
- "default": 30000,
283
- "description": "Milliseconds downstream tool metadata stays fresh. Set 0 to refresh every time.",
284
- "type": "integer",
285
- "minimum": 0,
286
- "maximum": 9007199254740991
287
- },
288
- "disabled": {
289
- "default": false,
290
- "description": "When true, omit this server from Caplets discovery and do not start it.",
291
- "type": "boolean"
292
- }
293
- },
294
- "required": ["name", "description"],
295
- "additionalProperties": false
296
- }
297
- },
298
- "openapiEndpoints": {
299
- "default": {},
300
- "description": "OpenAPI endpoints keyed by stable Caplet ID.",
301
- "type": "object",
302
- "propertyNames": {
303
- "type": "string",
304
- "pattern": "^[a-zA-Z0-9_-]{1,64}$"
305
- },
306
- "additionalProperties": {
307
- "type": "object",
308
- "properties": {
309
- "name": {
310
- "type": "string",
311
- "minLength": 1,
312
- "maxLength": 80,
313
- "description": "Human-readable OpenAPI display name."
314
- },
315
- "description": {
316
- "type": "string",
317
- "description": "Capability description shown to agents before OpenAPI operations are disclosed."
318
- },
319
- "specPath": {
320
- "description": "Local OpenAPI specification path.",
321
- "type": "string",
322
- "minLength": 1
323
- },
324
- "specUrl": {
325
- "description": "Remote OpenAPI specification URL.",
326
- "type": "string",
327
- "format": "uri"
328
- },
329
- "baseUrl": {
330
- "description": "Override base URL for OpenAPI requests.",
331
- "type": "string",
332
- "format": "uri"
333
- },
334
- "auth": {
335
- "oneOf": [
336
- {
337
- "type": "object",
338
- "properties": {
339
- "type": {
340
- "type": "string",
341
- "const": "none"
342
- }
343
- },
344
- "required": ["type"],
345
- "additionalProperties": false
346
- },
347
- {
348
- "type": "object",
349
- "properties": {
350
- "type": {
351
- "type": "string",
352
- "const": "bearer"
353
- },
354
- "token": {
355
- "type": "string",
356
- "minLength": 1
357
- }
358
- },
359
- "required": ["type", "token"],
360
- "additionalProperties": false
361
- },
362
- {
363
- "type": "object",
364
- "properties": {
365
- "type": {
366
- "type": "string",
367
- "const": "headers"
368
- },
369
- "headers": {
370
- "type": "object",
371
- "propertyNames": {
372
- "type": "string"
373
- },
374
- "additionalProperties": {
375
- "type": "string",
376
- "minLength": 1
377
- }
378
- }
379
- },
380
- "required": ["type", "headers"],
381
- "additionalProperties": false
382
- },
383
- {
384
- "type": "object",
385
- "properties": {
386
- "type": {
387
- "type": "string",
388
- "const": "oauth2"
389
- },
390
- "authorizationUrl": {
391
- "type": "string",
392
- "format": "uri"
393
- },
394
- "tokenUrl": {
395
- "type": "string",
396
- "format": "uri"
397
- },
398
- "issuer": {
399
- "type": "string",
400
- "format": "uri"
401
- },
402
- "resourceMetadataUrl": {
403
- "type": "string",
404
- "format": "uri"
405
- },
406
- "authorizationServerMetadataUrl": {
407
- "type": "string",
408
- "format": "uri"
409
- },
410
- "openidConfigurationUrl": {
411
- "type": "string",
412
- "format": "uri"
413
- },
414
- "clientMetadataUrl": {
415
- "type": "string",
416
- "format": "uri"
417
- },
418
- "clientId": {
419
- "type": "string",
420
- "minLength": 1
421
- },
422
- "clientSecret": {
423
- "type": "string",
424
- "minLength": 1
425
- },
426
- "scopes": {
427
- "type": "array",
428
- "items": {
429
- "type": "string",
430
- "minLength": 1
431
- }
432
- },
433
- "redirectUri": {
434
- "type": "string",
435
- "format": "uri"
436
- }
437
- },
438
- "required": ["type"],
439
- "additionalProperties": false
440
- },
441
- {
442
- "type": "object",
443
- "properties": {
444
- "type": {
445
- "type": "string",
446
- "const": "oidc"
447
- },
448
- "authorizationUrl": {
449
- "type": "string",
450
- "format": "uri"
451
- },
452
- "tokenUrl": {
453
- "type": "string",
454
- "format": "uri"
455
- },
456
- "issuer": {
457
- "type": "string",
458
- "format": "uri"
459
- },
460
- "resourceMetadataUrl": {
461
- "type": "string",
462
- "format": "uri"
463
- },
464
- "authorizationServerMetadataUrl": {
465
- "type": "string",
466
- "format": "uri"
467
- },
468
- "openidConfigurationUrl": {
469
- "type": "string",
470
- "format": "uri"
471
- },
472
- "clientMetadataUrl": {
473
- "type": "string",
474
- "format": "uri"
475
- },
476
- "clientId": {
477
- "type": "string",
478
- "minLength": 1
479
- },
480
- "clientSecret": {
481
- "type": "string",
482
- "minLength": 1
483
- },
484
- "scopes": {
485
- "type": "array",
486
- "items": {
487
- "type": "string",
488
- "minLength": 1
489
- }
490
- },
491
- "redirectUri": {
492
- "type": "string",
493
- "format": "uri"
494
- }
495
- },
496
- "required": ["type"],
497
- "additionalProperties": false
498
- }
499
- ],
500
- "description": "Explicit OpenAPI request auth config. Use {\"type\":\"none\"} for public APIs."
501
- },
502
- "tags": {
503
- "type": "array",
504
- "items": {
505
- "type": "string",
506
- "minLength": 1,
507
- "maxLength": 80
508
- }
509
- },
510
- "requestTimeoutMs": {
511
- "default": 60000,
512
- "description": "Timeout in milliseconds for OpenAPI HTTP requests.",
513
- "type": "integer",
514
- "exclusiveMinimum": 0,
515
- "maximum": 9007199254740991
516
- },
517
- "operationCacheTtlMs": {
518
- "default": 30000,
519
- "description": "Milliseconds OpenAPI operation metadata stays fresh. Set 0 to refresh every time.",
520
- "type": "integer",
521
- "minimum": 0,
522
- "maximum": 9007199254740991
523
- },
524
- "disabled": {
525
- "default": false,
526
- "description": "When true, omit this OpenAPI Caplet from discovery.",
527
- "type": "boolean"
528
- }
529
- },
530
- "required": ["name", "description", "auth"],
531
- "additionalProperties": false
532
- }
533
- },
534
- "graphqlEndpoints": {
535
- "default": {},
536
- "description": "GraphQL endpoints keyed by stable Caplet ID.",
537
- "type": "object",
538
- "propertyNames": {
539
- "type": "string",
540
- "pattern": "^[a-zA-Z0-9_-]{1,64}$"
541
- },
542
- "additionalProperties": {
543
- "type": "object",
544
- "properties": {
545
- "name": {
546
- "type": "string",
547
- "minLength": 1,
548
- "maxLength": 80,
549
- "description": "Human-readable GraphQL display name."
550
- },
551
- "description": {
552
- "type": "string",
553
- "description": "Capability description shown to agents before GraphQL operations are disclosed."
554
- },
555
- "endpointUrl": {
556
- "type": "string",
557
- "format": "uri",
558
- "description": "GraphQL HTTP endpoint URL."
559
- },
560
- "schemaPath": {
561
- "description": "Local GraphQL SDL or introspection path.",
562
- "type": "string",
563
- "minLength": 1
564
- },
565
- "schemaUrl": {
566
- "description": "Remote GraphQL SDL or introspection URL.",
567
- "type": "string",
568
- "format": "uri"
569
- },
570
- "introspection": {
571
- "description": "Load schema through endpoint introspection.",
572
- "type": "boolean",
573
- "const": true
574
- },
575
- "operations": {
576
- "description": "Configured GraphQL operations keyed by stable tool name.",
577
- "type": "object",
578
- "propertyNames": {
579
- "type": "string",
580
- "pattern": "^[a-zA-Z0-9_-]{1,64}$"
581
- },
582
- "additionalProperties": {
583
- "type": "object",
584
- "properties": {
585
- "document": {
586
- "description": "Inline GraphQL operation document.",
587
- "type": "string",
588
- "minLength": 1
589
- },
590
- "documentPath": {
591
- "description": "Path to a GraphQL operation document.",
592
- "type": "string",
593
- "minLength": 1
594
- },
595
- "operationName": {
596
- "description": "Operation name to execute.",
597
- "type": "string",
598
- "minLength": 1
599
- },
600
- "description": {
601
- "description": "Operation capability description.",
602
- "type": "string",
603
- "minLength": 1
604
- }
605
- },
606
- "additionalProperties": false
607
- }
608
- },
609
- "auth": {
610
- "oneOf": [
611
- {
612
- "type": "object",
613
- "properties": {
614
- "type": {
615
- "type": "string",
616
- "const": "none"
617
- }
618
- },
619
- "required": ["type"],
620
- "additionalProperties": false
621
- },
622
- {
623
- "type": "object",
624
- "properties": {
625
- "type": {
626
- "type": "string",
627
- "const": "bearer"
628
- },
629
- "token": {
630
- "type": "string",
631
- "minLength": 1
632
- }
633
- },
634
- "required": ["type", "token"],
635
- "additionalProperties": false
636
- },
637
- {
638
- "type": "object",
639
- "properties": {
640
- "type": {
641
- "type": "string",
642
- "const": "headers"
643
- },
644
- "headers": {
645
- "type": "object",
646
- "propertyNames": {
647
- "type": "string"
648
- },
649
- "additionalProperties": {
650
- "type": "string",
651
- "minLength": 1
652
- }
653
- }
654
- },
655
- "required": ["type", "headers"],
656
- "additionalProperties": false
657
- },
658
- {
659
- "type": "object",
660
- "properties": {
661
- "type": {
662
- "type": "string",
663
- "const": "oauth2"
664
- },
665
- "authorizationUrl": {
666
- "type": "string",
667
- "format": "uri"
668
- },
669
- "tokenUrl": {
670
- "type": "string",
671
- "format": "uri"
672
- },
673
- "issuer": {
674
- "type": "string",
675
- "format": "uri"
676
- },
677
- "resourceMetadataUrl": {
678
- "type": "string",
679
- "format": "uri"
680
- },
681
- "authorizationServerMetadataUrl": {
682
- "type": "string",
683
- "format": "uri"
684
- },
685
- "openidConfigurationUrl": {
686
- "type": "string",
687
- "format": "uri"
688
- },
689
- "clientMetadataUrl": {
690
- "type": "string",
691
- "format": "uri"
692
- },
693
- "clientId": {
694
- "type": "string",
695
- "minLength": 1
696
- },
697
- "clientSecret": {
698
- "type": "string",
699
- "minLength": 1
700
- },
701
- "scopes": {
702
- "type": "array",
703
- "items": {
704
- "type": "string",
705
- "minLength": 1
706
- }
707
- },
708
- "redirectUri": {
709
- "type": "string",
710
- "format": "uri"
711
- }
712
- },
713
- "required": ["type"],
714
- "additionalProperties": false
715
- },
716
- {
717
- "type": "object",
718
- "properties": {
719
- "type": {
720
- "type": "string",
721
- "const": "oidc"
722
- },
723
- "authorizationUrl": {
724
- "type": "string",
725
- "format": "uri"
726
- },
727
- "tokenUrl": {
728
- "type": "string",
729
- "format": "uri"
730
- },
731
- "issuer": {
732
- "type": "string",
733
- "format": "uri"
734
- },
735
- "resourceMetadataUrl": {
736
- "type": "string",
737
- "format": "uri"
738
- },
739
- "authorizationServerMetadataUrl": {
740
- "type": "string",
741
- "format": "uri"
742
- },
743
- "openidConfigurationUrl": {
744
- "type": "string",
745
- "format": "uri"
746
- },
747
- "clientMetadataUrl": {
748
- "type": "string",
749
- "format": "uri"
750
- },
751
- "clientId": {
752
- "type": "string",
753
- "minLength": 1
754
- },
755
- "clientSecret": {
756
- "type": "string",
757
- "minLength": 1
758
- },
759
- "scopes": {
760
- "type": "array",
761
- "items": {
762
- "type": "string",
763
- "minLength": 1
764
- }
765
- },
766
- "redirectUri": {
767
- "type": "string",
768
- "format": "uri"
769
- }
770
- },
771
- "required": ["type"],
772
- "additionalProperties": false
773
- }
774
- ],
775
- "description": "Explicit GraphQL request auth config. Use {\"type\":\"none\"} for public APIs."
776
- },
777
- "tags": {
778
- "type": "array",
779
- "items": {
780
- "type": "string",
781
- "minLength": 1,
782
- "maxLength": 80
783
- }
784
- },
785
- "requestTimeoutMs": {
786
- "default": 60000,
787
- "description": "Timeout in milliseconds for GraphQL HTTP requests.",
788
- "type": "integer",
789
- "exclusiveMinimum": 0,
790
- "maximum": 9007199254740991
791
- },
792
- "operationCacheTtlMs": {
793
- "default": 30000,
794
- "description": "Milliseconds GraphQL operation metadata stays fresh. Set 0 to refresh every time.",
795
- "type": "integer",
796
- "minimum": 0,
797
- "maximum": 9007199254740991
798
- },
799
- "selectionDepth": {
800
- "default": 2,
801
- "description": "Maximum depth for auto-generated GraphQL selection sets.",
802
- "type": "integer",
803
- "exclusiveMinimum": 0,
804
- "maximum": 5
805
- },
806
- "disabled": {
807
- "default": false,
808
- "description": "When true, omit this GraphQL Caplet.",
809
- "type": "boolean"
810
- }
811
- },
812
- "required": ["name", "description", "endpointUrl", "auth"],
813
- "additionalProperties": false
814
- }
815
- },
816
- "httpApis": {
817
- "default": {},
818
- "description": "HTTP APIs keyed by stable Caplet ID.",
819
- "type": "object",
820
- "propertyNames": {
821
- "type": "string",
822
- "pattern": "^[a-zA-Z0-9_-]{1,64}$"
823
- },
824
- "additionalProperties": {
825
- "type": "object",
826
- "properties": {
827
- "name": {
828
- "type": "string",
829
- "minLength": 1,
830
- "maxLength": 80,
831
- "description": "Human-readable HTTP API display name."
832
- },
833
- "description": {
834
- "type": "string",
835
- "description": "Capability description shown to agents before HTTP actions are disclosed."
836
- },
837
- "baseUrl": {
838
- "type": "string",
839
- "pattern": "^(?![a-zA-Z][a-zA-Z0-9+.-]*:\\/\\/[^/?#]*@)[^?#]*$",
840
- "description": "Base URL for HTTP action requests.",
841
- "format": "uri"
842
- },
843
- "auth": {
844
- "oneOf": [
845
- {
846
- "type": "object",
847
- "properties": {
848
- "type": {
849
- "type": "string",
850
- "const": "none"
851
- }
852
- },
853
- "required": ["type"],
854
- "additionalProperties": false
855
- },
856
- {
857
- "type": "object",
858
- "properties": {
859
- "type": {
860
- "type": "string",
861
- "const": "bearer"
862
- },
863
- "token": {
864
- "type": "string",
865
- "minLength": 1
866
- }
867
- },
868
- "required": ["type", "token"],
869
- "additionalProperties": false
870
- },
871
- {
872
- "type": "object",
873
- "properties": {
874
- "type": {
875
- "type": "string",
876
- "const": "headers"
877
- },
878
- "headers": {
879
- "type": "object",
880
- "propertyNames": {
881
- "type": "string"
882
- },
883
- "additionalProperties": {
884
- "type": "string",
885
- "minLength": 1
886
- }
887
- }
888
- },
889
- "required": ["type", "headers"],
890
- "additionalProperties": false
891
- },
892
- {
893
- "type": "object",
894
- "properties": {
895
- "type": {
896
- "type": "string",
897
- "const": "oauth2"
898
- },
899
- "authorizationUrl": {
900
- "type": "string",
901
- "format": "uri"
902
- },
903
- "tokenUrl": {
904
- "type": "string",
905
- "format": "uri"
906
- },
907
- "issuer": {
908
- "type": "string",
909
- "format": "uri"
910
- },
911
- "resourceMetadataUrl": {
912
- "type": "string",
913
- "format": "uri"
914
- },
915
- "authorizationServerMetadataUrl": {
916
- "type": "string",
917
- "format": "uri"
918
- },
919
- "openidConfigurationUrl": {
920
- "type": "string",
921
- "format": "uri"
922
- },
923
- "clientMetadataUrl": {
924
- "type": "string",
925
- "format": "uri"
926
- },
927
- "clientId": {
928
- "type": "string",
929
- "minLength": 1
930
- },
931
- "clientSecret": {
932
- "type": "string",
933
- "minLength": 1
934
- },
935
- "scopes": {
936
- "type": "array",
937
- "items": {
938
- "type": "string",
939
- "minLength": 1
940
- }
941
- },
942
- "redirectUri": {
943
- "type": "string",
944
- "format": "uri"
945
- }
946
- },
947
- "required": ["type"],
948
- "additionalProperties": false
949
- },
950
- {
951
- "type": "object",
952
- "properties": {
953
- "type": {
954
- "type": "string",
955
- "const": "oidc"
956
- },
957
- "authorizationUrl": {
958
- "type": "string",
959
- "format": "uri"
960
- },
961
- "tokenUrl": {
962
- "type": "string",
963
- "format": "uri"
964
- },
965
- "issuer": {
966
- "type": "string",
967
- "format": "uri"
968
- },
969
- "resourceMetadataUrl": {
970
- "type": "string",
971
- "format": "uri"
972
- },
973
- "authorizationServerMetadataUrl": {
974
- "type": "string",
975
- "format": "uri"
976
- },
977
- "openidConfigurationUrl": {
978
- "type": "string",
979
- "format": "uri"
980
- },
981
- "clientMetadataUrl": {
982
- "type": "string",
983
- "format": "uri"
984
- },
985
- "clientId": {
986
- "type": "string",
987
- "minLength": 1
988
- },
989
- "clientSecret": {
990
- "type": "string",
991
- "minLength": 1
992
- },
993
- "scopes": {
994
- "type": "array",
995
- "items": {
996
- "type": "string",
997
- "minLength": 1
998
- }
999
- },
1000
- "redirectUri": {
1001
- "type": "string",
1002
- "format": "uri"
1003
- }
1004
- },
1005
- "required": ["type"],
1006
- "additionalProperties": false
1007
- }
1008
- ],
1009
- "description": "Explicit HTTP API request auth config. Use {\"type\":\"none\"} for public APIs."
1010
- },
1011
- "actions": {
1012
- "type": "object",
1013
- "propertyNames": {
1014
- "type": "string",
1015
- "pattern": "^[a-zA-Z0-9_-]{1,64}$"
1016
- },
1017
- "additionalProperties": {
1018
- "type": "object",
1019
- "properties": {
1020
- "method": {
1021
- "type": "string",
1022
- "enum": ["GET", "POST", "PUT", "PATCH", "DELETE"],
1023
- "description": "HTTP method used for this action."
1024
- },
1025
- "path": {
1026
- "type": "string",
1027
- "minLength": 1,
1028
- "pattern": "^\\/",
1029
- "description": "URL path appended to the HTTP API baseUrl."
1030
- },
1031
- "description": {
1032
- "description": "Action capability description.",
1033
- "type": "string",
1034
- "minLength": 1
1035
- },
1036
- "inputSchema": {
1037
- "description": "JSON Schema for call_tool arguments.",
1038
- "type": "object",
1039
- "propertyNames": {
1040
- "type": "string"
1041
- },
1042
- "additionalProperties": {}
1043
- },
1044
- "outputSchema": {
1045
- "description": "JSON Schema for structuredContent returned by this action.",
1046
- "type": "object",
1047
- "propertyNames": {
1048
- "type": "string"
1049
- },
1050
- "additionalProperties": {}
1051
- },
1052
- "query": {
1053
- "description": "Query parameter mapping.",
1054
- "type": "object",
1055
- "propertyNames": {
1056
- "type": "string"
1057
- },
1058
- "additionalProperties": {
1059
- "anyOf": [
1060
- {
1061
- "type": "string"
1062
- },
1063
- {
1064
- "type": "number"
1065
- },
1066
- {
1067
- "type": "boolean"
1068
- }
1069
- ]
1070
- }
1071
- },
1072
- "headers": {
1073
- "description": "Request header mapping.",
1074
- "type": "object",
1075
- "propertyNames": {
1076
- "type": "string"
1077
- },
1078
- "additionalProperties": {
1079
- "anyOf": [
1080
- {
1081
- "type": "string"
1082
- },
1083
- {
1084
- "type": "number"
1085
- },
1086
- {
1087
- "type": "boolean"
1088
- }
1089
- ]
1090
- }
1091
- },
1092
- "jsonBody": {
1093
- "description": "JSON request body mapping."
1094
- }
1095
- },
1096
- "required": ["method", "path"],
1097
- "additionalProperties": false
1098
- },
1099
- "description": "Configured HTTP actions keyed by stable tool name.",
1100
- "minProperties": 1
1101
- },
1102
- "tags": {
1103
- "type": "array",
1104
- "items": {
1105
- "type": "string",
1106
- "minLength": 1,
1107
- "maxLength": 80
1108
- }
1109
- },
1110
- "requestTimeoutMs": {
1111
- "default": 60000,
1112
- "description": "Timeout in milliseconds for HTTP action requests.",
1113
- "type": "integer",
1114
- "exclusiveMinimum": 0,
1115
- "maximum": 9007199254740991
1116
- },
1117
- "maxResponseBytes": {
1118
- "default": 1000000,
1119
- "description": "Maximum HTTP action response body bytes to read.",
1120
- "type": "integer",
1121
- "exclusiveMinimum": 0,
1122
- "maximum": 9007199254740991
1123
- },
1124
- "disabled": {
1125
- "default": false,
1126
- "description": "When true, omit this HTTP API Caplet.",
1127
- "type": "boolean"
1128
- }
1129
- },
1130
- "required": ["name", "description", "baseUrl", "auth", "actions"],
1131
- "additionalProperties": false
1132
- }
1133
- },
1134
- "cliTools": {
1135
- "default": {},
1136
- "description": "CLI tools keyed by stable Caplet ID.",
1137
- "type": "object",
1138
- "propertyNames": {
1139
- "type": "string",
1140
- "pattern": "^[a-zA-Z0-9_-]{1,64}$"
1141
- },
1142
- "additionalProperties": {
1143
- "type": "object",
1144
- "properties": {
1145
- "name": {
1146
- "type": "string",
1147
- "minLength": 1,
1148
- "maxLength": 80,
1149
- "description": "Human-readable CLI tools display name."
1150
- },
1151
- "description": {
1152
- "type": "string",
1153
- "description": "Capability description shown to agents before CLI actions are disclosed."
1154
- },
1155
- "actions": {
1156
- "type": "object",
1157
- "propertyNames": {
1158
- "type": "string",
1159
- "pattern": "^[a-zA-Z0-9_-]{1,64}$"
1160
- },
1161
- "additionalProperties": {
1162
- "type": "object",
1163
- "properties": {
1164
- "description": {
1165
- "description": "Action capability description.",
1166
- "type": "string",
1167
- "minLength": 1
1168
- },
1169
- "inputSchema": {
1170
- "description": "JSON Schema for call_tool arguments.",
1171
- "type": "object",
1172
- "propertyNames": {
1173
- "type": "string"
1174
- },
1175
- "additionalProperties": {}
1176
- },
1177
- "outputSchema": {
1178
- "description": "JSON Schema for structuredContent returned by this action.",
1179
- "type": "object",
1180
- "propertyNames": {
1181
- "type": "string"
1182
- },
1183
- "additionalProperties": {}
1184
- },
1185
- "command": {
1186
- "type": "string",
1187
- "minLength": 1,
1188
- "description": "Executable command to spawn without a shell."
1189
- },
1190
- "args": {
1191
- "description": "Arguments passed to the command.",
1192
- "type": "array",
1193
- "items": {
1194
- "type": "string"
1195
- }
1196
- },
1197
- "env": {
1198
- "description": "Additional environment variables for the command.",
1199
- "type": "object",
1200
- "propertyNames": {
1201
- "type": "string"
1202
- },
1203
- "additionalProperties": {
1204
- "type": "string"
1205
- }
1206
- },
1207
- "cwd": {
1208
- "description": "Working directory for this action.",
1209
- "type": "string",
1210
- "minLength": 1
1211
- },
1212
- "timeoutMs": {
1213
- "description": "Command timeout in milliseconds.",
1214
- "type": "integer",
1215
- "exclusiveMinimum": 0,
1216
- "maximum": 9007199254740991
1217
- },
1218
- "maxOutputBytes": {
1219
- "description": "Maximum combined stdout and stderr bytes to keep.",
1220
- "type": "integer",
1221
- "exclusiveMinimum": 0,
1222
- "maximum": 9007199254740991
1223
- },
1224
- "output": {
1225
- "type": "object",
1226
- "properties": {
1227
- "type": {
1228
- "default": "text",
1229
- "description": "How stdout should be represented in structuredContent.",
1230
- "type": "string",
1231
- "enum": ["text", "json"]
1232
- }
1233
- },
1234
- "additionalProperties": false
1235
- },
1236
- "annotations": {
1237
- "type": "object",
1238
- "properties": {
1239
- "readOnlyHint": {
1240
- "type": "boolean"
1241
- },
1242
- "destructiveHint": {
1243
- "type": "boolean"
1244
- },
1245
- "idempotentHint": {
1246
- "type": "boolean"
1247
- },
1248
- "openWorldHint": {
1249
- "type": "boolean"
1250
- }
1251
- },
1252
- "additionalProperties": false
1253
- }
1254
- },
1255
- "required": ["command"],
1256
- "additionalProperties": false
1257
- },
1258
- "description": "Configured CLI actions keyed by stable tool name.",
1259
- "minProperties": 1
1260
- },
1261
- "cwd": {
1262
- "description": "Default working directory for CLI actions.",
1263
- "type": "string",
1264
- "minLength": 1
1265
- },
1266
- "env": {
1267
- "description": "Default environment variables for CLI actions.",
1268
- "type": "object",
1269
- "propertyNames": {
1270
- "type": "string"
1271
- },
1272
- "additionalProperties": {
1273
- "type": "string"
1274
- }
1275
- },
1276
- "tags": {
1277
- "type": "array",
1278
- "items": {
1279
- "type": "string",
1280
- "minLength": 1,
1281
- "maxLength": 80
1282
- }
1283
- },
1284
- "timeoutMs": {
1285
- "default": 60000,
1286
- "description": "Default timeout in milliseconds for CLI actions.",
1287
- "type": "integer",
1288
- "exclusiveMinimum": 0,
1289
- "maximum": 9007199254740991
1290
- },
1291
- "maxOutputBytes": {
1292
- "default": 1000000,
1293
- "description": "Default maximum combined stdout and stderr bytes to keep.",
1294
- "type": "integer",
1295
- "exclusiveMinimum": 0,
1296
- "maximum": 9007199254740991
1297
- },
1298
- "disabled": {
1299
- "default": false,
1300
- "description": "When true, omit this CLI tools Caplet.",
1301
- "type": "boolean"
1302
- }
1303
- },
1304
- "required": ["name", "description", "actions"],
1305
- "additionalProperties": false
1306
- }
1307
- }
1308
- },
1309
- "additionalProperties": false
1310
- }