@quantbrasil/cli 0.1.0-beta.1 → 0.1.0-beta.11

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.
Files changed (77) hide show
  1. package/README.md +64 -11
  2. package/dist/cli/client.js +4 -0
  3. package/dist/cli/index.d.ts +14 -4
  4. package/dist/cli/index.d.ts.map +1 -1
  5. package/dist/cli/index.js +72 -14
  6. package/dist/cli/prompt.d.ts +1 -0
  7. package/dist/cli/prompt.d.ts.map +1 -1
  8. package/dist/cli/prompt.js +17 -0
  9. package/dist/cli/skills.d.ts +9 -0
  10. package/dist/cli/skills.d.ts.map +1 -1
  11. package/dist/cli/skills.js +68 -4
  12. package/dist/commands/auth.d.ts +18 -0
  13. package/dist/commands/auth.d.ts.map +1 -1
  14. package/dist/commands/auth.js +49 -0
  15. package/dist/commands/cointegration.d.ts +52 -0
  16. package/dist/commands/cointegration.d.ts.map +1 -0
  17. package/dist/commands/cointegration.js +118 -0
  18. package/dist/commands/market.d.ts +1 -0
  19. package/dist/commands/market.d.ts.map +1 -1
  20. package/dist/commands/market.js +17 -1
  21. package/dist/commands/portfolios.d.ts +148 -8
  22. package/dist/commands/portfolios.d.ts.map +1 -1
  23. package/dist/commands/portfolios.js +557 -55
  24. package/dist/commands/rankings.d.ts +82 -0
  25. package/dist/commands/rankings.d.ts.map +1 -0
  26. package/dist/commands/rankings.js +235 -0
  27. package/dist/commands/screening.d.ts +120 -0
  28. package/dist/commands/screening.d.ts.map +1 -0
  29. package/dist/commands/screening.js +361 -0
  30. package/dist/commands/skills.js +7 -7
  31. package/dist/commands/update.d.ts +23 -0
  32. package/dist/commands/update.d.ts.map +1 -0
  33. package/dist/commands/update.js +209 -0
  34. package/dist/index.d.ts +3 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -1
  37. package/dist/vendor/core/capabilities/cointegration.d.ts +52 -0
  38. package/dist/vendor/core/capabilities/cointegration.d.ts.map +1 -0
  39. package/dist/vendor/core/capabilities/cointegration.js +63 -0
  40. package/dist/vendor/core/capabilities/index.d.ts +3 -1
  41. package/dist/vendor/core/capabilities/index.d.ts.map +1 -1
  42. package/dist/vendor/core/capabilities/index.js +3 -1
  43. package/dist/vendor/core/capabilities/market.d.ts +9 -1
  44. package/dist/vendor/core/capabilities/market.d.ts.map +1 -1
  45. package/dist/vendor/core/capabilities/market.js +10 -0
  46. package/dist/vendor/core/capabilities/portfolios.d.ts +452 -56
  47. package/dist/vendor/core/capabilities/portfolios.d.ts.map +1 -1
  48. package/dist/vendor/core/capabilities/portfolios.js +434 -116
  49. package/dist/vendor/core/capabilities/rankings.d.ts +83 -0
  50. package/dist/vendor/core/capabilities/rankings.d.ts.map +1 -0
  51. package/dist/vendor/core/capabilities/rankings.js +96 -0
  52. package/dist/vendor/core/capabilities/registry.d.ts +1380 -414
  53. package/dist/vendor/core/capabilities/registry.d.ts.map +1 -1
  54. package/dist/vendor/core/capabilities/registry.js +6 -2
  55. package/dist/vendor/core/capabilities/screening.d.ts +136 -0
  56. package/dist/vendor/core/capabilities/screening.d.ts.map +1 -0
  57. package/dist/vendor/core/capabilities/screening.js +155 -0
  58. package/dist/vendor/core/capabilities/types.d.ts +1 -1
  59. package/dist/vendor/core/capabilities/types.d.ts.map +1 -1
  60. package/package.json +3 -3
  61. package/skills/quantbrasil/SKILL.md +31 -11
  62. package/skills/quantbrasil/references/cli.md +112 -19
  63. package/skills/quantbrasil/references/cointegration.md +40 -0
  64. package/skills/quantbrasil/references/costs.md +10 -4
  65. package/skills/quantbrasil/references/errors.md +16 -5
  66. package/skills/quantbrasil/references/portfolios.md +114 -0
  67. package/skills/quantbrasil/references/quality-eval-queries.json +147 -0
  68. package/skills/quantbrasil/references/rankings.md +64 -0
  69. package/skills/quantbrasil/references/screening.md +212 -0
  70. package/skills/quantbrasil/references/unsupported.md +9 -2
  71. package/skills/quantbrasil/references/workflows.md +117 -23
  72. package/dist/commands/analytics.d.ts +0 -131
  73. package/dist/commands/analytics.d.ts.map +0 -1
  74. package/dist/commands/analytics.js +0 -291
  75. package/dist/vendor/core/capabilities/analytics.d.ts +0 -187
  76. package/dist/vendor/core/capabilities/analytics.d.ts.map +0 -1
  77. package/dist/vendor/core/capabilities/analytics.js +0 -214
@@ -26,8 +26,16 @@ export declare const capabilityRegistry: readonly [{
26
26
  readonly placeholder: "TIPO";
27
27
  readonly enumValues: readonly ["B3", "ETF", "ETF-US", "BDR", "Futuro", "Crypto", "S&P500"];
28
28
  readonly description: "Filter by the exact monitored asset type.";
29
+ }, {
30
+ readonly kind: "option";
31
+ readonly flag: "--search";
32
+ readonly name: "search";
33
+ readonly type: "string";
34
+ readonly required: false;
35
+ readonly placeholder: "TEXTO";
36
+ readonly description: "Filter monitored tickers by case-insensitive text.";
29
37
  }];
30
- readonly examples: readonly ["quantbrasil market assets", "quantbrasil market assets --type B3"];
38
+ readonly examples: readonly ["quantbrasil market assets", "quantbrasil market assets --type B3", "quantbrasil market assets --search BTC"];
31
39
  };
32
40
  readonly tool: {
33
41
  readonly name: "qb_market_assets";
@@ -131,13 +139,227 @@ export declare const capabilityRegistry: readonly [{
131
139
  };
132
140
  readonly outputModes: readonly ["json", "human"];
133
141
  }, {
134
- readonly id: "portfolios.list";
142
+ readonly id: "rankings.list";
143
+ readonly kind: "read";
144
+ readonly visibility: readonly ["cli", "opencode"];
145
+ readonly description: "Lista rankings do sistema e rankings do usuário disponíveis para consulta atual.";
146
+ readonly http: {
147
+ readonly method: "GET";
148
+ readonly path: "/api/desk/tools/rankings/list";
149
+ readonly inputMode: "none";
150
+ readonly schemas: {
151
+ readonly request: null;
152
+ readonly response: "RankingsListResponse";
153
+ };
154
+ };
155
+ readonly cli: {
156
+ readonly group: "rankings";
157
+ readonly command: "list";
158
+ readonly summary: "Lista rankings do sistema e rankings do usuário.";
159
+ readonly positional: readonly [];
160
+ readonly options: readonly [];
161
+ readonly examples: readonly ["quantbrasil rankings list"];
162
+ };
163
+ readonly tool: {
164
+ readonly name: "qb_rankings_list";
165
+ readonly title: "Listar rankings";
166
+ };
167
+ readonly outputModes: readonly ["json", "human"];
168
+ }, {
169
+ readonly id: "rankings.current";
170
+ readonly kind: "read";
171
+ readonly visibility: readonly ["cli", "opencode"];
172
+ readonly description: "Retorna os ativos atuais no topo de um ranking do sistema ou ranking do usuário.";
173
+ readonly http: {
174
+ readonly method: "POST";
175
+ readonly path: "/api/desk/tools/rankings/current";
176
+ readonly inputMode: "json_body";
177
+ readonly schemas: {
178
+ readonly request: "RankingCurrentRequest";
179
+ readonly response: "RankingCurrentResponse";
180
+ };
181
+ };
182
+ readonly cli: {
183
+ readonly group: "rankings";
184
+ readonly command: "current";
185
+ readonly summary: "Consulta o topo atual de um ranking.";
186
+ readonly positional: readonly [];
187
+ readonly options: readonly [{
188
+ readonly kind: "option";
189
+ readonly flag: "--system";
190
+ readonly name: "system_id";
191
+ readonly type: "string";
192
+ readonly required: false;
193
+ readonly placeholder: "SLUG";
194
+ readonly exclusiveGroup: "ranking_selector";
195
+ readonly description: "Slug de ranking do sistema retornado por `rankings list`, por exemplo momentum-90d ou low-risk.";
196
+ }, {
197
+ readonly kind: "option";
198
+ readonly flag: "--id";
199
+ readonly name: "user_ranking_id";
200
+ readonly type: "integer";
201
+ readonly required: false;
202
+ readonly placeholder: "ID";
203
+ readonly exclusiveGroup: "ranking_selector";
204
+ readonly description: "ID numérico de ranking do usuário retornado por `rankings list`.";
205
+ }, {
206
+ readonly kind: "option";
207
+ readonly flag: "--top";
208
+ readonly name: "top_n";
209
+ readonly type: "integer";
210
+ readonly required: false;
211
+ readonly placeholder: "N";
212
+ readonly defaultValue: 20;
213
+ readonly description: "Número de ativos do topo do ranking a retornar.";
214
+ }];
215
+ readonly examples: readonly ["quantbrasil rankings current --system momentum-90d --top 20", "quantbrasil rankings current --system magic-formula --top 10", "quantbrasil rankings current --system low-risk --top 30", "quantbrasil rankings current --id 123 --top 20"];
216
+ };
217
+ readonly tool: {
218
+ readonly name: "qb_rankings_current";
219
+ readonly title: "Consultar ranking atual";
220
+ };
221
+ readonly outputModes: readonly ["json", "human"];
222
+ }, {
223
+ readonly id: "screening.universes";
224
+ readonly kind: "read";
225
+ readonly visibility: readonly ["cli", "opencode"];
226
+ readonly description: "Lista universos salvos e baseados em portfólios disponíveis para screening de indicadores.";
227
+ readonly http: {
228
+ readonly method: "GET";
229
+ readonly path: "/api/desk/tools/screening/universes";
230
+ readonly inputMode: "none";
231
+ readonly schemas: {
232
+ readonly request: null;
233
+ readonly response: "ScreeningUniversesResponse";
234
+ };
235
+ };
236
+ readonly cli: {
237
+ readonly group: "screening";
238
+ readonly command: "universes";
239
+ readonly summary: "Lista carteiras do sistema, watchlists e carteiras disponíveis para screening.";
240
+ readonly positional: readonly [];
241
+ readonly options: readonly [];
242
+ readonly examples: readonly ["quantbrasil screening universes"];
243
+ };
244
+ readonly tool: {
245
+ readonly name: "qb_screening_universes";
246
+ readonly title: "Listar universos de screening";
247
+ };
248
+ readonly outputModes: readonly ["json", "human"];
249
+ }, {
250
+ readonly id: "screening.indicators";
251
+ readonly kind: "read";
252
+ readonly visibility: readonly ["cli", "opencode"];
253
+ readonly description: "Lista indicadores, parâmetros e operadores disponíveis para screening.";
254
+ readonly http: {
255
+ readonly method: "GET";
256
+ readonly path: "/api/desk/tools/screening/indicators";
257
+ readonly inputMode: "none";
258
+ readonly schemas: {
259
+ readonly request: null;
260
+ readonly response: "ScreeningIndicatorsResponse";
261
+ };
262
+ };
263
+ readonly cli: {
264
+ readonly group: "screening";
265
+ readonly command: "indicators";
266
+ readonly summary: "Lista indicadores, parâmetros e exemplos disponíveis para screening.";
267
+ readonly positional: readonly [];
268
+ readonly options: readonly [];
269
+ readonly examples: readonly ["quantbrasil screening indicators", "quantbrasil screening indicators --json"];
270
+ };
271
+ readonly tool: {
272
+ readonly name: "qb_screening_indicators";
273
+ readonly title: "Listar indicadores de screening";
274
+ };
275
+ readonly outputModes: readonly ["json", "human"];
276
+ }, {
277
+ readonly id: "screening.run";
278
+ readonly kind: "read";
279
+ readonly visibility: readonly ["cli", "opencode"];
280
+ readonly description: "Executa o screener de indicadores existente sobre um universo salvo baseado em portfólio.";
281
+ readonly http: {
282
+ readonly method: "POST";
283
+ readonly path: "/api/desk/tools/screening/run";
284
+ readonly inputMode: "json_body";
285
+ readonly schemas: {
286
+ readonly request: "ScreeningRunRequest";
287
+ readonly response: "ScreeningRunResponse";
288
+ };
289
+ };
290
+ readonly cli: {
291
+ readonly group: "screening";
292
+ readonly command: "run";
293
+ readonly summary: "Executa screening de indicadores a partir de um payload ScreenerRequest JSON.";
294
+ readonly positional: readonly [];
295
+ readonly options: readonly [{
296
+ readonly kind: "option";
297
+ readonly flag: "--system";
298
+ readonly name: "system_slug";
299
+ readonly type: "string";
300
+ readonly required: false;
301
+ readonly placeholder: "SLUG";
302
+ readonly exclusiveGroup: "screening_universe_selector";
303
+ readonly description: "Slug da carteira do sistema retornado por `screening universes`, por exemplo acoes-mais-liquidas.";
304
+ }, {
305
+ readonly kind: "option";
306
+ readonly flag: "--watchlist";
307
+ readonly name: "watchlist_id";
308
+ readonly type: "integer";
309
+ readonly required: false;
310
+ readonly placeholder: "ID";
311
+ readonly exclusiveGroup: "screening_universe_selector";
312
+ readonly description: "ID da watchlist retornado por `watchlists list`.";
313
+ }, {
314
+ readonly kind: "option";
315
+ readonly flag: "--holding";
316
+ readonly name: "holding_id";
317
+ readonly type: "integer";
318
+ readonly required: false;
319
+ readonly placeholder: "ID";
320
+ readonly exclusiveGroup: "screening_universe_selector";
321
+ readonly description: "ID da carteira retornado por `holdings list`.";
322
+ }, {
323
+ readonly kind: "option";
324
+ readonly flag: "--query-file";
325
+ readonly name: "query_file";
326
+ readonly type: "string";
327
+ readonly required: true;
328
+ readonly placeholder: "ARQUIVO|-";
329
+ readonly description: "Caminho para um arquivo ScreenerRequest JSON completo, ou `-` para ler JSON de stdin.";
330
+ }, {
331
+ readonly kind: "option";
332
+ readonly flag: "--limit";
333
+ readonly name: "limit";
334
+ readonly type: "integer";
335
+ readonly required: false;
336
+ readonly placeholder: "N";
337
+ readonly description: "Sobrescreve o limit de topo do ScreenerRequest sem alterar o arquivo da consulta.";
338
+ }, {
339
+ readonly kind: "option";
340
+ readonly flag: "--sort";
341
+ readonly name: "sort";
342
+ readonly type: "enum";
343
+ readonly required: false;
344
+ readonly placeholder: "price|ticker";
345
+ readonly enumValues: readonly ["price", "ticker"];
346
+ readonly description: "Sobrescreve o sort de topo do ScreenerRequest sem alterar o arquivo da consulta.";
347
+ }];
348
+ readonly examples: readonly ["quantbrasil screening run --system acoes-mais-liquidas --query-file ./screening.json", "quantbrasil screening run --watchlist 93 --query-file ./screening.json --limit 25", "cat screening.json | quantbrasil screening run --holding 182 --query-file - --sort ticker"];
349
+ };
350
+ readonly tool: {
351
+ readonly name: "qb_screening_run";
352
+ readonly title: "Executar screening de indicadores";
353
+ };
354
+ readonly outputModes: readonly ["json", "human"];
355
+ }, {
356
+ readonly id: "watchlists.list";
135
357
  readonly kind: "read";
136
358
  readonly visibility: readonly ["cli", "opencode"];
137
- readonly description: "List every portfolio owned by the authenticated user.";
359
+ readonly description: "List watchlists owned by the authenticated user.";
138
360
  readonly http: {
139
361
  readonly method: "GET";
140
- readonly path: "/api/desk/tools/portfolio/list";
362
+ readonly path: "/api/desk/tools/watchlist/list";
141
363
  readonly inputMode: "none";
142
364
  readonly schemas: {
143
365
  readonly request: null;
@@ -145,26 +367,26 @@ export declare const capabilityRegistry: readonly [{
145
367
  };
146
368
  };
147
369
  readonly cli: {
148
- readonly group: "portfolios";
370
+ readonly group: "watchlists";
149
371
  readonly command: "list";
150
- readonly summary: "List the user portfolios available in QuantBrasil.";
372
+ readonly summary: "List watchlists for tracking ideas and filters.";
151
373
  readonly positional: readonly [];
152
374
  readonly options: readonly [];
153
- readonly examples: readonly ["quantbrasil portfolios list"];
375
+ readonly examples: readonly ["quantbrasil watchlists list"];
154
376
  };
155
377
  readonly tool: {
156
- readonly name: "qb_portfolio_list";
157
- readonly title: "List portfolios";
378
+ readonly name: "qb_watchlist_list";
379
+ readonly title: "List watchlists";
158
380
  };
159
381
  readonly outputModes: readonly ["json", "human"];
160
382
  }, {
161
- readonly id: "portfolios.get";
383
+ readonly id: "watchlists.get";
162
384
  readonly kind: "read";
163
385
  readonly visibility: readonly ["cli", "opencode"];
164
- readonly description: "Return one saved portfolio by id, scoped to the acting user.";
386
+ readonly description: "Return one watchlist by id, scoped to the acting user.";
165
387
  readonly http: {
166
388
  readonly method: "POST";
167
- readonly path: "/api/desk/tools/portfolio/get";
389
+ readonly path: "/api/desk/tools/watchlist/get";
168
390
  readonly inputMode: "json_body";
169
391
  readonly schemas: {
170
392
  readonly request: "PortfolioGetRequest";
@@ -172,33 +394,33 @@ export declare const capabilityRegistry: readonly [{
172
394
  };
173
395
  };
174
396
  readonly cli: {
175
- readonly group: "portfolios";
397
+ readonly group: "watchlists";
176
398
  readonly command: "get";
177
- readonly summary: "Get a saved portfolio by id.";
399
+ readonly summary: "Get a watchlist by id.";
178
400
  readonly positional: readonly [{
179
401
  readonly kind: "positional";
180
402
  readonly name: "portfolio_id";
181
403
  readonly type: "integer";
182
404
  readonly required: true;
183
405
  readonly placeholder: "ID";
184
- readonly description: "Saved portfolio identifier.";
406
+ readonly description: "Stable saved object identifier.";
185
407
  }];
186
408
  readonly options: readonly [];
187
- readonly examples: readonly ["quantbrasil portfolios get 123"];
409
+ readonly examples: readonly ["quantbrasil watchlists get 123"];
188
410
  };
189
411
  readonly tool: {
190
- readonly name: "qb_portfolio_get";
191
- readonly title: "Get portfolio";
412
+ readonly name: "qb_watchlist_get";
413
+ readonly title: "Get watchlist";
192
414
  };
193
415
  readonly outputModes: readonly ["json", "human"];
194
416
  }, {
195
- readonly id: "portfolios.create";
417
+ readonly id: "watchlists.create";
196
418
  readonly kind: "mutation";
197
419
  readonly visibility: readonly ["cli", "opencode"];
198
- readonly description: "Create a new saved portfolio for the authenticated user.";
420
+ readonly description: "Create a new watchlist for the authenticated user.";
199
421
  readonly http: {
200
422
  readonly method: "POST";
201
- readonly path: "/api/desk/tools/portfolio/create";
423
+ readonly path: "/api/desk/tools/watchlist/create";
202
424
  readonly inputMode: "json_body";
203
425
  readonly schemas: {
204
426
  readonly request: "PortfolioCreateRequest";
@@ -206,33 +428,33 @@ export declare const capabilityRegistry: readonly [{
206
428
  };
207
429
  };
208
430
  readonly cli: {
209
- readonly group: "portfolios";
431
+ readonly group: "watchlists";
210
432
  readonly command: "create";
211
- readonly summary: "Create a new portfolio.";
433
+ readonly summary: "Create a new watchlist.";
212
434
  readonly positional: readonly [{
213
435
  readonly kind: "positional";
214
436
  readonly name: "name";
215
437
  readonly type: "string";
216
438
  readonly required: true;
217
439
  readonly placeholder: "NOME";
218
- readonly description: "Portfolio name to create.";
440
+ readonly description: "Name to save.";
219
441
  }];
220
442
  readonly options: readonly [];
221
- readonly examples: readonly ["quantbrasil portfolios create \"Dividendos\""];
443
+ readonly examples: readonly ["quantbrasil watchlists create \"Dividendos\""];
222
444
  };
223
445
  readonly tool: {
224
- readonly name: "qb_portfolio_create";
225
- readonly title: "Create portfolio";
446
+ readonly name: "qb_watchlist_create";
447
+ readonly title: "Create watchlist";
226
448
  };
227
449
  readonly outputModes: readonly ["json", "human"];
228
450
  }, {
229
- readonly id: "portfolios.rename";
451
+ readonly id: "watchlists.rename";
230
452
  readonly kind: "mutation";
231
453
  readonly visibility: readonly ["cli", "opencode"];
232
- readonly description: "Rename a saved portfolio owned by the authenticated user.";
454
+ readonly description: "Rename a watchlist owned by the authenticated user.";
233
455
  readonly http: {
234
456
  readonly method: "POST";
235
- readonly path: "/api/desk/tools/portfolio/rename";
457
+ readonly path: "/api/desk/tools/watchlist/rename";
236
458
  readonly inputMode: "json_body";
237
459
  readonly schemas: {
238
460
  readonly request: "PortfolioRenameRequest";
@@ -240,40 +462,40 @@ export declare const capabilityRegistry: readonly [{
240
462
  };
241
463
  };
242
464
  readonly cli: {
243
- readonly group: "portfolios";
465
+ readonly group: "watchlists";
244
466
  readonly command: "rename";
245
- readonly summary: "Rename an existing portfolio.";
467
+ readonly summary: "Rename an existing watchlist.";
246
468
  readonly positional: readonly [{
247
469
  readonly kind: "positional";
248
470
  readonly name: "portfolio_id";
249
471
  readonly type: "integer";
250
472
  readonly required: true;
251
473
  readonly placeholder: "ID";
252
- readonly description: "Saved portfolio identifier.";
474
+ readonly description: "Stable saved object identifier.";
253
475
  }, {
254
476
  readonly kind: "positional";
255
477
  readonly name: "name";
256
478
  readonly type: "string";
257
479
  readonly required: true;
258
480
  readonly placeholder: "NOME";
259
- readonly description: "New portfolio name.";
481
+ readonly description: "Name to save.";
260
482
  }];
261
483
  readonly options: readonly [];
262
- readonly examples: readonly ["quantbrasil portfolios rename 123 \"Longo Prazo\""];
484
+ readonly examples: readonly ["quantbrasil watchlists rename 123 \"Longo Prazo\""];
263
485
  };
264
486
  readonly tool: {
265
- readonly name: "qb_portfolio_rename";
266
- readonly title: "Rename portfolio";
487
+ readonly name: "qb_watchlist_rename";
488
+ readonly title: "Rename watchlist";
267
489
  };
268
490
  readonly outputModes: readonly ["json", "human"];
269
491
  }, {
270
- readonly id: "portfolios.add-assets";
492
+ readonly id: "watchlists.add-assets";
271
493
  readonly kind: "mutation";
272
494
  readonly visibility: readonly ["cli", "opencode"];
273
- readonly description: "Add one or more monitored tickers to a saved portfolio.";
495
+ readonly description: "Add one or more monitored tickers to a watchlist.";
274
496
  readonly http: {
275
497
  readonly method: "POST";
276
- readonly path: "/api/desk/tools/portfolio/add_assets";
498
+ readonly path: "/api/desk/tools/watchlist/add_assets";
277
499
  readonly inputMode: "json_body";
278
500
  readonly schemas: {
279
501
  readonly request: "PortfolioAddAssetsRequest";
@@ -281,16 +503,16 @@ export declare const capabilityRegistry: readonly [{
281
503
  };
282
504
  };
283
505
  readonly cli: {
284
- readonly group: "portfolios";
506
+ readonly group: "watchlists";
285
507
  readonly command: "add-assets";
286
- readonly summary: "Add monitored tickers to an existing portfolio.";
508
+ readonly summary: "Add monitored tickers to an existing watchlist.";
287
509
  readonly positional: readonly [{
288
510
  readonly kind: "positional";
289
511
  readonly name: "portfolio_id";
290
512
  readonly type: "integer";
291
513
  readonly required: true;
292
514
  readonly placeholder: "ID";
293
- readonly description: "Saved portfolio identifier.";
515
+ readonly description: "Stable saved object identifier.";
294
516
  }, {
295
517
  readonly kind: "positional";
296
518
  readonly name: "symbols";
@@ -299,24 +521,24 @@ export declare const capabilityRegistry: readonly [{
299
521
  readonly placeholder: "TICKER";
300
522
  readonly multiple: true;
301
523
  readonly collectionFormat: "space_separated";
302
- readonly description: "One or more monitored ticker symbols to add to the portfolio.";
524
+ readonly description: "One or more monitored ticker symbols.";
303
525
  }];
304
526
  readonly options: readonly [];
305
- readonly examples: readonly ["quantbrasil portfolios add-assets 123 PETR4 VALE3"];
527
+ readonly examples: readonly ["quantbrasil watchlists add-assets 123 PETR4 VALE3"];
306
528
  };
307
529
  readonly tool: {
308
- readonly name: "qb_portfolio_add_assets";
309
- readonly title: "Add portfolio assets";
530
+ readonly name: "qb_watchlist_add_assets";
531
+ readonly title: "Add watchlist assets";
310
532
  };
311
533
  readonly outputModes: readonly ["json", "human"];
312
534
  }, {
313
- readonly id: "portfolios.remove-assets";
535
+ readonly id: "watchlists.remove-assets";
314
536
  readonly kind: "mutation";
315
537
  readonly visibility: readonly ["cli", "opencode"];
316
- readonly description: "Remove one or more monitored tickers from a saved portfolio.";
538
+ readonly description: "Remove one or more monitored tickers from a watchlist.";
317
539
  readonly http: {
318
540
  readonly method: "POST";
319
- readonly path: "/api/desk/tools/portfolio/remove_assets";
541
+ readonly path: "/api/desk/tools/watchlist/remove_assets";
320
542
  readonly inputMode: "json_body";
321
543
  readonly schemas: {
322
544
  readonly request: "PortfolioRemoveAssetsRequest";
@@ -324,16 +546,16 @@ export declare const capabilityRegistry: readonly [{
324
546
  };
325
547
  };
326
548
  readonly cli: {
327
- readonly group: "portfolios";
549
+ readonly group: "watchlists";
328
550
  readonly command: "remove-assets";
329
- readonly summary: "Remove monitored tickers from an existing portfolio.";
551
+ readonly summary: "Remove monitored tickers from an existing watchlist.";
330
552
  readonly positional: readonly [{
331
553
  readonly kind: "positional";
332
554
  readonly name: "portfolio_id";
333
555
  readonly type: "integer";
334
556
  readonly required: true;
335
557
  readonly placeholder: "ID";
336
- readonly description: "Saved portfolio identifier.";
558
+ readonly description: "Stable saved object identifier.";
337
559
  }, {
338
560
  readonly kind: "positional";
339
561
  readonly name: "symbols";
@@ -342,225 +564,486 @@ export declare const capabilityRegistry: readonly [{
342
564
  readonly placeholder: "TICKER";
343
565
  readonly multiple: true;
344
566
  readonly collectionFormat: "space_separated";
345
- readonly description: "One or more monitored ticker symbols to remove from the portfolio.";
567
+ readonly description: "One or more monitored ticker symbols.";
346
568
  }];
347
569
  readonly options: readonly [];
348
- readonly examples: readonly ["quantbrasil portfolios remove-assets 123 PETR4"];
570
+ readonly examples: readonly ["quantbrasil watchlists remove-assets 123 PETR4"];
349
571
  };
350
572
  readonly tool: {
351
- readonly name: "qb_portfolio_remove_assets";
352
- readonly title: "Remove portfolio assets";
573
+ readonly name: "qb_watchlist_remove_assets";
574
+ readonly title: "Remove watchlist assets";
353
575
  };
354
576
  readonly outputModes: readonly ["json", "human"];
355
577
  }, {
356
- readonly id: "analytics.historical-return";
578
+ readonly id: "holdings.list";
357
579
  readonly kind: "read";
358
580
  readonly visibility: readonly ["cli", "opencode"];
359
- readonly description: "Calculate historical return for a saved portfolio or an ad-hoc weighted basket.";
581
+ readonly description: "List holdings owned by the authenticated user.";
360
582
  readonly http: {
361
- readonly method: "POST";
362
- readonly path: "/api/desk/tools/portfolio/historical_return";
363
- readonly inputMode: "json_body";
583
+ readonly method: "GET";
584
+ readonly path: "/api/desk/tools/holding/list";
585
+ readonly inputMode: "none";
364
586
  readonly schemas: {
365
- readonly request: "PortfolioHistoricalReturnRequest";
366
- readonly response: "HistoricalReturnResponse";
587
+ readonly request: null;
588
+ readonly response: "PortfolioListResponse";
367
589
  };
368
590
  };
369
591
  readonly cli: {
370
- readonly group: "analytics";
371
- readonly command: "historical-return";
372
- readonly summary: "Calculate historical return for a saved portfolio or repeated --asset inputs.";
592
+ readonly group: "holdings";
593
+ readonly command: "list";
594
+ readonly summary: "List holdings for investable metrics.";
373
595
  readonly positional: readonly [];
374
- readonly options: readonly [{
375
- readonly kind: "option";
376
- readonly flag: "--portfolio";
377
- readonly name: "portfolio_id";
378
- readonly type: "integer";
379
- readonly required: false;
380
- readonly placeholder: "ID";
381
- readonly exclusiveGroup: "source";
382
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
383
- }, {
384
- readonly kind: "option";
385
- readonly flag: "--asset";
386
- readonly name: "assets";
387
- readonly type: "string_array";
388
- readonly required: false;
389
- readonly placeholder: "TICKER[:PESO]";
390
- readonly multiple: true;
391
- readonly collectionFormat: "repeatable";
392
- readonly exclusiveGroup: "source";
393
- readonly description: "Repeatable ad-hoc asset input using TICKER[:WEIGHT_PCT], for example PRIO3:50.";
394
- }, {
395
- readonly kind: "option";
396
- readonly flag: "--from";
397
- readonly name: "start_date";
398
- readonly type: "string";
399
- readonly required: true;
400
- readonly placeholder: "AAAA-MM-DD";
401
- readonly description: "Inclusive start date in ISO format.";
402
- }, {
403
- readonly kind: "option";
404
- readonly flag: "--to";
405
- readonly name: "end_date";
406
- readonly type: "string";
407
- readonly required: true;
408
- readonly placeholder: "AAAA-MM-DD";
409
- readonly description: "Inclusive end date in ISO format.";
410
- }];
411
- readonly examples: readonly ["quantbrasil analytics historical-return --portfolio 123 --from 2024-01-01 --to 2025-01-01", "quantbrasil analytics historical-return --asset PRIO3:50 --asset VALE3:50 --from 2021-01-01 --to 2025-01-01"];
596
+ readonly options: readonly [];
597
+ readonly examples: readonly ["quantbrasil holdings list"];
412
598
  };
413
599
  readonly tool: {
414
- readonly name: "qb_historical_return";
415
- readonly title: "Calculate historical return";
600
+ readonly name: "qb_holding_list";
601
+ readonly title: "List holdings";
416
602
  };
417
603
  readonly outputModes: readonly ["json", "human"];
418
604
  }, {
419
- readonly id: "analytics.beta";
605
+ readonly id: "holdings.get";
420
606
  readonly kind: "read";
421
607
  readonly visibility: readonly ["cli", "opencode"];
422
- readonly description: "Calculate portfolio beta against IBOV for a saved portfolio or an ad-hoc basket.";
608
+ readonly description: "Return one holding by id, scoped to the acting user.";
423
609
  readonly http: {
424
610
  readonly method: "POST";
425
- readonly path: "/api/desk/tools/portfolio/beta";
611
+ readonly path: "/api/desk/tools/holding/get";
426
612
  readonly inputMode: "json_body";
427
613
  readonly schemas: {
428
- readonly request: "PortfolioBetaRequest";
429
- readonly response: "PortfolioBetaResponse";
614
+ readonly request: "PortfolioGetRequest";
615
+ readonly response: "PortfolioGetResponse";
430
616
  };
431
617
  };
432
618
  readonly cli: {
433
- readonly group: "analytics";
434
- readonly command: "beta";
435
- readonly summary: "Calculate portfolio beta against IBOV.";
436
- readonly positional: readonly [];
437
- readonly options: readonly [{
438
- readonly kind: "option";
439
- readonly flag: "--portfolio";
619
+ readonly group: "holdings";
620
+ readonly command: "get";
621
+ readonly summary: "Get a holding by id.";
622
+ readonly positional: readonly [{
623
+ readonly kind: "positional";
440
624
  readonly name: "portfolio_id";
441
625
  readonly type: "integer";
442
- readonly required: false;
626
+ readonly required: true;
443
627
  readonly placeholder: "ID";
444
- readonly exclusiveGroup: "source";
445
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
446
- }, {
447
- readonly kind: "option";
448
- readonly flag: "--asset";
449
- readonly name: "assets";
450
- readonly type: "string_array";
451
- readonly required: false;
452
- readonly placeholder: "TICKER[:PESO]";
453
- readonly multiple: true;
454
- readonly collectionFormat: "repeatable";
455
- readonly exclusiveGroup: "source";
456
- readonly description: "Repeatable ad-hoc asset input using TICKER[:WEIGHT_PCT], for example PETR4:120 or WINFUT:-20.";
457
- }, {
458
- readonly kind: "option";
459
- readonly flag: "--years";
460
- readonly name: "years";
461
- readonly type: "enum";
462
- readonly required: false;
463
- readonly placeholder: "ANOS";
464
- readonly defaultValue: 1;
465
- readonly enumValues: readonly ["1", "3", "5"];
466
- readonly description: "Historical lookback window in years. Accepted values: 1, 3, or 5.";
628
+ readonly description: "Stable saved object identifier.";
467
629
  }];
468
- readonly examples: readonly ["quantbrasil analytics beta --portfolio 123 --years 3", "quantbrasil analytics beta --asset PRIO3:120 --asset WINFUT:-20 --years 1"];
630
+ readonly options: readonly [];
631
+ readonly examples: readonly ["quantbrasil holdings get 123"];
469
632
  };
470
633
  readonly tool: {
471
- readonly name: "qb_portfolio_beta";
472
- readonly title: "Calculate portfolio beta";
634
+ readonly name: "qb_holding_get";
635
+ readonly title: "Get holding";
473
636
  };
474
637
  readonly outputModes: readonly ["json", "human"];
475
638
  }, {
476
- readonly id: "analytics.var";
477
- readonly kind: "read";
639
+ readonly id: "holdings.create";
640
+ readonly kind: "mutation";
478
641
  readonly visibility: readonly ["cli", "opencode"];
479
- readonly description: "Calculate one-day Value-at-Risk for a saved portfolio or an ad-hoc basket.";
642
+ readonly description: "Create a new holding for the authenticated user.";
480
643
  readonly http: {
481
644
  readonly method: "POST";
482
- readonly path: "/api/desk/tools/portfolio/var";
645
+ readonly path: "/api/desk/tools/holding/create";
483
646
  readonly inputMode: "json_body";
484
647
  readonly schemas: {
485
- readonly request: "PortfolioVaRRequest";
486
- readonly response: "PortfolioVaRResponse";
648
+ readonly request: "DeskHoldingCreateRequest";
649
+ readonly response: "PortfolioCreateResponse";
487
650
  };
488
651
  };
489
652
  readonly cli: {
490
- readonly group: "analytics";
491
- readonly command: "var";
492
- readonly summary: "Calculate one-day Value-at-Risk for a portfolio or basket.";
493
- readonly positional: readonly [];
653
+ readonly group: "holdings";
654
+ readonly command: "create";
655
+ readonly summary: "Create a new holding.";
656
+ readonly positional: readonly [{
657
+ readonly kind: "positional";
658
+ readonly name: "name";
659
+ readonly type: "string";
660
+ readonly required: true;
661
+ readonly placeholder: "NOME";
662
+ readonly description: "Name to save.";
663
+ }];
494
664
  readonly options: readonly [{
495
665
  readonly kind: "option";
496
- readonly flag: "--portfolio";
497
- readonly name: "portfolio_id";
498
- readonly type: "integer";
666
+ readonly flag: "--mode";
667
+ readonly name: "default_allocation_input";
668
+ readonly type: "enum";
499
669
  readonly required: false;
500
- readonly placeholder: "ID";
501
- readonly exclusiveGroup: "source";
502
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
670
+ readonly placeholder: "target|position";
671
+ readonly defaultValue: "target";
672
+ readonly enumValues: readonly ["target", "position"];
673
+ readonly description: "How the holding is controlled initially: target weights or positions.";
503
674
  }, {
504
675
  readonly kind: "option";
505
- readonly flag: "--asset";
506
- readonly name: "assets";
676
+ readonly flag: "--target";
677
+ readonly name: "targets";
507
678
  readonly type: "string_array";
508
679
  readonly required: false;
509
- readonly placeholder: "TICKER[:PESO]";
680
+ readonly placeholder: "TICKER:PESO";
510
681
  readonly multiple: true;
511
682
  readonly collectionFormat: "repeatable";
512
- readonly exclusiveGroup: "source";
513
- readonly description: "Repeatable ad-hoc asset input using TICKER[:WEIGHT_PCT], for example PRIO3:120 or WINFUT:-20.";
514
- }, {
515
- readonly kind: "option";
516
- readonly flag: "--years";
517
- readonly name: "years";
518
- readonly type: "integer";
519
- readonly required: false;
520
- readonly placeholder: "ANOS";
521
- readonly defaultValue: 1;
522
- readonly description: "Historical lookback window in years. The VaR horizon remains one day.";
523
- }, {
524
- readonly kind: "option";
525
- readonly flag: "--confidence";
526
- readonly name: "confidence_pct";
527
- readonly type: "number";
528
- readonly required: false;
529
- readonly placeholder: "PERCENTUAL";
530
- readonly defaultValue: 95;
531
- readonly description: "Confidence level in percent, for example 95 or 99.";
683
+ readonly description: "Initial target weight in TICKER:WEIGHT_PCT form.";
532
684
  }];
533
- readonly examples: readonly ["quantbrasil analytics var --portfolio 123 --years 1 --confidence 95", "quantbrasil analytics var --asset PRIO3:50 --asset VALE3:50 --years 3 --confidence 99"];
685
+ readonly examples: readonly ["quantbrasil holdings create \"Longo Prazo\"", "quantbrasil holdings create \"Teórica\" --target PRIO3:50 --target VALE3:50", "quantbrasil holdings create \"Real\" --mode position"];
534
686
  };
535
687
  readonly tool: {
536
- readonly name: "qb_portfolio_var";
537
- readonly title: "Calculate portfolio VaR";
688
+ readonly name: "qb_holding_create";
689
+ readonly title: "Create holding";
538
690
  };
539
691
  readonly outputModes: readonly ["json", "human"];
540
- }];
541
- export type CapabilityId = (typeof capabilityRegistry)[number]["id"];
542
- export declare const capabilityRegistryById: Record<CapabilityId, (typeof capabilityRegistry)[number]>;
543
- export declare function getCapabilityById(id: CapabilityId): {
544
- readonly id: "market.assets";
545
- readonly kind: "read";
692
+ }, {
693
+ readonly id: "holdings.rename";
694
+ readonly kind: "mutation";
546
695
  readonly visibility: readonly ["cli", "opencode"];
547
- readonly description: "List the monitored QuantBrasil asset universe, optionally filtered by tracked asset type.";
696
+ readonly description: "Rename a holding owned by the authenticated user.";
548
697
  readonly http: {
549
- readonly method: "GET";
550
- readonly path: "/api/desk/tools/market/assets";
551
- readonly inputMode: "query";
698
+ readonly method: "POST";
699
+ readonly path: "/api/desk/tools/holding/rename";
700
+ readonly inputMode: "json_body";
552
701
  readonly schemas: {
553
- readonly request: null;
554
- readonly response: "MonitoredAssetsResponse";
702
+ readonly request: "PortfolioRenameRequest";
703
+ readonly response: "PortfolioMutationResponse";
555
704
  };
556
705
  };
557
706
  readonly cli: {
558
- readonly group: "market";
559
- readonly command: "assets";
560
- readonly summary: "List monitored asset tickers.";
561
- readonly positional: readonly [];
562
- readonly options: readonly [{
563
- readonly kind: "option";
707
+ readonly group: "holdings";
708
+ readonly command: "rename";
709
+ readonly summary: "Rename an existing holding.";
710
+ readonly positional: readonly [{
711
+ readonly kind: "positional";
712
+ readonly name: "portfolio_id";
713
+ readonly type: "integer";
714
+ readonly required: true;
715
+ readonly placeholder: "ID";
716
+ readonly description: "Stable saved object identifier.";
717
+ }, {
718
+ readonly kind: "positional";
719
+ readonly name: "name";
720
+ readonly type: "string";
721
+ readonly required: true;
722
+ readonly placeholder: "NOME";
723
+ readonly description: "Name to save.";
724
+ }];
725
+ readonly options: readonly [];
726
+ readonly examples: readonly ["quantbrasil holdings rename 123 \"Longo Prazo\""];
727
+ };
728
+ readonly tool: {
729
+ readonly name: "qb_holding_rename";
730
+ readonly title: "Rename holding";
731
+ };
732
+ readonly outputModes: readonly ["json", "human"];
733
+ }, {
734
+ readonly id: "holdings.set-targets";
735
+ readonly kind: "mutation";
736
+ readonly visibility: readonly ["cli", "opencode"];
737
+ readonly description: "Set target weights for a holding owned by the authenticated user.";
738
+ readonly http: {
739
+ readonly method: "POST";
740
+ readonly path: "/api/desk/tools/holding/set_targets";
741
+ readonly inputMode: "json_body";
742
+ readonly schemas: {
743
+ readonly request: "HoldingSetTargetsRequest";
744
+ readonly response: "PortfolioMutationResponse";
745
+ };
746
+ };
747
+ readonly cli: {
748
+ readonly group: "holdings";
749
+ readonly command: "set-targets";
750
+ readonly summary: "Set target weights for a holding.";
751
+ readonly positional: readonly [{
752
+ readonly kind: "positional";
753
+ readonly name: "portfolio_id";
754
+ readonly type: "integer";
755
+ readonly required: true;
756
+ readonly placeholder: "ID";
757
+ readonly description: "Stable saved object identifier.";
758
+ }, {
759
+ readonly kind: "positional";
760
+ readonly name: "targets";
761
+ readonly type: "string_array";
762
+ readonly required: true;
763
+ readonly placeholder: "TICKER:PESO";
764
+ readonly multiple: true;
765
+ readonly collectionFormat: "space_separated";
766
+ readonly description: "One or more target weights in TICKER:WEIGHT_PCT form.";
767
+ }];
768
+ readonly options: readonly [];
769
+ readonly examples: readonly ["quantbrasil holdings set-targets 123 PRIO3:50 VALE3:50"];
770
+ };
771
+ readonly tool: {
772
+ readonly name: "qb_holding_set_targets";
773
+ readonly title: "Set holding target weights";
774
+ };
775
+ readonly outputModes: readonly ["json", "human"];
776
+ }, {
777
+ readonly id: "holdings.set-positions";
778
+ readonly kind: "mutation";
779
+ readonly visibility: readonly ["cli", "opencode"];
780
+ readonly description: "Set position quantities for a holding owned by the authenticated user.";
781
+ readonly http: {
782
+ readonly method: "POST";
783
+ readonly path: "/api/desk/tools/holding/set_positions";
784
+ readonly inputMode: "json_body";
785
+ readonly schemas: {
786
+ readonly request: "HoldingSetPositionsRequest";
787
+ readonly response: "PortfolioMutationResponse";
788
+ };
789
+ };
790
+ readonly cli: {
791
+ readonly group: "holdings";
792
+ readonly command: "set-positions";
793
+ readonly summary: "Set position quantities for a holding.";
794
+ readonly positional: readonly [{
795
+ readonly kind: "positional";
796
+ readonly name: "portfolio_id";
797
+ readonly type: "integer";
798
+ readonly required: true;
799
+ readonly placeholder: "ID";
800
+ readonly description: "Stable saved object identifier.";
801
+ }, {
802
+ readonly kind: "positional";
803
+ readonly name: "positions";
804
+ readonly type: "string_array";
805
+ readonly required: true;
806
+ readonly placeholder: "TICKER:QUANTIDADE";
807
+ readonly multiple: true;
808
+ readonly collectionFormat: "space_separated";
809
+ readonly description: "One or more position quantities in TICKER:QUANTITY form.";
810
+ }];
811
+ readonly options: readonly [];
812
+ readonly examples: readonly ["quantbrasil holdings set-positions 123 PRIO3:1600 BTC-USD:0.25"];
813
+ };
814
+ readonly tool: {
815
+ readonly name: "qb_holding_set_positions";
816
+ readonly title: "Set holding position quantities";
817
+ };
818
+ readonly outputModes: readonly ["json", "human"];
819
+ }, {
820
+ readonly id: "holdings.historical-return";
821
+ readonly kind: "read";
822
+ readonly visibility: readonly ["cli", "opencode"];
823
+ readonly description: "Calculate historical return for a holding.";
824
+ readonly http: {
825
+ readonly method: "POST";
826
+ readonly path: "/api/desk/tools/holding/historical_return";
827
+ readonly inputMode: "json_body";
828
+ readonly schemas: {
829
+ readonly request: "PortfolioHistoricalReturnRequest";
830
+ readonly response: "HistoricalReturnResponse";
831
+ };
832
+ };
833
+ readonly cli: {
834
+ readonly group: "holdings";
835
+ readonly command: "historical-return";
836
+ readonly summary: "Calculate historical return for a saved holding.";
837
+ readonly positional: readonly [{
838
+ readonly kind: "positional";
839
+ readonly name: "portfolio_id";
840
+ readonly type: "integer";
841
+ readonly required: true;
842
+ readonly placeholder: "ID";
843
+ readonly description: "Stable saved object identifier.";
844
+ }];
845
+ readonly options: readonly [{
846
+ readonly kind: "option";
847
+ readonly flag: "--from";
848
+ readonly name: "start_date";
849
+ readonly type: "string";
850
+ readonly required: false;
851
+ readonly placeholder: "AAAA-MM-DD";
852
+ readonly description: "Inclusive start date in ISO format. Use with --to, or use --period.";
853
+ }, {
854
+ readonly kind: "option";
855
+ readonly flag: "--to";
856
+ readonly name: "end_date";
857
+ readonly type: "string";
858
+ readonly required: false;
859
+ readonly placeholder: "AAAA-MM-DD";
860
+ readonly description: "Inclusive end date in ISO format. Use with --from, or use --period.";
861
+ }, {
862
+ readonly kind: "option";
863
+ readonly flag: "--period";
864
+ readonly name: "period";
865
+ readonly type: "string";
866
+ readonly required: false;
867
+ readonly placeholder: "PERIODO";
868
+ readonly description: "Lookback period such as 1y, 3y, 5y, or 6m. Mutually exclusive with --from/--to.";
869
+ }];
870
+ readonly examples: readonly ["quantbrasil holdings historical-return 123 --from 2024-01-01 --to 2025-01-01", "quantbrasil holdings historical-return 123 --period 1y"];
871
+ };
872
+ readonly tool: {
873
+ readonly name: "qb_holding_historical_return";
874
+ readonly title: "Calculate holding historical return";
875
+ };
876
+ readonly outputModes: readonly ["json", "human"];
877
+ }, {
878
+ readonly id: "holdings.beta";
879
+ readonly kind: "read";
880
+ readonly visibility: readonly ["cli", "opencode"];
881
+ readonly description: "Calculate holding beta against IBOV.";
882
+ readonly http: {
883
+ readonly method: "POST";
884
+ readonly path: "/api/desk/tools/holding/beta";
885
+ readonly inputMode: "json_body";
886
+ readonly schemas: {
887
+ readonly request: "PortfolioBetaRequest";
888
+ readonly response: "PortfolioBetaResponse";
889
+ };
890
+ };
891
+ readonly cli: {
892
+ readonly group: "holdings";
893
+ readonly command: "beta";
894
+ readonly summary: "Calculate holding beta against IBOV.";
895
+ readonly positional: readonly [{
896
+ readonly kind: "positional";
897
+ readonly name: "portfolio_id";
898
+ readonly type: "integer";
899
+ readonly required: true;
900
+ readonly placeholder: "ID";
901
+ readonly description: "Stable saved object identifier.";
902
+ }];
903
+ readonly options: readonly [{
904
+ readonly kind: "option";
905
+ readonly flag: "--years";
906
+ readonly name: "years";
907
+ readonly type: "enum";
908
+ readonly required: false;
909
+ readonly placeholder: "ANOS";
910
+ readonly defaultValue: 1;
911
+ readonly enumValues: readonly ["1", "3", "5"];
912
+ readonly description: "Historical lookback window in years. Accepted values: 1, 3, or 5.";
913
+ }];
914
+ readonly examples: readonly ["quantbrasil holdings beta 123 --years 3"];
915
+ };
916
+ readonly tool: {
917
+ readonly name: "qb_holding_beta";
918
+ readonly title: "Calculate holding beta";
919
+ };
920
+ readonly outputModes: readonly ["json", "human"];
921
+ }, {
922
+ readonly id: "holdings.var";
923
+ readonly kind: "read";
924
+ readonly visibility: readonly ["cli", "opencode"];
925
+ readonly description: "Calculate one-day Value-at-Risk for a holding.";
926
+ readonly http: {
927
+ readonly method: "POST";
928
+ readonly path: "/api/desk/tools/holding/var";
929
+ readonly inputMode: "json_body";
930
+ readonly schemas: {
931
+ readonly request: "PortfolioVaRRequest";
932
+ readonly response: "PortfolioVaRResponse";
933
+ };
934
+ };
935
+ readonly cli: {
936
+ readonly group: "holdings";
937
+ readonly command: "var";
938
+ readonly summary: "Calculate one-day Value-at-Risk for a holding.";
939
+ readonly positional: readonly [{
940
+ readonly kind: "positional";
941
+ readonly name: "portfolio_id";
942
+ readonly type: "integer";
943
+ readonly required: true;
944
+ readonly placeholder: "ID";
945
+ readonly description: "Stable saved object identifier.";
946
+ }];
947
+ readonly options: readonly [{
948
+ readonly kind: "option";
949
+ readonly flag: "--years";
950
+ readonly name: "years";
951
+ readonly type: "integer";
952
+ readonly required: false;
953
+ readonly placeholder: "ANOS";
954
+ readonly defaultValue: 1;
955
+ readonly description: "Historical lookback window in years. The VaR horizon remains one day.";
956
+ }, {
957
+ readonly kind: "option";
958
+ readonly flag: "--confidence";
959
+ readonly name: "confidence_pct";
960
+ readonly type: "number";
961
+ readonly required: false;
962
+ readonly placeholder: "PERCENTUAL";
963
+ readonly defaultValue: 95;
964
+ readonly description: "Confidence level in percent, for example 95 or 99.";
965
+ }];
966
+ readonly examples: readonly ["quantbrasil holdings var 123 --years 1 --confidence 95"];
967
+ };
968
+ readonly tool: {
969
+ readonly name: "qb_holding_var";
970
+ readonly title: "Calculate holding VaR";
971
+ };
972
+ readonly outputModes: readonly ["json", "human"];
973
+ }, {
974
+ readonly id: "cointegration.pair";
975
+ readonly kind: "read";
976
+ readonly visibility: readonly ["cli", "opencode"];
977
+ readonly description: "Calcula cointegração para análise de Long & Short entre dois ativos: z-score, beta, p-valor, meia-vida e intervalos de confiança.";
978
+ readonly http: {
979
+ readonly method: "POST";
980
+ readonly path: "/api/desk/tools/cointegration/pair";
981
+ readonly inputMode: "json_body";
982
+ readonly schemas: {
983
+ readonly request: "CointegrationPairRequest";
984
+ readonly response: "CointegrationPairResponse";
985
+ };
986
+ };
987
+ readonly cli: {
988
+ readonly group: "cointegration";
989
+ readonly command: "pair";
990
+ readonly summary: "Calcula cointegração para análise de Long & Short.";
991
+ readonly positional: readonly [{
992
+ readonly kind: "positional";
993
+ readonly name: "base_asset";
994
+ readonly type: "string";
995
+ readonly required: true;
996
+ readonly placeholder: "TICKER";
997
+ readonly description: "Ticker do ativo base, por exemplo PETR4.";
998
+ }, {
999
+ readonly kind: "positional";
1000
+ readonly name: "comparison_asset";
1001
+ readonly type: "string";
1002
+ readonly required: true;
1003
+ readonly placeholder: "TICKER";
1004
+ readonly description: "Ticker do ativo de comparação, por exemplo VALE3.";
1005
+ }];
1006
+ readonly options: readonly [{
1007
+ readonly kind: "option";
1008
+ readonly flag: "--window";
1009
+ readonly name: "window";
1010
+ readonly type: "integer";
1011
+ readonly required: false;
1012
+ readonly placeholder: "N";
1013
+ readonly defaultValue: 250;
1014
+ readonly description: "Janela de candles para a regressão. Padrão 250 dias úteis.";
1015
+ }];
1016
+ readonly examples: readonly ["quantbrasil cointegration pair PETR4 VALE3", "quantbrasil cointegration pair PETR4 VALE3 --window 120", "quantbrasil cointegration pair PETR4 VALE3 --json"];
1017
+ };
1018
+ readonly tool: {
1019
+ readonly name: "qb_cointegration_pair";
1020
+ readonly title: "Calcular cointegração para Long & Short";
1021
+ };
1022
+ readonly outputModes: readonly ["json", "human"];
1023
+ }];
1024
+ export type CapabilityId = (typeof capabilityRegistry)[number]["id"];
1025
+ export declare const capabilityRegistryById: Record<CapabilityId, (typeof capabilityRegistry)[number]>;
1026
+ export declare function getCapabilityById(id: CapabilityId): {
1027
+ readonly id: "market.assets";
1028
+ readonly kind: "read";
1029
+ readonly visibility: readonly ["cli", "opencode"];
1030
+ readonly description: "List the monitored QuantBrasil asset universe, optionally filtered by tracked asset type.";
1031
+ readonly http: {
1032
+ readonly method: "GET";
1033
+ readonly path: "/api/desk/tools/market/assets";
1034
+ readonly inputMode: "query";
1035
+ readonly schemas: {
1036
+ readonly request: null;
1037
+ readonly response: "MonitoredAssetsResponse";
1038
+ };
1039
+ };
1040
+ readonly cli: {
1041
+ readonly group: "market";
1042
+ readonly command: "assets";
1043
+ readonly summary: "List monitored asset tickers.";
1044
+ readonly positional: readonly [];
1045
+ readonly options: readonly [{
1046
+ readonly kind: "option";
564
1047
  readonly flag: "--type";
565
1048
  readonly name: "type";
566
1049
  readonly type: "enum";
@@ -568,118 +1051,562 @@ export declare function getCapabilityById(id: CapabilityId): {
568
1051
  readonly placeholder: "TIPO";
569
1052
  readonly enumValues: readonly ["B3", "ETF", "ETF-US", "BDR", "Futuro", "Crypto", "S&P500"];
570
1053
  readonly description: "Filter by the exact monitored asset type.";
1054
+ }, {
1055
+ readonly kind: "option";
1056
+ readonly flag: "--search";
1057
+ readonly name: "search";
1058
+ readonly type: "string";
1059
+ readonly required: false;
1060
+ readonly placeholder: "TEXTO";
1061
+ readonly description: "Filter monitored tickers by case-insensitive text.";
1062
+ }];
1063
+ readonly examples: readonly ["quantbrasil market assets", "quantbrasil market assets --type B3", "quantbrasil market assets --search BTC"];
1064
+ };
1065
+ readonly tool: {
1066
+ readonly name: "qb_market_assets";
1067
+ readonly title: "List monitored assets";
1068
+ };
1069
+ readonly outputModes: readonly ["json", "human"];
1070
+ } | {
1071
+ readonly id: "market.price";
1072
+ readonly kind: "read";
1073
+ readonly visibility: readonly ["cli", "opencode"];
1074
+ readonly description: "Return the latest or date-specific price snapshot for a single ticker.";
1075
+ readonly http: {
1076
+ readonly method: "POST";
1077
+ readonly path: "/api/desk/tools/market/price";
1078
+ readonly inputMode: "json_body";
1079
+ readonly schemas: {
1080
+ readonly request: "MarketPriceRequest";
1081
+ readonly response: "MarketPriceResponse";
1082
+ };
1083
+ };
1084
+ readonly cli: {
1085
+ readonly group: "market";
1086
+ readonly command: "price";
1087
+ readonly summary: "Get the current or historical price snapshot for one ticker.";
1088
+ readonly positional: readonly [{
1089
+ readonly kind: "positional";
1090
+ readonly name: "ticker";
1091
+ readonly type: "string";
1092
+ readonly required: true;
1093
+ readonly placeholder: "TICKER";
1094
+ readonly description: "Ticker symbol, for example PETR4 or VALE3.";
1095
+ }];
1096
+ readonly options: readonly [{
1097
+ readonly kind: "option";
1098
+ readonly flag: "--date";
1099
+ readonly name: "date";
1100
+ readonly type: "string";
1101
+ readonly required: false;
1102
+ readonly placeholder: "AAAA-MM-DD";
1103
+ readonly description: "Reference date in ISO format. When omitted, returns the latest available price.";
1104
+ }, {
1105
+ readonly kind: "option";
1106
+ readonly flag: "--timeframe";
1107
+ readonly name: "timeframe";
1108
+ readonly type: "string";
1109
+ readonly required: false;
1110
+ readonly placeholder: "TIMEFRAME";
1111
+ readonly defaultValue: "D1";
1112
+ readonly description: "Timeframe identifier. Defaults to D1.";
1113
+ }];
1114
+ readonly examples: readonly ["quantbrasil market price PETR4", "quantbrasil market price PETR4 --date 2026-04-10 --timeframe D1"];
1115
+ };
1116
+ readonly tool: {
1117
+ readonly name: "qb_market_price";
1118
+ readonly title: "Get market price";
1119
+ };
1120
+ readonly outputModes: readonly ["json", "human"];
1121
+ } | {
1122
+ readonly id: "assets.overview";
1123
+ readonly kind: "read";
1124
+ readonly visibility: readonly ["cli", "opencode"];
1125
+ readonly description: "Return a selective asset overview using only the requested sections.";
1126
+ readonly http: {
1127
+ readonly method: "POST";
1128
+ readonly path: "/api/desk/tools/asset/overview";
1129
+ readonly inputMode: "json_body";
1130
+ readonly schemas: {
1131
+ readonly request: "AssetOverviewRequest";
1132
+ readonly response: "AssetOverviewResponse";
1133
+ };
1134
+ };
1135
+ readonly cli: {
1136
+ readonly group: "assets";
1137
+ readonly command: "overview";
1138
+ readonly summary: "Get a section-based overview for one asset.";
1139
+ readonly positional: readonly [{
1140
+ readonly kind: "positional";
1141
+ readonly name: "ticker";
1142
+ readonly type: "string";
1143
+ readonly required: true;
1144
+ readonly placeholder: "TICKER";
1145
+ readonly description: "Ticker symbol, for example PETR4 or VALE3.";
1146
+ }];
1147
+ readonly options: readonly [{
1148
+ readonly kind: "option";
1149
+ readonly flag: "--sections";
1150
+ readonly name: "sections";
1151
+ readonly type: "enum_array";
1152
+ readonly required: true;
1153
+ readonly placeholder: "SEÇÕES";
1154
+ readonly enumValues: readonly ["price", "performance", "momentum", "technicals", "risk", "fundamentals", "rankings"];
1155
+ readonly multiple: true;
1156
+ readonly collectionFormat: "comma_separated";
1157
+ readonly description: "Comma-separated section list. Only request the sections needed for the question.";
1158
+ }];
1159
+ readonly examples: readonly ["quantbrasil assets overview PETR4 --sections price,performance", "quantbrasil assets overview PETR4 --sections price,fundamentals", "quantbrasil assets overview PETR4 --sections price,technicals"];
1160
+ };
1161
+ readonly tool: {
1162
+ readonly name: "qb_asset_overview";
1163
+ readonly title: "Get asset overview";
1164
+ };
1165
+ readonly outputModes: readonly ["json", "human"];
1166
+ } | {
1167
+ readonly id: "rankings.list";
1168
+ readonly kind: "read";
1169
+ readonly visibility: readonly ["cli", "opencode"];
1170
+ readonly description: "Lista rankings do sistema e rankings do usuário disponíveis para consulta atual.";
1171
+ readonly http: {
1172
+ readonly method: "GET";
1173
+ readonly path: "/api/desk/tools/rankings/list";
1174
+ readonly inputMode: "none";
1175
+ readonly schemas: {
1176
+ readonly request: null;
1177
+ readonly response: "RankingsListResponse";
1178
+ };
1179
+ };
1180
+ readonly cli: {
1181
+ readonly group: "rankings";
1182
+ readonly command: "list";
1183
+ readonly summary: "Lista rankings do sistema e rankings do usuário.";
1184
+ readonly positional: readonly [];
1185
+ readonly options: readonly [];
1186
+ readonly examples: readonly ["quantbrasil rankings list"];
1187
+ };
1188
+ readonly tool: {
1189
+ readonly name: "qb_rankings_list";
1190
+ readonly title: "Listar rankings";
1191
+ };
1192
+ readonly outputModes: readonly ["json", "human"];
1193
+ } | {
1194
+ readonly id: "rankings.current";
1195
+ readonly kind: "read";
1196
+ readonly visibility: readonly ["cli", "opencode"];
1197
+ readonly description: "Retorna os ativos atuais no topo de um ranking do sistema ou ranking do usuário.";
1198
+ readonly http: {
1199
+ readonly method: "POST";
1200
+ readonly path: "/api/desk/tools/rankings/current";
1201
+ readonly inputMode: "json_body";
1202
+ readonly schemas: {
1203
+ readonly request: "RankingCurrentRequest";
1204
+ readonly response: "RankingCurrentResponse";
1205
+ };
1206
+ };
1207
+ readonly cli: {
1208
+ readonly group: "rankings";
1209
+ readonly command: "current";
1210
+ readonly summary: "Consulta o topo atual de um ranking.";
1211
+ readonly positional: readonly [];
1212
+ readonly options: readonly [{
1213
+ readonly kind: "option";
1214
+ readonly flag: "--system";
1215
+ readonly name: "system_id";
1216
+ readonly type: "string";
1217
+ readonly required: false;
1218
+ readonly placeholder: "SLUG";
1219
+ readonly exclusiveGroup: "ranking_selector";
1220
+ readonly description: "Slug de ranking do sistema retornado por `rankings list`, por exemplo momentum-90d ou low-risk.";
1221
+ }, {
1222
+ readonly kind: "option";
1223
+ readonly flag: "--id";
1224
+ readonly name: "user_ranking_id";
1225
+ readonly type: "integer";
1226
+ readonly required: false;
1227
+ readonly placeholder: "ID";
1228
+ readonly exclusiveGroup: "ranking_selector";
1229
+ readonly description: "ID numérico de ranking do usuário retornado por `rankings list`.";
1230
+ }, {
1231
+ readonly kind: "option";
1232
+ readonly flag: "--top";
1233
+ readonly name: "top_n";
1234
+ readonly type: "integer";
1235
+ readonly required: false;
1236
+ readonly placeholder: "N";
1237
+ readonly defaultValue: 20;
1238
+ readonly description: "Número de ativos do topo do ranking a retornar.";
1239
+ }];
1240
+ readonly examples: readonly ["quantbrasil rankings current --system momentum-90d --top 20", "quantbrasil rankings current --system magic-formula --top 10", "quantbrasil rankings current --system low-risk --top 30", "quantbrasil rankings current --id 123 --top 20"];
1241
+ };
1242
+ readonly tool: {
1243
+ readonly name: "qb_rankings_current";
1244
+ readonly title: "Consultar ranking atual";
1245
+ };
1246
+ readonly outputModes: readonly ["json", "human"];
1247
+ } | {
1248
+ readonly id: "screening.universes";
1249
+ readonly kind: "read";
1250
+ readonly visibility: readonly ["cli", "opencode"];
1251
+ readonly description: "Lista universos salvos e baseados em portfólios disponíveis para screening de indicadores.";
1252
+ readonly http: {
1253
+ readonly method: "GET";
1254
+ readonly path: "/api/desk/tools/screening/universes";
1255
+ readonly inputMode: "none";
1256
+ readonly schemas: {
1257
+ readonly request: null;
1258
+ readonly response: "ScreeningUniversesResponse";
1259
+ };
1260
+ };
1261
+ readonly cli: {
1262
+ readonly group: "screening";
1263
+ readonly command: "universes";
1264
+ readonly summary: "Lista carteiras do sistema, watchlists e carteiras disponíveis para screening.";
1265
+ readonly positional: readonly [];
1266
+ readonly options: readonly [];
1267
+ readonly examples: readonly ["quantbrasil screening universes"];
1268
+ };
1269
+ readonly tool: {
1270
+ readonly name: "qb_screening_universes";
1271
+ readonly title: "Listar universos de screening";
1272
+ };
1273
+ readonly outputModes: readonly ["json", "human"];
1274
+ } | {
1275
+ readonly id: "screening.indicators";
1276
+ readonly kind: "read";
1277
+ readonly visibility: readonly ["cli", "opencode"];
1278
+ readonly description: "Lista indicadores, parâmetros e operadores disponíveis para screening.";
1279
+ readonly http: {
1280
+ readonly method: "GET";
1281
+ readonly path: "/api/desk/tools/screening/indicators";
1282
+ readonly inputMode: "none";
1283
+ readonly schemas: {
1284
+ readonly request: null;
1285
+ readonly response: "ScreeningIndicatorsResponse";
1286
+ };
1287
+ };
1288
+ readonly cli: {
1289
+ readonly group: "screening";
1290
+ readonly command: "indicators";
1291
+ readonly summary: "Lista indicadores, parâmetros e exemplos disponíveis para screening.";
1292
+ readonly positional: readonly [];
1293
+ readonly options: readonly [];
1294
+ readonly examples: readonly ["quantbrasil screening indicators", "quantbrasil screening indicators --json"];
1295
+ };
1296
+ readonly tool: {
1297
+ readonly name: "qb_screening_indicators";
1298
+ readonly title: "Listar indicadores de screening";
1299
+ };
1300
+ readonly outputModes: readonly ["json", "human"];
1301
+ } | {
1302
+ readonly id: "screening.run";
1303
+ readonly kind: "read";
1304
+ readonly visibility: readonly ["cli", "opencode"];
1305
+ readonly description: "Executa o screener de indicadores existente sobre um universo salvo baseado em portfólio.";
1306
+ readonly http: {
1307
+ readonly method: "POST";
1308
+ readonly path: "/api/desk/tools/screening/run";
1309
+ readonly inputMode: "json_body";
1310
+ readonly schemas: {
1311
+ readonly request: "ScreeningRunRequest";
1312
+ readonly response: "ScreeningRunResponse";
1313
+ };
1314
+ };
1315
+ readonly cli: {
1316
+ readonly group: "screening";
1317
+ readonly command: "run";
1318
+ readonly summary: "Executa screening de indicadores a partir de um payload ScreenerRequest JSON.";
1319
+ readonly positional: readonly [];
1320
+ readonly options: readonly [{
1321
+ readonly kind: "option";
1322
+ readonly flag: "--system";
1323
+ readonly name: "system_slug";
1324
+ readonly type: "string";
1325
+ readonly required: false;
1326
+ readonly placeholder: "SLUG";
1327
+ readonly exclusiveGroup: "screening_universe_selector";
1328
+ readonly description: "Slug da carteira do sistema retornado por `screening universes`, por exemplo acoes-mais-liquidas.";
1329
+ }, {
1330
+ readonly kind: "option";
1331
+ readonly flag: "--watchlist";
1332
+ readonly name: "watchlist_id";
1333
+ readonly type: "integer";
1334
+ readonly required: false;
1335
+ readonly placeholder: "ID";
1336
+ readonly exclusiveGroup: "screening_universe_selector";
1337
+ readonly description: "ID da watchlist retornado por `watchlists list`.";
1338
+ }, {
1339
+ readonly kind: "option";
1340
+ readonly flag: "--holding";
1341
+ readonly name: "holding_id";
1342
+ readonly type: "integer";
1343
+ readonly required: false;
1344
+ readonly placeholder: "ID";
1345
+ readonly exclusiveGroup: "screening_universe_selector";
1346
+ readonly description: "ID da carteira retornado por `holdings list`.";
1347
+ }, {
1348
+ readonly kind: "option";
1349
+ readonly flag: "--query-file";
1350
+ readonly name: "query_file";
1351
+ readonly type: "string";
1352
+ readonly required: true;
1353
+ readonly placeholder: "ARQUIVO|-";
1354
+ readonly description: "Caminho para um arquivo ScreenerRequest JSON completo, ou `-` para ler JSON de stdin.";
1355
+ }, {
1356
+ readonly kind: "option";
1357
+ readonly flag: "--limit";
1358
+ readonly name: "limit";
1359
+ readonly type: "integer";
1360
+ readonly required: false;
1361
+ readonly placeholder: "N";
1362
+ readonly description: "Sobrescreve o limit de topo do ScreenerRequest sem alterar o arquivo da consulta.";
1363
+ }, {
1364
+ readonly kind: "option";
1365
+ readonly flag: "--sort";
1366
+ readonly name: "sort";
1367
+ readonly type: "enum";
1368
+ readonly required: false;
1369
+ readonly placeholder: "price|ticker";
1370
+ readonly enumValues: readonly ["price", "ticker"];
1371
+ readonly description: "Sobrescreve o sort de topo do ScreenerRequest sem alterar o arquivo da consulta.";
1372
+ }];
1373
+ readonly examples: readonly ["quantbrasil screening run --system acoes-mais-liquidas --query-file ./screening.json", "quantbrasil screening run --watchlist 93 --query-file ./screening.json --limit 25", "cat screening.json | quantbrasil screening run --holding 182 --query-file - --sort ticker"];
1374
+ };
1375
+ readonly tool: {
1376
+ readonly name: "qb_screening_run";
1377
+ readonly title: "Executar screening de indicadores";
1378
+ };
1379
+ readonly outputModes: readonly ["json", "human"];
1380
+ } | {
1381
+ readonly id: "watchlists.list";
1382
+ readonly kind: "read";
1383
+ readonly visibility: readonly ["cli", "opencode"];
1384
+ readonly description: "List watchlists owned by the authenticated user.";
1385
+ readonly http: {
1386
+ readonly method: "GET";
1387
+ readonly path: "/api/desk/tools/watchlist/list";
1388
+ readonly inputMode: "none";
1389
+ readonly schemas: {
1390
+ readonly request: null;
1391
+ readonly response: "PortfolioListResponse";
1392
+ };
1393
+ };
1394
+ readonly cli: {
1395
+ readonly group: "watchlists";
1396
+ readonly command: "list";
1397
+ readonly summary: "List watchlists for tracking ideas and filters.";
1398
+ readonly positional: readonly [];
1399
+ readonly options: readonly [];
1400
+ readonly examples: readonly ["quantbrasil watchlists list"];
1401
+ };
1402
+ readonly tool: {
1403
+ readonly name: "qb_watchlist_list";
1404
+ readonly title: "List watchlists";
1405
+ };
1406
+ readonly outputModes: readonly ["json", "human"];
1407
+ } | {
1408
+ readonly id: "watchlists.get";
1409
+ readonly kind: "read";
1410
+ readonly visibility: readonly ["cli", "opencode"];
1411
+ readonly description: "Return one watchlist by id, scoped to the acting user.";
1412
+ readonly http: {
1413
+ readonly method: "POST";
1414
+ readonly path: "/api/desk/tools/watchlist/get";
1415
+ readonly inputMode: "json_body";
1416
+ readonly schemas: {
1417
+ readonly request: "PortfolioGetRequest";
1418
+ readonly response: "PortfolioGetResponse";
1419
+ };
1420
+ };
1421
+ readonly cli: {
1422
+ readonly group: "watchlists";
1423
+ readonly command: "get";
1424
+ readonly summary: "Get a watchlist by id.";
1425
+ readonly positional: readonly [{
1426
+ readonly kind: "positional";
1427
+ readonly name: "portfolio_id";
1428
+ readonly type: "integer";
1429
+ readonly required: true;
1430
+ readonly placeholder: "ID";
1431
+ readonly description: "Stable saved object identifier.";
571
1432
  }];
572
- readonly examples: readonly ["quantbrasil market assets", "quantbrasil market assets --type B3"];
1433
+ readonly options: readonly [];
1434
+ readonly examples: readonly ["quantbrasil watchlists get 123"];
573
1435
  };
574
1436
  readonly tool: {
575
- readonly name: "qb_market_assets";
576
- readonly title: "List monitored assets";
1437
+ readonly name: "qb_watchlist_get";
1438
+ readonly title: "Get watchlist";
577
1439
  };
578
1440
  readonly outputModes: readonly ["json", "human"];
579
1441
  } | {
580
- readonly id: "market.price";
581
- readonly kind: "read";
1442
+ readonly id: "watchlists.create";
1443
+ readonly kind: "mutation";
582
1444
  readonly visibility: readonly ["cli", "opencode"];
583
- readonly description: "Return the latest or date-specific price snapshot for a single ticker.";
1445
+ readonly description: "Create a new watchlist for the authenticated user.";
584
1446
  readonly http: {
585
1447
  readonly method: "POST";
586
- readonly path: "/api/desk/tools/market/price";
1448
+ readonly path: "/api/desk/tools/watchlist/create";
587
1449
  readonly inputMode: "json_body";
588
1450
  readonly schemas: {
589
- readonly request: "MarketPriceRequest";
590
- readonly response: "MarketPriceResponse";
1451
+ readonly request: "PortfolioCreateRequest";
1452
+ readonly response: "PortfolioCreateResponse";
591
1453
  };
592
1454
  };
593
1455
  readonly cli: {
594
- readonly group: "market";
595
- readonly command: "price";
596
- readonly summary: "Get the current or historical price snapshot for one ticker.";
1456
+ readonly group: "watchlists";
1457
+ readonly command: "create";
1458
+ readonly summary: "Create a new watchlist.";
597
1459
  readonly positional: readonly [{
598
1460
  readonly kind: "positional";
599
- readonly name: "ticker";
1461
+ readonly name: "name";
600
1462
  readonly type: "string";
601
1463
  readonly required: true;
602
- readonly placeholder: "TICKER";
603
- readonly description: "Ticker symbol, for example PETR4 or VALE3.";
1464
+ readonly placeholder: "NOME";
1465
+ readonly description: "Name to save.";
604
1466
  }];
605
- readonly options: readonly [{
606
- readonly kind: "option";
607
- readonly flag: "--date";
608
- readonly name: "date";
609
- readonly type: "string";
610
- readonly required: false;
611
- readonly placeholder: "AAAA-MM-DD";
612
- readonly description: "Reference date in ISO format. When omitted, returns the latest available price.";
1467
+ readonly options: readonly [];
1468
+ readonly examples: readonly ["quantbrasil watchlists create \"Dividendos\""];
1469
+ };
1470
+ readonly tool: {
1471
+ readonly name: "qb_watchlist_create";
1472
+ readonly title: "Create watchlist";
1473
+ };
1474
+ readonly outputModes: readonly ["json", "human"];
1475
+ } | {
1476
+ readonly id: "watchlists.rename";
1477
+ readonly kind: "mutation";
1478
+ readonly visibility: readonly ["cli", "opencode"];
1479
+ readonly description: "Rename a watchlist owned by the authenticated user.";
1480
+ readonly http: {
1481
+ readonly method: "POST";
1482
+ readonly path: "/api/desk/tools/watchlist/rename";
1483
+ readonly inputMode: "json_body";
1484
+ readonly schemas: {
1485
+ readonly request: "PortfolioRenameRequest";
1486
+ readonly response: "PortfolioMutationResponse";
1487
+ };
1488
+ };
1489
+ readonly cli: {
1490
+ readonly group: "watchlists";
1491
+ readonly command: "rename";
1492
+ readonly summary: "Rename an existing watchlist.";
1493
+ readonly positional: readonly [{
1494
+ readonly kind: "positional";
1495
+ readonly name: "portfolio_id";
1496
+ readonly type: "integer";
1497
+ readonly required: true;
1498
+ readonly placeholder: "ID";
1499
+ readonly description: "Stable saved object identifier.";
613
1500
  }, {
614
- readonly kind: "option";
615
- readonly flag: "--timeframe";
616
- readonly name: "timeframe";
1501
+ readonly kind: "positional";
1502
+ readonly name: "name";
617
1503
  readonly type: "string";
618
- readonly required: false;
619
- readonly placeholder: "TIMEFRAME";
620
- readonly defaultValue: "D1";
621
- readonly description: "Timeframe identifier. Defaults to D1.";
1504
+ readonly required: true;
1505
+ readonly placeholder: "NOME";
1506
+ readonly description: "Name to save.";
622
1507
  }];
623
- readonly examples: readonly ["quantbrasil market price PETR4", "quantbrasil market price PETR4 --date 2026-04-10 --timeframe D1"];
1508
+ readonly options: readonly [];
1509
+ readonly examples: readonly ["quantbrasil watchlists rename 123 \"Longo Prazo\""];
624
1510
  };
625
1511
  readonly tool: {
626
- readonly name: "qb_market_price";
627
- readonly title: "Get market price";
1512
+ readonly name: "qb_watchlist_rename";
1513
+ readonly title: "Rename watchlist";
628
1514
  };
629
1515
  readonly outputModes: readonly ["json", "human"];
630
1516
  } | {
631
- readonly id: "assets.overview";
632
- readonly kind: "read";
1517
+ readonly id: "watchlists.add-assets";
1518
+ readonly kind: "mutation";
633
1519
  readonly visibility: readonly ["cli", "opencode"];
634
- readonly description: "Return a selective asset overview using only the requested sections.";
1520
+ readonly description: "Add one or more monitored tickers to a watchlist.";
635
1521
  readonly http: {
636
1522
  readonly method: "POST";
637
- readonly path: "/api/desk/tools/asset/overview";
1523
+ readonly path: "/api/desk/tools/watchlist/add_assets";
638
1524
  readonly inputMode: "json_body";
639
1525
  readonly schemas: {
640
- readonly request: "AssetOverviewRequest";
641
- readonly response: "AssetOverviewResponse";
1526
+ readonly request: "PortfolioAddAssetsRequest";
1527
+ readonly response: "PortfolioMutationResponse";
642
1528
  };
643
1529
  };
644
1530
  readonly cli: {
645
- readonly group: "assets";
646
- readonly command: "overview";
647
- readonly summary: "Get a section-based overview for one asset.";
1531
+ readonly group: "watchlists";
1532
+ readonly command: "add-assets";
1533
+ readonly summary: "Add monitored tickers to an existing watchlist.";
648
1534
  readonly positional: readonly [{
649
1535
  readonly kind: "positional";
650
- readonly name: "ticker";
651
- readonly type: "string";
1536
+ readonly name: "portfolio_id";
1537
+ readonly type: "integer";
1538
+ readonly required: true;
1539
+ readonly placeholder: "ID";
1540
+ readonly description: "Stable saved object identifier.";
1541
+ }, {
1542
+ readonly kind: "positional";
1543
+ readonly name: "symbols";
1544
+ readonly type: "string_array";
652
1545
  readonly required: true;
653
1546
  readonly placeholder: "TICKER";
654
- readonly description: "Ticker symbol, for example PETR4 or VALE3.";
1547
+ readonly multiple: true;
1548
+ readonly collectionFormat: "space_separated";
1549
+ readonly description: "One or more monitored ticker symbols.";
655
1550
  }];
656
- readonly options: readonly [{
657
- readonly kind: "option";
658
- readonly flag: "--sections";
659
- readonly name: "sections";
660
- readonly type: "enum_array";
1551
+ readonly options: readonly [];
1552
+ readonly examples: readonly ["quantbrasil watchlists add-assets 123 PETR4 VALE3"];
1553
+ };
1554
+ readonly tool: {
1555
+ readonly name: "qb_watchlist_add_assets";
1556
+ readonly title: "Add watchlist assets";
1557
+ };
1558
+ readonly outputModes: readonly ["json", "human"];
1559
+ } | {
1560
+ readonly id: "watchlists.remove-assets";
1561
+ readonly kind: "mutation";
1562
+ readonly visibility: readonly ["cli", "opencode"];
1563
+ readonly description: "Remove one or more monitored tickers from a watchlist.";
1564
+ readonly http: {
1565
+ readonly method: "POST";
1566
+ readonly path: "/api/desk/tools/watchlist/remove_assets";
1567
+ readonly inputMode: "json_body";
1568
+ readonly schemas: {
1569
+ readonly request: "PortfolioRemoveAssetsRequest";
1570
+ readonly response: "PortfolioMutationResponse";
1571
+ };
1572
+ };
1573
+ readonly cli: {
1574
+ readonly group: "watchlists";
1575
+ readonly command: "remove-assets";
1576
+ readonly summary: "Remove monitored tickers from an existing watchlist.";
1577
+ readonly positional: readonly [{
1578
+ readonly kind: "positional";
1579
+ readonly name: "portfolio_id";
1580
+ readonly type: "integer";
661
1581
  readonly required: true;
662
- readonly placeholder: "SEÇÕES";
663
- readonly enumValues: readonly ["price", "performance", "momentum", "technicals", "risk", "fundamentals", "rankings"];
1582
+ readonly placeholder: "ID";
1583
+ readonly description: "Stable saved object identifier.";
1584
+ }, {
1585
+ readonly kind: "positional";
1586
+ readonly name: "symbols";
1587
+ readonly type: "string_array";
1588
+ readonly required: true;
1589
+ readonly placeholder: "TICKER";
664
1590
  readonly multiple: true;
665
- readonly collectionFormat: "comma_separated";
666
- readonly description: "Comma-separated section list. Only request the sections needed for the question.";
1591
+ readonly collectionFormat: "space_separated";
1592
+ readonly description: "One or more monitored ticker symbols.";
667
1593
  }];
668
- readonly examples: readonly ["quantbrasil assets overview PETR4 --sections price,performance", "quantbrasil assets overview PETR4 --sections price,fundamentals", "quantbrasil assets overview PETR4 --sections price,technicals"];
1594
+ readonly options: readonly [];
1595
+ readonly examples: readonly ["quantbrasil watchlists remove-assets 123 PETR4"];
669
1596
  };
670
1597
  readonly tool: {
671
- readonly name: "qb_asset_overview";
672
- readonly title: "Get asset overview";
1598
+ readonly name: "qb_watchlist_remove_assets";
1599
+ readonly title: "Remove watchlist assets";
673
1600
  };
674
1601
  readonly outputModes: readonly ["json", "human"];
675
1602
  } | {
676
- readonly id: "portfolios.list";
1603
+ readonly id: "holdings.list";
677
1604
  readonly kind: "read";
678
1605
  readonly visibility: readonly ["cli", "opencode"];
679
- readonly description: "List every portfolio owned by the authenticated user.";
1606
+ readonly description: "List holdings owned by the authenticated user.";
680
1607
  readonly http: {
681
1608
  readonly method: "GET";
682
- readonly path: "/api/desk/tools/portfolio/list";
1609
+ readonly path: "/api/desk/tools/holding/list";
683
1610
  readonly inputMode: "none";
684
1611
  readonly schemas: {
685
1612
  readonly request: null;
@@ -687,26 +1614,26 @@ export declare function getCapabilityById(id: CapabilityId): {
687
1614
  };
688
1615
  };
689
1616
  readonly cli: {
690
- readonly group: "portfolios";
1617
+ readonly group: "holdings";
691
1618
  readonly command: "list";
692
- readonly summary: "List the user portfolios available in QuantBrasil.";
1619
+ readonly summary: "List holdings for investable metrics.";
693
1620
  readonly positional: readonly [];
694
1621
  readonly options: readonly [];
695
- readonly examples: readonly ["quantbrasil portfolios list"];
1622
+ readonly examples: readonly ["quantbrasil holdings list"];
696
1623
  };
697
1624
  readonly tool: {
698
- readonly name: "qb_portfolio_list";
699
- readonly title: "List portfolios";
1625
+ readonly name: "qb_holding_list";
1626
+ readonly title: "List holdings";
700
1627
  };
701
1628
  readonly outputModes: readonly ["json", "human"];
702
1629
  } | {
703
- readonly id: "portfolios.get";
1630
+ readonly id: "holdings.get";
704
1631
  readonly kind: "read";
705
1632
  readonly visibility: readonly ["cli", "opencode"];
706
- readonly description: "Return one saved portfolio by id, scoped to the acting user.";
1633
+ readonly description: "Return one holding by id, scoped to the acting user.";
707
1634
  readonly http: {
708
1635
  readonly method: "POST";
709
- readonly path: "/api/desk/tools/portfolio/get";
1636
+ readonly path: "/api/desk/tools/holding/get";
710
1637
  readonly inputMode: "json_body";
711
1638
  readonly schemas: {
712
1639
  readonly request: "PortfolioGetRequest";
@@ -714,67 +1641,87 @@ export declare function getCapabilityById(id: CapabilityId): {
714
1641
  };
715
1642
  };
716
1643
  readonly cli: {
717
- readonly group: "portfolios";
1644
+ readonly group: "holdings";
718
1645
  readonly command: "get";
719
- readonly summary: "Get a saved portfolio by id.";
1646
+ readonly summary: "Get a holding by id.";
720
1647
  readonly positional: readonly [{
721
1648
  readonly kind: "positional";
722
1649
  readonly name: "portfolio_id";
723
1650
  readonly type: "integer";
724
1651
  readonly required: true;
725
1652
  readonly placeholder: "ID";
726
- readonly description: "Saved portfolio identifier.";
1653
+ readonly description: "Stable saved object identifier.";
727
1654
  }];
728
1655
  readonly options: readonly [];
729
- readonly examples: readonly ["quantbrasil portfolios get 123"];
1656
+ readonly examples: readonly ["quantbrasil holdings get 123"];
730
1657
  };
731
1658
  readonly tool: {
732
- readonly name: "qb_portfolio_get";
733
- readonly title: "Get portfolio";
1659
+ readonly name: "qb_holding_get";
1660
+ readonly title: "Get holding";
734
1661
  };
735
1662
  readonly outputModes: readonly ["json", "human"];
736
1663
  } | {
737
- readonly id: "portfolios.create";
1664
+ readonly id: "holdings.create";
738
1665
  readonly kind: "mutation";
739
1666
  readonly visibility: readonly ["cli", "opencode"];
740
- readonly description: "Create a new saved portfolio for the authenticated user.";
1667
+ readonly description: "Create a new holding for the authenticated user.";
741
1668
  readonly http: {
742
1669
  readonly method: "POST";
743
- readonly path: "/api/desk/tools/portfolio/create";
1670
+ readonly path: "/api/desk/tools/holding/create";
744
1671
  readonly inputMode: "json_body";
745
1672
  readonly schemas: {
746
- readonly request: "PortfolioCreateRequest";
1673
+ readonly request: "DeskHoldingCreateRequest";
747
1674
  readonly response: "PortfolioCreateResponse";
748
1675
  };
749
1676
  };
750
1677
  readonly cli: {
751
- readonly group: "portfolios";
1678
+ readonly group: "holdings";
752
1679
  readonly command: "create";
753
- readonly summary: "Create a new portfolio.";
1680
+ readonly summary: "Create a new holding.";
754
1681
  readonly positional: readonly [{
755
1682
  readonly kind: "positional";
756
1683
  readonly name: "name";
757
1684
  readonly type: "string";
758
1685
  readonly required: true;
759
1686
  readonly placeholder: "NOME";
760
- readonly description: "Portfolio name to create.";
1687
+ readonly description: "Name to save.";
761
1688
  }];
762
- readonly options: readonly [];
763
- readonly examples: readonly ["quantbrasil portfolios create \"Dividendos\""];
1689
+ readonly options: readonly [{
1690
+ readonly kind: "option";
1691
+ readonly flag: "--mode";
1692
+ readonly name: "default_allocation_input";
1693
+ readonly type: "enum";
1694
+ readonly required: false;
1695
+ readonly placeholder: "target|position";
1696
+ readonly defaultValue: "target";
1697
+ readonly enumValues: readonly ["target", "position"];
1698
+ readonly description: "How the holding is controlled initially: target weights or positions.";
1699
+ }, {
1700
+ readonly kind: "option";
1701
+ readonly flag: "--target";
1702
+ readonly name: "targets";
1703
+ readonly type: "string_array";
1704
+ readonly required: false;
1705
+ readonly placeholder: "TICKER:PESO";
1706
+ readonly multiple: true;
1707
+ readonly collectionFormat: "repeatable";
1708
+ readonly description: "Initial target weight in TICKER:WEIGHT_PCT form.";
1709
+ }];
1710
+ readonly examples: readonly ["quantbrasil holdings create \"Longo Prazo\"", "quantbrasil holdings create \"Teórica\" --target PRIO3:50 --target VALE3:50", "quantbrasil holdings create \"Real\" --mode position"];
764
1711
  };
765
1712
  readonly tool: {
766
- readonly name: "qb_portfolio_create";
767
- readonly title: "Create portfolio";
1713
+ readonly name: "qb_holding_create";
1714
+ readonly title: "Create holding";
768
1715
  };
769
1716
  readonly outputModes: readonly ["json", "human"];
770
1717
  } | {
771
- readonly id: "portfolios.rename";
1718
+ readonly id: "holdings.rename";
772
1719
  readonly kind: "mutation";
773
1720
  readonly visibility: readonly ["cli", "opencode"];
774
- readonly description: "Rename a saved portfolio owned by the authenticated user.";
1721
+ readonly description: "Rename a holding owned by the authenticated user.";
775
1722
  readonly http: {
776
1723
  readonly method: "POST";
777
- readonly path: "/api/desk/tools/portfolio/rename";
1724
+ readonly path: "/api/desk/tools/holding/rename";
778
1725
  readonly inputMode: "json_body";
779
1726
  readonly schemas: {
780
1727
  readonly request: "PortfolioRenameRequest";
@@ -782,126 +1729,126 @@ export declare function getCapabilityById(id: CapabilityId): {
782
1729
  };
783
1730
  };
784
1731
  readonly cli: {
785
- readonly group: "portfolios";
1732
+ readonly group: "holdings";
786
1733
  readonly command: "rename";
787
- readonly summary: "Rename an existing portfolio.";
1734
+ readonly summary: "Rename an existing holding.";
788
1735
  readonly positional: readonly [{
789
1736
  readonly kind: "positional";
790
1737
  readonly name: "portfolio_id";
791
1738
  readonly type: "integer";
792
1739
  readonly required: true;
793
1740
  readonly placeholder: "ID";
794
- readonly description: "Saved portfolio identifier.";
1741
+ readonly description: "Stable saved object identifier.";
795
1742
  }, {
796
1743
  readonly kind: "positional";
797
1744
  readonly name: "name";
798
1745
  readonly type: "string";
799
1746
  readonly required: true;
800
1747
  readonly placeholder: "NOME";
801
- readonly description: "New portfolio name.";
1748
+ readonly description: "Name to save.";
802
1749
  }];
803
1750
  readonly options: readonly [];
804
- readonly examples: readonly ["quantbrasil portfolios rename 123 \"Longo Prazo\""];
1751
+ readonly examples: readonly ["quantbrasil holdings rename 123 \"Longo Prazo\""];
805
1752
  };
806
1753
  readonly tool: {
807
- readonly name: "qb_portfolio_rename";
808
- readonly title: "Rename portfolio";
1754
+ readonly name: "qb_holding_rename";
1755
+ readonly title: "Rename holding";
809
1756
  };
810
1757
  readonly outputModes: readonly ["json", "human"];
811
1758
  } | {
812
- readonly id: "portfolios.add-assets";
1759
+ readonly id: "holdings.set-targets";
813
1760
  readonly kind: "mutation";
814
1761
  readonly visibility: readonly ["cli", "opencode"];
815
- readonly description: "Add one or more monitored tickers to a saved portfolio.";
1762
+ readonly description: "Set target weights for a holding owned by the authenticated user.";
816
1763
  readonly http: {
817
1764
  readonly method: "POST";
818
- readonly path: "/api/desk/tools/portfolio/add_assets";
1765
+ readonly path: "/api/desk/tools/holding/set_targets";
819
1766
  readonly inputMode: "json_body";
820
1767
  readonly schemas: {
821
- readonly request: "PortfolioAddAssetsRequest";
1768
+ readonly request: "HoldingSetTargetsRequest";
822
1769
  readonly response: "PortfolioMutationResponse";
823
1770
  };
824
1771
  };
825
1772
  readonly cli: {
826
- readonly group: "portfolios";
827
- readonly command: "add-assets";
828
- readonly summary: "Add monitored tickers to an existing portfolio.";
1773
+ readonly group: "holdings";
1774
+ readonly command: "set-targets";
1775
+ readonly summary: "Set target weights for a holding.";
829
1776
  readonly positional: readonly [{
830
1777
  readonly kind: "positional";
831
1778
  readonly name: "portfolio_id";
832
1779
  readonly type: "integer";
833
1780
  readonly required: true;
834
1781
  readonly placeholder: "ID";
835
- readonly description: "Saved portfolio identifier.";
1782
+ readonly description: "Stable saved object identifier.";
836
1783
  }, {
837
1784
  readonly kind: "positional";
838
- readonly name: "symbols";
1785
+ readonly name: "targets";
839
1786
  readonly type: "string_array";
840
1787
  readonly required: true;
841
- readonly placeholder: "TICKER";
1788
+ readonly placeholder: "TICKER:PESO";
842
1789
  readonly multiple: true;
843
1790
  readonly collectionFormat: "space_separated";
844
- readonly description: "One or more monitored ticker symbols to add to the portfolio.";
1791
+ readonly description: "One or more target weights in TICKER:WEIGHT_PCT form.";
845
1792
  }];
846
1793
  readonly options: readonly [];
847
- readonly examples: readonly ["quantbrasil portfolios add-assets 123 PETR4 VALE3"];
1794
+ readonly examples: readonly ["quantbrasil holdings set-targets 123 PRIO3:50 VALE3:50"];
848
1795
  };
849
1796
  readonly tool: {
850
- readonly name: "qb_portfolio_add_assets";
851
- readonly title: "Add portfolio assets";
1797
+ readonly name: "qb_holding_set_targets";
1798
+ readonly title: "Set holding target weights";
852
1799
  };
853
1800
  readonly outputModes: readonly ["json", "human"];
854
1801
  } | {
855
- readonly id: "portfolios.remove-assets";
1802
+ readonly id: "holdings.set-positions";
856
1803
  readonly kind: "mutation";
857
1804
  readonly visibility: readonly ["cli", "opencode"];
858
- readonly description: "Remove one or more monitored tickers from a saved portfolio.";
1805
+ readonly description: "Set position quantities for a holding owned by the authenticated user.";
859
1806
  readonly http: {
860
1807
  readonly method: "POST";
861
- readonly path: "/api/desk/tools/portfolio/remove_assets";
1808
+ readonly path: "/api/desk/tools/holding/set_positions";
862
1809
  readonly inputMode: "json_body";
863
1810
  readonly schemas: {
864
- readonly request: "PortfolioRemoveAssetsRequest";
1811
+ readonly request: "HoldingSetPositionsRequest";
865
1812
  readonly response: "PortfolioMutationResponse";
866
1813
  };
867
1814
  };
868
1815
  readonly cli: {
869
- readonly group: "portfolios";
870
- readonly command: "remove-assets";
871
- readonly summary: "Remove monitored tickers from an existing portfolio.";
1816
+ readonly group: "holdings";
1817
+ readonly command: "set-positions";
1818
+ readonly summary: "Set position quantities for a holding.";
872
1819
  readonly positional: readonly [{
873
1820
  readonly kind: "positional";
874
1821
  readonly name: "portfolio_id";
875
1822
  readonly type: "integer";
876
1823
  readonly required: true;
877
1824
  readonly placeholder: "ID";
878
- readonly description: "Saved portfolio identifier.";
1825
+ readonly description: "Stable saved object identifier.";
879
1826
  }, {
880
1827
  readonly kind: "positional";
881
- readonly name: "symbols";
1828
+ readonly name: "positions";
882
1829
  readonly type: "string_array";
883
1830
  readonly required: true;
884
- readonly placeholder: "TICKER";
1831
+ readonly placeholder: "TICKER:QUANTIDADE";
885
1832
  readonly multiple: true;
886
1833
  readonly collectionFormat: "space_separated";
887
- readonly description: "One or more monitored ticker symbols to remove from the portfolio.";
1834
+ readonly description: "One or more position quantities in TICKER:QUANTITY form.";
888
1835
  }];
889
1836
  readonly options: readonly [];
890
- readonly examples: readonly ["quantbrasil portfolios remove-assets 123 PETR4"];
1837
+ readonly examples: readonly ["quantbrasil holdings set-positions 123 PRIO3:1600 BTC-USD:0.25"];
891
1838
  };
892
1839
  readonly tool: {
893
- readonly name: "qb_portfolio_remove_assets";
894
- readonly title: "Remove portfolio assets";
1840
+ readonly name: "qb_holding_set_positions";
1841
+ readonly title: "Set holding position quantities";
895
1842
  };
896
1843
  readonly outputModes: readonly ["json", "human"];
897
1844
  } | {
898
- readonly id: "analytics.historical-return";
1845
+ readonly id: "holdings.historical-return";
899
1846
  readonly kind: "read";
900
1847
  readonly visibility: readonly ["cli", "opencode"];
901
- readonly description: "Calculate historical return for a saved portfolio or an ad-hoc weighted basket.";
1848
+ readonly description: "Calculate historical return for a holding.";
902
1849
  readonly http: {
903
1850
  readonly method: "POST";
904
- readonly path: "/api/desk/tools/portfolio/historical_return";
1851
+ readonly path: "/api/desk/tools/holding/historical_return";
905
1852
  readonly inputMode: "json_body";
906
1853
  readonly schemas: {
907
1854
  readonly request: "PortfolioHistoricalReturnRequest";
@@ -909,62 +1856,57 @@ export declare function getCapabilityById(id: CapabilityId): {
909
1856
  };
910
1857
  };
911
1858
  readonly cli: {
912
- readonly group: "analytics";
1859
+ readonly group: "holdings";
913
1860
  readonly command: "historical-return";
914
- readonly summary: "Calculate historical return for a saved portfolio or repeated --asset inputs.";
915
- readonly positional: readonly [];
916
- readonly options: readonly [{
917
- readonly kind: "option";
918
- readonly flag: "--portfolio";
1861
+ readonly summary: "Calculate historical return for a saved holding.";
1862
+ readonly positional: readonly [{
1863
+ readonly kind: "positional";
919
1864
  readonly name: "portfolio_id";
920
1865
  readonly type: "integer";
921
- readonly required: false;
1866
+ readonly required: true;
922
1867
  readonly placeholder: "ID";
923
- readonly exclusiveGroup: "source";
924
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
925
- }, {
926
- readonly kind: "option";
927
- readonly flag: "--asset";
928
- readonly name: "assets";
929
- readonly type: "string_array";
930
- readonly required: false;
931
- readonly placeholder: "TICKER[:PESO]";
932
- readonly multiple: true;
933
- readonly collectionFormat: "repeatable";
934
- readonly exclusiveGroup: "source";
935
- readonly description: "Repeatable ad-hoc asset input using TICKER[:WEIGHT_PCT], for example PRIO3:50.";
936
- }, {
1868
+ readonly description: "Stable saved object identifier.";
1869
+ }];
1870
+ readonly options: readonly [{
937
1871
  readonly kind: "option";
938
1872
  readonly flag: "--from";
939
1873
  readonly name: "start_date";
940
1874
  readonly type: "string";
941
- readonly required: true;
1875
+ readonly required: false;
942
1876
  readonly placeholder: "AAAA-MM-DD";
943
- readonly description: "Inclusive start date in ISO format.";
1877
+ readonly description: "Inclusive start date in ISO format. Use with --to, or use --period.";
944
1878
  }, {
945
1879
  readonly kind: "option";
946
1880
  readonly flag: "--to";
947
1881
  readonly name: "end_date";
948
1882
  readonly type: "string";
949
- readonly required: true;
1883
+ readonly required: false;
950
1884
  readonly placeholder: "AAAA-MM-DD";
951
- readonly description: "Inclusive end date in ISO format.";
1885
+ readonly description: "Inclusive end date in ISO format. Use with --from, or use --period.";
1886
+ }, {
1887
+ readonly kind: "option";
1888
+ readonly flag: "--period";
1889
+ readonly name: "period";
1890
+ readonly type: "string";
1891
+ readonly required: false;
1892
+ readonly placeholder: "PERIODO";
1893
+ readonly description: "Lookback period such as 1y, 3y, 5y, or 6m. Mutually exclusive with --from/--to.";
952
1894
  }];
953
- readonly examples: readonly ["quantbrasil analytics historical-return --portfolio 123 --from 2024-01-01 --to 2025-01-01", "quantbrasil analytics historical-return --asset PRIO3:50 --asset VALE3:50 --from 2021-01-01 --to 2025-01-01"];
1895
+ readonly examples: readonly ["quantbrasil holdings historical-return 123 --from 2024-01-01 --to 2025-01-01", "quantbrasil holdings historical-return 123 --period 1y"];
954
1896
  };
955
1897
  readonly tool: {
956
- readonly name: "qb_historical_return";
957
- readonly title: "Calculate historical return";
1898
+ readonly name: "qb_holding_historical_return";
1899
+ readonly title: "Calculate holding historical return";
958
1900
  };
959
1901
  readonly outputModes: readonly ["json", "human"];
960
1902
  } | {
961
- readonly id: "analytics.beta";
1903
+ readonly id: "holdings.beta";
962
1904
  readonly kind: "read";
963
1905
  readonly visibility: readonly ["cli", "opencode"];
964
- readonly description: "Calculate portfolio beta against IBOV for a saved portfolio or an ad-hoc basket.";
1906
+ readonly description: "Calculate holding beta against IBOV.";
965
1907
  readonly http: {
966
1908
  readonly method: "POST";
967
- readonly path: "/api/desk/tools/portfolio/beta";
1909
+ readonly path: "/api/desk/tools/holding/beta";
968
1910
  readonly inputMode: "json_body";
969
1911
  readonly schemas: {
970
1912
  readonly request: "PortfolioBetaRequest";
@@ -972,31 +1914,18 @@ export declare function getCapabilityById(id: CapabilityId): {
972
1914
  };
973
1915
  };
974
1916
  readonly cli: {
975
- readonly group: "analytics";
1917
+ readonly group: "holdings";
976
1918
  readonly command: "beta";
977
- readonly summary: "Calculate portfolio beta against IBOV.";
978
- readonly positional: readonly [];
979
- readonly options: readonly [{
980
- readonly kind: "option";
981
- readonly flag: "--portfolio";
1919
+ readonly summary: "Calculate holding beta against IBOV.";
1920
+ readonly positional: readonly [{
1921
+ readonly kind: "positional";
982
1922
  readonly name: "portfolio_id";
983
1923
  readonly type: "integer";
984
- readonly required: false;
1924
+ readonly required: true;
985
1925
  readonly placeholder: "ID";
986
- readonly exclusiveGroup: "source";
987
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
988
- }, {
989
- readonly kind: "option";
990
- readonly flag: "--asset";
991
- readonly name: "assets";
992
- readonly type: "string_array";
993
- readonly required: false;
994
- readonly placeholder: "TICKER[:PESO]";
995
- readonly multiple: true;
996
- readonly collectionFormat: "repeatable";
997
- readonly exclusiveGroup: "source";
998
- readonly description: "Repeatable ad-hoc asset input using TICKER[:WEIGHT_PCT], for example PETR4:120 or WINFUT:-20.";
999
- }, {
1926
+ readonly description: "Stable saved object identifier.";
1927
+ }];
1928
+ readonly options: readonly [{
1000
1929
  readonly kind: "option";
1001
1930
  readonly flag: "--years";
1002
1931
  readonly name: "years";
@@ -1007,21 +1936,21 @@ export declare function getCapabilityById(id: CapabilityId): {
1007
1936
  readonly enumValues: readonly ["1", "3", "5"];
1008
1937
  readonly description: "Historical lookback window in years. Accepted values: 1, 3, or 5.";
1009
1938
  }];
1010
- readonly examples: readonly ["quantbrasil analytics beta --portfolio 123 --years 3", "quantbrasil analytics beta --asset PRIO3:120 --asset WINFUT:-20 --years 1"];
1939
+ readonly examples: readonly ["quantbrasil holdings beta 123 --years 3"];
1011
1940
  };
1012
1941
  readonly tool: {
1013
- readonly name: "qb_portfolio_beta";
1014
- readonly title: "Calculate portfolio beta";
1942
+ readonly name: "qb_holding_beta";
1943
+ readonly title: "Calculate holding beta";
1015
1944
  };
1016
1945
  readonly outputModes: readonly ["json", "human"];
1017
1946
  } | {
1018
- readonly id: "analytics.var";
1947
+ readonly id: "holdings.var";
1019
1948
  readonly kind: "read";
1020
1949
  readonly visibility: readonly ["cli", "opencode"];
1021
- readonly description: "Calculate one-day Value-at-Risk for a saved portfolio or an ad-hoc basket.";
1950
+ readonly description: "Calculate one-day Value-at-Risk for a holding.";
1022
1951
  readonly http: {
1023
1952
  readonly method: "POST";
1024
- readonly path: "/api/desk/tools/portfolio/var";
1953
+ readonly path: "/api/desk/tools/holding/var";
1025
1954
  readonly inputMode: "json_body";
1026
1955
  readonly schemas: {
1027
1956
  readonly request: "PortfolioVaRRequest";
@@ -1029,31 +1958,18 @@ export declare function getCapabilityById(id: CapabilityId): {
1029
1958
  };
1030
1959
  };
1031
1960
  readonly cli: {
1032
- readonly group: "analytics";
1961
+ readonly group: "holdings";
1033
1962
  readonly command: "var";
1034
- readonly summary: "Calculate one-day Value-at-Risk for a portfolio or basket.";
1035
- readonly positional: readonly [];
1036
- readonly options: readonly [{
1037
- readonly kind: "option";
1038
- readonly flag: "--portfolio";
1963
+ readonly summary: "Calculate one-day Value-at-Risk for a holding.";
1964
+ readonly positional: readonly [{
1965
+ readonly kind: "positional";
1039
1966
  readonly name: "portfolio_id";
1040
1967
  readonly type: "integer";
1041
- readonly required: false;
1968
+ readonly required: true;
1042
1969
  readonly placeholder: "ID";
1043
- readonly exclusiveGroup: "source";
1044
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
1045
- }, {
1046
- readonly kind: "option";
1047
- readonly flag: "--asset";
1048
- readonly name: "assets";
1049
- readonly type: "string_array";
1050
- readonly required: false;
1051
- readonly placeholder: "TICKER[:PESO]";
1052
- readonly multiple: true;
1053
- readonly collectionFormat: "repeatable";
1054
- readonly exclusiveGroup: "source";
1055
- readonly description: "Repeatable ad-hoc asset input using TICKER[:WEIGHT_PCT], for example PRIO3:120 or WINFUT:-20.";
1056
- }, {
1970
+ readonly description: "Stable saved object identifier.";
1971
+ }];
1972
+ readonly options: readonly [{
1057
1973
  readonly kind: "option";
1058
1974
  readonly flag: "--years";
1059
1975
  readonly name: "years";
@@ -1072,11 +1988,61 @@ export declare function getCapabilityById(id: CapabilityId): {
1072
1988
  readonly defaultValue: 95;
1073
1989
  readonly description: "Confidence level in percent, for example 95 or 99.";
1074
1990
  }];
1075
- readonly examples: readonly ["quantbrasil analytics var --portfolio 123 --years 1 --confidence 95", "quantbrasil analytics var --asset PRIO3:50 --asset VALE3:50 --years 3 --confidence 99"];
1991
+ readonly examples: readonly ["quantbrasil holdings var 123 --years 1 --confidence 95"];
1992
+ };
1993
+ readonly tool: {
1994
+ readonly name: "qb_holding_var";
1995
+ readonly title: "Calculate holding VaR";
1996
+ };
1997
+ readonly outputModes: readonly ["json", "human"];
1998
+ } | {
1999
+ readonly id: "cointegration.pair";
2000
+ readonly kind: "read";
2001
+ readonly visibility: readonly ["cli", "opencode"];
2002
+ readonly description: "Calcula cointegração para análise de Long & Short entre dois ativos: z-score, beta, p-valor, meia-vida e intervalos de confiança.";
2003
+ readonly http: {
2004
+ readonly method: "POST";
2005
+ readonly path: "/api/desk/tools/cointegration/pair";
2006
+ readonly inputMode: "json_body";
2007
+ readonly schemas: {
2008
+ readonly request: "CointegrationPairRequest";
2009
+ readonly response: "CointegrationPairResponse";
2010
+ };
2011
+ };
2012
+ readonly cli: {
2013
+ readonly group: "cointegration";
2014
+ readonly command: "pair";
2015
+ readonly summary: "Calcula cointegração para análise de Long & Short.";
2016
+ readonly positional: readonly [{
2017
+ readonly kind: "positional";
2018
+ readonly name: "base_asset";
2019
+ readonly type: "string";
2020
+ readonly required: true;
2021
+ readonly placeholder: "TICKER";
2022
+ readonly description: "Ticker do ativo base, por exemplo PETR4.";
2023
+ }, {
2024
+ readonly kind: "positional";
2025
+ readonly name: "comparison_asset";
2026
+ readonly type: "string";
2027
+ readonly required: true;
2028
+ readonly placeholder: "TICKER";
2029
+ readonly description: "Ticker do ativo de comparação, por exemplo VALE3.";
2030
+ }];
2031
+ readonly options: readonly [{
2032
+ readonly kind: "option";
2033
+ readonly flag: "--window";
2034
+ readonly name: "window";
2035
+ readonly type: "integer";
2036
+ readonly required: false;
2037
+ readonly placeholder: "N";
2038
+ readonly defaultValue: 250;
2039
+ readonly description: "Janela de candles para a regressão. Padrão 250 dias úteis.";
2040
+ }];
2041
+ readonly examples: readonly ["quantbrasil cointegration pair PETR4 VALE3", "quantbrasil cointegration pair PETR4 VALE3 --window 120", "quantbrasil cointegration pair PETR4 VALE3 --json"];
1076
2042
  };
1077
2043
  readonly tool: {
1078
- readonly name: "qb_portfolio_var";
1079
- readonly title: "Calculate portfolio VaR";
2044
+ readonly name: "qb_cointegration_pair";
2045
+ readonly title: "Calcular cointegração para Long & Short";
1080
2046
  };
1081
2047
  readonly outputModes: readonly ["json", "human"];
1082
2048
  };