@pmxt/mcp 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,1890 @@
1
+ // AUTO-GENERATED by mcp/scripts/generate-tools.js -- DO NOT EDIT
2
+ // Generated from core/src/server/openapi.yaml (2026-04-11)
3
+ export const TOOLS = [
4
+ {
5
+ "name": "buildOrder",
6
+ "description": "Build an order payload without submitting it to the exchange. Returns the exchange-native signed order or request body for inspection, forwarding through a middleware layer, or deferred submission via submitOrder().",
7
+ "inputSchema": {
8
+ "type": "object",
9
+ "properties": {
10
+ "exchange": {
11
+ "type": "string",
12
+ "enum": [
13
+ "polymarket",
14
+ "kalshi",
15
+ "kalshi-demo",
16
+ "limitless",
17
+ "probable",
18
+ "baozi",
19
+ "myriad",
20
+ "opinion",
21
+ "metaculus",
22
+ "smarkets",
23
+ "polymarket_us"
24
+ ],
25
+ "description": "The prediction market exchange to target."
26
+ },
27
+ "marketId": {
28
+ "type": "string",
29
+ "description": "The market to trade on."
30
+ },
31
+ "outcomeId": {
32
+ "type": "string",
33
+ "description": "The outcome to trade."
34
+ },
35
+ "side": {
36
+ "type": "string",
37
+ "enum": [
38
+ "buy",
39
+ "sell"
40
+ ],
41
+ "description": "Order side: buy or sell."
42
+ },
43
+ "type": {
44
+ "type": "string",
45
+ "enum": [
46
+ "market",
47
+ "limit"
48
+ ],
49
+ "description": "Order type: market (execute immediately) or limit (resting at a price)."
50
+ },
51
+ "amount": {
52
+ "type": "number",
53
+ "description": "Size of the order in contracts/shares."
54
+ },
55
+ "price": {
56
+ "type": "number",
57
+ "description": "Required for limit orders"
58
+ },
59
+ "fee": {
60
+ "type": "number",
61
+ "description": "Optional fee rate (e.g., 1000 for 0.1%)"
62
+ },
63
+ "tickSize": {
64
+ "type": "number",
65
+ "description": "Optional override for Limitless/Polymarket"
66
+ },
67
+ "negRisk": {
68
+ "type": "boolean",
69
+ "description": "Optional override to skip neg-risk lookup (Polymarket)"
70
+ },
71
+ "credentials": {
72
+ "type": "object",
73
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
74
+ "properties": {
75
+ "apiKey": {
76
+ "type": "string"
77
+ },
78
+ "apiSecret": {
79
+ "type": "string"
80
+ },
81
+ "passphrase": {
82
+ "type": "string"
83
+ },
84
+ "apiToken": {
85
+ "type": "string"
86
+ },
87
+ "privateKey": {
88
+ "type": "string"
89
+ },
90
+ "signatureType": {
91
+ "type": "string"
92
+ },
93
+ "funderAddress": {
94
+ "type": "string"
95
+ }
96
+ }
97
+ }
98
+ },
99
+ "required": [
100
+ "exchange",
101
+ "marketId",
102
+ "outcomeId",
103
+ "side",
104
+ "type",
105
+ "amount"
106
+ ]
107
+ },
108
+ "annotations": {
109
+ "idempotentHint": true,
110
+ "readOnlyHint": false
111
+ },
112
+ "method": "buildOrder",
113
+ "args": [
114
+ {
115
+ "name": "params",
116
+ "kind": "object",
117
+ "optional": false,
118
+ "flatten": true
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "name": "cancelOrder",
124
+ "description": "Cancel an existing open order.",
125
+ "inputSchema": {
126
+ "type": "object",
127
+ "properties": {
128
+ "exchange": {
129
+ "type": "string",
130
+ "enum": [
131
+ "polymarket",
132
+ "kalshi",
133
+ "kalshi-demo",
134
+ "limitless",
135
+ "probable",
136
+ "baozi",
137
+ "myriad",
138
+ "opinion",
139
+ "metaculus",
140
+ "smarkets",
141
+ "polymarket_us"
142
+ ],
143
+ "description": "The prediction market exchange to target."
144
+ },
145
+ "orderId": {
146
+ "type": "string"
147
+ },
148
+ "credentials": {
149
+ "type": "object",
150
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
151
+ "properties": {
152
+ "apiKey": {
153
+ "type": "string"
154
+ },
155
+ "apiSecret": {
156
+ "type": "string"
157
+ },
158
+ "passphrase": {
159
+ "type": "string"
160
+ },
161
+ "apiToken": {
162
+ "type": "string"
163
+ },
164
+ "privateKey": {
165
+ "type": "string"
166
+ },
167
+ "signatureType": {
168
+ "type": "string"
169
+ },
170
+ "funderAddress": {
171
+ "type": "string"
172
+ }
173
+ }
174
+ }
175
+ },
176
+ "required": [
177
+ "exchange",
178
+ "orderId"
179
+ ]
180
+ },
181
+ "annotations": {
182
+ "destructiveHint": true
183
+ },
184
+ "method": "cancelOrder",
185
+ "args": [
186
+ {
187
+ "name": "orderId",
188
+ "kind": "string",
189
+ "optional": false,
190
+ "flatten": false
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ "name": "createOrder",
196
+ "description": "Place a new order on the exchange.",
197
+ "inputSchema": {
198
+ "type": "object",
199
+ "properties": {
200
+ "exchange": {
201
+ "type": "string",
202
+ "enum": [
203
+ "polymarket",
204
+ "kalshi",
205
+ "kalshi-demo",
206
+ "limitless",
207
+ "probable",
208
+ "baozi",
209
+ "myriad",
210
+ "opinion",
211
+ "metaculus",
212
+ "smarkets",
213
+ "polymarket_us"
214
+ ],
215
+ "description": "The prediction market exchange to target."
216
+ },
217
+ "marketId": {
218
+ "type": "string",
219
+ "description": "The market to trade on."
220
+ },
221
+ "outcomeId": {
222
+ "type": "string",
223
+ "description": "The outcome to trade."
224
+ },
225
+ "side": {
226
+ "type": "string",
227
+ "enum": [
228
+ "buy",
229
+ "sell"
230
+ ],
231
+ "description": "Order side: buy or sell."
232
+ },
233
+ "type": {
234
+ "type": "string",
235
+ "enum": [
236
+ "market",
237
+ "limit"
238
+ ],
239
+ "description": "Order type: market (execute immediately) or limit (resting at a price)."
240
+ },
241
+ "amount": {
242
+ "type": "number",
243
+ "description": "Size of the order in contracts/shares."
244
+ },
245
+ "price": {
246
+ "type": "number",
247
+ "description": "Required for limit orders"
248
+ },
249
+ "fee": {
250
+ "type": "number",
251
+ "description": "Optional fee rate (e.g., 1000 for 0.1%)"
252
+ },
253
+ "tickSize": {
254
+ "type": "number",
255
+ "description": "Optional override for Limitless/Polymarket"
256
+ },
257
+ "negRisk": {
258
+ "type": "boolean",
259
+ "description": "Optional override to skip neg-risk lookup (Polymarket)"
260
+ },
261
+ "credentials": {
262
+ "type": "object",
263
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
264
+ "properties": {
265
+ "apiKey": {
266
+ "type": "string"
267
+ },
268
+ "apiSecret": {
269
+ "type": "string"
270
+ },
271
+ "passphrase": {
272
+ "type": "string"
273
+ },
274
+ "apiToken": {
275
+ "type": "string"
276
+ },
277
+ "privateKey": {
278
+ "type": "string"
279
+ },
280
+ "signatureType": {
281
+ "type": "string"
282
+ },
283
+ "funderAddress": {
284
+ "type": "string"
285
+ }
286
+ }
287
+ }
288
+ },
289
+ "required": [
290
+ "exchange",
291
+ "marketId",
292
+ "outcomeId",
293
+ "side",
294
+ "type",
295
+ "amount"
296
+ ]
297
+ },
298
+ "annotations": {
299
+ "destructiveHint": true
300
+ },
301
+ "method": "createOrder",
302
+ "args": [
303
+ {
304
+ "name": "params",
305
+ "kind": "object",
306
+ "optional": false,
307
+ "flatten": true
308
+ }
309
+ ]
310
+ },
311
+ {
312
+ "name": "fetchAllOrders",
313
+ "description": "Fetch All Orders",
314
+ "inputSchema": {
315
+ "type": "object",
316
+ "properties": {
317
+ "exchange": {
318
+ "type": "string",
319
+ "enum": [
320
+ "polymarket",
321
+ "kalshi",
322
+ "kalshi-demo",
323
+ "limitless",
324
+ "probable",
325
+ "baozi",
326
+ "myriad",
327
+ "opinion",
328
+ "metaculus",
329
+ "smarkets",
330
+ "polymarket_us"
331
+ ],
332
+ "description": "The prediction market exchange to target."
333
+ },
334
+ "marketId": {
335
+ "type": "string",
336
+ "description": "required for Limitless (slug)"
337
+ },
338
+ "since": {
339
+ "type": "string",
340
+ "format": "date-time",
341
+ "description": "Only return records after this date"
342
+ },
343
+ "until": {
344
+ "type": "string",
345
+ "format": "date-time",
346
+ "description": "Only return records before this date"
347
+ },
348
+ "limit": {
349
+ "type": "number",
350
+ "description": "Maximum number of results to return"
351
+ },
352
+ "cursor": {
353
+ "type": "string",
354
+ "description": "Opaque pagination cursor from a previous response"
355
+ },
356
+ "credentials": {
357
+ "type": "object",
358
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
359
+ "properties": {
360
+ "apiKey": {
361
+ "type": "string"
362
+ },
363
+ "apiSecret": {
364
+ "type": "string"
365
+ },
366
+ "passphrase": {
367
+ "type": "string"
368
+ },
369
+ "apiToken": {
370
+ "type": "string"
371
+ },
372
+ "privateKey": {
373
+ "type": "string"
374
+ },
375
+ "signatureType": {
376
+ "type": "string"
377
+ },
378
+ "funderAddress": {
379
+ "type": "string"
380
+ }
381
+ }
382
+ }
383
+ },
384
+ "required": [
385
+ "exchange"
386
+ ]
387
+ },
388
+ "annotations": {
389
+ "readOnlyHint": true
390
+ },
391
+ "method": "fetchAllOrders",
392
+ "args": [
393
+ {
394
+ "name": "params",
395
+ "kind": "object",
396
+ "optional": true,
397
+ "flatten": false
398
+ }
399
+ ]
400
+ },
401
+ {
402
+ "name": "fetchBalance",
403
+ "description": "Fetch account balances.",
404
+ "inputSchema": {
405
+ "type": "object",
406
+ "properties": {
407
+ "exchange": {
408
+ "type": "string",
409
+ "enum": [
410
+ "polymarket",
411
+ "kalshi",
412
+ "kalshi-demo",
413
+ "limitless",
414
+ "probable",
415
+ "baozi",
416
+ "myriad",
417
+ "opinion",
418
+ "metaculus",
419
+ "smarkets",
420
+ "polymarket_us"
421
+ ],
422
+ "description": "The prediction market exchange to target."
423
+ },
424
+ "address": {
425
+ "type": "string"
426
+ },
427
+ "credentials": {
428
+ "type": "object",
429
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
430
+ "properties": {
431
+ "apiKey": {
432
+ "type": "string"
433
+ },
434
+ "apiSecret": {
435
+ "type": "string"
436
+ },
437
+ "passphrase": {
438
+ "type": "string"
439
+ },
440
+ "apiToken": {
441
+ "type": "string"
442
+ },
443
+ "privateKey": {
444
+ "type": "string"
445
+ },
446
+ "signatureType": {
447
+ "type": "string"
448
+ },
449
+ "funderAddress": {
450
+ "type": "string"
451
+ }
452
+ }
453
+ }
454
+ },
455
+ "required": [
456
+ "exchange"
457
+ ]
458
+ },
459
+ "annotations": {
460
+ "readOnlyHint": true
461
+ },
462
+ "method": "fetchBalance",
463
+ "args": [
464
+ {
465
+ "name": "address",
466
+ "kind": "string",
467
+ "optional": true,
468
+ "flatten": false
469
+ }
470
+ ]
471
+ },
472
+ {
473
+ "name": "fetchClosedOrders",
474
+ "description": "Fetch Closed Orders",
475
+ "inputSchema": {
476
+ "type": "object",
477
+ "properties": {
478
+ "exchange": {
479
+ "type": "string",
480
+ "enum": [
481
+ "polymarket",
482
+ "kalshi",
483
+ "kalshi-demo",
484
+ "limitless",
485
+ "probable",
486
+ "baozi",
487
+ "myriad",
488
+ "opinion",
489
+ "metaculus",
490
+ "smarkets",
491
+ "polymarket_us"
492
+ ],
493
+ "description": "The prediction market exchange to target."
494
+ },
495
+ "marketId": {
496
+ "type": "string",
497
+ "description": "required for Limitless (slug)"
498
+ },
499
+ "since": {
500
+ "type": "string",
501
+ "format": "date-time",
502
+ "description": "Only return records after this date"
503
+ },
504
+ "until": {
505
+ "type": "string",
506
+ "format": "date-time",
507
+ "description": "Only return records before this date"
508
+ },
509
+ "limit": {
510
+ "type": "number",
511
+ "description": "Maximum number of results to return"
512
+ },
513
+ "cursor": {
514
+ "type": "string",
515
+ "description": "Opaque pagination cursor from a previous response"
516
+ },
517
+ "credentials": {
518
+ "type": "object",
519
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
520
+ "properties": {
521
+ "apiKey": {
522
+ "type": "string"
523
+ },
524
+ "apiSecret": {
525
+ "type": "string"
526
+ },
527
+ "passphrase": {
528
+ "type": "string"
529
+ },
530
+ "apiToken": {
531
+ "type": "string"
532
+ },
533
+ "privateKey": {
534
+ "type": "string"
535
+ },
536
+ "signatureType": {
537
+ "type": "string"
538
+ },
539
+ "funderAddress": {
540
+ "type": "string"
541
+ }
542
+ }
543
+ }
544
+ },
545
+ "required": [
546
+ "exchange"
547
+ ]
548
+ },
549
+ "annotations": {
550
+ "readOnlyHint": true
551
+ },
552
+ "method": "fetchClosedOrders",
553
+ "args": [
554
+ {
555
+ "name": "params",
556
+ "kind": "object",
557
+ "optional": true,
558
+ "flatten": false
559
+ }
560
+ ]
561
+ },
562
+ {
563
+ "name": "fetchEvent",
564
+ "description": "Fetch a single event by lookup parameters. Convenience wrapper around fetchEvents() that returns a single result or throws EventNotFound.",
565
+ "inputSchema": {
566
+ "type": "object",
567
+ "properties": {
568
+ "exchange": {
569
+ "type": "string",
570
+ "enum": [
571
+ "polymarket",
572
+ "kalshi",
573
+ "kalshi-demo",
574
+ "limitless",
575
+ "probable",
576
+ "baozi",
577
+ "myriad",
578
+ "opinion",
579
+ "metaculus",
580
+ "smarkets",
581
+ "polymarket_us"
582
+ ],
583
+ "description": "The prediction market exchange to target."
584
+ },
585
+ "query": {
586
+ "type": "string",
587
+ "description": "For keyword search"
588
+ },
589
+ "limit": {
590
+ "type": "number",
591
+ "description": "Maximum number of results to return"
592
+ },
593
+ "offset": {
594
+ "type": "number",
595
+ "description": "Pagination offset — number of results to skip"
596
+ },
597
+ "sort": {
598
+ "type": "string",
599
+ "enum": [
600
+ "volume",
601
+ "liquidity",
602
+ "newest"
603
+ ],
604
+ "description": "Sort order for results"
605
+ },
606
+ "status": {
607
+ "type": "string",
608
+ "enum": [
609
+ "active",
610
+ "inactive",
611
+ "closed",
612
+ "all"
613
+ ],
614
+ "description": "Filter by event status (default: 'active', 'inactive' and 'closed' are interchangeable)"
615
+ },
616
+ "searchIn": {
617
+ "type": "string",
618
+ "enum": [
619
+ "title",
620
+ "description",
621
+ "both"
622
+ ],
623
+ "description": "Where to search (default: 'title')"
624
+ },
625
+ "eventId": {
626
+ "type": "string",
627
+ "description": "Direct lookup by event ID"
628
+ },
629
+ "slug": {
630
+ "type": "string",
631
+ "description": "Lookup by event slug"
632
+ }
633
+ },
634
+ "required": [
635
+ "exchange"
636
+ ]
637
+ },
638
+ "annotations": {
639
+ "readOnlyHint": true
640
+ },
641
+ "method": "fetchEvent",
642
+ "args": [
643
+ {
644
+ "name": "params",
645
+ "kind": "object",
646
+ "optional": true,
647
+ "flatten": false
648
+ }
649
+ ]
650
+ },
651
+ {
652
+ "name": "fetchEvents",
653
+ "description": "Fetch events with optional keyword search. Events group related markets together (e.g., \"Who will be Fed Chair?\" contains multiple candidate markets).",
654
+ "inputSchema": {
655
+ "type": "object",
656
+ "properties": {
657
+ "exchange": {
658
+ "type": "string",
659
+ "enum": [
660
+ "polymarket",
661
+ "kalshi",
662
+ "kalshi-demo",
663
+ "limitless",
664
+ "probable",
665
+ "baozi",
666
+ "myriad",
667
+ "opinion",
668
+ "metaculus",
669
+ "smarkets",
670
+ "polymarket_us"
671
+ ],
672
+ "description": "The prediction market exchange to target."
673
+ },
674
+ "query": {
675
+ "type": "string",
676
+ "description": "For keyword search"
677
+ },
678
+ "limit": {
679
+ "type": "number",
680
+ "description": "Maximum number of results to return"
681
+ },
682
+ "offset": {
683
+ "type": "number",
684
+ "description": "Pagination offset — number of results to skip"
685
+ },
686
+ "sort": {
687
+ "type": "string",
688
+ "enum": [
689
+ "volume",
690
+ "liquidity",
691
+ "newest"
692
+ ],
693
+ "description": "Sort order for results"
694
+ },
695
+ "status": {
696
+ "type": "string",
697
+ "enum": [
698
+ "active",
699
+ "inactive",
700
+ "closed",
701
+ "all"
702
+ ],
703
+ "description": "Filter by event status (default: 'active', 'inactive' and 'closed' are interchangeable)"
704
+ },
705
+ "searchIn": {
706
+ "type": "string",
707
+ "enum": [
708
+ "title",
709
+ "description",
710
+ "both"
711
+ ],
712
+ "description": "Where to search (default: 'title')"
713
+ },
714
+ "eventId": {
715
+ "type": "string",
716
+ "description": "Direct lookup by event ID"
717
+ },
718
+ "slug": {
719
+ "type": "string",
720
+ "description": "Lookup by event slug"
721
+ }
722
+ },
723
+ "required": [
724
+ "exchange"
725
+ ]
726
+ },
727
+ "annotations": {
728
+ "readOnlyHint": true
729
+ },
730
+ "method": "fetchEvents",
731
+ "args": [
732
+ {
733
+ "name": "params",
734
+ "kind": "object",
735
+ "optional": true,
736
+ "flatten": false
737
+ }
738
+ ]
739
+ },
740
+ {
741
+ "name": "fetchMarket",
742
+ "description": "Fetch a single market by lookup parameters. Convenience wrapper around fetchMarkets() that returns a single result or throws MarketNotFound.",
743
+ "inputSchema": {
744
+ "type": "object",
745
+ "properties": {
746
+ "exchange": {
747
+ "type": "string",
748
+ "enum": [
749
+ "polymarket",
750
+ "kalshi",
751
+ "kalshi-demo",
752
+ "limitless",
753
+ "probable",
754
+ "baozi",
755
+ "myriad",
756
+ "opinion",
757
+ "metaculus",
758
+ "smarkets",
759
+ "polymarket_us"
760
+ ],
761
+ "description": "The prediction market exchange to target."
762
+ },
763
+ "limit": {
764
+ "type": "number",
765
+ "description": "Maximum number of results to return"
766
+ },
767
+ "offset": {
768
+ "type": "number",
769
+ "description": "Pagination offset — number of results to skip"
770
+ },
771
+ "sort": {
772
+ "type": "string",
773
+ "enum": [
774
+ "volume",
775
+ "liquidity",
776
+ "newest"
777
+ ],
778
+ "description": "Sort order for results"
779
+ },
780
+ "status": {
781
+ "type": "string",
782
+ "enum": [
783
+ "active",
784
+ "inactive",
785
+ "closed",
786
+ "all"
787
+ ],
788
+ "description": "Filter by market status (default: 'active', 'inactive' and 'closed' are interchangeable)"
789
+ },
790
+ "searchIn": {
791
+ "type": "string",
792
+ "enum": [
793
+ "title",
794
+ "description",
795
+ "both"
796
+ ],
797
+ "description": "Where to search (default: 'title')"
798
+ },
799
+ "query": {
800
+ "type": "string",
801
+ "description": "For keyword search"
802
+ },
803
+ "slug": {
804
+ "type": "string",
805
+ "description": "For slug/ticker lookup"
806
+ },
807
+ "marketId": {
808
+ "type": "string",
809
+ "description": "Direct lookup by market ID"
810
+ },
811
+ "outcomeId": {
812
+ "type": "string",
813
+ "description": "Reverse lookup -- find market containing this outcome"
814
+ },
815
+ "eventId": {
816
+ "type": "string",
817
+ "description": "Find markets belonging to an event"
818
+ },
819
+ "page": {
820
+ "type": "number",
821
+ "description": "For pagination (used by Limitless)"
822
+ },
823
+ "similarityThreshold": {
824
+ "type": "number",
825
+ "description": "For semantic search (used by Limitless)"
826
+ }
827
+ },
828
+ "required": [
829
+ "exchange"
830
+ ]
831
+ },
832
+ "annotations": {
833
+ "readOnlyHint": true
834
+ },
835
+ "method": "fetchMarket",
836
+ "args": [
837
+ {
838
+ "name": "params",
839
+ "kind": "object",
840
+ "optional": true,
841
+ "flatten": false
842
+ }
843
+ ]
844
+ },
845
+ {
846
+ "name": "fetchMarkets",
847
+ "description": "Fetch markets with optional filtering, search, or slug lookup. Always hits the exchange API — results reflect the live state at the time of the call.",
848
+ "inputSchema": {
849
+ "type": "object",
850
+ "properties": {
851
+ "exchange": {
852
+ "type": "string",
853
+ "enum": [
854
+ "polymarket",
855
+ "kalshi",
856
+ "kalshi-demo",
857
+ "limitless",
858
+ "probable",
859
+ "baozi",
860
+ "myriad",
861
+ "opinion",
862
+ "metaculus",
863
+ "smarkets",
864
+ "polymarket_us"
865
+ ],
866
+ "description": "The prediction market exchange to target."
867
+ },
868
+ "limit": {
869
+ "type": "number",
870
+ "description": "Maximum number of results to return"
871
+ },
872
+ "offset": {
873
+ "type": "number",
874
+ "description": "Pagination offset — number of results to skip"
875
+ },
876
+ "sort": {
877
+ "type": "string",
878
+ "enum": [
879
+ "volume",
880
+ "liquidity",
881
+ "newest"
882
+ ],
883
+ "description": "Sort order for results"
884
+ },
885
+ "status": {
886
+ "type": "string",
887
+ "enum": [
888
+ "active",
889
+ "inactive",
890
+ "closed",
891
+ "all"
892
+ ],
893
+ "description": "Filter by market status (default: 'active', 'inactive' and 'closed' are interchangeable)"
894
+ },
895
+ "searchIn": {
896
+ "type": "string",
897
+ "enum": [
898
+ "title",
899
+ "description",
900
+ "both"
901
+ ],
902
+ "description": "Where to search (default: 'title')"
903
+ },
904
+ "query": {
905
+ "type": "string",
906
+ "description": "For keyword search"
907
+ },
908
+ "slug": {
909
+ "type": "string",
910
+ "description": "For slug/ticker lookup"
911
+ },
912
+ "marketId": {
913
+ "type": "string",
914
+ "description": "Direct lookup by market ID"
915
+ },
916
+ "outcomeId": {
917
+ "type": "string",
918
+ "description": "Reverse lookup -- find market containing this outcome"
919
+ },
920
+ "eventId": {
921
+ "type": "string",
922
+ "description": "Find markets belonging to an event"
923
+ },
924
+ "page": {
925
+ "type": "number",
926
+ "description": "For pagination (used by Limitless)"
927
+ },
928
+ "similarityThreshold": {
929
+ "type": "number",
930
+ "description": "For semantic search (used by Limitless)"
931
+ }
932
+ },
933
+ "required": [
934
+ "exchange"
935
+ ]
936
+ },
937
+ "annotations": {
938
+ "readOnlyHint": true
939
+ },
940
+ "method": "fetchMarkets",
941
+ "args": [
942
+ {
943
+ "name": "params",
944
+ "kind": "object",
945
+ "optional": true,
946
+ "flatten": false
947
+ }
948
+ ]
949
+ },
950
+ {
951
+ "name": "fetchMarketsPaginated",
952
+ "description": "Fetch markets with cursor-based pagination backed by a stable in-memory snapshot. On the first call (or when no cursor is supplied), fetches all markets once and caches them. Subsequent calls with a cursor returned from a previous call slice directly from the cached snapshot — no additional API calls are made. The snapshot is invalidated after `snapshotTTL` ms (configured via `ExchangeOptions` in the constructor). A request using a cursor from an expired snapshot throws `'Cursor has expired'`.",
953
+ "inputSchema": {
954
+ "type": "object",
955
+ "properties": {
956
+ "exchange": {
957
+ "type": "string",
958
+ "enum": [
959
+ "polymarket",
960
+ "kalshi",
961
+ "kalshi-demo",
962
+ "limitless",
963
+ "probable",
964
+ "baozi",
965
+ "myriad",
966
+ "opinion",
967
+ "metaculus",
968
+ "smarkets",
969
+ "polymarket_us"
970
+ ],
971
+ "description": "The prediction market exchange to target."
972
+ },
973
+ "limit": {
974
+ "type": "number"
975
+ },
976
+ "cursor": {
977
+ "type": "string"
978
+ }
979
+ },
980
+ "required": [
981
+ "exchange"
982
+ ]
983
+ },
984
+ "annotations": {
985
+ "readOnlyHint": true
986
+ },
987
+ "method": "fetchMarketsPaginated",
988
+ "args": [
989
+ {
990
+ "name": "params",
991
+ "kind": "object",
992
+ "optional": true,
993
+ "flatten": false
994
+ }
995
+ ]
996
+ },
997
+ {
998
+ "name": "fetchMyTrades",
999
+ "description": "Fetch My Trades",
1000
+ "inputSchema": {
1001
+ "type": "object",
1002
+ "properties": {
1003
+ "exchange": {
1004
+ "type": "string",
1005
+ "enum": [
1006
+ "polymarket",
1007
+ "kalshi",
1008
+ "kalshi-demo",
1009
+ "limitless",
1010
+ "probable",
1011
+ "baozi",
1012
+ "myriad",
1013
+ "opinion",
1014
+ "metaculus",
1015
+ "smarkets",
1016
+ "polymarket_us"
1017
+ ],
1018
+ "description": "The prediction market exchange to target."
1019
+ },
1020
+ "outcomeId": {
1021
+ "type": "string",
1022
+ "description": "filter to specific outcome/ticker"
1023
+ },
1024
+ "marketId": {
1025
+ "type": "string",
1026
+ "description": "filter to specific market"
1027
+ },
1028
+ "since": {
1029
+ "type": "string",
1030
+ "format": "date-time",
1031
+ "description": "Only return records after this date"
1032
+ },
1033
+ "until": {
1034
+ "type": "string",
1035
+ "format": "date-time",
1036
+ "description": "Only return records before this date"
1037
+ },
1038
+ "limit": {
1039
+ "type": "number",
1040
+ "description": "Maximum number of results to return"
1041
+ },
1042
+ "cursor": {
1043
+ "type": "string",
1044
+ "description": "for Kalshi cursor pagination"
1045
+ },
1046
+ "credentials": {
1047
+ "type": "object",
1048
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
1049
+ "properties": {
1050
+ "apiKey": {
1051
+ "type": "string"
1052
+ },
1053
+ "apiSecret": {
1054
+ "type": "string"
1055
+ },
1056
+ "passphrase": {
1057
+ "type": "string"
1058
+ },
1059
+ "apiToken": {
1060
+ "type": "string"
1061
+ },
1062
+ "privateKey": {
1063
+ "type": "string"
1064
+ },
1065
+ "signatureType": {
1066
+ "type": "string"
1067
+ },
1068
+ "funderAddress": {
1069
+ "type": "string"
1070
+ }
1071
+ }
1072
+ }
1073
+ },
1074
+ "required": [
1075
+ "exchange"
1076
+ ]
1077
+ },
1078
+ "annotations": {
1079
+ "readOnlyHint": true
1080
+ },
1081
+ "method": "fetchMyTrades",
1082
+ "args": [
1083
+ {
1084
+ "name": "params",
1085
+ "kind": "object",
1086
+ "optional": true,
1087
+ "flatten": false
1088
+ }
1089
+ ]
1090
+ },
1091
+ {
1092
+ "name": "fetchOHLCV",
1093
+ "description": "Fetch historical OHLCV (candlestick) price data for a specific market outcome.",
1094
+ "inputSchema": {
1095
+ "type": "object",
1096
+ "properties": {
1097
+ "exchange": {
1098
+ "type": "string",
1099
+ "enum": [
1100
+ "polymarket",
1101
+ "kalshi",
1102
+ "kalshi-demo",
1103
+ "limitless",
1104
+ "probable",
1105
+ "baozi",
1106
+ "myriad",
1107
+ "opinion",
1108
+ "metaculus",
1109
+ "smarkets",
1110
+ "polymarket_us"
1111
+ ],
1112
+ "description": "The prediction market exchange to target."
1113
+ },
1114
+ "id": {
1115
+ "type": "string"
1116
+ },
1117
+ "resolution": {
1118
+ "type": "string",
1119
+ "enum": [
1120
+ "1m",
1121
+ "5m",
1122
+ "15m",
1123
+ "1h",
1124
+ "6h",
1125
+ "1d"
1126
+ ],
1127
+ "description": "Required for candle aggregation"
1128
+ },
1129
+ "start": {
1130
+ "type": "string",
1131
+ "format": "date-time",
1132
+ "description": "Start of the time range"
1133
+ },
1134
+ "end": {
1135
+ "type": "string",
1136
+ "format": "date-time",
1137
+ "description": "End of the time range"
1138
+ },
1139
+ "limit": {
1140
+ "type": "number",
1141
+ "description": "Maximum number of results to return"
1142
+ }
1143
+ },
1144
+ "required": [
1145
+ "exchange",
1146
+ "id"
1147
+ ]
1148
+ },
1149
+ "annotations": {
1150
+ "readOnlyHint": true
1151
+ },
1152
+ "method": "fetchOHLCV",
1153
+ "args": [
1154
+ {
1155
+ "name": "id",
1156
+ "kind": "string",
1157
+ "optional": false,
1158
+ "flatten": false
1159
+ },
1160
+ {
1161
+ "name": "params",
1162
+ "kind": "object",
1163
+ "optional": false,
1164
+ "flatten": false
1165
+ }
1166
+ ]
1167
+ },
1168
+ {
1169
+ "name": "fetchOpenOrders",
1170
+ "description": "Fetch all open orders, optionally filtered by market.",
1171
+ "inputSchema": {
1172
+ "type": "object",
1173
+ "properties": {
1174
+ "exchange": {
1175
+ "type": "string",
1176
+ "enum": [
1177
+ "polymarket",
1178
+ "kalshi",
1179
+ "kalshi-demo",
1180
+ "limitless",
1181
+ "probable",
1182
+ "baozi",
1183
+ "myriad",
1184
+ "opinion",
1185
+ "metaculus",
1186
+ "smarkets",
1187
+ "polymarket_us"
1188
+ ],
1189
+ "description": "The prediction market exchange to target."
1190
+ },
1191
+ "marketId": {
1192
+ "type": "string"
1193
+ },
1194
+ "credentials": {
1195
+ "type": "object",
1196
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
1197
+ "properties": {
1198
+ "apiKey": {
1199
+ "type": "string"
1200
+ },
1201
+ "apiSecret": {
1202
+ "type": "string"
1203
+ },
1204
+ "passphrase": {
1205
+ "type": "string"
1206
+ },
1207
+ "apiToken": {
1208
+ "type": "string"
1209
+ },
1210
+ "privateKey": {
1211
+ "type": "string"
1212
+ },
1213
+ "signatureType": {
1214
+ "type": "string"
1215
+ },
1216
+ "funderAddress": {
1217
+ "type": "string"
1218
+ }
1219
+ }
1220
+ }
1221
+ },
1222
+ "required": [
1223
+ "exchange"
1224
+ ]
1225
+ },
1226
+ "annotations": {
1227
+ "readOnlyHint": true
1228
+ },
1229
+ "method": "fetchOpenOrders",
1230
+ "args": [
1231
+ {
1232
+ "name": "marketId",
1233
+ "kind": "string",
1234
+ "optional": true,
1235
+ "flatten": false
1236
+ }
1237
+ ]
1238
+ },
1239
+ {
1240
+ "name": "fetchOrder",
1241
+ "description": "Fetch a specific order by ID.",
1242
+ "inputSchema": {
1243
+ "type": "object",
1244
+ "properties": {
1245
+ "exchange": {
1246
+ "type": "string",
1247
+ "enum": [
1248
+ "polymarket",
1249
+ "kalshi",
1250
+ "kalshi-demo",
1251
+ "limitless",
1252
+ "probable",
1253
+ "baozi",
1254
+ "myriad",
1255
+ "opinion",
1256
+ "metaculus",
1257
+ "smarkets",
1258
+ "polymarket_us"
1259
+ ],
1260
+ "description": "The prediction market exchange to target."
1261
+ },
1262
+ "orderId": {
1263
+ "type": "string"
1264
+ },
1265
+ "credentials": {
1266
+ "type": "object",
1267
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
1268
+ "properties": {
1269
+ "apiKey": {
1270
+ "type": "string"
1271
+ },
1272
+ "apiSecret": {
1273
+ "type": "string"
1274
+ },
1275
+ "passphrase": {
1276
+ "type": "string"
1277
+ },
1278
+ "apiToken": {
1279
+ "type": "string"
1280
+ },
1281
+ "privateKey": {
1282
+ "type": "string"
1283
+ },
1284
+ "signatureType": {
1285
+ "type": "string"
1286
+ },
1287
+ "funderAddress": {
1288
+ "type": "string"
1289
+ }
1290
+ }
1291
+ }
1292
+ },
1293
+ "required": [
1294
+ "exchange",
1295
+ "orderId"
1296
+ ]
1297
+ },
1298
+ "annotations": {
1299
+ "readOnlyHint": true
1300
+ },
1301
+ "method": "fetchOrder",
1302
+ "args": [
1303
+ {
1304
+ "name": "orderId",
1305
+ "kind": "string",
1306
+ "optional": false,
1307
+ "flatten": false
1308
+ }
1309
+ ]
1310
+ },
1311
+ {
1312
+ "name": "fetchOrderBook",
1313
+ "description": "Fetch the current order book (bids/asks) for a specific outcome. Essential for calculating spread, depth, and execution prices.",
1314
+ "inputSchema": {
1315
+ "type": "object",
1316
+ "properties": {
1317
+ "exchange": {
1318
+ "type": "string",
1319
+ "enum": [
1320
+ "polymarket",
1321
+ "kalshi",
1322
+ "kalshi-demo",
1323
+ "limitless",
1324
+ "probable",
1325
+ "baozi",
1326
+ "myriad",
1327
+ "opinion",
1328
+ "metaculus",
1329
+ "smarkets",
1330
+ "polymarket_us"
1331
+ ],
1332
+ "description": "The prediction market exchange to target."
1333
+ },
1334
+ "id": {
1335
+ "type": "string"
1336
+ }
1337
+ },
1338
+ "required": [
1339
+ "exchange",
1340
+ "id"
1341
+ ]
1342
+ },
1343
+ "annotations": {
1344
+ "readOnlyHint": true
1345
+ },
1346
+ "method": "fetchOrderBook",
1347
+ "args": [
1348
+ {
1349
+ "name": "id",
1350
+ "kind": "string",
1351
+ "optional": false,
1352
+ "flatten": false
1353
+ }
1354
+ ]
1355
+ },
1356
+ {
1357
+ "name": "fetchPositions",
1358
+ "description": "Fetch current user positions across all markets.",
1359
+ "inputSchema": {
1360
+ "type": "object",
1361
+ "properties": {
1362
+ "exchange": {
1363
+ "type": "string",
1364
+ "enum": [
1365
+ "polymarket",
1366
+ "kalshi",
1367
+ "kalshi-demo",
1368
+ "limitless",
1369
+ "probable",
1370
+ "baozi",
1371
+ "myriad",
1372
+ "opinion",
1373
+ "metaculus",
1374
+ "smarkets",
1375
+ "polymarket_us"
1376
+ ],
1377
+ "description": "The prediction market exchange to target."
1378
+ },
1379
+ "address": {
1380
+ "type": "string"
1381
+ },
1382
+ "credentials": {
1383
+ "type": "object",
1384
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
1385
+ "properties": {
1386
+ "apiKey": {
1387
+ "type": "string"
1388
+ },
1389
+ "apiSecret": {
1390
+ "type": "string"
1391
+ },
1392
+ "passphrase": {
1393
+ "type": "string"
1394
+ },
1395
+ "apiToken": {
1396
+ "type": "string"
1397
+ },
1398
+ "privateKey": {
1399
+ "type": "string"
1400
+ },
1401
+ "signatureType": {
1402
+ "type": "string"
1403
+ },
1404
+ "funderAddress": {
1405
+ "type": "string"
1406
+ }
1407
+ }
1408
+ }
1409
+ },
1410
+ "required": [
1411
+ "exchange"
1412
+ ]
1413
+ },
1414
+ "annotations": {
1415
+ "readOnlyHint": true
1416
+ },
1417
+ "method": "fetchPositions",
1418
+ "args": [
1419
+ {
1420
+ "name": "address",
1421
+ "kind": "string",
1422
+ "optional": true,
1423
+ "flatten": false
1424
+ }
1425
+ ]
1426
+ },
1427
+ {
1428
+ "name": "fetchTrades",
1429
+ "description": "Fetch raw trade history for a specific outcome.",
1430
+ "inputSchema": {
1431
+ "type": "object",
1432
+ "properties": {
1433
+ "exchange": {
1434
+ "type": "string",
1435
+ "enum": [
1436
+ "polymarket",
1437
+ "kalshi",
1438
+ "kalshi-demo",
1439
+ "limitless",
1440
+ "probable",
1441
+ "baozi",
1442
+ "myriad",
1443
+ "opinion",
1444
+ "metaculus",
1445
+ "smarkets",
1446
+ "polymarket_us"
1447
+ ],
1448
+ "description": "The prediction market exchange to target."
1449
+ },
1450
+ "id": {
1451
+ "type": "string"
1452
+ },
1453
+ "start": {
1454
+ "type": "string",
1455
+ "format": "date-time",
1456
+ "description": "Start of the time range"
1457
+ },
1458
+ "end": {
1459
+ "type": "string",
1460
+ "format": "date-time",
1461
+ "description": "End of the time range"
1462
+ },
1463
+ "limit": {
1464
+ "type": "number",
1465
+ "description": "Maximum number of results to return"
1466
+ }
1467
+ },
1468
+ "required": [
1469
+ "exchange",
1470
+ "id"
1471
+ ]
1472
+ },
1473
+ "annotations": {
1474
+ "readOnlyHint": true
1475
+ },
1476
+ "method": "fetchTrades",
1477
+ "args": [
1478
+ {
1479
+ "name": "id",
1480
+ "kind": "string",
1481
+ "optional": false,
1482
+ "flatten": false
1483
+ },
1484
+ {
1485
+ "name": "params",
1486
+ "kind": "object",
1487
+ "optional": false,
1488
+ "flatten": false
1489
+ }
1490
+ ]
1491
+ },
1492
+ {
1493
+ "name": "getExecutionPrice",
1494
+ "description": "Calculate the volume-weighted average execution price for a given order size. Returns 0 if the order cannot be fully filled.",
1495
+ "inputSchema": {
1496
+ "type": "object",
1497
+ "properties": {
1498
+ "exchange": {
1499
+ "type": "string",
1500
+ "enum": [
1501
+ "polymarket",
1502
+ "kalshi",
1503
+ "kalshi-demo",
1504
+ "limitless",
1505
+ "probable",
1506
+ "baozi",
1507
+ "myriad",
1508
+ "opinion",
1509
+ "metaculus",
1510
+ "smarkets",
1511
+ "polymarket_us"
1512
+ ],
1513
+ "description": "The prediction market exchange to target."
1514
+ },
1515
+ "orderBook": {
1516
+ "type": "object",
1517
+ "description": "Order book with bids and asks arrays. Each level has price and size.",
1518
+ "properties": {
1519
+ "bids": {
1520
+ "type": "array",
1521
+ "items": {
1522
+ "type": "object",
1523
+ "properties": {
1524
+ "price": {
1525
+ "type": "number"
1526
+ },
1527
+ "size": {
1528
+ "type": "number"
1529
+ }
1530
+ }
1531
+ }
1532
+ },
1533
+ "asks": {
1534
+ "type": "array",
1535
+ "items": {
1536
+ "type": "object",
1537
+ "properties": {
1538
+ "price": {
1539
+ "type": "number"
1540
+ },
1541
+ "size": {
1542
+ "type": "number"
1543
+ }
1544
+ }
1545
+ }
1546
+ }
1547
+ }
1548
+ },
1549
+ "side": {
1550
+ "type": "string",
1551
+ "enum": [
1552
+ "buy",
1553
+ "sell"
1554
+ ]
1555
+ },
1556
+ "amount": {
1557
+ "type": "number"
1558
+ }
1559
+ },
1560
+ "required": [
1561
+ "exchange",
1562
+ "orderBook",
1563
+ "side",
1564
+ "amount"
1565
+ ]
1566
+ },
1567
+ "annotations": {
1568
+ "idempotentHint": true,
1569
+ "readOnlyHint": false
1570
+ },
1571
+ "method": "getExecutionPrice",
1572
+ "args": [
1573
+ {
1574
+ "name": "orderBook",
1575
+ "kind": "object",
1576
+ "optional": false,
1577
+ "flatten": false
1578
+ },
1579
+ {
1580
+ "name": "side",
1581
+ "kind": "unknown",
1582
+ "optional": false,
1583
+ "flatten": false
1584
+ },
1585
+ {
1586
+ "name": "amount",
1587
+ "kind": "number",
1588
+ "optional": false,
1589
+ "flatten": false
1590
+ }
1591
+ ]
1592
+ },
1593
+ {
1594
+ "name": "getExecutionPriceDetailed",
1595
+ "description": "Calculate detailed execution price information including partial fill data.",
1596
+ "inputSchema": {
1597
+ "type": "object",
1598
+ "properties": {
1599
+ "exchange": {
1600
+ "type": "string",
1601
+ "enum": [
1602
+ "polymarket",
1603
+ "kalshi",
1604
+ "kalshi-demo",
1605
+ "limitless",
1606
+ "probable",
1607
+ "baozi",
1608
+ "myriad",
1609
+ "opinion",
1610
+ "metaculus",
1611
+ "smarkets",
1612
+ "polymarket_us"
1613
+ ],
1614
+ "description": "The prediction market exchange to target."
1615
+ },
1616
+ "orderBook": {
1617
+ "type": "object",
1618
+ "description": "Order book with bids and asks arrays. Each level has price and size.",
1619
+ "properties": {
1620
+ "bids": {
1621
+ "type": "array",
1622
+ "items": {
1623
+ "type": "object",
1624
+ "properties": {
1625
+ "price": {
1626
+ "type": "number"
1627
+ },
1628
+ "size": {
1629
+ "type": "number"
1630
+ }
1631
+ }
1632
+ }
1633
+ },
1634
+ "asks": {
1635
+ "type": "array",
1636
+ "items": {
1637
+ "type": "object",
1638
+ "properties": {
1639
+ "price": {
1640
+ "type": "number"
1641
+ },
1642
+ "size": {
1643
+ "type": "number"
1644
+ }
1645
+ }
1646
+ }
1647
+ }
1648
+ }
1649
+ },
1650
+ "side": {
1651
+ "type": "string",
1652
+ "enum": [
1653
+ "buy",
1654
+ "sell"
1655
+ ]
1656
+ },
1657
+ "amount": {
1658
+ "type": "number"
1659
+ }
1660
+ },
1661
+ "required": [
1662
+ "exchange",
1663
+ "orderBook",
1664
+ "side",
1665
+ "amount"
1666
+ ]
1667
+ },
1668
+ "annotations": {
1669
+ "idempotentHint": true,
1670
+ "readOnlyHint": false
1671
+ },
1672
+ "method": "getExecutionPriceDetailed",
1673
+ "args": [
1674
+ {
1675
+ "name": "orderBook",
1676
+ "kind": "object",
1677
+ "optional": false,
1678
+ "flatten": false
1679
+ },
1680
+ {
1681
+ "name": "side",
1682
+ "kind": "unknown",
1683
+ "optional": false,
1684
+ "flatten": false
1685
+ },
1686
+ {
1687
+ "name": "amount",
1688
+ "kind": "number",
1689
+ "optional": false,
1690
+ "flatten": false
1691
+ }
1692
+ ]
1693
+ },
1694
+ {
1695
+ "name": "loadMarkets",
1696
+ "description": "Load and cache all markets from the exchange into `this.markets` and `this.marketsBySlug`. Subsequent calls return the cached result without hitting the API again. This is the correct way to paginate or iterate over markets without drift. Because `fetchMarkets()` always hits the API, repeated calls with different `offset` values may return inconsistent results if the exchange reorders or adds markets between requests. Use `loadMarkets()` once to get a stable snapshot, then paginate over `Object.values(exchange.markets)` locally.",
1697
+ "inputSchema": {
1698
+ "type": "object",
1699
+ "properties": {
1700
+ "exchange": {
1701
+ "type": "string",
1702
+ "enum": [
1703
+ "polymarket",
1704
+ "kalshi",
1705
+ "kalshi-demo",
1706
+ "limitless",
1707
+ "probable",
1708
+ "baozi",
1709
+ "myriad",
1710
+ "opinion",
1711
+ "metaculus",
1712
+ "smarkets",
1713
+ "polymarket_us"
1714
+ ],
1715
+ "description": "The prediction market exchange to target."
1716
+ },
1717
+ "reload": {
1718
+ "type": "boolean"
1719
+ },
1720
+ "credentials": {
1721
+ "type": "object",
1722
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
1723
+ "properties": {
1724
+ "apiKey": {
1725
+ "type": "string"
1726
+ },
1727
+ "apiSecret": {
1728
+ "type": "string"
1729
+ },
1730
+ "passphrase": {
1731
+ "type": "string"
1732
+ },
1733
+ "apiToken": {
1734
+ "type": "string"
1735
+ },
1736
+ "privateKey": {
1737
+ "type": "string"
1738
+ },
1739
+ "signatureType": {
1740
+ "type": "string"
1741
+ },
1742
+ "funderAddress": {
1743
+ "type": "string"
1744
+ }
1745
+ }
1746
+ }
1747
+ },
1748
+ "required": [
1749
+ "exchange"
1750
+ ]
1751
+ },
1752
+ "annotations": {
1753
+ "idempotentHint": true,
1754
+ "readOnlyHint": false
1755
+ },
1756
+ "method": "loadMarkets",
1757
+ "args": [
1758
+ {
1759
+ "name": "reload",
1760
+ "kind": "boolean",
1761
+ "optional": true,
1762
+ "flatten": false
1763
+ }
1764
+ ]
1765
+ },
1766
+ {
1767
+ "name": "submitOrder",
1768
+ "description": "Submit a pre-built order returned by buildOrder().",
1769
+ "inputSchema": {
1770
+ "type": "object",
1771
+ "properties": {
1772
+ "exchange": {
1773
+ "type": "string",
1774
+ "enum": [
1775
+ "polymarket",
1776
+ "kalshi",
1777
+ "kalshi-demo",
1778
+ "limitless",
1779
+ "probable",
1780
+ "baozi",
1781
+ "myriad",
1782
+ "opinion",
1783
+ "metaculus",
1784
+ "smarkets",
1785
+ "polymarket_us"
1786
+ ],
1787
+ "description": "The prediction market exchange to target."
1788
+ },
1789
+ "built": {
1790
+ "type": "object",
1791
+ "properties": {
1792
+ "exchange": {
1793
+ "type": "string",
1794
+ "description": "The exchange name this order was built for."
1795
+ },
1796
+ "params": {
1797
+ "allOf": [
1798
+ {
1799
+ "$ref": "#/components/schemas/CreateOrderParams"
1800
+ }
1801
+ ],
1802
+ "description": "The original params used to build this order."
1803
+ },
1804
+ "signedOrder": {
1805
+ "type": "object",
1806
+ "additionalProperties": {},
1807
+ "description": "For CLOB exchanges (Polymarket): the EIP-712 signed order ready to POST to the exchange's order endpoint."
1808
+ },
1809
+ "tx": {
1810
+ "type": "object",
1811
+ "properties": {
1812
+ "to": {
1813
+ "type": "string"
1814
+ },
1815
+ "data": {
1816
+ "type": "string"
1817
+ },
1818
+ "value": {
1819
+ "type": "string"
1820
+ },
1821
+ "chainId": {
1822
+ "type": "number"
1823
+ }
1824
+ },
1825
+ "required": [
1826
+ "to",
1827
+ "data",
1828
+ "value",
1829
+ "chainId"
1830
+ ],
1831
+ "description": "For on-chain AMM exchanges: the EVM transaction payload. Reserved for future exchanges; no current exchange populates this."
1832
+ },
1833
+ "raw": {
1834
+ "description": "The raw, exchange-native payload. Always present."
1835
+ }
1836
+ },
1837
+ "required": [
1838
+ "exchange",
1839
+ "params",
1840
+ "raw"
1841
+ ],
1842
+ "description": "The built order object from buildOrder."
1843
+ },
1844
+ "credentials": {
1845
+ "type": "object",
1846
+ "description": "Venue credentials (privateKey, apiKey, etc.). Only needed for authenticated operations like trading.",
1847
+ "properties": {
1848
+ "apiKey": {
1849
+ "type": "string"
1850
+ },
1851
+ "apiSecret": {
1852
+ "type": "string"
1853
+ },
1854
+ "passphrase": {
1855
+ "type": "string"
1856
+ },
1857
+ "apiToken": {
1858
+ "type": "string"
1859
+ },
1860
+ "privateKey": {
1861
+ "type": "string"
1862
+ },
1863
+ "signatureType": {
1864
+ "type": "string"
1865
+ },
1866
+ "funderAddress": {
1867
+ "type": "string"
1868
+ }
1869
+ }
1870
+ }
1871
+ },
1872
+ "required": [
1873
+ "exchange",
1874
+ "built"
1875
+ ]
1876
+ },
1877
+ "annotations": {
1878
+ "destructiveHint": true
1879
+ },
1880
+ "method": "submitOrder",
1881
+ "args": [
1882
+ {
1883
+ "name": "built",
1884
+ "kind": "object",
1885
+ "optional": false,
1886
+ "flatten": false
1887
+ }
1888
+ ]
1889
+ }
1890
+ ];