@thisispandora/agent-sdk 0.1.0-alpha.12 → 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,14 +4146,16 @@
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|mine|create plan|create run|scan ..."
4149
+ "usage": "pandora [--output table|json] markets list|get|mine|create plan|create run|hype plan|hype run|scan ..."
4059
4150
  },
4060
4151
  "markets.create": {
4061
4152
  "agentWorkflow": {
4062
4153
  "executeRequiresValidation": true,
4063
4154
  "notes": [
4064
4155
  "Use markets.create.plan to normalize a launch payload into a JSON-safe agent contract.",
4065
- "Legacy launch remains script-native; use markets.create.run for the canonical agent/MCP creation surface."
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."
4066
4159
  ],
4067
4160
  "recommendedTools": [
4068
4161
  "agent.market.autocomplete"
@@ -4130,7 +4223,9 @@
4130
4223
  "executeRequiresValidation": false,
4131
4224
  "notes": [
4132
4225
  "Use agent.market.autocomplete when the question, rules, or target timestamp still need refinement before creation.",
4133
- "markets.create.plan is the canonical JSON-safe planning surface; legacy launch remains script-native."
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."
4134
4229
  ],
4135
4230
  "recommendedTools": [
4136
4231
  "agent.market.autocomplete"
@@ -4350,7 +4445,10 @@
4350
4445
  "executeRequiresValidation": true,
4351
4446
  "notes": [
4352
4447
  "Run agent.market.validate on the exact final market payload before execute mode.",
4353
- "Legacy launch remains script-native; markets.create.run is the canonical agent/MCP market creation surface."
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."
4354
4452
  ],
4355
4453
  "recommendedTools": [
4356
4454
  "agent.market.autocomplete"
@@ -4367,7 +4465,7 @@
4367
4465
  "run"
4368
4466
  ],
4369
4467
  "canonicalTool": "markets.create.run",
4370
- "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>] [--validation-ticket <ticket>] [--min-close-lead-seconds <n>]",
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>]",
4371
4469
  "controlInputNames": [
4372
4470
  "agentPreflight"
4373
4471
  ],
@@ -4512,6 +4610,19 @@
4512
4610
  "minimum": 500,
4513
4611
  "type": "integer"
4514
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
+ },
4515
4626
  "intent": {
4516
4627
  "additionalProperties": false,
4517
4628
  "properties": {
@@ -4592,6 +4703,22 @@
4592
4703
  "acceptsUnixSeconds": true
4593
4704
  }
4594
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
+ },
4595
4722
  "usdc": {
4596
4723
  "description": "Collateral token address.",
4597
4724
  "type": "string"
@@ -4681,7 +4808,7 @@
4681
4808
  "summary": "Dry-run or execute a canonical JSON-safe market creation payload. Legacy `launch` remains script-native.",
4682
4809
  "supportsRemote": true,
4683
4810
  "supportsWebhook": false,
4684
- "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>] [--validation-ticket <ticket>] [--min-close-lead-seconds <n>]"
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>]"
4685
4812
  },
4686
4813
  "markets.get": {
4687
4814
  "agentWorkflow": null,
@@ -4752,21 +4879,35 @@
4752
4879
  "supportsWebhook": false,
4753
4880
  "usage": "pandora [--output table|json] markets get [--id <id> ...] [--stdin]"
4754
4881
  },
4755
- "markets.list": {
4756
- "agentWorkflow": null,
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
+ },
4757
4898
  "aliasOf": null,
4758
4899
  "canRunConcurrent": true,
4759
4900
  "canonicalCommandTokens": [
4760
4901
  "markets",
4761
- "list"
4902
+ "hype"
4762
4903
  ],
4763
- "canonicalTool": "markets.list",
4764
- "canonicalUsage": "pandora [--output table|json] markets list [--limit <n>] [--after <cursor>] [--before <cursor>] [--order-by <field>] [--order-direction asc|desc] [--chain-id <id>] [--creator <address>] [--poll-address <address>] [--market-type <type>|--type <type>] [--where-json <json>] [--active|--resolved|--expiring-soon] [--expiring-hours <n>] [--min-tvl <usdc>] [--hedgeable] [--expand] [--with-odds]",
4904
+ "canonicalTool": "markets.hype",
4905
+ "canonicalUsage": "pandora [--output table|json] markets hype plan|run --area <sports|esports|politics|regional-news|breaking-news> ...",
4765
4906
  "controlInputNames": [],
4766
- "dataSchema": "#/definitions/PagedEntityPayload",
4907
+ "dataSchema": "#/definitions/GenericCommandData",
4767
4908
  "emits": [
4768
- "markets.list",
4769
- "markets.list.help"
4909
+ "markets.hype.help",
4910
+ "markets.help"
4770
4911
  ],
4771
4912
  "executeFlags": [],
4772
4913
  "executeIntentRequired": false,
@@ -4779,96 +4920,7 @@
4779
4920
  "idempotency": "idempotent",
4780
4921
  "inputSchema": {
4781
4922
  "additionalProperties": false,
4782
- "properties": {
4783
- "active": {
4784
- "description": "Filter active markets.",
4785
- "type": "boolean"
4786
- },
4787
- "after": {
4788
- "description": "Pagination cursor.",
4789
- "type": "string"
4790
- },
4791
- "before": {
4792
- "description": "Pagination cursor.",
4793
- "type": "string"
4794
- },
4795
- "chain-id": {
4796
- "description": "Chain id.",
4797
- "minimum": 1,
4798
- "type": "integer"
4799
- },
4800
- "creator": {
4801
- "description": "Creator address.",
4802
- "type": "string"
4803
- },
4804
- "expand": {
4805
- "description": "Expand enriched market payload.",
4806
- "type": "boolean"
4807
- },
4808
- "expiring-hours": {
4809
- "description": "Expiring-soon window in hours.",
4810
- "minimum": 0,
4811
- "type": "number"
4812
- },
4813
- "expiring-soon": {
4814
- "description": "Filter expiring markets.",
4815
- "type": "boolean"
4816
- },
4817
- "hedgeable": {
4818
- "description": "Keep only hedgeable markets.",
4819
- "type": "boolean"
4820
- },
4821
- "limit": {
4822
- "description": "Maximum number of results.",
4823
- "minimum": 1,
4824
- "type": "integer"
4825
- },
4826
- "market-type": {
4827
- "description": "Market type filter.",
4828
- "type": "string"
4829
- },
4830
- "min-tvl": {
4831
- "description": "Minimum TVL in USDC.",
4832
- "minimum": 0,
4833
- "type": "number"
4834
- },
4835
- "order-by": {
4836
- "description": "Sort field.",
4837
- "enum": [
4838
- "createdAt",
4839
- "marketCloseTimestamp",
4840
- "totalVolume",
4841
- "currentTvl"
4842
- ]
4843
- },
4844
- "order-direction": {
4845
- "description": "Sort direction.",
4846
- "enum": [
4847
- "asc",
4848
- "desc"
4849
- ]
4850
- },
4851
- "poll-address": {
4852
- "description": "Poll address.",
4853
- "type": "string"
4854
- },
4855
- "resolved": {
4856
- "description": "Filter resolved markets.",
4857
- "type": "boolean"
4858
- },
4859
- "type": {
4860
- "description": "Alias for market type filter.",
4861
- "type": "string"
4862
- },
4863
- "where-json": {
4864
- "description": "Raw JSON filter override.",
4865
- "type": "string"
4866
- },
4867
- "with-odds": {
4868
- "description": "Include odds enrichment.",
4869
- "type": "boolean"
4870
- }
4871
- },
4923
+ "properties": {},
4872
4924
  "type": "object"
4873
4925
  },
4874
4926
  "jobCapable": false,
@@ -4884,7 +4936,7 @@
4884
4936
  "network:indexer"
4885
4937
  ],
4886
4938
  "preferred": true,
4887
- "recommendedPreflightTool": null,
4939
+ "recommendedPreflightTool": "agent.market.validate",
4888
4940
  "remoteEligible": true,
4889
4941
  "requiresSecrets": false,
4890
4942
  "returnsOperationId": false,
@@ -4892,33 +4944,46 @@
4892
4944
  "riskLevel": "low",
4893
4945
  "safeEquivalent": null,
4894
4946
  "safeFlags": [],
4895
- "summary": "Raw Pandora market browse view with filters and pagination.",
4947
+ "summary": "Research current public-web trends, draft hype market candidates, and optionally run a frozen hype plan.",
4896
4948
  "supportsRemote": true,
4897
4949
  "supportsWebhook": false,
4898
- "usage": "pandora [--output table|json] markets list [--limit <n>] [--after <cursor>] [--before <cursor>] [--order-by <field>] [--order-direction asc|desc] [--chain-id <id>] [--creator <address>] [--poll-address <address>] [--market-type <type>|--type <type>] [--where-json <json>] [--active|--resolved|--expiring-soon] [--expiring-hours <n>] [--min-tvl <usdc>] [--hedgeable] [--expand] [--with-odds]"
4950
+ "usage": "pandora [--output table|json] markets hype plan|run --area <sports|esports|politics|regional-news|breaking-news> ..."
4899
4951
  },
4900
- "markets.mine": {
4901
- "agentWorkflow": null,
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
+ },
4902
4966
  "aliasOf": null,
4903
4967
  "canRunConcurrent": true,
4904
4968
  "canonicalCommandTokens": [
4905
4969
  "markets",
4906
- "mine"
4970
+ "hype",
4971
+ "plan"
4907
4972
  ],
4908
- "canonicalTool": "markets.mine",
4909
- "canonicalUsage": "pandora [--output table|json] markets mine [--wallet <address>] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--indexer-url <url>] [--timeout-ms <ms>]",
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>]",
4910
4975
  "controlInputNames": [],
4911
4976
  "dataSchema": "#/definitions/GenericCommandData",
4912
4977
  "emits": [
4913
- "markets.mine",
4914
- "markets.mine.help"
4978
+ "markets.hype.plan",
4979
+ "markets.hype.help",
4980
+ "markets.help"
4915
4981
  ],
4916
4982
  "executeFlags": [],
4917
4983
  "executeIntentRequired": false,
4918
4984
  "executeIntentRequiredForLiveMode": false,
4919
4985
  "expectedLatencyMs": 5000,
4920
4986
  "externalDependencies": [
4921
- "wallet-secrets",
4922
4987
  "indexer-api",
4923
4988
  "chain-rpc"
4924
4989
  ],
@@ -4927,20 +4992,578 @@
4927
4992
  "inputSchema": {
4928
4993
  "additionalProperties": false,
4929
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
+ },
4930
5028
  "chain-id": {
4931
5029
  "description": "Chain id.",
4932
5030
  "minimum": 1,
4933
5031
  "type": "integer"
4934
5032
  },
4935
- "indexer-url": {
4936
- "description": "Indexer base URL.",
5033
+ "factory": {
5034
+ "description": "Factory contract address.",
4937
5035
  "type": "string"
4938
5036
  },
4939
- "private-key": {
4940
- "description": "Hex private key.",
4941
- "type": "string"
5037
+ "liquidity-usdc": {
5038
+ "description": "Suggested initial liquidity for generated drafts.",
5039
+ "minimum": 0,
5040
+ "type": "number"
4942
5041
  },
4943
- "profile-file": {
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",
5369
+ "safeEquivalent": null,
5370
+ "safeFlags": [
5371
+ "--dry-run"
5372
+ ],
5373
+ "summary": "Dry-run or execute a frozen hype plan candidate without re-running live trend research.",
5374
+ "supportsRemote": true,
5375
+ "supportsWebhook": false,
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>]"
5377
+ },
5378
+ "markets.list": {
5379
+ "agentWorkflow": null,
5380
+ "aliasOf": null,
5381
+ "canRunConcurrent": true,
5382
+ "canonicalCommandTokens": [
5383
+ "markets",
5384
+ "list"
5385
+ ],
5386
+ "canonicalTool": "markets.list",
5387
+ "canonicalUsage": "pandora [--output table|json] markets list [--limit <n>] [--after <cursor>] [--before <cursor>] [--order-by <field>] [--order-direction asc|desc] [--chain-id <id>] [--creator <address>] [--poll-address <address>] [--market-type <type>|--type <type>] [--where-json <json>] [--active|--resolved|--expiring-soon] [--expiring-hours <n>] [--min-tvl <usdc>] [--hedgeable] [--expand] [--with-odds]",
5388
+ "controlInputNames": [],
5389
+ "dataSchema": "#/definitions/PagedEntityPayload",
5390
+ "emits": [
5391
+ "markets.list",
5392
+ "markets.list.help"
5393
+ ],
5394
+ "executeFlags": [],
5395
+ "executeIntentRequired": false,
5396
+ "executeIntentRequiredForLiveMode": false,
5397
+ "expectedLatencyMs": 5000,
5398
+ "externalDependencies": [
5399
+ "indexer-api"
5400
+ ],
5401
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
5402
+ "idempotency": "idempotent",
5403
+ "inputSchema": {
5404
+ "additionalProperties": false,
5405
+ "properties": {
5406
+ "active": {
5407
+ "description": "Filter active markets.",
5408
+ "type": "boolean"
5409
+ },
5410
+ "after": {
5411
+ "description": "Pagination cursor.",
5412
+ "type": "string"
5413
+ },
5414
+ "before": {
5415
+ "description": "Pagination cursor.",
5416
+ "type": "string"
5417
+ },
5418
+ "chain-id": {
5419
+ "description": "Chain id.",
5420
+ "minimum": 1,
5421
+ "type": "integer"
5422
+ },
5423
+ "creator": {
5424
+ "description": "Creator address.",
5425
+ "type": "string"
5426
+ },
5427
+ "expand": {
5428
+ "description": "Expand enriched market payload.",
5429
+ "type": "boolean"
5430
+ },
5431
+ "expiring-hours": {
5432
+ "description": "Expiring-soon window in hours.",
5433
+ "minimum": 0,
5434
+ "type": "number"
5435
+ },
5436
+ "expiring-soon": {
5437
+ "description": "Filter expiring markets.",
5438
+ "type": "boolean"
5439
+ },
5440
+ "hedgeable": {
5441
+ "description": "Keep only hedgeable markets.",
5442
+ "type": "boolean"
5443
+ },
5444
+ "limit": {
5445
+ "description": "Maximum number of results.",
5446
+ "minimum": 1,
5447
+ "type": "integer"
5448
+ },
5449
+ "market-type": {
5450
+ "description": "Market type filter.",
5451
+ "type": "string"
5452
+ },
5453
+ "min-tvl": {
5454
+ "description": "Minimum TVL in USDC.",
5455
+ "minimum": 0,
5456
+ "type": "number"
5457
+ },
5458
+ "order-by": {
5459
+ "description": "Sort field.",
5460
+ "enum": [
5461
+ "createdAt",
5462
+ "marketCloseTimestamp",
5463
+ "totalVolume",
5464
+ "currentTvl"
5465
+ ]
5466
+ },
5467
+ "order-direction": {
5468
+ "description": "Sort direction.",
5469
+ "enum": [
5470
+ "asc",
5471
+ "desc"
5472
+ ]
5473
+ },
5474
+ "poll-address": {
5475
+ "description": "Poll address.",
5476
+ "type": "string"
5477
+ },
5478
+ "resolved": {
5479
+ "description": "Filter resolved markets.",
5480
+ "type": "boolean"
5481
+ },
5482
+ "type": {
5483
+ "description": "Alias for market type filter.",
5484
+ "type": "string"
5485
+ },
5486
+ "where-json": {
5487
+ "description": "Raw JSON filter override.",
5488
+ "type": "string"
5489
+ },
5490
+ "with-odds": {
5491
+ "description": "Include odds enrichment.",
5492
+ "type": "boolean"
5493
+ }
5494
+ },
5495
+ "type": "object"
5496
+ },
5497
+ "jobCapable": false,
5498
+ "mcpExposed": true,
5499
+ "mcpLongRunningBlocked": false,
5500
+ "mcpMutating": false,
5501
+ "outputModes": [
5502
+ "table",
5503
+ "json"
5504
+ ],
5505
+ "policyScopes": [
5506
+ "markets:read",
5507
+ "network:indexer"
5508
+ ],
5509
+ "preferred": true,
5510
+ "recommendedPreflightTool": null,
5511
+ "remoteEligible": true,
5512
+ "requiresSecrets": false,
5513
+ "returnsOperationId": false,
5514
+ "returnsRuntimeHandle": false,
5515
+ "riskLevel": "low",
5516
+ "safeEquivalent": null,
5517
+ "safeFlags": [],
5518
+ "summary": "Raw Pandora market browse view with filters and pagination.",
5519
+ "supportsRemote": true,
5520
+ "supportsWebhook": false,
5521
+ "usage": "pandora [--output table|json] markets list [--limit <n>] [--after <cursor>] [--before <cursor>] [--order-by <field>] [--order-direction asc|desc] [--chain-id <id>] [--creator <address>] [--poll-address <address>] [--market-type <type>|--type <type>] [--where-json <json>] [--active|--resolved|--expiring-soon] [--expiring-hours <n>] [--min-tvl <usdc>] [--hedgeable] [--expand] [--with-odds]"
5522
+ },
5523
+ "markets.mine": {
5524
+ "agentWorkflow": null,
5525
+ "aliasOf": null,
5526
+ "canRunConcurrent": true,
5527
+ "canonicalCommandTokens": [
5528
+ "markets",
5529
+ "mine"
5530
+ ],
5531
+ "canonicalTool": "markets.mine",
5532
+ "canonicalUsage": "pandora [--output table|json] markets mine [--wallet <address>] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--indexer-url <url>] [--timeout-ms <ms>]",
5533
+ "controlInputNames": [],
5534
+ "dataSchema": "#/definitions/GenericCommandData",
5535
+ "emits": [
5536
+ "markets.mine",
5537
+ "markets.mine.help"
5538
+ ],
5539
+ "executeFlags": [],
5540
+ "executeIntentRequired": false,
5541
+ "executeIntentRequiredForLiveMode": false,
5542
+ "expectedLatencyMs": 5000,
5543
+ "externalDependencies": [
5544
+ "wallet-secrets",
5545
+ "indexer-api",
5546
+ "chain-rpc"
5547
+ ],
5548
+ "helpDataSchema": "#/definitions/CommandHelpPayload",
5549
+ "idempotency": "idempotent",
5550
+ "inputSchema": {
5551
+ "additionalProperties": false,
5552
+ "properties": {
5553
+ "chain-id": {
5554
+ "description": "Chain id.",
5555
+ "minimum": 1,
5556
+ "type": "integer"
5557
+ },
5558
+ "indexer-url": {
5559
+ "description": "Indexer base URL.",
5560
+ "type": "string"
5561
+ },
5562
+ "private-key": {
5563
+ "description": "Hex private key.",
5564
+ "type": "string"
5565
+ },
5566
+ "profile-file": {
4944
5567
  "description": "Path to a signer profile file.",
4945
5568
  "type": "string"
4946
5569
  },
@@ -6630,7 +7253,8 @@
6630
7253
  "notes": [
6631
7254
  "Mirror deploy dry-run returns the exact Pandora deployment payload and required validation ticket.",
6632
7255
  "Mirror deploy never auto-copies Polymarket URLs into sources; pass independent public resolution URLs with --sources.",
6633
- "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."
6634
7258
  ],
6635
7259
  "recommendedTools": [
6636
7260
  "agent.market.autocomplete"
@@ -6646,7 +7270,7 @@
6646
7270
  "deploy"
6647
7271
  ],
6648
7272
  "canonicalTool": "mirror.deploy",
6649
- "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>]",
6650
7274
  "controlInputNames": [
6651
7275
  "agentPreflight"
6652
7276
  ],
@@ -6737,8 +7361,14 @@
6737
7361
  "minimum": 1,
6738
7362
  "type": "integer"
6739
7363
  },
6740
- "distribution-no": {
6741
- "description": "Initial NO distribution parts.",
7364
+ "distribution-no": {
7365
+ "description": "Initial NO distribution parts.",
7366
+ "minimum": 0,
7367
+ "type": "number"
7368
+ },
7369
+ "distribution-no-pct": {
7370
+ "description": "Initial NO distribution percent.",
7371
+ "maximum": 100,
6742
7372
  "minimum": 0,
6743
7373
  "type": "number"
6744
7374
  },
@@ -6747,6 +7377,12 @@
6747
7377
  "minimum": 0,
6748
7378
  "type": "number"
6749
7379
  },
7380
+ "distribution-yes-pct": {
7381
+ "description": "Initial YES distribution percent.",
7382
+ "maximum": 100,
7383
+ "minimum": 0,
7384
+ "type": "number"
7385
+ },
6750
7386
  "dry-run": {
6751
7387
  "description": "Run dry-run mode.",
6752
7388
  "type": "boolean"
@@ -7182,7 +7818,7 @@
7182
7818
  "summary": "Deploy a mirror market from selector or plan in dry-run or execute mode.",
7183
7819
  "supportsRemote": true,
7184
7820
  "supportsWebhook": false,
7185
- "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>]"
7186
7822
  },
7187
7823
  "mirror.drift": {
7188
7824
  "agentWorkflow": null,
@@ -7354,6 +7990,7 @@
7354
7990
  "Mirror go inherits the exact market payload from its deploy stage; use the returned validation ticket from paper/dry-run output.",
7355
7991
  "When mirror go will execute a fresh deploy, provide independent public --sources and a matching validation ticket.",
7356
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.",
7357
7994
  "Private-routing flags affect only the Ethereum Pandora rebalance leg. They do not make the Polygon hedge leg atomic."
7358
7995
  ],
7359
7996
  "recommendedTools": [
@@ -7397,6 +8034,10 @@
7397
8034
  "inputSchema": {
7398
8035
  "additionalProperties": false,
7399
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
+ },
7400
8041
  "agentPreflight": {
7401
8042
  "additionalProperties": false,
7402
8043
  "description": "Agent validation attestation for execute or execute-live mode.",
@@ -7560,6 +8201,13 @@
7560
8201
  "minimum": 0,
7561
8202
  "type": "number"
7562
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
+ },
7563
8211
  "hedge-trigger-usdc": {
7564
8212
  "description": "Hedge trigger size in USDC.",
7565
8213
  "minimum": 0,
@@ -7794,6 +8442,10 @@
7794
8442
  "description": "Ticket returned by agent.market.validate for the exact final payload (CLI execute mode).",
7795
8443
  "type": "string"
7796
8444
  },
8445
+ "verbose": {
8446
+ "description": "Emit expanded per-tick console diagnostics.",
8447
+ "type": "boolean"
8448
+ },
7797
8449
  "with-rules": {
7798
8450
  "description": "Include rule payloads and copy diagnostics.",
7799
8451
  "type": "boolean"
@@ -9160,7 +9812,17 @@
9160
9812
  "usage": "pandora [--output table|json] mirror lp-explain --liquidity-usdc <n> [--source-yes-pct <0-100>] [--distribution-yes <parts>] [--distribution-no <parts>]"
9161
9813
  },
9162
9814
  "mirror.panic": {
9163
- "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
+ },
9164
9826
  "aliasOf": null,
9165
9827
  "canRunConcurrent": false,
9166
9828
  "canonicalCommandTokens": [
@@ -9290,7 +9952,7 @@
9290
9952
  "riskLevel": "critical",
9291
9953
  "safeEquivalent": null,
9292
9954
  "safeFlags": [],
9293
- "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.",
9294
9956
  "supportsRemote": true,
9295
9957
  "supportsWebhook": false,
9296
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]"
@@ -10062,10 +10724,20 @@
10062
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.",
10063
10725
  "supportsRemote": false,
10064
10726
  "supportsWebhook": false,
10065
- "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 ..."
10066
10728
  },
10067
10729
  "mirror.sync.once": {
10068
- "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
+ },
10069
10741
  "aliasOf": null,
10070
10742
  "canRunConcurrent": false,
10071
10743
  "canonicalCommandTokens": [
@@ -10074,7 +10746,7 @@
10074
10746
  "once"
10075
10747
  ],
10076
10748
  "canonicalTool": "mirror.sync.once",
10077
- "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>]",
10078
10750
  "controlInputNames": [],
10079
10751
  "dataSchema": "#/definitions/MirrorStatusPayload",
10080
10752
  "emits": [
@@ -10101,6 +10773,10 @@
10101
10773
  "inputSchema": {
10102
10774
  "additionalProperties": false,
10103
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
+ },
10104
10780
  "chain-id": {
10105
10781
  "description": "Chain id.",
10106
10782
  "minimum": 1,
@@ -10160,6 +10836,13 @@
10160
10836
  "minimum": 0,
10161
10837
  "type": "number"
10162
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
+ },
10163
10846
  "hedge-trigger-usdc": {
10164
10847
  "description": "Hedge trigger size in USDC.",
10165
10848
  "minimum": 0,
@@ -10226,6 +10909,10 @@
10226
10909
  "description": "Disable source hedge leg.",
10227
10910
  "type": "boolean"
10228
10911
  },
10912
+ "no-stream": {
10913
+ "description": "Disable streaming tick lines.",
10914
+ "type": "boolean"
10915
+ },
10229
10916
  "pandora-market-address": {
10230
10917
  "description": "Market address.",
10231
10918
  "type": "string"
@@ -10332,6 +11019,10 @@
10332
11019
  "description": "State file path.",
10333
11020
  "type": "string"
10334
11021
  },
11022
+ "stream": {
11023
+ "description": "Emit streaming tick lines.",
11024
+ "type": "boolean"
11025
+ },
10335
11026
  "strict-close-time-delta": {
10336
11027
  "description": "Promote close-time delta mismatches from diagnostic to blocking.",
10337
11028
  "type": "boolean"
@@ -10352,6 +11043,10 @@
10352
11043
  "description": "USDC token address override.",
10353
11044
  "type": "string"
10354
11045
  },
11046
+ "verbose": {
11047
+ "description": "Emit expanded per-tick console diagnostics.",
11048
+ "type": "boolean"
11049
+ },
10355
11050
  "webhook-url": {
10356
11051
  "description": "Webhook target URL.",
10357
11052
  "type": "string"
@@ -11675,10 +12370,20 @@
11675
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.",
11676
12371
  "supportsRemote": true,
11677
12372
  "supportsWebhook": true,
11678
- "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>]"
11679
12374
  },
11680
12375
  "mirror.sync.run": {
11681
- "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
+ },
11682
12387
  "aliasOf": null,
11683
12388
  "canRunConcurrent": false,
11684
12389
  "canonicalCommandTokens": [
@@ -11687,7 +12392,7 @@
11687
12392
  "run"
11688
12393
  ],
11689
12394
  "canonicalTool": "mirror.sync.run",
11690
- "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>]",
11691
12396
  "controlInputNames": [],
11692
12397
  "dataSchema": "#/definitions/MirrorStatusPayload",
11693
12398
  "emits": [
@@ -11714,6 +12419,10 @@
11714
12419
  "inputSchema": {
11715
12420
  "additionalProperties": false,
11716
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
+ },
11717
12426
  "chain-id": {
11718
12427
  "description": "Chain id.",
11719
12428
  "minimum": 1,
@@ -11777,6 +12486,13 @@
11777
12486
  "minimum": 0,
11778
12487
  "type": "number"
11779
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
+ },
11780
12496
  "hedge-trigger-usdc": {
11781
12497
  "description": "Hedge trigger size in USDC.",
11782
12498
  "minimum": 0,
@@ -11977,6 +12693,10 @@
11977
12693
  "description": "USDC token address override.",
11978
12694
  "type": "string"
11979
12695
  },
12696
+ "verbose": {
12697
+ "description": "Emit expanded per-tick console diagnostics.",
12698
+ "type": "boolean"
12699
+ },
11980
12700
  "webhook-url": {
11981
12701
  "description": "Webhook target URL.",
11982
12702
  "type": "string"
@@ -13301,10 +14021,20 @@
13301
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.",
13302
14022
  "supportsRemote": true,
13303
14023
  "supportsWebhook": true,
13304
- "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>]"
13305
14025
  },
13306
14026
  "mirror.sync.start": {
13307
- "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
+ },
13308
14038
  "aliasOf": null,
13309
14039
  "canRunConcurrent": false,
13310
14040
  "canonicalCommandTokens": [
@@ -13313,7 +14043,7 @@
13313
14043
  "start"
13314
14044
  ],
13315
14045
  "canonicalTool": "mirror.sync.start",
13316
- "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>]",
13317
14047
  "controlInputNames": [],
13318
14048
  "dataSchema": "#/definitions/MirrorStatusPayload",
13319
14049
  "emits": [
@@ -13340,6 +14070,10 @@
13340
14070
  "inputSchema": {
13341
14071
  "additionalProperties": false,
13342
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
+ },
13343
14077
  "chain-id": {
13344
14078
  "description": "Chain id.",
13345
14079
  "minimum": 1,
@@ -13399,6 +14133,13 @@
13399
14133
  "minimum": 0,
13400
14134
  "type": "number"
13401
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
+ },
13402
14143
  "hedge-trigger-usdc": {
13403
14144
  "description": "Hedge trigger size in USDC.",
13404
14145
  "minimum": 0,
@@ -13591,6 +14332,10 @@
13591
14332
  "description": "USDC token address override.",
13592
14333
  "type": "string"
13593
14334
  },
14335
+ "verbose": {
14336
+ "description": "Emit expanded per-tick console diagnostics.",
14337
+ "type": "boolean"
14338
+ },
13594
14339
  "webhook-url": {
13595
14340
  "description": "Webhook target URL.",
13596
14341
  "type": "string"
@@ -14915,7 +15660,7 @@
14915
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.",
14916
15661
  "supportsRemote": true,
14917
15662
  "supportsWebhook": true,
14918
- "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>]"
14919
15664
  },
14920
15665
  "mirror.sync.status": {
14921
15666
  "agentWorkflow": null,
@@ -15395,6 +16140,157 @@
15395
16140
  "supportsWebhook": false,
15396
16141
  "usage": "pandora [--output table|json] mirror sync stop --pid-file <path>|--strategy-hash <hash>|--market-address <address>|--all"
15397
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
+ },
15398
16294
  "mirror.trace": {
15399
16295
  "agentWorkflow": null,
15400
16296
  "aliasOf": null,
@@ -18277,7 +19173,7 @@
18277
19173
  "preflight"
18278
19174
  ],
18279
19175
  "canonicalTool": "polymarket.preflight",
18280
- "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>]",
18281
19177
  "controlInputNames": [],
18282
19178
  "dataSchema": "#/definitions/PolymarketPayload",
18283
19179
  "emits": [
@@ -18299,6 +19195,15 @@
18299
19195
  "inputSchema": {
18300
19196
  "additionalProperties": false,
18301
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
+ },
18302
19207
  "fork": {
18303
19208
  "description": "Run in fork mode.",
18304
19209
  "type": "boolean"
@@ -18315,6 +19220,14 @@
18315
19220
  "description": "Polymarket proxy wallet.",
18316
19221
  "type": "string"
18317
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
+ },
18318
19231
  "private-key": {
18319
19232
  "description": "Hex private key.",
18320
19233
  "type": "string"
@@ -18322,6 +19235,33 @@
18322
19235
  "rpc-url": {
18323
19236
  "description": "RPC URL.",
18324
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"
18325
19265
  }
18326
19266
  },
18327
19267
  "type": "object"
@@ -18349,10 +19289,10 @@
18349
19289
  "riskLevel": "medium",
18350
19290
  "safeEquivalent": null,
18351
19291
  "safeFlags": [],
18352
- "summary": "Run strict Polymarket trade preflight checks.",
19292
+ "summary": "Run strict Polymarket readiness and optional trade-context preflight checks.",
18353
19293
  "supportsRemote": true,
18354
19294
  "supportsWebhook": false,
18355
- "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>]"
18356
19296
  },
18357
19297
  "polymarket.trade": {
18358
19298
  "agentWorkflow": null,
@@ -23341,7 +24281,7 @@
23341
24281
  "watch"
23342
24282
  ],
23343
24283
  "canonicalTool": "watch",
23344
- "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]",
23345
24285
  "controlInputNames": [],
23346
24286
  "dataSchema": "#/definitions/WatchPayload",
23347
24287
  "emits": [
@@ -23470,6 +24410,10 @@
23470
24410
  "description": "Skip event aggregation.",
23471
24411
  "type": "boolean"
23472
24412
  },
24413
+ "once": {
24414
+ "description": "Run exactly one watch snapshot (equivalent to --once / --iterations 1).",
24415
+ "type": "boolean"
24416
+ },
23473
24417
  "side": {
23474
24418
  "description": "Outcome side.",
23475
24419
  "enum": [
@@ -23519,7 +24463,7 @@
23519
24463
  "summary": "Poll portfolio and/or market snapshots with alert thresholds plus watch-scoped exposure and hedge-gap risk limits.",
23520
24464
  "supportsRemote": true,
23521
24465
  "supportsWebhook": false,
23522
- "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]"
23523
24467
  },
23524
24468
  "webhook": {
23525
24469
  "agentWorkflow": null,