@thisispandora/agent-sdk 0.1.0-alpha.11 → 0.1.0-alpha.16

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.
@@ -42,7 +42,7 @@
42
42
  "summary": "Agent prompt workflow namespace for market drafting and validation.",
43
43
  "supportsRemote": false,
44
44
  "supportsWebhook": false,
45
- "usage": "pandora [--output table|json] agent market autocomplete|validate ..."
45
+ "usage": "pandora [--output table|json] agent market hype|autocomplete|validate ..."
46
46
  },
47
47
  "agent.market.autocomplete": {
48
48
  "agentWorkflow": null,
@@ -113,6 +113,97 @@
113
113
  "supportsWebhook": false,
114
114
  "usage": "pandora [--output table|json] agent market autocomplete --question <text> [--market-type amm|parimutuel]"
115
115
  },
116
+ "agent.market.hype": {
117
+ "agentWorkflow": null,
118
+ "aliasOf": null,
119
+ "canRunConcurrent": true,
120
+ "canonicalCommandTokens": [
121
+ "agent",
122
+ "market",
123
+ "hype"
124
+ ],
125
+ "canonicalTool": "agent.market.hype",
126
+ "canonicalUsage": "pandora [--output table|json] agent market hype --area <sports|esports|politics|regional-news|breaking-news> [--region <text>] [--query <text>] [--market-type auto|amm|parimutuel|both] [--candidate-count <n>]",
127
+ "controlInputNames": [],
128
+ "dataSchema": "#/definitions/AgentMarketPromptPayload",
129
+ "emits": [
130
+ "agent.market.hype",
131
+ "agent.help"
132
+ ],
133
+ "executeFlags": [],
134
+ "executeIntentRequired": false,
135
+ "executeIntentRequiredForLiveMode": false,
136
+ "expectedLatencyMs": 750,
137
+ "externalDependencies": [],
138
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
139
+ "idempotency": "idempotent",
140
+ "inputSchema": {
141
+ "additionalProperties": false,
142
+ "properties": {
143
+ "area": {
144
+ "description": "Trending topic area.",
145
+ "enum": [
146
+ "sports",
147
+ "esports",
148
+ "politics",
149
+ "regional-news",
150
+ "breaking-news"
151
+ ]
152
+ },
153
+ "candidate-count": {
154
+ "description": "Maximum number of candidate markets to draft.",
155
+ "maximum": 5,
156
+ "minimum": 1,
157
+ "type": "integer"
158
+ },
159
+ "market-type": {
160
+ "description": "Planning preference for market type.",
161
+ "enum": [
162
+ "auto",
163
+ "amm",
164
+ "parimutuel",
165
+ "both"
166
+ ]
167
+ },
168
+ "query": {
169
+ "description": "Optional extra search hint or topic constraint.",
170
+ "type": "string"
171
+ },
172
+ "region": {
173
+ "description": "Regional focus. Required when --area regional-news.",
174
+ "type": "string"
175
+ }
176
+ },
177
+ "required": [
178
+ "area"
179
+ ],
180
+ "type": "object"
181
+ },
182
+ "jobCapable": false,
183
+ "mcpExposed": true,
184
+ "mcpLongRunningBlocked": false,
185
+ "mcpMutating": false,
186
+ "outputModes": [
187
+ "table",
188
+ "json"
189
+ ],
190
+ "policyScopes": [
191
+ "agent:read"
192
+ ],
193
+ "preferred": true,
194
+ "recommendedPreflightTool": null,
195
+ "remoteEligible": true,
196
+ "requiresSecrets": false,
197
+ "returnsOperationId": false,
198
+ "returnsRuntimeHandle": false,
199
+ "riskLevel": "low",
200
+ "safeEquivalent": null,
201
+ "safeFlags": [],
202
+ "summary": "Emit AI prompt text for researching current trending topics and drafting hype market candidates.",
203
+ "supportsRemote": true,
204
+ "supportsWebhook": false,
205
+ "usage": "pandora [--output table|json] agent market hype --area <sports|esports|politics|regional-news|breaking-news> [--region <text>] [--query <text>] [--market-type auto|amm|parimutuel|both] [--candidate-count <n>]"
206
+ },
116
207
  "agent.market.validate": {
117
208
  "agentWorkflow": null,
118
209
  "aliasOf": null,
@@ -4055,23 +4146,37 @@
4055
4146
  "summary": "Market command family help and routing entrypoint.",
4056
4147
  "supportsRemote": false,
4057
4148
  "supportsWebhook": false,
4058
- "usage": "pandora [--output table|json] markets list|get|scan|mine ..."
4149
+ "usage": "pandora [--output table|json] markets list|get|mine|create plan|create run|hype plan|hype run|scan ..."
4059
4150
  },
4060
- "markets.get": {
4061
- "agentWorkflow": null,
4151
+ "markets.create": {
4152
+ "agentWorkflow": {
4153
+ "executeRequiresValidation": true,
4154
+ "notes": [
4155
+ "Use markets.create.plan to normalize a launch payload into a JSON-safe agent contract.",
4156
+ "Legacy launch remains script-native; use markets.create.run for the canonical agent/MCP creation surface.",
4157
+ "Validation tickets are bound to the exact final payload. Any change to question, rules, sources, target timestamp, liquidity, market type, fee/curve params, or distribution requires a fresh ticket.",
4158
+ "If distribution flags are omitted, markets.create seeds a balanced 50/50 pool. Set explicit percentage flags for directional markets."
4159
+ ],
4160
+ "recommendedTools": [
4161
+ "agent.market.autocomplete"
4162
+ ],
4163
+ "requiredTools": [
4164
+ "agent.market.validate"
4165
+ ]
4166
+ },
4062
4167
  "aliasOf": null,
4063
4168
  "canRunConcurrent": true,
4064
4169
  "canonicalCommandTokens": [
4065
4170
  "markets",
4066
- "get"
4171
+ "create"
4067
4172
  ],
4068
- "canonicalTool": "markets.get",
4069
- "canonicalUsage": "pandora [--output table|json] markets get [--id <id> ...] [--stdin]",
4173
+ "canonicalTool": "markets.create",
4174
+ "canonicalUsage": "pandora [--output table|json] markets create plan|run --question <text> --rules <text> --sources <url...> --target-timestamp <unix-seconds|iso> [--market-type amm|parimutuel] ...",
4070
4175
  "controlInputNames": [],
4071
- "dataSchema": "#/definitions/EntityCollectionPayload",
4176
+ "dataSchema": "#/definitions/GenericCommandData",
4072
4177
  "emits": [
4073
- "markets.get",
4074
- "markets.get.help"
4178
+ "markets.create.help",
4179
+ "markets.help"
4075
4180
  ],
4076
4181
  "executeFlags": [],
4077
4182
  "executeIntentRequired": false,
@@ -4084,20 +4189,7 @@
4084
4189
  "idempotency": "idempotent",
4085
4190
  "inputSchema": {
4086
4191
  "additionalProperties": false,
4087
- "properties": {
4088
- "id": {
4089
- "description": "Market id, or a comma-delimited list of market ids.",
4090
- "minLength": 1,
4091
- "type": "string",
4092
- "xPandora": {
4093
- "acceptsCommaSeparatedList": true
4094
- }
4095
- },
4096
- "stdin": {
4097
- "description": "Read newline-delimited ids from stdin.",
4098
- "type": "boolean"
4099
- }
4100
- },
4192
+ "properties": {},
4101
4193
  "type": "object"
4102
4194
  },
4103
4195
  "jobCapable": false,
@@ -4113,18 +4205,1175 @@
4113
4205
  "network:indexer"
4114
4206
  ],
4115
4207
  "preferred": true,
4116
- "recommendedPreflightTool": null,
4208
+ "recommendedPreflightTool": "agent.market.validate",
4117
4209
  "remoteEligible": true,
4118
4210
  "requiresSecrets": false,
4119
4211
  "returnsOperationId": false,
4120
4212
  "returnsRuntimeHandle": false,
4121
- "riskLevel": "low",
4213
+ "riskLevel": "low",
4214
+ "safeEquivalent": null,
4215
+ "safeFlags": [],
4216
+ "summary": "Canonical JSON-safe market creation surface for agents and MCP clients. Legacy `launch` remains script-native.",
4217
+ "supportsRemote": true,
4218
+ "supportsWebhook": false,
4219
+ "usage": "pandora [--output table|json] markets create plan|run --question <text> --rules <text> --sources <url...> --target-timestamp <unix-seconds|iso> [--market-type amm|parimutuel] ..."
4220
+ },
4221
+ "markets.create.plan": {
4222
+ "agentWorkflow": {
4223
+ "executeRequiresValidation": false,
4224
+ "notes": [
4225
+ "Use agent.market.autocomplete when the question, rules, or target timestamp still need refinement before creation.",
4226
+ "markets.create.plan is the canonical JSON-safe planning surface; legacy launch remains script-native.",
4227
+ "The emitted validation ticket is bound to the exact final payload. Any change to question, rules, sources, target timestamp, liquidity, market type, fee/curve params, or distribution requires a fresh validation pass.",
4228
+ "If distribution flags are omitted, markets.create seeds a balanced 50/50 pool. Set explicit percentage flags for directional markets."
4229
+ ],
4230
+ "recommendedTools": [
4231
+ "agent.market.autocomplete"
4232
+ ],
4233
+ "requiredTools": []
4234
+ },
4235
+ "aliasOf": null,
4236
+ "canRunConcurrent": true,
4237
+ "canonicalCommandTokens": [
4238
+ "markets",
4239
+ "create",
4240
+ "plan"
4241
+ ],
4242
+ "canonicalTool": "markets.create.plan",
4243
+ "canonicalUsage": "pandora [--output table|json] markets create plan --question <text> --rules <text> --sources <url...> --target-timestamp <unix-seconds|iso> --liquidity-usdc <n> [--market-type amm|parimutuel] [--category <id|name>] [--distribution-yes <parts>] [--distribution-no <parts>] [--distribution-yes-pct <pct>] [--distribution-no-pct <pct>] [--fee-tier <500-50000>] [--max-imbalance <n>] [--curve-flattener <1-11>] [--curve-offset <0-16777215>] [--chain-id <id>] [--rpc-url <url>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--arbiter <address>] [--min-close-lead-seconds <n>]",
4244
+ "controlInputNames": [],
4245
+ "dataSchema": "#/definitions/GenericCommandData",
4246
+ "emits": [
4247
+ "markets.create.plan",
4248
+ "markets.create.help",
4249
+ "markets.help"
4250
+ ],
4251
+ "executeFlags": [],
4252
+ "executeIntentRequired": false,
4253
+ "executeIntentRequiredForLiveMode": false,
4254
+ "expectedLatencyMs": 5000,
4255
+ "externalDependencies": [
4256
+ "indexer-api",
4257
+ "chain-rpc"
4258
+ ],
4259
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
4260
+ "idempotency": "idempotent",
4261
+ "inputSchema": {
4262
+ "additionalProperties": false,
4263
+ "properties": {
4264
+ "arbiter": {
4265
+ "description": "Arbiter address.",
4266
+ "type": "string"
4267
+ },
4268
+ "category": {
4269
+ "description": "Category id or canonical category name.",
4270
+ "examples": [
4271
+ "Sports",
4272
+ "3"
4273
+ ],
4274
+ "type": "string",
4275
+ "xPandora": {
4276
+ "acceptsIntegerStrings": true,
4277
+ "allowedCategoryNames": [
4278
+ "Politics",
4279
+ "Sports",
4280
+ "Finance",
4281
+ "Crypto",
4282
+ "Culture",
4283
+ "Technology",
4284
+ "Science",
4285
+ "Entertainment",
4286
+ "Health",
4287
+ "Environment",
4288
+ "Other"
4289
+ ],
4290
+ "caseInsensitivePattern": "^(?:[pP][oO][lL][iI][tT][iI][cC][sS]|[sS][pP][oO][rR][tT][sS]|[fF][iI][nN][aA][nN][cC][eE]|[cC][rR][yY][pP][tT][oO]|[cC][uU][lL][tT][uU][rR][eE]|[tT][eE][cC][hH][nN][oO][lL][oO][gG][yY]|[sS][cC][iI][eE][nN][cC][eE]|[eE][nN][tT][eE][rR][tT][aA][iI][nN][mM][eE][nN][tT]|[hH][eE][aA][lL][tT][hH]|[eE][nN][vV][iI][rR][oO][nN][mM][eE][nN][tT]|[oO][tT][hH][eE][rR])$"
4291
+ }
4292
+ },
4293
+ "chain-id": {
4294
+ "description": "Chain id.",
4295
+ "minimum": 1,
4296
+ "type": "integer"
4297
+ },
4298
+ "curve-flattener": {
4299
+ "description": "Pari-mutuel curve flattener.",
4300
+ "maximum": 11,
4301
+ "minimum": 1,
4302
+ "type": "integer"
4303
+ },
4304
+ "curve-offset": {
4305
+ "description": "Pari-mutuel curve offset.",
4306
+ "maximum": 16777215,
4307
+ "minimum": 0,
4308
+ "type": "integer"
4309
+ },
4310
+ "distribution-no": {
4311
+ "description": "Initial NO distribution in parts-per-billion.",
4312
+ "maximum": 1000000000,
4313
+ "minimum": 0,
4314
+ "type": "integer"
4315
+ },
4316
+ "distribution-no-pct": {
4317
+ "description": "Initial NO distribution in percent.",
4318
+ "maximum": 100,
4319
+ "minimum": 0,
4320
+ "type": "number"
4321
+ },
4322
+ "distribution-yes": {
4323
+ "description": "Initial YES distribution in parts-per-billion.",
4324
+ "maximum": 1000000000,
4325
+ "minimum": 0,
4326
+ "type": "integer"
4327
+ },
4328
+ "distribution-yes-pct": {
4329
+ "description": "Initial YES distribution in percent.",
4330
+ "maximum": 100,
4331
+ "minimum": 0,
4332
+ "type": "number"
4333
+ },
4334
+ "factory": {
4335
+ "description": "Factory contract address.",
4336
+ "type": "string"
4337
+ },
4338
+ "fee-tier": {
4339
+ "description": "Fee tier in hundredths of a bip.",
4340
+ "maximum": 50000,
4341
+ "minimum": 500,
4342
+ "type": "integer"
4343
+ },
4344
+ "liquidity-usdc": {
4345
+ "description": "Initial liquidity amount in USDC.",
4346
+ "minimum": 0,
4347
+ "type": "number"
4348
+ },
4349
+ "market-type": {
4350
+ "description": "Market type.",
4351
+ "enum": [
4352
+ "amm",
4353
+ "parimutuel"
4354
+ ]
4355
+ },
4356
+ "max-imbalance": {
4357
+ "description": "Maximum AMM price imbalance guard.",
4358
+ "maximum": 16777215,
4359
+ "minimum": 0,
4360
+ "type": "integer"
4361
+ },
4362
+ "min-close-lead-seconds": {
4363
+ "description": "Minimum required lead time before close.",
4364
+ "minimum": 1,
4365
+ "type": "integer"
4366
+ },
4367
+ "oracle": {
4368
+ "description": "Oracle contract address.",
4369
+ "type": "string"
4370
+ },
4371
+ "question": {
4372
+ "description": "Exact market question.",
4373
+ "type": "string"
4374
+ },
4375
+ "rpc-url": {
4376
+ "description": "RPC URL.",
4377
+ "type": "string"
4378
+ },
4379
+ "rules": {
4380
+ "description": "Exact resolution rules.",
4381
+ "type": "string"
4382
+ },
4383
+ "sources": {
4384
+ "description": "Source URL list.",
4385
+ "items": {
4386
+ "type": "string"
4387
+ },
4388
+ "type": "array"
4389
+ },
4390
+ "target-timestamp": {
4391
+ "description": "Resolution timestamp in unix seconds or ISO-8601 datetime.",
4392
+ "examples": [
4393
+ "1777777777",
4394
+ "2026-12-31T00:00:00Z"
4395
+ ],
4396
+ "type": "string",
4397
+ "xPandora": {
4398
+ "acceptsIsoDatetime": true,
4399
+ "acceptsUnixSeconds": true
4400
+ }
4401
+ },
4402
+ "usdc": {
4403
+ "description": "Collateral token address.",
4404
+ "type": "string"
4405
+ }
4406
+ },
4407
+ "required": [
4408
+ "question",
4409
+ "rules",
4410
+ "sources",
4411
+ "target-timestamp",
4412
+ "liquidity-usdc"
4413
+ ],
4414
+ "type": "object"
4415
+ },
4416
+ "jobCapable": false,
4417
+ "mcpExposed": true,
4418
+ "mcpLongRunningBlocked": false,
4419
+ "mcpMutating": false,
4420
+ "outputModes": [
4421
+ "table",
4422
+ "json"
4423
+ ],
4424
+ "policyScopes": [
4425
+ "markets:read",
4426
+ "network:rpc",
4427
+ "network:indexer"
4428
+ ],
4429
+ "preferred": true,
4430
+ "recommendedPreflightTool": null,
4431
+ "remoteEligible": true,
4432
+ "requiresSecrets": false,
4433
+ "returnsOperationId": false,
4434
+ "returnsRuntimeHandle": false,
4435
+ "riskLevel": "low",
4436
+ "safeEquivalent": null,
4437
+ "safeFlags": [],
4438
+ "summary": "Normalize a market creation payload for agents and MCP clients. Legacy `launch` remains script-native.",
4439
+ "supportsRemote": true,
4440
+ "supportsWebhook": false,
4441
+ "usage": "pandora [--output table|json] markets create plan --question <text> --rules <text> --sources <url...> --target-timestamp <unix-seconds|iso> --liquidity-usdc <n> [--market-type amm|parimutuel] [--category <id|name>] [--distribution-yes <parts>] [--distribution-no <parts>] [--distribution-yes-pct <pct>] [--distribution-no-pct <pct>] [--fee-tier <500-50000>] [--max-imbalance <n>] [--curve-flattener <1-11>] [--curve-offset <0-16777215>] [--chain-id <id>] [--rpc-url <url>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--arbiter <address>] [--min-close-lead-seconds <n>]"
4442
+ },
4443
+ "markets.create.run": {
4444
+ "agentWorkflow": {
4445
+ "executeRequiresValidation": true,
4446
+ "notes": [
4447
+ "Run agent.market.validate on the exact final market payload before execute mode.",
4448
+ "Legacy launch remains script-native; markets.create.run is the canonical agent/MCP market creation surface.",
4449
+ "The post-poll approval/createMarket leg supports --tx-route public|auto|flashbots-private|flashbots-bundle. auto chooses flashbots-private when no approval is needed and flashbots-bundle when approval is required.",
4450
+ "Validation tickets are bound to the exact final payload. Any change to question, rules, sources, target timestamp, liquidity, market type, fee/curve params, or distribution requires a fresh ticket.",
4451
+ "If distribution flags are omitted, markets.create seeds a balanced 50/50 pool. Set explicit percentage flags for directional markets."
4452
+ ],
4453
+ "recommendedTools": [
4454
+ "agent.market.autocomplete"
4455
+ ],
4456
+ "requiredTools": [
4457
+ "agent.market.validate"
4458
+ ]
4459
+ },
4460
+ "aliasOf": null,
4461
+ "canRunConcurrent": false,
4462
+ "canonicalCommandTokens": [
4463
+ "markets",
4464
+ "create",
4465
+ "run"
4466
+ ],
4467
+ "canonicalTool": "markets.create.run",
4468
+ "canonicalUsage": "pandora [--output table|json] markets create run --question <text> --rules <text> --sources <url...> --target-timestamp <unix-seconds|iso> --liquidity-usdc <n> [--market-type amm|parimutuel] [--category <id|name>] [--distribution-yes <parts>] [--distribution-no <parts>] [--distribution-yes-pct <pct>] [--distribution-no-pct <pct>] [--fee-tier <500-50000>] [--max-imbalance <n>] [--curve-flattener <1-11>] [--curve-offset <0-16777215>] [--dry-run|--execute] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--arbiter <address>] [--tx-route public|auto|flashbots-private|flashbots-bundle] [--tx-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--validation-ticket <ticket>] [--min-close-lead-seconds <n>]",
4469
+ "controlInputNames": [
4470
+ "agentPreflight"
4471
+ ],
4472
+ "dataSchema": "#/definitions/GenericCommandData",
4473
+ "emits": [
4474
+ "markets.create.run",
4475
+ "markets.create.help",
4476
+ "markets.help"
4477
+ ],
4478
+ "executeFlags": [
4479
+ "--execute"
4480
+ ],
4481
+ "executeIntentRequired": false,
4482
+ "executeIntentRequiredForLiveMode": true,
4483
+ "expectedLatencyMs": 60000,
4484
+ "externalDependencies": [
4485
+ "wallet-secrets",
4486
+ "indexer-api",
4487
+ "chain-rpc"
4488
+ ],
4489
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
4490
+ "idempotency": "conditional",
4491
+ "inputSchema": {
4492
+ "additionalProperties": false,
4493
+ "properties": {
4494
+ "agentPreflight": {
4495
+ "additionalProperties": false,
4496
+ "description": "Agent validation attestation for execute mode.",
4497
+ "properties": {
4498
+ "autocompleteTicket": {
4499
+ "description": "Optional ticket from agent.market.autocomplete when the agent drafted the market.",
4500
+ "type": "string"
4501
+ },
4502
+ "validationDecision": {
4503
+ "description": "Validation verdict from the agent AI run.",
4504
+ "enum": [
4505
+ "PASS",
4506
+ "FAIL"
4507
+ ]
4508
+ },
4509
+ "validationSummary": {
4510
+ "description": "Short summary of the validation result.",
4511
+ "type": "string"
4512
+ },
4513
+ "validationTicket": {
4514
+ "description": "Ticket returned by agent.market.validate for the exact market payload.",
4515
+ "type": "string"
4516
+ }
4517
+ },
4518
+ "required": [
4519
+ "validationTicket",
4520
+ "validationDecision",
4521
+ "validationSummary"
4522
+ ],
4523
+ "type": "object"
4524
+ },
4525
+ "arbiter": {
4526
+ "description": "Arbiter address.",
4527
+ "type": "string"
4528
+ },
4529
+ "category": {
4530
+ "description": "Category id or canonical category name.",
4531
+ "examples": [
4532
+ "Sports",
4533
+ "3"
4534
+ ],
4535
+ "type": "string",
4536
+ "xPandora": {
4537
+ "acceptsIntegerStrings": true,
4538
+ "allowedCategoryNames": [
4539
+ "Politics",
4540
+ "Sports",
4541
+ "Finance",
4542
+ "Crypto",
4543
+ "Culture",
4544
+ "Technology",
4545
+ "Science",
4546
+ "Entertainment",
4547
+ "Health",
4548
+ "Environment",
4549
+ "Other"
4550
+ ],
4551
+ "caseInsensitivePattern": "^(?:[pP][oO][lL][iI][tT][iI][cC][sS]|[sS][pP][oO][rR][tT][sS]|[fF][iI][nN][aA][nN][cC][eE]|[cC][rR][yY][pP][tT][oO]|[cC][uU][lL][tT][uU][rR][eE]|[tT][eE][cC][hH][nN][oO][lL][oO][gG][yY]|[sS][cC][iI][eE][nN][cC][eE]|[eE][nN][tT][eE][rR][tT][aA][iI][nN][mM][eE][nN][tT]|[hH][eE][aA][lL][tT][hH]|[eE][nN][vV][iI][rR][oO][nN][mM][eE][nN][tT]|[oO][tT][hH][eE][rR])$"
4552
+ }
4553
+ },
4554
+ "chain-id": {
4555
+ "description": "Chain id.",
4556
+ "minimum": 1,
4557
+ "type": "integer"
4558
+ },
4559
+ "curve-flattener": {
4560
+ "description": "Pari-mutuel curve flattener.",
4561
+ "maximum": 11,
4562
+ "minimum": 1,
4563
+ "type": "integer"
4564
+ },
4565
+ "curve-offset": {
4566
+ "description": "Pari-mutuel curve offset.",
4567
+ "maximum": 16777215,
4568
+ "minimum": 0,
4569
+ "type": "integer"
4570
+ },
4571
+ "distribution-no": {
4572
+ "description": "Initial NO distribution in parts-per-billion.",
4573
+ "maximum": 1000000000,
4574
+ "minimum": 0,
4575
+ "type": "integer"
4576
+ },
4577
+ "distribution-no-pct": {
4578
+ "description": "Initial NO distribution in percent.",
4579
+ "maximum": 100,
4580
+ "minimum": 0,
4581
+ "type": "number"
4582
+ },
4583
+ "distribution-yes": {
4584
+ "description": "Initial YES distribution in parts-per-billion.",
4585
+ "maximum": 1000000000,
4586
+ "minimum": 0,
4587
+ "type": "integer"
4588
+ },
4589
+ "distribution-yes-pct": {
4590
+ "description": "Initial YES distribution in percent.",
4591
+ "maximum": 100,
4592
+ "minimum": 0,
4593
+ "type": "number"
4594
+ },
4595
+ "dry-run": {
4596
+ "description": "Run dry-run mode.",
4597
+ "type": "boolean"
4598
+ },
4599
+ "execute": {
4600
+ "description": "Execute live creation.",
4601
+ "type": "boolean"
4602
+ },
4603
+ "factory": {
4604
+ "description": "Factory contract address.",
4605
+ "type": "string"
4606
+ },
4607
+ "fee-tier": {
4608
+ "description": "Fee tier in hundredths of a bip.",
4609
+ "maximum": 50000,
4610
+ "minimum": 500,
4611
+ "type": "integer"
4612
+ },
4613
+ "flashbots-auth-key": {
4614
+ "description": "Flashbots auth private key.",
4615
+ "type": "string"
4616
+ },
4617
+ "flashbots-relay-url": {
4618
+ "description": "Flashbots relay URL override.",
4619
+ "type": "string"
4620
+ },
4621
+ "flashbots-target-block-offset": {
4622
+ "description": "Target block offset for Flashbots submission.",
4623
+ "minimum": 1,
4624
+ "type": "integer"
4625
+ },
4626
+ "intent": {
4627
+ "additionalProperties": false,
4628
+ "properties": {
4629
+ "execute": {
4630
+ "description": "Set true to permit live/mutating execution when supported by the tool.",
4631
+ "type": "boolean"
4632
+ }
4633
+ },
4634
+ "type": "object"
4635
+ },
4636
+ "liquidity-usdc": {
4637
+ "description": "Initial liquidity amount in USDC.",
4638
+ "minimum": 0,
4639
+ "type": "number"
4640
+ },
4641
+ "market-type": {
4642
+ "description": "Market type.",
4643
+ "enum": [
4644
+ "amm",
4645
+ "parimutuel"
4646
+ ]
4647
+ },
4648
+ "max-imbalance": {
4649
+ "description": "Maximum AMM price imbalance guard.",
4650
+ "maximum": 16777215,
4651
+ "minimum": 0,
4652
+ "type": "integer"
4653
+ },
4654
+ "min-close-lead-seconds": {
4655
+ "description": "Minimum required lead time before close.",
4656
+ "minimum": 1,
4657
+ "type": "integer"
4658
+ },
4659
+ "oracle": {
4660
+ "description": "Oracle contract address.",
4661
+ "type": "string"
4662
+ },
4663
+ "private-key": {
4664
+ "description": "Hex private key.",
4665
+ "type": "string"
4666
+ },
4667
+ "profile-file": {
4668
+ "description": "Path to a signer profile file.",
4669
+ "type": "string"
4670
+ },
4671
+ "profile-id": {
4672
+ "description": "Named signer profile id.",
4673
+ "type": "string"
4674
+ },
4675
+ "question": {
4676
+ "description": "Exact market question.",
4677
+ "type": "string"
4678
+ },
4679
+ "rpc-url": {
4680
+ "description": "RPC URL.",
4681
+ "type": "string"
4682
+ },
4683
+ "rules": {
4684
+ "description": "Exact resolution rules.",
4685
+ "type": "string"
4686
+ },
4687
+ "sources": {
4688
+ "description": "Source URL list.",
4689
+ "items": {
4690
+ "type": "string"
4691
+ },
4692
+ "type": "array"
4693
+ },
4694
+ "target-timestamp": {
4695
+ "description": "Resolution timestamp in unix seconds or ISO-8601 datetime.",
4696
+ "examples": [
4697
+ "1777777777",
4698
+ "2026-12-31T00:00:00Z"
4699
+ ],
4700
+ "type": "string",
4701
+ "xPandora": {
4702
+ "acceptsIsoDatetime": true,
4703
+ "acceptsUnixSeconds": true
4704
+ }
4705
+ },
4706
+ "tx-route": {
4707
+ "description": "Post-poll Pandora execution route for the optional approval + final market creation leg. public preserves ordinary mempool submission; auto chooses flashbots-private when no approval is needed and flashbots-bundle when approval is required; flashbots-private requests a single-tx private relay submission; flashbots-bundle requests Flashbots bundle semantics.",
4708
+ "enum": [
4709
+ "public",
4710
+ "auto",
4711
+ "flashbots-private",
4712
+ "flashbots-bundle"
4713
+ ]
4714
+ },
4715
+ "tx-route-fallback": {
4716
+ "description": "Fallback policy when the requested post-poll private route is unsupported or rejected. fail stops the run; public degrades the approval/createMarket leg to ordinary public submission.",
4717
+ "enum": [
4718
+ "fail",
4719
+ "public"
4720
+ ]
4721
+ },
4722
+ "usdc": {
4723
+ "description": "Collateral token address.",
4724
+ "type": "string"
4725
+ },
4726
+ "validation-ticket": {
4727
+ "description": "Ticket returned by agent.market.validate for the exact final payload (CLI execute mode).",
4728
+ "type": "string"
4729
+ }
4730
+ },
4731
+ "required": [
4732
+ "question",
4733
+ "rules",
4734
+ "sources",
4735
+ "target-timestamp",
4736
+ "liquidity-usdc"
4737
+ ],
4738
+ "type": "object",
4739
+ "xPandora": {
4740
+ "exclusiveOneOf": [
4741
+ {
4742
+ "not": {
4743
+ "anyOf": [
4744
+ {
4745
+ "required": [
4746
+ "execute"
4747
+ ]
4748
+ },
4749
+ {
4750
+ "required": [
4751
+ "execute"
4752
+ ]
4753
+ }
4754
+ ]
4755
+ },
4756
+ "required": [
4757
+ "dry-run"
4758
+ ]
4759
+ },
4760
+ {
4761
+ "not": {
4762
+ "anyOf": [
4763
+ {
4764
+ "required": [
4765
+ "dry-run"
4766
+ ]
4767
+ },
4768
+ {
4769
+ "required": [
4770
+ "dry-run"
4771
+ ]
4772
+ }
4773
+ ]
4774
+ },
4775
+ "required": [
4776
+ "execute"
4777
+ ]
4778
+ }
4779
+ ]
4780
+ }
4781
+ },
4782
+ "jobCapable": true,
4783
+ "mcpExposed": true,
4784
+ "mcpLongRunningBlocked": false,
4785
+ "mcpMutating": true,
4786
+ "outputModes": [
4787
+ "table",
4788
+ "json"
4789
+ ],
4790
+ "policyScopes": [
4791
+ "markets:run",
4792
+ "secrets:use",
4793
+ "network:rpc",
4794
+ "network:indexer",
4795
+ "jobs:run"
4796
+ ],
4797
+ "preferred": true,
4798
+ "recommendedPreflightTool": "agent.market.validate",
4799
+ "remoteEligible": true,
4800
+ "requiresSecrets": true,
4801
+ "returnsOperationId": false,
4802
+ "returnsRuntimeHandle": false,
4803
+ "riskLevel": "high",
4804
+ "safeEquivalent": null,
4805
+ "safeFlags": [
4806
+ "--dry-run"
4807
+ ],
4808
+ "summary": "Dry-run or execute a canonical JSON-safe market creation payload. Legacy `launch` remains script-native.",
4809
+ "supportsRemote": true,
4810
+ "supportsWebhook": false,
4811
+ "usage": "pandora [--output table|json] markets create run --question <text> --rules <text> --sources <url...> --target-timestamp <unix-seconds|iso> --liquidity-usdc <n> [--market-type amm|parimutuel] [--category <id|name>] [--distribution-yes <parts>] [--distribution-no <parts>] [--distribution-yes-pct <pct>] [--distribution-no-pct <pct>] [--fee-tier <500-50000>] [--max-imbalance <n>] [--curve-flattener <1-11>] [--curve-offset <0-16777215>] [--dry-run|--execute] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--arbiter <address>] [--tx-route public|auto|flashbots-private|flashbots-bundle] [--tx-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--validation-ticket <ticket>] [--min-close-lead-seconds <n>]"
4812
+ },
4813
+ "markets.get": {
4814
+ "agentWorkflow": null,
4815
+ "aliasOf": null,
4816
+ "canRunConcurrent": true,
4817
+ "canonicalCommandTokens": [
4818
+ "markets",
4819
+ "get"
4820
+ ],
4821
+ "canonicalTool": "markets.get",
4822
+ "canonicalUsage": "pandora [--output table|json] markets get [--id <id> ...] [--stdin]",
4823
+ "controlInputNames": [],
4824
+ "dataSchema": "#/definitions/EntityCollectionPayload",
4825
+ "emits": [
4826
+ "markets.get",
4827
+ "markets.get.help"
4828
+ ],
4829
+ "executeFlags": [],
4830
+ "executeIntentRequired": false,
4831
+ "executeIntentRequiredForLiveMode": false,
4832
+ "expectedLatencyMs": 5000,
4833
+ "externalDependencies": [
4834
+ "indexer-api"
4835
+ ],
4836
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
4837
+ "idempotency": "idempotent",
4838
+ "inputSchema": {
4839
+ "additionalProperties": false,
4840
+ "properties": {
4841
+ "id": {
4842
+ "description": "Market id, or a comma-delimited list of market ids.",
4843
+ "minLength": 1,
4844
+ "type": "string",
4845
+ "xPandora": {
4846
+ "acceptsCommaSeparatedList": true
4847
+ }
4848
+ },
4849
+ "stdin": {
4850
+ "description": "Read newline-delimited ids from stdin.",
4851
+ "type": "boolean"
4852
+ }
4853
+ },
4854
+ "type": "object"
4855
+ },
4856
+ "jobCapable": false,
4857
+ "mcpExposed": true,
4858
+ "mcpLongRunningBlocked": false,
4859
+ "mcpMutating": false,
4860
+ "outputModes": [
4861
+ "table",
4862
+ "json"
4863
+ ],
4864
+ "policyScopes": [
4865
+ "markets:read",
4866
+ "network:indexer"
4867
+ ],
4868
+ "preferred": true,
4869
+ "recommendedPreflightTool": null,
4870
+ "remoteEligible": true,
4871
+ "requiresSecrets": false,
4872
+ "returnsOperationId": false,
4873
+ "returnsRuntimeHandle": false,
4874
+ "riskLevel": "low",
4875
+ "safeEquivalent": null,
4876
+ "safeFlags": [],
4877
+ "summary": "Get one or many markets by id.",
4878
+ "supportsRemote": true,
4879
+ "supportsWebhook": false,
4880
+ "usage": "pandora [--output table|json] markets get [--id <id> ...] [--stdin]"
4881
+ },
4882
+ "markets.hype": {
4883
+ "agentWorkflow": {
4884
+ "executeRequiresValidation": true,
4885
+ "notes": [
4886
+ "Use markets.hype.plan to turn fresh public-web research into a frozen, reusable market plan.",
4887
+ "The selected candidate is validated before planning completes; pass the emitted PASS attestation back as agentPreflight for execute-mode MCP runs.",
4888
+ "markets.hype.run should consume a saved plan file so the research snapshot, sources, and validation result do not drift between planning and deployment."
4889
+ ],
4890
+ "recommendedTools": [
4891
+ "agent.market.hype",
4892
+ "scan"
4893
+ ],
4894
+ "requiredTools": [
4895
+ "agent.market.validate"
4896
+ ]
4897
+ },
4898
+ "aliasOf": null,
4899
+ "canRunConcurrent": true,
4900
+ "canonicalCommandTokens": [
4901
+ "markets",
4902
+ "hype"
4903
+ ],
4904
+ "canonicalTool": "markets.hype",
4905
+ "canonicalUsage": "pandora [--output table|json] markets hype plan|run --area <sports|esports|politics|regional-news|breaking-news> ...",
4906
+ "controlInputNames": [],
4907
+ "dataSchema": "#/definitions/GenericCommandData",
4908
+ "emits": [
4909
+ "markets.hype.help",
4910
+ "markets.help"
4911
+ ],
4912
+ "executeFlags": [],
4913
+ "executeIntentRequired": false,
4914
+ "executeIntentRequiredForLiveMode": false,
4915
+ "expectedLatencyMs": 5000,
4916
+ "externalDependencies": [
4917
+ "indexer-api"
4918
+ ],
4919
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
4920
+ "idempotency": "idempotent",
4921
+ "inputSchema": {
4922
+ "additionalProperties": false,
4923
+ "properties": {},
4924
+ "type": "object"
4925
+ },
4926
+ "jobCapable": false,
4927
+ "mcpExposed": true,
4928
+ "mcpLongRunningBlocked": false,
4929
+ "mcpMutating": false,
4930
+ "outputModes": [
4931
+ "table",
4932
+ "json"
4933
+ ],
4934
+ "policyScopes": [
4935
+ "markets:read",
4936
+ "network:indexer"
4937
+ ],
4938
+ "preferred": true,
4939
+ "recommendedPreflightTool": "agent.market.validate",
4940
+ "remoteEligible": true,
4941
+ "requiresSecrets": false,
4942
+ "returnsOperationId": false,
4943
+ "returnsRuntimeHandle": false,
4944
+ "riskLevel": "low",
4945
+ "safeEquivalent": null,
4946
+ "safeFlags": [],
4947
+ "summary": "Research current public-web trends, draft hype market candidates, and optionally run a frozen hype plan.",
4948
+ "supportsRemote": true,
4949
+ "supportsWebhook": false,
4950
+ "usage": "pandora [--output table|json] markets hype plan|run --area <sports|esports|politics|regional-news|breaking-news> ..."
4951
+ },
4952
+ "markets.hype.plan": {
4953
+ "agentWorkflow": {
4954
+ "executeRequiresValidation": false,
4955
+ "notes": [
4956
+ "markets.hype.plan performs bounded provider-backed trend research and freezes the resulting candidate set into a reusable plan payload.",
4957
+ "Use the emitted candidate validation results and attestation for execute-mode MCP runs instead of re-running live research during deployment.",
4958
+ "Review duplicateRiskScore and duplicateMatches before choosing a candidate to deploy."
4959
+ ],
4960
+ "recommendedTools": [
4961
+ "agent.market.hype",
4962
+ "scan"
4963
+ ],
4964
+ "requiredTools": []
4965
+ },
4966
+ "aliasOf": null,
4967
+ "canRunConcurrent": true,
4968
+ "canonicalCommandTokens": [
4969
+ "markets",
4970
+ "hype",
4971
+ "plan"
4972
+ ],
4973
+ "canonicalTool": "markets.hype.plan",
4974
+ "canonicalUsage": "pandora [--output table|json] markets hype plan --area <sports|esports|politics|regional-news|breaking-news> [--region <text>] [--query <text>] [--candidate-count <n>] [--market-type auto|amm|parimutuel|both] [--liquidity-usdc <n>] [--ai-provider auto|openai|anthropic|mock] [--ai-model <id>] [--search-depth fast|standard|deep] [--chain-id <id>] [--rpc-url <url>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--arbiter <address>] [--min-close-lead-seconds <n>]",
4975
+ "controlInputNames": [],
4976
+ "dataSchema": "#/definitions/GenericCommandData",
4977
+ "emits": [
4978
+ "markets.hype.plan",
4979
+ "markets.hype.help",
4980
+ "markets.help"
4981
+ ],
4982
+ "executeFlags": [],
4983
+ "executeIntentRequired": false,
4984
+ "executeIntentRequiredForLiveMode": false,
4985
+ "expectedLatencyMs": 5000,
4986
+ "externalDependencies": [
4987
+ "indexer-api",
4988
+ "chain-rpc"
4989
+ ],
4990
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
4991
+ "idempotency": "idempotent",
4992
+ "inputSchema": {
4993
+ "additionalProperties": false,
4994
+ "properties": {
4995
+ "ai-model": {
4996
+ "description": "Model override for the selected provider.",
4997
+ "type": "string"
4998
+ },
4999
+ "ai-provider": {
5000
+ "description": "Research provider selection.",
5001
+ "enum": [
5002
+ "auto",
5003
+ "openai",
5004
+ "anthropic",
5005
+ "mock"
5006
+ ]
5007
+ },
5008
+ "arbiter": {
5009
+ "description": "Arbiter address.",
5010
+ "type": "string"
5011
+ },
5012
+ "area": {
5013
+ "description": "Trending topic area.",
5014
+ "enum": [
5015
+ "sports",
5016
+ "esports",
5017
+ "politics",
5018
+ "regional-news",
5019
+ "breaking-news"
5020
+ ]
5021
+ },
5022
+ "candidate-count": {
5023
+ "description": "Maximum number of candidate markets to draft.",
5024
+ "maximum": 5,
5025
+ "minimum": 1,
5026
+ "type": "integer"
5027
+ },
5028
+ "chain-id": {
5029
+ "description": "Chain id.",
5030
+ "minimum": 1,
5031
+ "type": "integer"
5032
+ },
5033
+ "factory": {
5034
+ "description": "Factory contract address.",
5035
+ "type": "string"
5036
+ },
5037
+ "liquidity-usdc": {
5038
+ "description": "Suggested initial liquidity for generated drafts.",
5039
+ "minimum": 0,
5040
+ "type": "number"
5041
+ },
5042
+ "market-type": {
5043
+ "description": "Planning preference for market type.",
5044
+ "enum": [
5045
+ "auto",
5046
+ "amm",
5047
+ "parimutuel",
5048
+ "both"
5049
+ ]
5050
+ },
5051
+ "min-close-lead-seconds": {
5052
+ "description": "Minimum required lead time before close.",
5053
+ "minimum": 1,
5054
+ "type": "integer"
5055
+ },
5056
+ "oracle": {
5057
+ "description": "Oracle contract address.",
5058
+ "type": "string"
5059
+ },
5060
+ "query": {
5061
+ "description": "Optional extra search hint or topic constraint.",
5062
+ "type": "string"
5063
+ },
5064
+ "region": {
5065
+ "description": "Regional focus. Required when --area regional-news.",
5066
+ "type": "string"
5067
+ },
5068
+ "rpc-url": {
5069
+ "description": "RPC URL.",
5070
+ "type": "string"
5071
+ },
5072
+ "search-depth": {
5073
+ "description": "Bounded search depth hint for the provider.",
5074
+ "enum": [
5075
+ "fast",
5076
+ "standard",
5077
+ "deep"
5078
+ ]
5079
+ },
5080
+ "usdc": {
5081
+ "description": "Collateral token address.",
5082
+ "type": "string"
5083
+ }
5084
+ },
5085
+ "required": [
5086
+ "area"
5087
+ ],
5088
+ "type": "object"
5089
+ },
5090
+ "jobCapable": false,
5091
+ "mcpExposed": true,
5092
+ "mcpLongRunningBlocked": false,
5093
+ "mcpMutating": false,
5094
+ "outputModes": [
5095
+ "table",
5096
+ "json"
5097
+ ],
5098
+ "policyScopes": [
5099
+ "markets:read",
5100
+ "network:rpc",
5101
+ "network:indexer"
5102
+ ],
5103
+ "preferred": true,
5104
+ "recommendedPreflightTool": null,
5105
+ "remoteEligible": true,
5106
+ "requiresSecrets": false,
5107
+ "returnsOperationId": false,
5108
+ "returnsRuntimeHandle": false,
5109
+ "riskLevel": "low",
5110
+ "safeEquivalent": null,
5111
+ "safeFlags": [],
5112
+ "summary": "Research current trending topics, score hype candidates, recommend AMM vs pari-mutuel, and validate the drafted market payloads.",
5113
+ "supportsRemote": true,
5114
+ "supportsWebhook": false,
5115
+ "usage": "pandora [--output table|json] markets hype plan --area <sports|esports|politics|regional-news|breaking-news> [--region <text>] [--query <text>] [--candidate-count <n>] [--market-type auto|amm|parimutuel|both] [--liquidity-usdc <n>] [--ai-provider auto|openai|anthropic|mock] [--ai-model <id>] [--search-depth fast|standard|deep] [--chain-id <id>] [--rpc-url <url>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--arbiter <address>] [--min-close-lead-seconds <n>]"
5116
+ },
5117
+ "markets.hype.run": {
5118
+ "agentWorkflow": {
5119
+ "executeRequiresValidation": true,
5120
+ "notes": [
5121
+ "markets.hype.run is intentionally plan-file based so the exact research snapshot and validation attestation remain frozen between plan and execute.",
5122
+ "Execute-mode MCP calls should copy the selected candidate PASS attestation from markets.hype.plan back as agentPreflight.",
5123
+ "The post-poll approval/createMarket leg supports the same --tx-route contract as markets.create.run. auto chooses flashbots-private when no approval is needed and flashbots-bundle when approval is required.",
5124
+ "Avoid editing question, rules, sources, or targetTimestamp after planning; regenerate the hype plan instead."
5125
+ ],
5126
+ "recommendedTools": [
5127
+ "agent.market.validate"
5128
+ ],
5129
+ "requiredTools": [
5130
+ "markets.hype.plan"
5131
+ ]
5132
+ },
5133
+ "aliasOf": null,
5134
+ "canRunConcurrent": false,
5135
+ "canonicalCommandTokens": [
5136
+ "markets",
5137
+ "hype",
5138
+ "run"
5139
+ ],
5140
+ "canonicalTool": "markets.hype.run",
5141
+ "canonicalUsage": "pandora [--output table|json] markets hype run --plan-file <path> [--candidate-id <id>] [--market-type selected|amm|parimutuel] --dry-run|--execute [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--arbiter <address>] [--tx-route public|auto|flashbots-private|flashbots-bundle] [--tx-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>]",
5142
+ "controlInputNames": [
5143
+ "agentPreflight"
5144
+ ],
5145
+ "dataSchema": "#/definitions/GenericCommandData",
5146
+ "emits": [
5147
+ "markets.hype.run",
5148
+ "markets.hype.help",
5149
+ "markets.help"
5150
+ ],
5151
+ "executeFlags": [
5152
+ "--execute"
5153
+ ],
5154
+ "executeIntentRequired": false,
5155
+ "executeIntentRequiredForLiveMode": true,
5156
+ "expectedLatencyMs": 60000,
5157
+ "externalDependencies": [
5158
+ "filesystem",
5159
+ "wallet-secrets",
5160
+ "indexer-api",
5161
+ "chain-rpc"
5162
+ ],
5163
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
5164
+ "idempotency": "conditional",
5165
+ "inputSchema": {
5166
+ "additionalProperties": false,
5167
+ "properties": {
5168
+ "agentPreflight": {
5169
+ "additionalProperties": false,
5170
+ "description": "PASS attestation from the selected hype-plan candidate validation.",
5171
+ "properties": {
5172
+ "autocompleteTicket": {
5173
+ "description": "Optional ticket from agent.market.autocomplete when the agent drafted the market.",
5174
+ "type": "string"
5175
+ },
5176
+ "validationDecision": {
5177
+ "description": "Validation verdict from the agent AI run.",
5178
+ "enum": [
5179
+ "PASS",
5180
+ "FAIL"
5181
+ ]
5182
+ },
5183
+ "validationSummary": {
5184
+ "description": "Short summary of the validation result.",
5185
+ "type": "string"
5186
+ },
5187
+ "validationTicket": {
5188
+ "description": "Ticket returned by agent.market.validate for the exact market payload.",
5189
+ "type": "string"
5190
+ }
5191
+ },
5192
+ "required": [
5193
+ "validationTicket",
5194
+ "validationDecision",
5195
+ "validationSummary"
5196
+ ],
5197
+ "type": "object"
5198
+ },
5199
+ "arbiter": {
5200
+ "description": "Arbiter address.",
5201
+ "type": "string"
5202
+ },
5203
+ "candidate-id": {
5204
+ "description": "Explicit candidate id from the plan payload.",
5205
+ "type": "string"
5206
+ },
5207
+ "chain-id": {
5208
+ "description": "Chain id.",
5209
+ "minimum": 1,
5210
+ "type": "integer"
5211
+ },
5212
+ "dry-run": {
5213
+ "description": "Run dry-run mode.",
5214
+ "type": "boolean"
5215
+ },
5216
+ "execute": {
5217
+ "description": "Execute live deployment.",
5218
+ "type": "boolean"
5219
+ },
5220
+ "factory": {
5221
+ "description": "Factory contract address.",
5222
+ "type": "string"
5223
+ },
5224
+ "flashbots-auth-key": {
5225
+ "description": "Flashbots auth private key.",
5226
+ "type": "string"
5227
+ },
5228
+ "flashbots-relay-url": {
5229
+ "description": "Flashbots relay URL override.",
5230
+ "type": "string"
5231
+ },
5232
+ "flashbots-target-block-offset": {
5233
+ "description": "Target block offset for Flashbots submission.",
5234
+ "minimum": 1,
5235
+ "type": "integer"
5236
+ },
5237
+ "intent": {
5238
+ "additionalProperties": false,
5239
+ "properties": {
5240
+ "execute": {
5241
+ "description": "Set true to permit live/mutating execution when supported by the tool.",
5242
+ "type": "boolean"
5243
+ }
5244
+ },
5245
+ "type": "object"
5246
+ },
5247
+ "market-type": {
5248
+ "description": "Draft to deploy from the selected candidate.",
5249
+ "enum": [
5250
+ "selected",
5251
+ "amm",
5252
+ "parimutuel"
5253
+ ]
5254
+ },
5255
+ "oracle": {
5256
+ "description": "Oracle contract address.",
5257
+ "type": "string"
5258
+ },
5259
+ "plan-file": {
5260
+ "description": "Saved hype plan file path.",
5261
+ "type": "string"
5262
+ },
5263
+ "private-key": {
5264
+ "description": "Hex private key.",
5265
+ "type": "string"
5266
+ },
5267
+ "profile-file": {
5268
+ "description": "Path to a signer profile file.",
5269
+ "type": "string"
5270
+ },
5271
+ "profile-id": {
5272
+ "description": "Named signer profile id.",
5273
+ "type": "string"
5274
+ },
5275
+ "rpc-url": {
5276
+ "description": "RPC URL.",
5277
+ "type": "string"
5278
+ },
5279
+ "tx-route": {
5280
+ "description": "Post-poll Pandora execution route for the optional approval + final market creation leg. public preserves ordinary mempool submission; auto chooses flashbots-private when no approval is needed and flashbots-bundle when approval is required; flashbots-private requests a single-tx private relay submission; flashbots-bundle requests Flashbots bundle semantics.",
5281
+ "enum": [
5282
+ "public",
5283
+ "auto",
5284
+ "flashbots-private",
5285
+ "flashbots-bundle"
5286
+ ]
5287
+ },
5288
+ "tx-route-fallback": {
5289
+ "description": "Fallback policy when the requested post-poll private route is unsupported or rejected. fail stops the run; public degrades the approval/createMarket leg to ordinary public submission.",
5290
+ "enum": [
5291
+ "fail",
5292
+ "public"
5293
+ ]
5294
+ },
5295
+ "usdc": {
5296
+ "description": "Collateral token address.",
5297
+ "type": "string"
5298
+ }
5299
+ },
5300
+ "required": [
5301
+ "plan-file"
5302
+ ],
5303
+ "type": "object",
5304
+ "xPandora": {
5305
+ "exclusiveOneOf": [
5306
+ {
5307
+ "not": {
5308
+ "anyOf": [
5309
+ {
5310
+ "required": [
5311
+ "execute"
5312
+ ]
5313
+ },
5314
+ {
5315
+ "required": [
5316
+ "execute"
5317
+ ]
5318
+ }
5319
+ ]
5320
+ },
5321
+ "required": [
5322
+ "dry-run"
5323
+ ]
5324
+ },
5325
+ {
5326
+ "not": {
5327
+ "anyOf": [
5328
+ {
5329
+ "required": [
5330
+ "dry-run"
5331
+ ]
5332
+ },
5333
+ {
5334
+ "required": [
5335
+ "dry-run"
5336
+ ]
5337
+ }
5338
+ ]
5339
+ },
5340
+ "required": [
5341
+ "execute"
5342
+ ]
5343
+ }
5344
+ ]
5345
+ }
5346
+ },
5347
+ "jobCapable": true,
5348
+ "mcpExposed": true,
5349
+ "mcpLongRunningBlocked": false,
5350
+ "mcpMutating": true,
5351
+ "outputModes": [
5352
+ "table",
5353
+ "json"
5354
+ ],
5355
+ "policyScopes": [
5356
+ "markets:run",
5357
+ "secrets:use",
5358
+ "network:rpc",
5359
+ "network:indexer",
5360
+ "jobs:run"
5361
+ ],
5362
+ "preferred": true,
5363
+ "recommendedPreflightTool": "markets.hype.plan",
5364
+ "remoteEligible": true,
5365
+ "requiresSecrets": true,
5366
+ "returnsOperationId": false,
5367
+ "returnsRuntimeHandle": false,
5368
+ "riskLevel": "high",
4122
5369
  "safeEquivalent": null,
4123
- "safeFlags": [],
4124
- "summary": "Get one or many markets by id.",
5370
+ "safeFlags": [
5371
+ "--dry-run"
5372
+ ],
5373
+ "summary": "Dry-run or execute a frozen hype plan candidate without re-running live trend research.",
4125
5374
  "supportsRemote": true,
4126
5375
  "supportsWebhook": false,
4127
- "usage": "pandora [--output table|json] markets get [--id <id> ...] [--stdin]"
5376
+ "usage": "pandora [--output table|json] markets hype run --plan-file <path> [--candidate-id <id>] [--market-type selected|amm|parimutuel] --dry-run|--execute [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--arbiter <address>] [--tx-route public|auto|flashbots-private|flashbots-bundle] [--tx-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>]"
4128
5377
  },
4129
5378
  "markets.list": {
4130
5379
  "agentWorkflow": null,
@@ -6004,7 +7253,8 @@
6004
7253
  "notes": [
6005
7254
  "Mirror deploy dry-run returns the exact Pandora deployment payload and required validation ticket.",
6006
7255
  "Mirror deploy never auto-copies Polymarket URLs into sources; pass independent public resolution URLs with --sources.",
6007
- "Run agent.market.validate on that final payload before rerunning mirror.deploy with execute mode, then pass --validation-ticket locally or agentPreflight in MCP."
7256
+ "Run agent.market.validate on that exact final payload before rerunning mirror.deploy with execute mode, then pass --validation-ticket locally or agentPreflight in MCP.",
7257
+ "Validation tickets are bound to the exact final deploy payload. Any change to question, rules, sources, target timestamp, liquidity, fee params, or distribution requires a fresh validation pass."
6008
7258
  ],
6009
7259
  "recommendedTools": [
6010
7260
  "agent.market.autocomplete"
@@ -6020,7 +7270,7 @@
6020
7270
  "deploy"
6021
7271
  ],
6022
7272
  "canonicalTool": "mirror.deploy",
6023
- "canonicalUsage": "pandora [--output table|json] mirror deploy --plan-file <path>|--polymarket-market-id <id>|--polymarket-slug <slug> --dry-run|--execute [--liquidity-usdc <n>] [--fee-tier <500-50000>] [--max-imbalance <n>] [--arbiter <address>] [--category <id|name>] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--distribution-yes <parts>] [--distribution-no <parts>] [--sources <url...>] [--validation-ticket <ticket>] [--target-timestamp <unix|iso>] [--manifest-file <path>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--min-close-lead-seconds <n>]",
7273
+ "canonicalUsage": "pandora [--output table|json] mirror deploy --plan-file <path>|--polymarket-market-id <id>|--polymarket-slug <slug> --dry-run|--execute [--liquidity-usdc <n>] [--fee-tier <500-50000>] [--max-imbalance <n>] [--arbiter <address>] [--category <id|name>] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--distribution-yes <parts>] [--distribution-no <parts>] [--distribution-yes-pct <pct>] [--distribution-no-pct <pct>] [--sources <url...>] [--validation-ticket <ticket>] [--target-timestamp <unix|iso>] [--manifest-file <path>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--min-close-lead-seconds <n>]",
6024
7274
  "controlInputNames": [
6025
7275
  "agentPreflight"
6026
7276
  ],
@@ -6116,11 +7366,23 @@
6116
7366
  "minimum": 0,
6117
7367
  "type": "number"
6118
7368
  },
7369
+ "distribution-no-pct": {
7370
+ "description": "Initial NO distribution percent.",
7371
+ "maximum": 100,
7372
+ "minimum": 0,
7373
+ "type": "number"
7374
+ },
6119
7375
  "distribution-yes": {
6120
7376
  "description": "Initial YES distribution parts.",
6121
7377
  "minimum": 0,
6122
7378
  "type": "number"
6123
7379
  },
7380
+ "distribution-yes-pct": {
7381
+ "description": "Initial YES distribution percent.",
7382
+ "maximum": 100,
7383
+ "minimum": 0,
7384
+ "type": "number"
7385
+ },
6124
7386
  "dry-run": {
6125
7387
  "description": "Run dry-run mode.",
6126
7388
  "type": "boolean"
@@ -6556,7 +7818,7 @@
6556
7818
  "summary": "Deploy a mirror market from selector or plan in dry-run or execute mode.",
6557
7819
  "supportsRemote": true,
6558
7820
  "supportsWebhook": false,
6559
- "usage": "pandora [--output table|json] mirror deploy --plan-file <path>|--polymarket-market-id <id>|--polymarket-slug <slug> --dry-run|--execute [--liquidity-usdc <n>] [--fee-tier <500-50000>] [--max-imbalance <n>] [--arbiter <address>] [--category <id|name>] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--distribution-yes <parts>] [--distribution-no <parts>] [--sources <url...>] [--validation-ticket <ticket>] [--target-timestamp <unix|iso>] [--manifest-file <path>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--min-close-lead-seconds <n>]"
7821
+ "usage": "pandora [--output table|json] mirror deploy --plan-file <path>|--polymarket-market-id <id>|--polymarket-slug <slug> --dry-run|--execute [--liquidity-usdc <n>] [--fee-tier <500-50000>] [--max-imbalance <n>] [--arbiter <address>] [--category <id|name>] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--oracle <address>] [--factory <address>] [--usdc <address>] [--distribution-yes <parts>] [--distribution-no <parts>] [--distribution-yes-pct <pct>] [--distribution-no-pct <pct>] [--sources <url...>] [--validation-ticket <ticket>] [--target-timestamp <unix|iso>] [--manifest-file <path>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--min-close-lead-seconds <n>]"
6560
7822
  },
6561
7823
  "mirror.drift": {
6562
7824
  "agentWorkflow": null,
@@ -6728,6 +7990,7 @@
6728
7990
  "Mirror go inherits the exact market payload from its deploy stage; use the returned validation ticket from paper/dry-run output.",
6729
7991
  "When mirror go will execute a fresh deploy, provide independent public --sources and a matching validation ticket.",
6730
7992
  "Run agent.market.validate on that exact payload before rerunning mirror.go with execute or execute-live.",
7993
+ "Validation tickets are bound to the exact final deploy payload. Any change to question, rules, sources, target timestamp, liquidity, fee params, or distribution requires a fresh validation pass.",
6731
7994
  "Private-routing flags affect only the Ethereum Pandora rebalance leg. They do not make the Polygon hedge leg atomic."
6732
7995
  ],
6733
7996
  "recommendedTools": [
@@ -6771,6 +8034,10 @@
6771
8034
  "inputSchema": {
6772
8035
  "additionalProperties": false,
6773
8036
  "properties": {
8037
+ "adopt-existing-positions": {
8038
+ "description": "Seed managed Polymarket inventory from existing live YES/NO balances before sell-side recycling.",
8039
+ "type": "boolean"
8040
+ },
6774
8041
  "agentPreflight": {
6775
8042
  "additionalProperties": false,
6776
8043
  "description": "Agent validation attestation for execute or execute-live mode.",
@@ -6934,6 +8201,13 @@
6934
8201
  "minimum": 0,
6935
8202
  "type": "number"
6936
8203
  },
8204
+ "hedge-scope": {
8205
+ "description": "Hedge basis. total includes held Pandora outcome tokens in addition to pool reserves; pool hedges only the AMM reserves.",
8206
+ "enum": [
8207
+ "pool",
8208
+ "total"
8209
+ ]
8210
+ },
6937
8211
  "hedge-trigger-usdc": {
6938
8212
  "description": "Hedge trigger size in USDC.",
6939
8213
  "minimum": 0,
@@ -7168,6 +8442,10 @@
7168
8442
  "description": "Ticket returned by agent.market.validate for the exact final payload (CLI execute mode).",
7169
8443
  "type": "string"
7170
8444
  },
8445
+ "verbose": {
8446
+ "description": "Emit expanded per-tick console diagnostics.",
8447
+ "type": "boolean"
8448
+ },
7171
8449
  "with-rules": {
7172
8450
  "description": "Include rule payloads and copy diagnostics.",
7173
8451
  "type": "boolean"
@@ -8534,7 +9812,17 @@
8534
9812
  "usage": "pandora [--output table|json] mirror lp-explain --liquidity-usdc <n> [--source-yes-pct <0-100>] [--distribution-yes <parts>] [--distribution-no <parts>]"
8535
9813
  },
8536
9814
  "mirror.panic": {
8537
- "agentWorkflow": null,
9815
+ "agentWorkflow": {
9816
+ "executeRequiresValidation": false,
9817
+ "notes": [
9818
+ "Engage mode writes the default ~/.pandora/mirror/STOP stop file, which intentionally blocks local mirror daemons until cleared.",
9819
+ "Use clear mode after incident review to remove the default stop file and release local mirror automation."
9820
+ ],
9821
+ "recommendedTools": [
9822
+ "mirror.health"
9823
+ ],
9824
+ "requiredTools": []
9825
+ },
8538
9826
  "aliasOf": null,
8539
9827
  "canRunConcurrent": false,
8540
9828
  "canonicalCommandTokens": [
@@ -8664,7 +9952,7 @@
8664
9952
  "riskLevel": "critical",
8665
9953
  "safeEquivalent": null,
8666
9954
  "safeFlags": [],
8667
- "summary": "Engage or clear the global risk panic lock while writing mirror stop files and attempting daemon stop for the selected mirror scope.",
9955
+ "summary": "Engage or clear the global risk panic lock while writing the default ~/.pandora/mirror/STOP stop file and attempting daemon stop for the selected mirror scope.",
8668
9956
  "supportsRemote": true,
8669
9957
  "supportsWebhook": false,
8670
9958
  "usage": "pandora [--output table|json] mirror panic --pid-file <path>|--strategy-hash <hash>|--market-address <address>|--all [--risk-file <path>] [--reason <text>] [--actor <id>] [--clear]"
@@ -9436,10 +10724,20 @@
9436
10724
  "summary": "Mirror sync runtime command family for separate Pandora rebalance and Polymarket hedge legs. Rebalance-route flags affect only the Ethereum Pandora leg; cross-venue settlement is not atomic.",
9437
10725
  "supportsRemote": false,
9438
10726
  "supportsWebhook": false,
9439
- "usage": "pandora [--output table|json] mirror sync once|run|start|stop|status ..."
10727
+ "usage": "pandora [--output table|json] mirror sync once|run|start|stop|status|unlock ..."
9440
10728
  },
9441
10729
  "mirror.sync.once": {
9442
- "agentWorkflow": null,
10730
+ "agentWorkflow": {
10731
+ "executeRequiresValidation": false,
10732
+ "notes": [
10733
+ "The default mirror stop file is ~/.pandora/mirror/STOP. Its presence intentionally blocks local mirror sync starts and ticks until cleared.",
10734
+ "Use mirror.panic clear mode after incident review, or remove the stop file manually only if you know the emergency lock is stale."
10735
+ ],
10736
+ "recommendedTools": [
10737
+ "mirror.panic"
10738
+ ],
10739
+ "requiredTools": []
10740
+ },
9443
10741
  "aliasOf": null,
9444
10742
  "canRunConcurrent": false,
9445
10743
  "canonicalCommandTokens": [
@@ -9448,7 +10746,7 @@
9448
10746
  "once"
9449
10747
  ],
9450
10748
  "canonicalTool": "mirror.sync.once",
9451
- "canonicalUsage": "pandora [--output table|json] mirror sync once --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]",
10749
+ "canonicalUsage": "pandora [--output table|json] mirror sync once --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--stream|--no-stream] [--verbose] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--hedge-scope pool|total] [--adopt-existing-positions] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]",
9452
10750
  "controlInputNames": [],
9453
10751
  "dataSchema": "#/definitions/MirrorStatusPayload",
9454
10752
  "emits": [
@@ -9475,6 +10773,10 @@
9475
10773
  "inputSchema": {
9476
10774
  "additionalProperties": false,
9477
10775
  "properties": {
10776
+ "adopt-existing-positions": {
10777
+ "description": "Seed managed Polymarket inventory from existing live YES/NO balances before sell-side recycling.",
10778
+ "type": "boolean"
10779
+ },
9478
10780
  "chain-id": {
9479
10781
  "description": "Chain id.",
9480
10782
  "minimum": 1,
@@ -9534,6 +10836,13 @@
9534
10836
  "minimum": 0,
9535
10837
  "type": "number"
9536
10838
  },
10839
+ "hedge-scope": {
10840
+ "description": "Hedge basis. total includes held Pandora outcome tokens in addition to pool reserves; pool hedges only the AMM reserves.",
10841
+ "enum": [
10842
+ "pool",
10843
+ "total"
10844
+ ]
10845
+ },
9537
10846
  "hedge-trigger-usdc": {
9538
10847
  "description": "Hedge trigger size in USDC.",
9539
10848
  "minimum": 0,
@@ -9600,6 +10909,10 @@
9600
10909
  "description": "Disable source hedge leg.",
9601
10910
  "type": "boolean"
9602
10911
  },
10912
+ "no-stream": {
10913
+ "description": "Disable streaming tick lines.",
10914
+ "type": "boolean"
10915
+ },
9603
10916
  "pandora-market-address": {
9604
10917
  "description": "Market address.",
9605
10918
  "type": "string"
@@ -9706,6 +11019,10 @@
9706
11019
  "description": "State file path.",
9707
11020
  "type": "string"
9708
11021
  },
11022
+ "stream": {
11023
+ "description": "Emit streaming tick lines.",
11024
+ "type": "boolean"
11025
+ },
9709
11026
  "strict-close-time-delta": {
9710
11027
  "description": "Promote close-time delta mismatches from diagnostic to blocking.",
9711
11028
  "type": "boolean"
@@ -9726,6 +11043,10 @@
9726
11043
  "description": "USDC token address override.",
9727
11044
  "type": "string"
9728
11045
  },
11046
+ "verbose": {
11047
+ "description": "Emit expanded per-tick console diagnostics.",
11048
+ "type": "boolean"
11049
+ },
9729
11050
  "webhook-url": {
9730
11051
  "description": "Webhook target URL.",
9731
11052
  "type": "string"
@@ -11049,10 +12370,20 @@
11049
12370
  "summary": "Execute one mirror sync tick with separate Pandora rebalance and Polymarket hedge legs. Rebalance-route flags affect only the Ethereum Pandora leg; cross-venue settlement is not atomic.",
11050
12371
  "supportsRemote": true,
11051
12372
  "supportsWebhook": true,
11052
- "usage": "pandora [--output table|json] mirror sync once --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]"
12373
+ "usage": "pandora [--output table|json] mirror sync once --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--stream|--no-stream] [--verbose] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--hedge-scope pool|total] [--adopt-existing-positions] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]"
11053
12374
  },
11054
12375
  "mirror.sync.run": {
11055
- "agentWorkflow": null,
12376
+ "agentWorkflow": {
12377
+ "executeRequiresValidation": false,
12378
+ "notes": [
12379
+ "The default mirror stop file is ~/.pandora/mirror/STOP. Its presence intentionally blocks local mirror sync starts and ticks until cleared.",
12380
+ "Use mirror.panic clear mode after incident review, or remove the stop file manually only if you know the emergency lock is stale."
12381
+ ],
12382
+ "recommendedTools": [
12383
+ "mirror.panic"
12384
+ ],
12385
+ "requiredTools": []
12386
+ },
11056
12387
  "aliasOf": null,
11057
12388
  "canRunConcurrent": false,
11058
12389
  "canonicalCommandTokens": [
@@ -11061,7 +12392,7 @@
11061
12392
  "run"
11062
12393
  ],
11063
12394
  "canonicalTool": "mirror.sync.run",
11064
- "canonicalUsage": "pandora [--output table|json] mirror sync run --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--daemon] [--stream|--no-stream] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]",
12395
+ "canonicalUsage": "pandora [--output table|json] mirror sync run --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--daemon] [--stream|--no-stream] [--verbose] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--hedge-scope pool|total] [--adopt-existing-positions] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]",
11065
12396
  "controlInputNames": [],
11066
12397
  "dataSchema": "#/definitions/MirrorStatusPayload",
11067
12398
  "emits": [
@@ -11088,6 +12419,10 @@
11088
12419
  "inputSchema": {
11089
12420
  "additionalProperties": false,
11090
12421
  "properties": {
12422
+ "adopt-existing-positions": {
12423
+ "description": "Seed managed Polymarket inventory from existing live YES/NO balances before sell-side recycling.",
12424
+ "type": "boolean"
12425
+ },
11091
12426
  "chain-id": {
11092
12427
  "description": "Chain id.",
11093
12428
  "minimum": 1,
@@ -11151,6 +12486,13 @@
11151
12486
  "minimum": 0,
11152
12487
  "type": "number"
11153
12488
  },
12489
+ "hedge-scope": {
12490
+ "description": "Hedge basis. total includes held Pandora outcome tokens in addition to pool reserves; pool hedges only the AMM reserves.",
12491
+ "enum": [
12492
+ "pool",
12493
+ "total"
12494
+ ]
12495
+ },
11154
12496
  "hedge-trigger-usdc": {
11155
12497
  "description": "Hedge trigger size in USDC.",
11156
12498
  "minimum": 0,
@@ -11351,6 +12693,10 @@
11351
12693
  "description": "USDC token address override.",
11352
12694
  "type": "string"
11353
12695
  },
12696
+ "verbose": {
12697
+ "description": "Emit expanded per-tick console diagnostics.",
12698
+ "type": "boolean"
12699
+ },
11354
12700
  "webhook-url": {
11355
12701
  "description": "Webhook target URL.",
11356
12702
  "type": "string"
@@ -12675,10 +14021,20 @@
12675
14021
  "summary": "Run continuous mirror sync loop with separate Pandora rebalance and Polymarket hedge legs. Rebalance-route flags affect only the Ethereum Pandora leg; cross-venue settlement is not atomic.",
12676
14022
  "supportsRemote": true,
12677
14023
  "supportsWebhook": true,
12678
- "usage": "pandora [--output table|json] mirror sync run --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--daemon] [--stream|--no-stream] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]"
14024
+ "usage": "pandora [--output table|json] mirror sync run --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--daemon] [--stream|--no-stream] [--verbose] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--hedge-scope pool|total] [--adopt-existing-positions] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]"
12679
14025
  },
12680
14026
  "mirror.sync.start": {
12681
- "agentWorkflow": null,
14027
+ "agentWorkflow": {
14028
+ "executeRequiresValidation": false,
14029
+ "notes": [
14030
+ "The default mirror stop file is ~/.pandora/mirror/STOP. Its presence intentionally blocks local mirror sync starts and ticks until cleared.",
14031
+ "Use mirror.panic clear mode after incident review, or remove the stop file manually only if you know the emergency lock is stale."
14032
+ ],
14033
+ "recommendedTools": [
14034
+ "mirror.panic"
14035
+ ],
14036
+ "requiredTools": []
14037
+ },
12682
14038
  "aliasOf": null,
12683
14039
  "canRunConcurrent": false,
12684
14040
  "canonicalCommandTokens": [
@@ -12687,7 +14043,7 @@
12687
14043
  "start"
12688
14044
  ],
12689
14045
  "canonicalTool": "mirror.sync.start",
12690
- "canonicalUsage": "pandora [--output table|json] mirror sync start --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]",
14046
+ "canonicalUsage": "pandora [--output table|json] mirror sync start --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--verbose] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--hedge-scope pool|total] [--adopt-existing-positions] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]",
12691
14047
  "controlInputNames": [],
12692
14048
  "dataSchema": "#/definitions/MirrorStatusPayload",
12693
14049
  "emits": [
@@ -12714,6 +14070,10 @@
12714
14070
  "inputSchema": {
12715
14071
  "additionalProperties": false,
12716
14072
  "properties": {
14073
+ "adopt-existing-positions": {
14074
+ "description": "Seed managed Polymarket inventory from existing live YES/NO balances before sell-side recycling.",
14075
+ "type": "boolean"
14076
+ },
12717
14077
  "chain-id": {
12718
14078
  "description": "Chain id.",
12719
14079
  "minimum": 1,
@@ -12773,6 +14133,13 @@
12773
14133
  "minimum": 0,
12774
14134
  "type": "number"
12775
14135
  },
14136
+ "hedge-scope": {
14137
+ "description": "Hedge basis. total includes held Pandora outcome tokens in addition to pool reserves; pool hedges only the AMM reserves.",
14138
+ "enum": [
14139
+ "pool",
14140
+ "total"
14141
+ ]
14142
+ },
12776
14143
  "hedge-trigger-usdc": {
12777
14144
  "description": "Hedge trigger size in USDC.",
12778
14145
  "minimum": 0,
@@ -12965,6 +14332,10 @@
12965
14332
  "description": "USDC token address override.",
12966
14333
  "type": "string"
12967
14334
  },
14335
+ "verbose": {
14336
+ "description": "Emit expanded per-tick console diagnostics.",
14337
+ "type": "boolean"
14338
+ },
12968
14339
  "webhook-url": {
12969
14340
  "description": "Webhook target URL.",
12970
14341
  "type": "string"
@@ -14289,7 +15660,7 @@
14289
15660
  "summary": "Start detached mirror sync daemon for separate Pandora rebalance and Polymarket hedge legs. Rebalance-route flags affect only the Ethereum Pandora leg; cross-venue settlement is not atomic.",
14290
15661
  "supportsRemote": true,
14291
15662
  "supportsWebhook": true,
14292
- "usage": "pandora [--output table|json] mirror sync start --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]"
15663
+ "usage": "pandora [--output table|json] mirror sync start --pandora-market-address <address>|--market-address <address> --polymarket-market-id <id>|--polymarket-slug <slug> [--paper|--dry-run|--execute-live|--execute] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--funder <address>] [--usdc <address>] [--trust-deploy] [--manifest-file <path>] [--skip-gate] [--strict-close-time-delta] [--verbose] [--interval-ms <ms>] [--drift-trigger-bps <n>] [--hedge-trigger-usdc <n>] [--hedge-ratio <n>] [--hedge-scope pool|total] [--adopt-existing-positions] [--no-hedge] [--rebalance-mode atomic|incremental] [--price-source on-chain|indexer] [--rebalance-route public|auto|flashbots-private|flashbots-bundle] [--rebalance-route-fallback fail|public] [--flashbots-relay-url <url>] [--flashbots-auth-key <key>] [--flashbots-target-block-offset <n>] [--max-rebalance-usdc <n>] [--max-hedge-usdc <n>] [--max-open-exposure-usdc <amount>] [--max-trades-per-day <n>] [--cooldown-ms <ms>] [--depth-slippage-bps <n>] [--min-time-to-close-sec <n>] [--iterations <n>] [--state-file <path>] [--kill-switch-file <path>] [--chain-id <id>] [--rpc-url <url>] [--polymarket-rpc-url <url>] [--polymarket-host <url>] [--polymarket-gamma-url <url>] [--polymarket-gamma-mock-url <url>] [--polymarket-mock-url <url>] [--webhook-url <url>] [--telegram-bot-token <token>] [--telegram-chat-id <id>] [--discord-webhook-url <url>]"
14293
15664
  },
14294
15665
  "mirror.sync.status": {
14295
15666
  "agentWorkflow": null,
@@ -14769,6 +16140,157 @@
14769
16140
  "supportsWebhook": false,
14770
16141
  "usage": "pandora [--output table|json] mirror sync stop --pid-file <path>|--strategy-hash <hash>|--market-address <address>|--all"
14771
16142
  },
16143
+ "mirror.sync.unlock": {
16144
+ "agentWorkflow": {
16145
+ "executeRequiresValidation": false,
16146
+ "notes": [
16147
+ "Unlock clears only the persisted pending-action lock file. It does not settle venue state or change live positions.",
16148
+ "Invalid and zombie locks can be cleared without --force. Reconciliation-required or still-pending locks require operator review and --force."
16149
+ ],
16150
+ "recommendedTools": [
16151
+ "mirror.health"
16152
+ ],
16153
+ "requiredTools": [
16154
+ "mirror.status"
16155
+ ]
16156
+ },
16157
+ "aliasOf": null,
16158
+ "canRunConcurrent": false,
16159
+ "canonicalCommandTokens": [
16160
+ "mirror",
16161
+ "sync",
16162
+ "unlock"
16163
+ ],
16164
+ "canonicalTool": "mirror.sync.unlock",
16165
+ "canonicalUsage": "pandora [--output table|json] mirror sync unlock --state-file <path>|--strategy-hash <hash> [--force] [--stale-after-ms <ms>]",
16166
+ "controlInputNames": [],
16167
+ "dataSchema": "#/definitions/MirrorStatusPayload",
16168
+ "emits": [
16169
+ "mirror.sync.unlock",
16170
+ "mirror.sync.unlock.help",
16171
+ "mirror.sync.help"
16172
+ ],
16173
+ "executeFlags": [],
16174
+ "executeIntentRequired": true,
16175
+ "executeIntentRequiredForLiveMode": false,
16176
+ "expectedLatencyMs": 1000,
16177
+ "externalDependencies": [
16178
+ "filesystem"
16179
+ ],
16180
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
16181
+ "idempotency": "non-idempotent",
16182
+ "inputSchema": {
16183
+ "additionalProperties": false,
16184
+ "properties": {
16185
+ "force": {
16186
+ "description": "Override a reconciliation-required or still-pending lock after operator review.",
16187
+ "type": "boolean"
16188
+ },
16189
+ "intent": {
16190
+ "additionalProperties": false,
16191
+ "properties": {
16192
+ "execute": {
16193
+ "description": "Set true to permit live/mutating execution when supported by the tool.",
16194
+ "type": "boolean"
16195
+ }
16196
+ },
16197
+ "type": "object"
16198
+ },
16199
+ "stale-after-ms": {
16200
+ "description": "Override the stale threshold used to classify pending-action locks.",
16201
+ "minimum": 1,
16202
+ "type": "integer"
16203
+ },
16204
+ "state-file": {
16205
+ "description": "State file path.",
16206
+ "type": "string"
16207
+ },
16208
+ "strategy-hash": {
16209
+ "description": "Mirror strategy hash.",
16210
+ "type": "string"
16211
+ }
16212
+ },
16213
+ "type": "object",
16214
+ "xPandora": {
16215
+ "exclusiveOneOf": [
16216
+ {
16217
+ "not": {
16218
+ "anyOf": [
16219
+ {
16220
+ "required": [
16221
+ "strategy-hash"
16222
+ ]
16223
+ },
16224
+ {
16225
+ "required": [
16226
+ "strategy-hash"
16227
+ ]
16228
+ }
16229
+ ]
16230
+ },
16231
+ "required": [
16232
+ "state-file"
16233
+ ]
16234
+ },
16235
+ {
16236
+ "not": {
16237
+ "anyOf": [
16238
+ {
16239
+ "required": [
16240
+ "state-file"
16241
+ ]
16242
+ },
16243
+ {
16244
+ "required": [
16245
+ "state-file"
16246
+ ]
16247
+ }
16248
+ ]
16249
+ },
16250
+ "required": [
16251
+ "strategy-hash"
16252
+ ]
16253
+ }
16254
+ ],
16255
+ "requiredAnyOf": [
16256
+ {
16257
+ "required": [
16258
+ "state-file"
16259
+ ]
16260
+ },
16261
+ {
16262
+ "required": [
16263
+ "strategy-hash"
16264
+ ]
16265
+ }
16266
+ ]
16267
+ }
16268
+ },
16269
+ "jobCapable": false,
16270
+ "mcpExposed": true,
16271
+ "mcpLongRunningBlocked": false,
16272
+ "mcpMutating": true,
16273
+ "outputModes": [
16274
+ "table",
16275
+ "json"
16276
+ ],
16277
+ "policyScopes": [
16278
+ "mirror:write"
16279
+ ],
16280
+ "preferred": true,
16281
+ "recommendedPreflightTool": "mirror.status",
16282
+ "remoteEligible": true,
16283
+ "requiresSecrets": false,
16284
+ "returnsOperationId": true,
16285
+ "returnsRuntimeHandle": false,
16286
+ "riskLevel": "medium",
16287
+ "safeEquivalent": null,
16288
+ "safeFlags": [],
16289
+ "summary": "Clear persisted pending-action locks for one mirror strategy after operator review.",
16290
+ "supportsRemote": true,
16291
+ "supportsWebhook": false,
16292
+ "usage": "pandora [--output table|json] mirror sync unlock --state-file <path>|--strategy-hash <hash> [--force] [--stale-after-ms <ms>]"
16293
+ },
14772
16294
  "mirror.trace": {
14773
16295
  "agentWorkflow": null,
14774
16296
  "aliasOf": null,
@@ -17651,7 +19173,7 @@
17651
19173
  "preflight"
17652
19174
  ],
17653
19175
  "canonicalTool": "polymarket.preflight",
17654
- "canonicalUsage": "pandora [--output table|json] polymarket preflight [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--rpc-url <url>] [--private-key <hex>] [--funder <address>]",
19176
+ "canonicalUsage": "pandora [--output table|json] polymarket preflight [--condition-id <id>|--slug <slug>|--token-id <id>] [--token yes|no] [--amount-usdc <n>] [--side buy|sell] [--polymarket-host <url>] [--polymarket-mock-url <url>] [--timeout-ms <ms>] [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--rpc-url <url>] [--private-key <hex>] [--funder <address>]",
17655
19177
  "controlInputNames": [],
17656
19178
  "dataSchema": "#/definitions/PolymarketPayload",
17657
19179
  "emits": [
@@ -17673,6 +19195,15 @@
17673
19195
  "inputSchema": {
17674
19196
  "additionalProperties": false,
17675
19197
  "properties": {
19198
+ "amount-usdc": {
19199
+ "description": "Trade notional in USDC for trade-context preflight.",
19200
+ "minimum": 0,
19201
+ "type": "number"
19202
+ },
19203
+ "condition-id": {
19204
+ "description": "Polymarket condition/market id for trade-context preflight.",
19205
+ "type": "string"
19206
+ },
17676
19207
  "fork": {
17677
19208
  "description": "Run in fork mode.",
17678
19209
  "type": "boolean"
@@ -17689,6 +19220,14 @@
17689
19220
  "description": "Polymarket proxy wallet.",
17690
19221
  "type": "string"
17691
19222
  },
19223
+ "polymarket-host": {
19224
+ "description": "Polymarket host override for market-resolution checks.",
19225
+ "type": "string"
19226
+ },
19227
+ "polymarket-mock-url": {
19228
+ "description": "Polymarket mock host override for local/forked trade-context checks.",
19229
+ "type": "string"
19230
+ },
17692
19231
  "private-key": {
17693
19232
  "description": "Hex private key.",
17694
19233
  "type": "string"
@@ -17696,6 +19235,33 @@
17696
19235
  "rpc-url": {
17697
19236
  "description": "RPC URL.",
17698
19237
  "type": "string"
19238
+ },
19239
+ "side": {
19240
+ "description": "Trade side for trade-context preflight.",
19241
+ "enum": [
19242
+ "buy",
19243
+ "sell"
19244
+ ]
19245
+ },
19246
+ "slug": {
19247
+ "description": "Polymarket slug for trade-context preflight.",
19248
+ "type": "string"
19249
+ },
19250
+ "timeout-ms": {
19251
+ "description": "Request timeout in milliseconds.",
19252
+ "minimum": 1,
19253
+ "type": "integer"
19254
+ },
19255
+ "token": {
19256
+ "description": "Outcome token for trade-context preflight when token-id is not supplied.",
19257
+ "enum": [
19258
+ "yes",
19259
+ "no"
19260
+ ]
19261
+ },
19262
+ "token-id": {
19263
+ "description": "Explicit token id for trade-context preflight.",
19264
+ "type": "string"
17699
19265
  }
17700
19266
  },
17701
19267
  "type": "object"
@@ -17723,10 +19289,10 @@
17723
19289
  "riskLevel": "medium",
17724
19290
  "safeEquivalent": null,
17725
19291
  "safeFlags": [],
17726
- "summary": "Run strict Polymarket trade preflight checks.",
19292
+ "summary": "Run strict Polymarket readiness and optional trade-context preflight checks.",
17727
19293
  "supportsRemote": true,
17728
19294
  "supportsWebhook": false,
17729
- "usage": "pandora [--output table|json] polymarket preflight [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--rpc-url <url>] [--private-key <hex>] [--funder <address>]"
19295
+ "usage": "pandora [--output table|json] polymarket preflight [--condition-id <id>|--slug <slug>|--token-id <id>] [--token yes|no] [--amount-usdc <n>] [--side buy|sell] [--polymarket-host <url>] [--polymarket-mock-url <url>] [--timeout-ms <ms>] [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--rpc-url <url>] [--private-key <hex>] [--funder <address>]"
17730
19296
  },
17731
19297
  "polymarket.trade": {
17732
19298
  "agentWorkflow": null,
@@ -21166,7 +22732,7 @@
21166
22732
  "--dry-run",
21167
22733
  "--paper"
21168
22734
  ],
21169
- "summary": "Execute or dry-run sports market creation.",
22735
+ "summary": "Execute or dry-run sports market creation; pari-mutuel execute remains unsupported.",
21170
22736
  "supportsRemote": true,
21171
22737
  "supportsWebhook": false,
21172
22738
  "usage": "pandora [--output table|json] sports create run --event-id <id> [--market-type amm|parimutuel] [--category <id|name>] [--dry-run|--execute] [--liquidity-usdc <n>] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>]"
@@ -22715,7 +24281,7 @@
22715
24281
  "watch"
22716
24282
  ],
22717
24283
  "canonicalTool": "watch",
22718
- "canonicalUsage": "pandora [--output table|json] watch [--wallet <address>] [--market-address <address>] [--side yes|no] [--amount-usdc <amount>] [--iterations <n>] [--interval-ms <ms>] [--chain-id <id>] [--include-events|--no-events] [--yes-pct <0-100>] [--alert-yes-below <0-100>] [--alert-yes-above <0-100>] [--alert-net-liquidity-below <amount>] [--alert-net-liquidity-above <amount>] [--alert-exposure-above <amount>] [--alert-hedge-gap-above <amount>] [--max-trade-size-usdc <amount>] [--max-daily-volume-usdc <amount>] [--max-total-exposure-usdc <amount>] [--max-per-market-exposure-usdc <amount>] [--max-hedge-gap-usdc <amount>] [--fail-on-alert] [--track-brier] [--brier-source <name>] [--brier-file <path>] [--group-by source|market|competition]",
24284
+ "canonicalUsage": "pandora [--output table|json] watch [--wallet <address>] [--market-address <address>] [--side yes|no] [--amount-usdc <amount>] [--once|--iterations <n>] [--interval-ms <ms>] [--chain-id <id>] [--include-events|--no-events] [--yes-pct <0-100>] [--alert-yes-below <0-100>] [--alert-yes-above <0-100>] [--alert-net-liquidity-below <amount>] [--alert-net-liquidity-above <amount>] [--alert-exposure-above <amount>] [--alert-hedge-gap-above <amount>] [--max-trade-size-usdc <amount>] [--max-daily-volume-usdc <amount>] [--max-total-exposure-usdc <amount>] [--max-per-market-exposure-usdc <amount>] [--max-hedge-gap-usdc <amount>] [--fail-on-alert] [--track-brier] [--brier-source <name>] [--brier-file <path>] [--group-by source|market|competition]",
22719
24285
  "controlInputNames": [],
22720
24286
  "dataSchema": "#/definitions/WatchPayload",
22721
24287
  "emits": [
@@ -22844,6 +24410,10 @@
22844
24410
  "description": "Skip event aggregation.",
22845
24411
  "type": "boolean"
22846
24412
  },
24413
+ "once": {
24414
+ "description": "Run exactly one watch snapshot (equivalent to --once / --iterations 1).",
24415
+ "type": "boolean"
24416
+ },
22847
24417
  "side": {
22848
24418
  "description": "Outcome side.",
22849
24419
  "enum": [
@@ -22893,7 +24463,7 @@
22893
24463
  "summary": "Poll portfolio and/or market snapshots with alert thresholds plus watch-scoped exposure and hedge-gap risk limits.",
22894
24464
  "supportsRemote": true,
22895
24465
  "supportsWebhook": false,
22896
- "usage": "pandora [--output table|json] watch [--wallet <address>] [--market-address <address>] [--side yes|no] [--amount-usdc <amount>] [--iterations <n>] [--interval-ms <ms>] [--chain-id <id>] [--include-events|--no-events] [--yes-pct <0-100>] [--alert-yes-below <0-100>] [--alert-yes-above <0-100>] [--alert-net-liquidity-below <amount>] [--alert-net-liquidity-above <amount>] [--alert-exposure-above <amount>] [--alert-hedge-gap-above <amount>] [--max-trade-size-usdc <amount>] [--max-daily-volume-usdc <amount>] [--max-total-exposure-usdc <amount>] [--max-per-market-exposure-usdc <amount>] [--max-hedge-gap-usdc <amount>] [--fail-on-alert] [--track-brier] [--brier-source <name>] [--brier-file <path>] [--group-by source|market|competition]"
24466
+ "usage": "pandora [--output table|json] watch [--wallet <address>] [--market-address <address>] [--side yes|no] [--amount-usdc <amount>] [--once|--iterations <n>] [--interval-ms <ms>] [--chain-id <id>] [--include-events|--no-events] [--yes-pct <0-100>] [--alert-yes-below <0-100>] [--alert-yes-above <0-100>] [--alert-net-liquidity-below <amount>] [--alert-net-liquidity-above <amount>] [--alert-exposure-above <amount>] [--alert-hedge-gap-above <amount>] [--max-trade-size-usdc <amount>] [--max-daily-volume-usdc <amount>] [--max-total-exposure-usdc <amount>] [--max-per-market-exposure-usdc <amount>] [--max-hedge-gap-usdc <amount>] [--fail-on-alert] [--track-brier] [--brier-source <name>] [--brier-file <path>] [--group-by source|market|competition]"
22897
24467
  },
22898
24468
  "webhook": {
22899
24469
  "agentWorkflow": null,