@quantbrasil/cli 0.1.0-beta.3 → 0.1.0-beta.5

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 (44) hide show
  1. package/README.md +18 -11
  2. package/dist/cli/index.d.ts +4 -4
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +15 -12
  5. package/dist/commands/auth.d.ts +18 -0
  6. package/dist/commands/auth.d.ts.map +1 -1
  7. package/dist/commands/auth.js +49 -0
  8. package/dist/commands/market.d.ts +1 -0
  9. package/dist/commands/market.d.ts.map +1 -1
  10. package/dist/commands/market.js +17 -1
  11. package/dist/commands/portfolios.d.ts +148 -8
  12. package/dist/commands/portfolios.d.ts.map +1 -1
  13. package/dist/commands/portfolios.js +557 -55
  14. package/dist/index.d.ts +0 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +0 -1
  17. package/dist/vendor/core/capabilities/index.d.ts +0 -1
  18. package/dist/vendor/core/capabilities/index.d.ts.map +1 -1
  19. package/dist/vendor/core/capabilities/index.js +0 -1
  20. package/dist/vendor/core/capabilities/market.d.ts +9 -1
  21. package/dist/vendor/core/capabilities/market.d.ts.map +1 -1
  22. package/dist/vendor/core/capabilities/market.js +10 -0
  23. package/dist/vendor/core/capabilities/portfolios.d.ts +452 -56
  24. package/dist/vendor/core/capabilities/portfolios.d.ts.map +1 -1
  25. package/dist/vendor/core/capabilities/portfolios.js +434 -116
  26. package/dist/vendor/core/capabilities/registry.d.ts +714 -276
  27. package/dist/vendor/core/capabilities/registry.d.ts.map +1 -1
  28. package/dist/vendor/core/capabilities/registry.js +0 -2
  29. package/dist/vendor/core/capabilities/types.d.ts +1 -1
  30. package/dist/vendor/core/capabilities/types.d.ts.map +1 -1
  31. package/package.json +3 -3
  32. package/skills/quantbrasil/SKILL.md +9 -6
  33. package/skills/quantbrasil/references/cli.md +25 -25
  34. package/skills/quantbrasil/references/costs.md +4 -4
  35. package/skills/quantbrasil/references/errors.md +6 -5
  36. package/skills/quantbrasil/references/portfolios.md +103 -0
  37. package/skills/quantbrasil/references/unsupported.md +5 -2
  38. package/skills/quantbrasil/references/workflows.md +38 -26
  39. package/dist/commands/analytics.d.ts +0 -131
  40. package/dist/commands/analytics.d.ts.map +0 -1
  41. package/dist/commands/analytics.js +0 -291
  42. package/dist/vendor/core/capabilities/analytics.d.ts +0 -187
  43. package/dist/vendor/core/capabilities/analytics.d.ts.map +0 -1
  44. 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,13 @@ export declare const capabilityRegistry: readonly [{
131
139
  };
132
140
  readonly outputModes: readonly ["json", "human"];
133
141
  }, {
134
- readonly id: "portfolios.list";
142
+ readonly id: "watchlists.list";
135
143
  readonly kind: "read";
136
144
  readonly visibility: readonly ["cli", "opencode"];
137
- readonly description: "List every portfolio owned by the authenticated user.";
145
+ readonly description: "List watchlists owned by the authenticated user.";
138
146
  readonly http: {
139
147
  readonly method: "GET";
140
- readonly path: "/api/desk/tools/portfolio/list";
148
+ readonly path: "/api/desk/tools/watchlist/list";
141
149
  readonly inputMode: "none";
142
150
  readonly schemas: {
143
151
  readonly request: null;
@@ -145,26 +153,26 @@ export declare const capabilityRegistry: readonly [{
145
153
  };
146
154
  };
147
155
  readonly cli: {
148
- readonly group: "portfolios";
156
+ readonly group: "watchlists";
149
157
  readonly command: "list";
150
- readonly summary: "List the user portfolios available in QuantBrasil.";
158
+ readonly summary: "List watchlists for tracking ideas and filters.";
151
159
  readonly positional: readonly [];
152
160
  readonly options: readonly [];
153
- readonly examples: readonly ["quantbrasil portfolios list"];
161
+ readonly examples: readonly ["quantbrasil watchlists list"];
154
162
  };
155
163
  readonly tool: {
156
- readonly name: "qb_portfolio_list";
157
- readonly title: "List portfolios";
164
+ readonly name: "qb_watchlist_list";
165
+ readonly title: "List watchlists";
158
166
  };
159
167
  readonly outputModes: readonly ["json", "human"];
160
168
  }, {
161
- readonly id: "portfolios.get";
169
+ readonly id: "watchlists.get";
162
170
  readonly kind: "read";
163
171
  readonly visibility: readonly ["cli", "opencode"];
164
- readonly description: "Return one saved portfolio by id, scoped to the acting user.";
172
+ readonly description: "Return one watchlist by id, scoped to the acting user.";
165
173
  readonly http: {
166
174
  readonly method: "POST";
167
- readonly path: "/api/desk/tools/portfolio/get";
175
+ readonly path: "/api/desk/tools/watchlist/get";
168
176
  readonly inputMode: "json_body";
169
177
  readonly schemas: {
170
178
  readonly request: "PortfolioGetRequest";
@@ -172,33 +180,33 @@ export declare const capabilityRegistry: readonly [{
172
180
  };
173
181
  };
174
182
  readonly cli: {
175
- readonly group: "portfolios";
183
+ readonly group: "watchlists";
176
184
  readonly command: "get";
177
- readonly summary: "Get a saved portfolio by id.";
185
+ readonly summary: "Get a watchlist by id.";
178
186
  readonly positional: readonly [{
179
187
  readonly kind: "positional";
180
188
  readonly name: "portfolio_id";
181
189
  readonly type: "integer";
182
190
  readonly required: true;
183
191
  readonly placeholder: "ID";
184
- readonly description: "Saved portfolio identifier.";
192
+ readonly description: "Stable saved object identifier.";
185
193
  }];
186
194
  readonly options: readonly [];
187
- readonly examples: readonly ["quantbrasil portfolios get 123"];
195
+ readonly examples: readonly ["quantbrasil watchlists get 123"];
188
196
  };
189
197
  readonly tool: {
190
- readonly name: "qb_portfolio_get";
191
- readonly title: "Get portfolio";
198
+ readonly name: "qb_watchlist_get";
199
+ readonly title: "Get watchlist";
192
200
  };
193
201
  readonly outputModes: readonly ["json", "human"];
194
202
  }, {
195
- readonly id: "portfolios.create";
203
+ readonly id: "watchlists.create";
196
204
  readonly kind: "mutation";
197
205
  readonly visibility: readonly ["cli", "opencode"];
198
- readonly description: "Create a new saved portfolio for the authenticated user.";
206
+ readonly description: "Create a new watchlist for the authenticated user.";
199
207
  readonly http: {
200
208
  readonly method: "POST";
201
- readonly path: "/api/desk/tools/portfolio/create";
209
+ readonly path: "/api/desk/tools/watchlist/create";
202
210
  readonly inputMode: "json_body";
203
211
  readonly schemas: {
204
212
  readonly request: "PortfolioCreateRequest";
@@ -206,33 +214,33 @@ export declare const capabilityRegistry: readonly [{
206
214
  };
207
215
  };
208
216
  readonly cli: {
209
- readonly group: "portfolios";
217
+ readonly group: "watchlists";
210
218
  readonly command: "create";
211
- readonly summary: "Create a new portfolio.";
219
+ readonly summary: "Create a new watchlist.";
212
220
  readonly positional: readonly [{
213
221
  readonly kind: "positional";
214
222
  readonly name: "name";
215
223
  readonly type: "string";
216
224
  readonly required: true;
217
225
  readonly placeholder: "NOME";
218
- readonly description: "Portfolio name to create.";
226
+ readonly description: "Name to save.";
219
227
  }];
220
228
  readonly options: readonly [];
221
- readonly examples: readonly ["quantbrasil portfolios create \"Dividendos\""];
229
+ readonly examples: readonly ["quantbrasil watchlists create \"Dividendos\""];
222
230
  };
223
231
  readonly tool: {
224
- readonly name: "qb_portfolio_create";
225
- readonly title: "Create portfolio";
232
+ readonly name: "qb_watchlist_create";
233
+ readonly title: "Create watchlist";
226
234
  };
227
235
  readonly outputModes: readonly ["json", "human"];
228
236
  }, {
229
- readonly id: "portfolios.rename";
237
+ readonly id: "watchlists.rename";
230
238
  readonly kind: "mutation";
231
239
  readonly visibility: readonly ["cli", "opencode"];
232
- readonly description: "Rename a saved portfolio owned by the authenticated user.";
240
+ readonly description: "Rename a watchlist owned by the authenticated user.";
233
241
  readonly http: {
234
242
  readonly method: "POST";
235
- readonly path: "/api/desk/tools/portfolio/rename";
243
+ readonly path: "/api/desk/tools/watchlist/rename";
236
244
  readonly inputMode: "json_body";
237
245
  readonly schemas: {
238
246
  readonly request: "PortfolioRenameRequest";
@@ -240,40 +248,40 @@ export declare const capabilityRegistry: readonly [{
240
248
  };
241
249
  };
242
250
  readonly cli: {
243
- readonly group: "portfolios";
251
+ readonly group: "watchlists";
244
252
  readonly command: "rename";
245
- readonly summary: "Rename an existing portfolio.";
253
+ readonly summary: "Rename an existing watchlist.";
246
254
  readonly positional: readonly [{
247
255
  readonly kind: "positional";
248
256
  readonly name: "portfolio_id";
249
257
  readonly type: "integer";
250
258
  readonly required: true;
251
259
  readonly placeholder: "ID";
252
- readonly description: "Saved portfolio identifier.";
260
+ readonly description: "Stable saved object identifier.";
253
261
  }, {
254
262
  readonly kind: "positional";
255
263
  readonly name: "name";
256
264
  readonly type: "string";
257
265
  readonly required: true;
258
266
  readonly placeholder: "NOME";
259
- readonly description: "New portfolio name.";
267
+ readonly description: "Name to save.";
260
268
  }];
261
269
  readonly options: readonly [];
262
- readonly examples: readonly ["quantbrasil portfolios rename 123 \"Longo Prazo\""];
270
+ readonly examples: readonly ["quantbrasil watchlists rename 123 \"Longo Prazo\""];
263
271
  };
264
272
  readonly tool: {
265
- readonly name: "qb_portfolio_rename";
266
- readonly title: "Rename portfolio";
273
+ readonly name: "qb_watchlist_rename";
274
+ readonly title: "Rename watchlist";
267
275
  };
268
276
  readonly outputModes: readonly ["json", "human"];
269
277
  }, {
270
- readonly id: "portfolios.add-assets";
278
+ readonly id: "watchlists.add-assets";
271
279
  readonly kind: "mutation";
272
280
  readonly visibility: readonly ["cli", "opencode"];
273
- readonly description: "Add one or more monitored tickers to a saved portfolio.";
281
+ readonly description: "Add one or more monitored tickers to a watchlist.";
274
282
  readonly http: {
275
283
  readonly method: "POST";
276
- readonly path: "/api/desk/tools/portfolio/add_assets";
284
+ readonly path: "/api/desk/tools/watchlist/add_assets";
277
285
  readonly inputMode: "json_body";
278
286
  readonly schemas: {
279
287
  readonly request: "PortfolioAddAssetsRequest";
@@ -281,16 +289,16 @@ export declare const capabilityRegistry: readonly [{
281
289
  };
282
290
  };
283
291
  readonly cli: {
284
- readonly group: "portfolios";
292
+ readonly group: "watchlists";
285
293
  readonly command: "add-assets";
286
- readonly summary: "Add monitored tickers to an existing portfolio.";
294
+ readonly summary: "Add monitored tickers to an existing watchlist.";
287
295
  readonly positional: readonly [{
288
296
  readonly kind: "positional";
289
297
  readonly name: "portfolio_id";
290
298
  readonly type: "integer";
291
299
  readonly required: true;
292
300
  readonly placeholder: "ID";
293
- readonly description: "Saved portfolio identifier.";
301
+ readonly description: "Stable saved object identifier.";
294
302
  }, {
295
303
  readonly kind: "positional";
296
304
  readonly name: "symbols";
@@ -299,24 +307,24 @@ export declare const capabilityRegistry: readonly [{
299
307
  readonly placeholder: "TICKER";
300
308
  readonly multiple: true;
301
309
  readonly collectionFormat: "space_separated";
302
- readonly description: "One or more monitored ticker symbols to add to the portfolio.";
310
+ readonly description: "One or more monitored ticker symbols.";
303
311
  }];
304
312
  readonly options: readonly [];
305
- readonly examples: readonly ["quantbrasil portfolios add-assets 123 PETR4 VALE3"];
313
+ readonly examples: readonly ["quantbrasil watchlists add-assets 123 PETR4 VALE3"];
306
314
  };
307
315
  readonly tool: {
308
- readonly name: "qb_portfolio_add_assets";
309
- readonly title: "Add portfolio assets";
316
+ readonly name: "qb_watchlist_add_assets";
317
+ readonly title: "Add watchlist assets";
310
318
  };
311
319
  readonly outputModes: readonly ["json", "human"];
312
320
  }, {
313
- readonly id: "portfolios.remove-assets";
321
+ readonly id: "watchlists.remove-assets";
314
322
  readonly kind: "mutation";
315
323
  readonly visibility: readonly ["cli", "opencode"];
316
- readonly description: "Remove one or more monitored tickers from a saved portfolio.";
324
+ readonly description: "Remove one or more monitored tickers from a watchlist.";
317
325
  readonly http: {
318
326
  readonly method: "POST";
319
- readonly path: "/api/desk/tools/portfolio/remove_assets";
327
+ readonly path: "/api/desk/tools/watchlist/remove_assets";
320
328
  readonly inputMode: "json_body";
321
329
  readonly schemas: {
322
330
  readonly request: "PortfolioRemoveAssetsRequest";
@@ -324,16 +332,16 @@ export declare const capabilityRegistry: readonly [{
324
332
  };
325
333
  };
326
334
  readonly cli: {
327
- readonly group: "portfolios";
335
+ readonly group: "watchlists";
328
336
  readonly command: "remove-assets";
329
- readonly summary: "Remove monitored tickers from an existing portfolio.";
337
+ readonly summary: "Remove monitored tickers from an existing watchlist.";
330
338
  readonly positional: readonly [{
331
339
  readonly kind: "positional";
332
340
  readonly name: "portfolio_id";
333
341
  readonly type: "integer";
334
342
  readonly required: true;
335
343
  readonly placeholder: "ID";
336
- readonly description: "Saved portfolio identifier.";
344
+ readonly description: "Stable saved object identifier.";
337
345
  }, {
338
346
  readonly kind: "positional";
339
347
  readonly name: "symbols";
@@ -342,87 +350,324 @@ export declare const capabilityRegistry: readonly [{
342
350
  readonly placeholder: "TICKER";
343
351
  readonly multiple: true;
344
352
  readonly collectionFormat: "space_separated";
345
- readonly description: "One or more monitored ticker symbols to remove from the portfolio.";
353
+ readonly description: "One or more monitored ticker symbols.";
346
354
  }];
347
355
  readonly options: readonly [];
348
- readonly examples: readonly ["quantbrasil portfolios remove-assets 123 PETR4"];
356
+ readonly examples: readonly ["quantbrasil watchlists remove-assets 123 PETR4"];
357
+ };
358
+ readonly tool: {
359
+ readonly name: "qb_watchlist_remove_assets";
360
+ readonly title: "Remove watchlist assets";
361
+ };
362
+ readonly outputModes: readonly ["json", "human"];
363
+ }, {
364
+ readonly id: "holdings.list";
365
+ readonly kind: "read";
366
+ readonly visibility: readonly ["cli", "opencode"];
367
+ readonly description: "List holdings owned by the authenticated user.";
368
+ readonly http: {
369
+ readonly method: "GET";
370
+ readonly path: "/api/desk/tools/holding/list";
371
+ readonly inputMode: "none";
372
+ readonly schemas: {
373
+ readonly request: null;
374
+ readonly response: "PortfolioListResponse";
375
+ };
376
+ };
377
+ readonly cli: {
378
+ readonly group: "holdings";
379
+ readonly command: "list";
380
+ readonly summary: "List holdings for investable metrics.";
381
+ readonly positional: readonly [];
382
+ readonly options: readonly [];
383
+ readonly examples: readonly ["quantbrasil holdings list"];
349
384
  };
350
385
  readonly tool: {
351
- readonly name: "qb_portfolio_remove_assets";
352
- readonly title: "Remove portfolio assets";
386
+ readonly name: "qb_holding_list";
387
+ readonly title: "List holdings";
353
388
  };
354
389
  readonly outputModes: readonly ["json", "human"];
355
390
  }, {
356
- readonly id: "analytics.historical-return";
391
+ readonly id: "holdings.get";
357
392
  readonly kind: "read";
358
393
  readonly visibility: readonly ["cli", "opencode"];
359
- readonly description: "Calculate historical return for a saved portfolio or an ad-hoc weighted basket.";
394
+ readonly description: "Return one holding by id, scoped to the acting user.";
360
395
  readonly http: {
361
396
  readonly method: "POST";
362
- readonly path: "/api/desk/tools/portfolio/historical_return";
397
+ readonly path: "/api/desk/tools/holding/get";
363
398
  readonly inputMode: "json_body";
364
399
  readonly schemas: {
365
- readonly request: "PortfolioHistoricalReturnRequest";
366
- readonly response: "HistoricalReturnResponse";
400
+ readonly request: "PortfolioGetRequest";
401
+ readonly response: "PortfolioGetResponse";
367
402
  };
368
403
  };
369
404
  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.";
373
- readonly positional: readonly [];
374
- readonly options: readonly [{
375
- readonly kind: "option";
376
- readonly flag: "--portfolio";
405
+ readonly group: "holdings";
406
+ readonly command: "get";
407
+ readonly summary: "Get a holding by id.";
408
+ readonly positional: readonly [{
409
+ readonly kind: "positional";
377
410
  readonly name: "portfolio_id";
378
411
  readonly type: "integer";
379
- readonly required: false;
412
+ readonly required: true;
380
413
  readonly placeholder: "ID";
381
- readonly exclusiveGroup: "source";
382
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
414
+ readonly description: "Stable saved object identifier.";
415
+ }];
416
+ readonly options: readonly [];
417
+ readonly examples: readonly ["quantbrasil holdings get 123"];
418
+ };
419
+ readonly tool: {
420
+ readonly name: "qb_holding_get";
421
+ readonly title: "Get holding";
422
+ };
423
+ readonly outputModes: readonly ["json", "human"];
424
+ }, {
425
+ readonly id: "holdings.create";
426
+ readonly kind: "mutation";
427
+ readonly visibility: readonly ["cli", "opencode"];
428
+ readonly description: "Create a new holding for the authenticated user.";
429
+ readonly http: {
430
+ readonly method: "POST";
431
+ readonly path: "/api/desk/tools/holding/create";
432
+ readonly inputMode: "json_body";
433
+ readonly schemas: {
434
+ readonly request: "DeskHoldingCreateRequest";
435
+ readonly response: "PortfolioCreateResponse";
436
+ };
437
+ };
438
+ readonly cli: {
439
+ readonly group: "holdings";
440
+ readonly command: "create";
441
+ readonly summary: "Create a new holding.";
442
+ readonly positional: readonly [{
443
+ readonly kind: "positional";
444
+ readonly name: "name";
445
+ readonly type: "string";
446
+ readonly required: true;
447
+ readonly placeholder: "NOME";
448
+ readonly description: "Name to save.";
449
+ }];
450
+ readonly options: readonly [{
451
+ readonly kind: "option";
452
+ readonly flag: "--mode";
453
+ readonly name: "default_allocation_input";
454
+ readonly type: "enum";
455
+ readonly required: false;
456
+ readonly placeholder: "target|position";
457
+ readonly defaultValue: "target";
458
+ readonly enumValues: readonly ["target", "position"];
459
+ readonly description: "How the holding is controlled initially: target weights or positions.";
383
460
  }, {
384
461
  readonly kind: "option";
385
- readonly flag: "--asset";
386
- readonly name: "assets";
462
+ readonly flag: "--target";
463
+ readonly name: "targets";
387
464
  readonly type: "string_array";
388
465
  readonly required: false;
389
- readonly placeholder: "TICKER[:PESO]";
466
+ readonly placeholder: "TICKER:PESO";
390
467
  readonly multiple: true;
391
468
  readonly collectionFormat: "repeatable";
392
- readonly exclusiveGroup: "source";
393
- readonly description: "Repeatable ad-hoc asset input using TICKER[:WEIGHT_PCT], for example PRIO3:50.";
469
+ readonly description: "Initial target weight in TICKER:WEIGHT_PCT form.";
470
+ }];
471
+ 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"];
472
+ };
473
+ readonly tool: {
474
+ readonly name: "qb_holding_create";
475
+ readonly title: "Create holding";
476
+ };
477
+ readonly outputModes: readonly ["json", "human"];
478
+ }, {
479
+ readonly id: "holdings.rename";
480
+ readonly kind: "mutation";
481
+ readonly visibility: readonly ["cli", "opencode"];
482
+ readonly description: "Rename a holding owned by the authenticated user.";
483
+ readonly http: {
484
+ readonly method: "POST";
485
+ readonly path: "/api/desk/tools/holding/rename";
486
+ readonly inputMode: "json_body";
487
+ readonly schemas: {
488
+ readonly request: "PortfolioRenameRequest";
489
+ readonly response: "PortfolioMutationResponse";
490
+ };
491
+ };
492
+ readonly cli: {
493
+ readonly group: "holdings";
494
+ readonly command: "rename";
495
+ readonly summary: "Rename an existing holding.";
496
+ readonly positional: readonly [{
497
+ readonly kind: "positional";
498
+ readonly name: "portfolio_id";
499
+ readonly type: "integer";
500
+ readonly required: true;
501
+ readonly placeholder: "ID";
502
+ readonly description: "Stable saved object identifier.";
394
503
  }, {
504
+ readonly kind: "positional";
505
+ readonly name: "name";
506
+ readonly type: "string";
507
+ readonly required: true;
508
+ readonly placeholder: "NOME";
509
+ readonly description: "Name to save.";
510
+ }];
511
+ readonly options: readonly [];
512
+ readonly examples: readonly ["quantbrasil holdings rename 123 \"Longo Prazo\""];
513
+ };
514
+ readonly tool: {
515
+ readonly name: "qb_holding_rename";
516
+ readonly title: "Rename holding";
517
+ };
518
+ readonly outputModes: readonly ["json", "human"];
519
+ }, {
520
+ readonly id: "holdings.set-targets";
521
+ readonly kind: "mutation";
522
+ readonly visibility: readonly ["cli", "opencode"];
523
+ readonly description: "Set target weights for a holding owned by the authenticated user.";
524
+ readonly http: {
525
+ readonly method: "POST";
526
+ readonly path: "/api/desk/tools/holding/set_targets";
527
+ readonly inputMode: "json_body";
528
+ readonly schemas: {
529
+ readonly request: "HoldingSetTargetsRequest";
530
+ readonly response: "PortfolioMutationResponse";
531
+ };
532
+ };
533
+ readonly cli: {
534
+ readonly group: "holdings";
535
+ readonly command: "set-targets";
536
+ readonly summary: "Set target weights for a holding.";
537
+ readonly positional: readonly [{
538
+ readonly kind: "positional";
539
+ readonly name: "portfolio_id";
540
+ readonly type: "integer";
541
+ readonly required: true;
542
+ readonly placeholder: "ID";
543
+ readonly description: "Stable saved object identifier.";
544
+ }, {
545
+ readonly kind: "positional";
546
+ readonly name: "targets";
547
+ readonly type: "string_array";
548
+ readonly required: true;
549
+ readonly placeholder: "TICKER:PESO";
550
+ readonly multiple: true;
551
+ readonly collectionFormat: "space_separated";
552
+ readonly description: "One or more target weights in TICKER:WEIGHT_PCT form.";
553
+ }];
554
+ readonly options: readonly [];
555
+ readonly examples: readonly ["quantbrasil holdings set-targets 123 PRIO3:50 VALE3:50"];
556
+ };
557
+ readonly tool: {
558
+ readonly name: "qb_holding_set_targets";
559
+ readonly title: "Set holding target weights";
560
+ };
561
+ readonly outputModes: readonly ["json", "human"];
562
+ }, {
563
+ readonly id: "holdings.set-positions";
564
+ readonly kind: "mutation";
565
+ readonly visibility: readonly ["cli", "opencode"];
566
+ readonly description: "Set position quantities for a holding owned by the authenticated user.";
567
+ readonly http: {
568
+ readonly method: "POST";
569
+ readonly path: "/api/desk/tools/holding/set_positions";
570
+ readonly inputMode: "json_body";
571
+ readonly schemas: {
572
+ readonly request: "HoldingSetPositionsRequest";
573
+ readonly response: "PortfolioMutationResponse";
574
+ };
575
+ };
576
+ readonly cli: {
577
+ readonly group: "holdings";
578
+ readonly command: "set-positions";
579
+ readonly summary: "Set position quantities for a holding.";
580
+ readonly positional: readonly [{
581
+ readonly kind: "positional";
582
+ readonly name: "portfolio_id";
583
+ readonly type: "integer";
584
+ readonly required: true;
585
+ readonly placeholder: "ID";
586
+ readonly description: "Stable saved object identifier.";
587
+ }, {
588
+ readonly kind: "positional";
589
+ readonly name: "positions";
590
+ readonly type: "string_array";
591
+ readonly required: true;
592
+ readonly placeholder: "TICKER:QUANTIDADE";
593
+ readonly multiple: true;
594
+ readonly collectionFormat: "space_separated";
595
+ readonly description: "One or more position quantities in TICKER:QUANTITY form.";
596
+ }];
597
+ readonly options: readonly [];
598
+ readonly examples: readonly ["quantbrasil holdings set-positions 123 PRIO3:1600 BTC-USD:0.25"];
599
+ };
600
+ readonly tool: {
601
+ readonly name: "qb_holding_set_positions";
602
+ readonly title: "Set holding position quantities";
603
+ };
604
+ readonly outputModes: readonly ["json", "human"];
605
+ }, {
606
+ readonly id: "holdings.historical-return";
607
+ readonly kind: "read";
608
+ readonly visibility: readonly ["cli", "opencode"];
609
+ readonly description: "Calculate historical return for a holding.";
610
+ readonly http: {
611
+ readonly method: "POST";
612
+ readonly path: "/api/desk/tools/holding/historical_return";
613
+ readonly inputMode: "json_body";
614
+ readonly schemas: {
615
+ readonly request: "PortfolioHistoricalReturnRequest";
616
+ readonly response: "HistoricalReturnResponse";
617
+ };
618
+ };
619
+ readonly cli: {
620
+ readonly group: "holdings";
621
+ readonly command: "historical-return";
622
+ readonly summary: "Calculate historical return for a saved holding.";
623
+ readonly positional: readonly [{
624
+ readonly kind: "positional";
625
+ readonly name: "portfolio_id";
626
+ readonly type: "integer";
627
+ readonly required: true;
628
+ readonly placeholder: "ID";
629
+ readonly description: "Stable saved object identifier.";
630
+ }];
631
+ readonly options: readonly [{
395
632
  readonly kind: "option";
396
633
  readonly flag: "--from";
397
634
  readonly name: "start_date";
398
635
  readonly type: "string";
399
- readonly required: true;
636
+ readonly required: false;
400
637
  readonly placeholder: "AAAA-MM-DD";
401
- readonly description: "Inclusive start date in ISO format.";
638
+ readonly description: "Inclusive start date in ISO format. Use with --to, or use --period.";
402
639
  }, {
403
640
  readonly kind: "option";
404
641
  readonly flag: "--to";
405
642
  readonly name: "end_date";
406
643
  readonly type: "string";
407
- readonly required: true;
644
+ readonly required: false;
408
645
  readonly placeholder: "AAAA-MM-DD";
409
- readonly description: "Inclusive end date in ISO format.";
646
+ readonly description: "Inclusive end date in ISO format. Use with --from, or use --period.";
647
+ }, {
648
+ readonly kind: "option";
649
+ readonly flag: "--period";
650
+ readonly name: "period";
651
+ readonly type: "string";
652
+ readonly required: false;
653
+ readonly placeholder: "PERIODO";
654
+ readonly description: "Lookback period such as 1y, 3y, 5y, or 6m. Mutually exclusive with --from/--to.";
410
655
  }];
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"];
656
+ readonly examples: readonly ["quantbrasil holdings historical-return 123 --from 2024-01-01 --to 2025-01-01", "quantbrasil holdings historical-return 123 --period 1y"];
412
657
  };
413
658
  readonly tool: {
414
- readonly name: "qb_historical_return";
415
- readonly title: "Calculate historical return";
659
+ readonly name: "qb_holding_historical_return";
660
+ readonly title: "Calculate holding historical return";
416
661
  };
417
662
  readonly outputModes: readonly ["json", "human"];
418
663
  }, {
419
- readonly id: "analytics.beta";
664
+ readonly id: "holdings.beta";
420
665
  readonly kind: "read";
421
666
  readonly visibility: readonly ["cli", "opencode"];
422
- readonly description: "Calculate portfolio beta against IBOV for a saved portfolio or an ad-hoc basket.";
667
+ readonly description: "Calculate holding beta against IBOV.";
423
668
  readonly http: {
424
669
  readonly method: "POST";
425
- readonly path: "/api/desk/tools/portfolio/beta";
670
+ readonly path: "/api/desk/tools/holding/beta";
426
671
  readonly inputMode: "json_body";
427
672
  readonly schemas: {
428
673
  readonly request: "PortfolioBetaRequest";
@@ -430,31 +675,18 @@ export declare const capabilityRegistry: readonly [{
430
675
  };
431
676
  };
432
677
  readonly cli: {
433
- readonly group: "analytics";
678
+ readonly group: "holdings";
434
679
  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";
680
+ readonly summary: "Calculate holding beta against IBOV.";
681
+ readonly positional: readonly [{
682
+ readonly kind: "positional";
440
683
  readonly name: "portfolio_id";
441
684
  readonly type: "integer";
442
- readonly required: false;
685
+ readonly required: true;
443
686
  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
- }, {
687
+ readonly description: "Stable saved object identifier.";
688
+ }];
689
+ readonly options: readonly [{
458
690
  readonly kind: "option";
459
691
  readonly flag: "--years";
460
692
  readonly name: "years";
@@ -465,21 +697,21 @@ export declare const capabilityRegistry: readonly [{
465
697
  readonly enumValues: readonly ["1", "3", "5"];
466
698
  readonly description: "Historical lookback window in years. Accepted values: 1, 3, or 5.";
467
699
  }];
468
- readonly examples: readonly ["quantbrasil analytics beta --portfolio 123 --years 3", "quantbrasil analytics beta --asset PRIO3:120 --asset WINFUT:-20 --years 1"];
700
+ readonly examples: readonly ["quantbrasil holdings beta 123 --years 3"];
469
701
  };
470
702
  readonly tool: {
471
- readonly name: "qb_portfolio_beta";
472
- readonly title: "Calculate portfolio beta";
703
+ readonly name: "qb_holding_beta";
704
+ readonly title: "Calculate holding beta";
473
705
  };
474
706
  readonly outputModes: readonly ["json", "human"];
475
707
  }, {
476
- readonly id: "analytics.var";
708
+ readonly id: "holdings.var";
477
709
  readonly kind: "read";
478
710
  readonly visibility: readonly ["cli", "opencode"];
479
- readonly description: "Calculate one-day Value-at-Risk for a saved portfolio or an ad-hoc basket.";
711
+ readonly description: "Calculate one-day Value-at-Risk for a holding.";
480
712
  readonly http: {
481
713
  readonly method: "POST";
482
- readonly path: "/api/desk/tools/portfolio/var";
714
+ readonly path: "/api/desk/tools/holding/var";
483
715
  readonly inputMode: "json_body";
484
716
  readonly schemas: {
485
717
  readonly request: "PortfolioVaRRequest";
@@ -487,31 +719,18 @@ export declare const capabilityRegistry: readonly [{
487
719
  };
488
720
  };
489
721
  readonly cli: {
490
- readonly group: "analytics";
722
+ readonly group: "holdings";
491
723
  readonly command: "var";
492
- readonly summary: "Calculate one-day Value-at-Risk for a portfolio or basket.";
493
- readonly positional: readonly [];
494
- readonly options: readonly [{
495
- readonly kind: "option";
496
- readonly flag: "--portfolio";
724
+ readonly summary: "Calculate one-day Value-at-Risk for a holding.";
725
+ readonly positional: readonly [{
726
+ readonly kind: "positional";
497
727
  readonly name: "portfolio_id";
498
728
  readonly type: "integer";
499
- readonly required: false;
729
+ readonly required: true;
500
730
  readonly placeholder: "ID";
501
- readonly exclusiveGroup: "source";
502
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
503
- }, {
504
- readonly kind: "option";
505
- readonly flag: "--asset";
506
- readonly name: "assets";
507
- readonly type: "string_array";
508
- readonly required: false;
509
- readonly placeholder: "TICKER[:PESO]";
510
- readonly multiple: true;
511
- 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
- }, {
731
+ readonly description: "Stable saved object identifier.";
732
+ }];
733
+ readonly options: readonly [{
515
734
  readonly kind: "option";
516
735
  readonly flag: "--years";
517
736
  readonly name: "years";
@@ -530,11 +749,11 @@ export declare const capabilityRegistry: readonly [{
530
749
  readonly defaultValue: 95;
531
750
  readonly description: "Confidence level in percent, for example 95 or 99.";
532
751
  }];
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"];
752
+ readonly examples: readonly ["quantbrasil holdings var 123 --years 1 --confidence 95"];
534
753
  };
535
754
  readonly tool: {
536
- readonly name: "qb_portfolio_var";
537
- readonly title: "Calculate portfolio VaR";
755
+ readonly name: "qb_holding_var";
756
+ readonly title: "Calculate holding VaR";
538
757
  };
539
758
  readonly outputModes: readonly ["json", "human"];
540
759
  }];
@@ -568,8 +787,16 @@ export declare function getCapabilityById(id: CapabilityId): {
568
787
  readonly placeholder: "TIPO";
569
788
  readonly enumValues: readonly ["B3", "ETF", "ETF-US", "BDR", "Futuro", "Crypto", "S&P500"];
570
789
  readonly description: "Filter by the exact monitored asset type.";
790
+ }, {
791
+ readonly kind: "option";
792
+ readonly flag: "--search";
793
+ readonly name: "search";
794
+ readonly type: "string";
795
+ readonly required: false;
796
+ readonly placeholder: "TEXTO";
797
+ readonly description: "Filter monitored tickers by case-insensitive text.";
571
798
  }];
572
- readonly examples: readonly ["quantbrasil market assets", "quantbrasil market assets --type B3"];
799
+ readonly examples: readonly ["quantbrasil market assets", "quantbrasil market assets --type B3", "quantbrasil market assets --search BTC"];
573
800
  };
574
801
  readonly tool: {
575
802
  readonly name: "qb_market_assets";
@@ -673,13 +900,13 @@ export declare function getCapabilityById(id: CapabilityId): {
673
900
  };
674
901
  readonly outputModes: readonly ["json", "human"];
675
902
  } | {
676
- readonly id: "portfolios.list";
903
+ readonly id: "watchlists.list";
677
904
  readonly kind: "read";
678
905
  readonly visibility: readonly ["cli", "opencode"];
679
- readonly description: "List every portfolio owned by the authenticated user.";
906
+ readonly description: "List watchlists owned by the authenticated user.";
680
907
  readonly http: {
681
908
  readonly method: "GET";
682
- readonly path: "/api/desk/tools/portfolio/list";
909
+ readonly path: "/api/desk/tools/watchlist/list";
683
910
  readonly inputMode: "none";
684
911
  readonly schemas: {
685
912
  readonly request: null;
@@ -687,26 +914,26 @@ export declare function getCapabilityById(id: CapabilityId): {
687
914
  };
688
915
  };
689
916
  readonly cli: {
690
- readonly group: "portfolios";
917
+ readonly group: "watchlists";
691
918
  readonly command: "list";
692
- readonly summary: "List the user portfolios available in QuantBrasil.";
919
+ readonly summary: "List watchlists for tracking ideas and filters.";
693
920
  readonly positional: readonly [];
694
921
  readonly options: readonly [];
695
- readonly examples: readonly ["quantbrasil portfolios list"];
922
+ readonly examples: readonly ["quantbrasil watchlists list"];
696
923
  };
697
924
  readonly tool: {
698
- readonly name: "qb_portfolio_list";
699
- readonly title: "List portfolios";
925
+ readonly name: "qb_watchlist_list";
926
+ readonly title: "List watchlists";
700
927
  };
701
928
  readonly outputModes: readonly ["json", "human"];
702
929
  } | {
703
- readonly id: "portfolios.get";
930
+ readonly id: "watchlists.get";
704
931
  readonly kind: "read";
705
932
  readonly visibility: readonly ["cli", "opencode"];
706
- readonly description: "Return one saved portfolio by id, scoped to the acting user.";
933
+ readonly description: "Return one watchlist by id, scoped to the acting user.";
707
934
  readonly http: {
708
935
  readonly method: "POST";
709
- readonly path: "/api/desk/tools/portfolio/get";
936
+ readonly path: "/api/desk/tools/watchlist/get";
710
937
  readonly inputMode: "json_body";
711
938
  readonly schemas: {
712
939
  readonly request: "PortfolioGetRequest";
@@ -714,33 +941,33 @@ export declare function getCapabilityById(id: CapabilityId): {
714
941
  };
715
942
  };
716
943
  readonly cli: {
717
- readonly group: "portfolios";
944
+ readonly group: "watchlists";
718
945
  readonly command: "get";
719
- readonly summary: "Get a saved portfolio by id.";
946
+ readonly summary: "Get a watchlist by id.";
720
947
  readonly positional: readonly [{
721
948
  readonly kind: "positional";
722
949
  readonly name: "portfolio_id";
723
950
  readonly type: "integer";
724
951
  readonly required: true;
725
952
  readonly placeholder: "ID";
726
- readonly description: "Saved portfolio identifier.";
953
+ readonly description: "Stable saved object identifier.";
727
954
  }];
728
955
  readonly options: readonly [];
729
- readonly examples: readonly ["quantbrasil portfolios get 123"];
956
+ readonly examples: readonly ["quantbrasil watchlists get 123"];
730
957
  };
731
958
  readonly tool: {
732
- readonly name: "qb_portfolio_get";
733
- readonly title: "Get portfolio";
959
+ readonly name: "qb_watchlist_get";
960
+ readonly title: "Get watchlist";
734
961
  };
735
962
  readonly outputModes: readonly ["json", "human"];
736
963
  } | {
737
- readonly id: "portfolios.create";
964
+ readonly id: "watchlists.create";
738
965
  readonly kind: "mutation";
739
966
  readonly visibility: readonly ["cli", "opencode"];
740
- readonly description: "Create a new saved portfolio for the authenticated user.";
967
+ readonly description: "Create a new watchlist for the authenticated user.";
741
968
  readonly http: {
742
969
  readonly method: "POST";
743
- readonly path: "/api/desk/tools/portfolio/create";
970
+ readonly path: "/api/desk/tools/watchlist/create";
744
971
  readonly inputMode: "json_body";
745
972
  readonly schemas: {
746
973
  readonly request: "PortfolioCreateRequest";
@@ -748,33 +975,33 @@ export declare function getCapabilityById(id: CapabilityId): {
748
975
  };
749
976
  };
750
977
  readonly cli: {
751
- readonly group: "portfolios";
978
+ readonly group: "watchlists";
752
979
  readonly command: "create";
753
- readonly summary: "Create a new portfolio.";
980
+ readonly summary: "Create a new watchlist.";
754
981
  readonly positional: readonly [{
755
982
  readonly kind: "positional";
756
983
  readonly name: "name";
757
984
  readonly type: "string";
758
985
  readonly required: true;
759
986
  readonly placeholder: "NOME";
760
- readonly description: "Portfolio name to create.";
987
+ readonly description: "Name to save.";
761
988
  }];
762
989
  readonly options: readonly [];
763
- readonly examples: readonly ["quantbrasil portfolios create \"Dividendos\""];
990
+ readonly examples: readonly ["quantbrasil watchlists create \"Dividendos\""];
764
991
  };
765
992
  readonly tool: {
766
- readonly name: "qb_portfolio_create";
767
- readonly title: "Create portfolio";
993
+ readonly name: "qb_watchlist_create";
994
+ readonly title: "Create watchlist";
768
995
  };
769
996
  readonly outputModes: readonly ["json", "human"];
770
997
  } | {
771
- readonly id: "portfolios.rename";
998
+ readonly id: "watchlists.rename";
772
999
  readonly kind: "mutation";
773
1000
  readonly visibility: readonly ["cli", "opencode"];
774
- readonly description: "Rename a saved portfolio owned by the authenticated user.";
1001
+ readonly description: "Rename a watchlist owned by the authenticated user.";
775
1002
  readonly http: {
776
1003
  readonly method: "POST";
777
- readonly path: "/api/desk/tools/portfolio/rename";
1004
+ readonly path: "/api/desk/tools/watchlist/rename";
778
1005
  readonly inputMode: "json_body";
779
1006
  readonly schemas: {
780
1007
  readonly request: "PortfolioRenameRequest";
@@ -782,40 +1009,40 @@ export declare function getCapabilityById(id: CapabilityId): {
782
1009
  };
783
1010
  };
784
1011
  readonly cli: {
785
- readonly group: "portfolios";
1012
+ readonly group: "watchlists";
786
1013
  readonly command: "rename";
787
- readonly summary: "Rename an existing portfolio.";
1014
+ readonly summary: "Rename an existing watchlist.";
788
1015
  readonly positional: readonly [{
789
1016
  readonly kind: "positional";
790
1017
  readonly name: "portfolio_id";
791
1018
  readonly type: "integer";
792
1019
  readonly required: true;
793
1020
  readonly placeholder: "ID";
794
- readonly description: "Saved portfolio identifier.";
1021
+ readonly description: "Stable saved object identifier.";
795
1022
  }, {
796
1023
  readonly kind: "positional";
797
1024
  readonly name: "name";
798
1025
  readonly type: "string";
799
1026
  readonly required: true;
800
1027
  readonly placeholder: "NOME";
801
- readonly description: "New portfolio name.";
1028
+ readonly description: "Name to save.";
802
1029
  }];
803
1030
  readonly options: readonly [];
804
- readonly examples: readonly ["quantbrasil portfolios rename 123 \"Longo Prazo\""];
1031
+ readonly examples: readonly ["quantbrasil watchlists rename 123 \"Longo Prazo\""];
805
1032
  };
806
1033
  readonly tool: {
807
- readonly name: "qb_portfolio_rename";
808
- readonly title: "Rename portfolio";
1034
+ readonly name: "qb_watchlist_rename";
1035
+ readonly title: "Rename watchlist";
809
1036
  };
810
1037
  readonly outputModes: readonly ["json", "human"];
811
1038
  } | {
812
- readonly id: "portfolios.add-assets";
1039
+ readonly id: "watchlists.add-assets";
813
1040
  readonly kind: "mutation";
814
1041
  readonly visibility: readonly ["cli", "opencode"];
815
- readonly description: "Add one or more monitored tickers to a saved portfolio.";
1042
+ readonly description: "Add one or more monitored tickers to a watchlist.";
816
1043
  readonly http: {
817
1044
  readonly method: "POST";
818
- readonly path: "/api/desk/tools/portfolio/add_assets";
1045
+ readonly path: "/api/desk/tools/watchlist/add_assets";
819
1046
  readonly inputMode: "json_body";
820
1047
  readonly schemas: {
821
1048
  readonly request: "PortfolioAddAssetsRequest";
@@ -823,16 +1050,16 @@ export declare function getCapabilityById(id: CapabilityId): {
823
1050
  };
824
1051
  };
825
1052
  readonly cli: {
826
- readonly group: "portfolios";
1053
+ readonly group: "watchlists";
827
1054
  readonly command: "add-assets";
828
- readonly summary: "Add monitored tickers to an existing portfolio.";
1055
+ readonly summary: "Add monitored tickers to an existing watchlist.";
829
1056
  readonly positional: readonly [{
830
1057
  readonly kind: "positional";
831
1058
  readonly name: "portfolio_id";
832
1059
  readonly type: "integer";
833
1060
  readonly required: true;
834
1061
  readonly placeholder: "ID";
835
- readonly description: "Saved portfolio identifier.";
1062
+ readonly description: "Stable saved object identifier.";
836
1063
  }, {
837
1064
  readonly kind: "positional";
838
1065
  readonly name: "symbols";
@@ -841,24 +1068,24 @@ export declare function getCapabilityById(id: CapabilityId): {
841
1068
  readonly placeholder: "TICKER";
842
1069
  readonly multiple: true;
843
1070
  readonly collectionFormat: "space_separated";
844
- readonly description: "One or more monitored ticker symbols to add to the portfolio.";
1071
+ readonly description: "One or more monitored ticker symbols.";
845
1072
  }];
846
1073
  readonly options: readonly [];
847
- readonly examples: readonly ["quantbrasil portfolios add-assets 123 PETR4 VALE3"];
1074
+ readonly examples: readonly ["quantbrasil watchlists add-assets 123 PETR4 VALE3"];
848
1075
  };
849
1076
  readonly tool: {
850
- readonly name: "qb_portfolio_add_assets";
851
- readonly title: "Add portfolio assets";
1077
+ readonly name: "qb_watchlist_add_assets";
1078
+ readonly title: "Add watchlist assets";
852
1079
  };
853
1080
  readonly outputModes: readonly ["json", "human"];
854
1081
  } | {
855
- readonly id: "portfolios.remove-assets";
1082
+ readonly id: "watchlists.remove-assets";
856
1083
  readonly kind: "mutation";
857
1084
  readonly visibility: readonly ["cli", "opencode"];
858
- readonly description: "Remove one or more monitored tickers from a saved portfolio.";
1085
+ readonly description: "Remove one or more monitored tickers from a watchlist.";
859
1086
  readonly http: {
860
1087
  readonly method: "POST";
861
- readonly path: "/api/desk/tools/portfolio/remove_assets";
1088
+ readonly path: "/api/desk/tools/watchlist/remove_assets";
862
1089
  readonly inputMode: "json_body";
863
1090
  readonly schemas: {
864
1091
  readonly request: "PortfolioRemoveAssetsRequest";
@@ -866,16 +1093,16 @@ export declare function getCapabilityById(id: CapabilityId): {
866
1093
  };
867
1094
  };
868
1095
  readonly cli: {
869
- readonly group: "portfolios";
1096
+ readonly group: "watchlists";
870
1097
  readonly command: "remove-assets";
871
- readonly summary: "Remove monitored tickers from an existing portfolio.";
1098
+ readonly summary: "Remove monitored tickers from an existing watchlist.";
872
1099
  readonly positional: readonly [{
873
1100
  readonly kind: "positional";
874
1101
  readonly name: "portfolio_id";
875
1102
  readonly type: "integer";
876
1103
  readonly required: true;
877
1104
  readonly placeholder: "ID";
878
- readonly description: "Saved portfolio identifier.";
1105
+ readonly description: "Stable saved object identifier.";
879
1106
  }, {
880
1107
  readonly kind: "positional";
881
1108
  readonly name: "symbols";
@@ -884,87 +1111,324 @@ export declare function getCapabilityById(id: CapabilityId): {
884
1111
  readonly placeholder: "TICKER";
885
1112
  readonly multiple: true;
886
1113
  readonly collectionFormat: "space_separated";
887
- readonly description: "One or more monitored ticker symbols to remove from the portfolio.";
1114
+ readonly description: "One or more monitored ticker symbols.";
888
1115
  }];
889
1116
  readonly options: readonly [];
890
- readonly examples: readonly ["quantbrasil portfolios remove-assets 123 PETR4"];
1117
+ readonly examples: readonly ["quantbrasil watchlists remove-assets 123 PETR4"];
1118
+ };
1119
+ readonly tool: {
1120
+ readonly name: "qb_watchlist_remove_assets";
1121
+ readonly title: "Remove watchlist assets";
1122
+ };
1123
+ readonly outputModes: readonly ["json", "human"];
1124
+ } | {
1125
+ readonly id: "holdings.list";
1126
+ readonly kind: "read";
1127
+ readonly visibility: readonly ["cli", "opencode"];
1128
+ readonly description: "List holdings owned by the authenticated user.";
1129
+ readonly http: {
1130
+ readonly method: "GET";
1131
+ readonly path: "/api/desk/tools/holding/list";
1132
+ readonly inputMode: "none";
1133
+ readonly schemas: {
1134
+ readonly request: null;
1135
+ readonly response: "PortfolioListResponse";
1136
+ };
1137
+ };
1138
+ readonly cli: {
1139
+ readonly group: "holdings";
1140
+ readonly command: "list";
1141
+ readonly summary: "List holdings for investable metrics.";
1142
+ readonly positional: readonly [];
1143
+ readonly options: readonly [];
1144
+ readonly examples: readonly ["quantbrasil holdings list"];
891
1145
  };
892
1146
  readonly tool: {
893
- readonly name: "qb_portfolio_remove_assets";
894
- readonly title: "Remove portfolio assets";
1147
+ readonly name: "qb_holding_list";
1148
+ readonly title: "List holdings";
895
1149
  };
896
1150
  readonly outputModes: readonly ["json", "human"];
897
1151
  } | {
898
- readonly id: "analytics.historical-return";
1152
+ readonly id: "holdings.get";
899
1153
  readonly kind: "read";
900
1154
  readonly visibility: readonly ["cli", "opencode"];
901
- readonly description: "Calculate historical return for a saved portfolio or an ad-hoc weighted basket.";
1155
+ readonly description: "Return one holding by id, scoped to the acting user.";
902
1156
  readonly http: {
903
1157
  readonly method: "POST";
904
- readonly path: "/api/desk/tools/portfolio/historical_return";
1158
+ readonly path: "/api/desk/tools/holding/get";
905
1159
  readonly inputMode: "json_body";
906
1160
  readonly schemas: {
907
- readonly request: "PortfolioHistoricalReturnRequest";
908
- readonly response: "HistoricalReturnResponse";
1161
+ readonly request: "PortfolioGetRequest";
1162
+ readonly response: "PortfolioGetResponse";
909
1163
  };
910
1164
  };
911
1165
  readonly cli: {
912
- readonly group: "analytics";
913
- 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";
1166
+ readonly group: "holdings";
1167
+ readonly command: "get";
1168
+ readonly summary: "Get a holding by id.";
1169
+ readonly positional: readonly [{
1170
+ readonly kind: "positional";
919
1171
  readonly name: "portfolio_id";
920
1172
  readonly type: "integer";
921
- readonly required: false;
1173
+ readonly required: true;
922
1174
  readonly placeholder: "ID";
923
- readonly exclusiveGroup: "source";
924
- readonly description: "Saved portfolio id. Use exactly one source: --portfolio or repeated --asset.";
1175
+ readonly description: "Stable saved object identifier.";
1176
+ }];
1177
+ readonly options: readonly [];
1178
+ readonly examples: readonly ["quantbrasil holdings get 123"];
1179
+ };
1180
+ readonly tool: {
1181
+ readonly name: "qb_holding_get";
1182
+ readonly title: "Get holding";
1183
+ };
1184
+ readonly outputModes: readonly ["json", "human"];
1185
+ } | {
1186
+ readonly id: "holdings.create";
1187
+ readonly kind: "mutation";
1188
+ readonly visibility: readonly ["cli", "opencode"];
1189
+ readonly description: "Create a new holding for the authenticated user.";
1190
+ readonly http: {
1191
+ readonly method: "POST";
1192
+ readonly path: "/api/desk/tools/holding/create";
1193
+ readonly inputMode: "json_body";
1194
+ readonly schemas: {
1195
+ readonly request: "DeskHoldingCreateRequest";
1196
+ readonly response: "PortfolioCreateResponse";
1197
+ };
1198
+ };
1199
+ readonly cli: {
1200
+ readonly group: "holdings";
1201
+ readonly command: "create";
1202
+ readonly summary: "Create a new holding.";
1203
+ readonly positional: readonly [{
1204
+ readonly kind: "positional";
1205
+ readonly name: "name";
1206
+ readonly type: "string";
1207
+ readonly required: true;
1208
+ readonly placeholder: "NOME";
1209
+ readonly description: "Name to save.";
1210
+ }];
1211
+ readonly options: readonly [{
1212
+ readonly kind: "option";
1213
+ readonly flag: "--mode";
1214
+ readonly name: "default_allocation_input";
1215
+ readonly type: "enum";
1216
+ readonly required: false;
1217
+ readonly placeholder: "target|position";
1218
+ readonly defaultValue: "target";
1219
+ readonly enumValues: readonly ["target", "position"];
1220
+ readonly description: "How the holding is controlled initially: target weights or positions.";
925
1221
  }, {
926
1222
  readonly kind: "option";
927
- readonly flag: "--asset";
928
- readonly name: "assets";
1223
+ readonly flag: "--target";
1224
+ readonly name: "targets";
929
1225
  readonly type: "string_array";
930
1226
  readonly required: false;
931
- readonly placeholder: "TICKER[:PESO]";
1227
+ readonly placeholder: "TICKER:PESO";
932
1228
  readonly multiple: true;
933
1229
  readonly collectionFormat: "repeatable";
934
- readonly exclusiveGroup: "source";
935
- readonly description: "Repeatable ad-hoc asset input using TICKER[:WEIGHT_PCT], for example PRIO3:50.";
1230
+ readonly description: "Initial target weight in TICKER:WEIGHT_PCT form.";
1231
+ }];
1232
+ 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"];
1233
+ };
1234
+ readonly tool: {
1235
+ readonly name: "qb_holding_create";
1236
+ readonly title: "Create holding";
1237
+ };
1238
+ readonly outputModes: readonly ["json", "human"];
1239
+ } | {
1240
+ readonly id: "holdings.rename";
1241
+ readonly kind: "mutation";
1242
+ readonly visibility: readonly ["cli", "opencode"];
1243
+ readonly description: "Rename a holding owned by the authenticated user.";
1244
+ readonly http: {
1245
+ readonly method: "POST";
1246
+ readonly path: "/api/desk/tools/holding/rename";
1247
+ readonly inputMode: "json_body";
1248
+ readonly schemas: {
1249
+ readonly request: "PortfolioRenameRequest";
1250
+ readonly response: "PortfolioMutationResponse";
1251
+ };
1252
+ };
1253
+ readonly cli: {
1254
+ readonly group: "holdings";
1255
+ readonly command: "rename";
1256
+ readonly summary: "Rename an existing holding.";
1257
+ readonly positional: readonly [{
1258
+ readonly kind: "positional";
1259
+ readonly name: "portfolio_id";
1260
+ readonly type: "integer";
1261
+ readonly required: true;
1262
+ readonly placeholder: "ID";
1263
+ readonly description: "Stable saved object identifier.";
936
1264
  }, {
1265
+ readonly kind: "positional";
1266
+ readonly name: "name";
1267
+ readonly type: "string";
1268
+ readonly required: true;
1269
+ readonly placeholder: "NOME";
1270
+ readonly description: "Name to save.";
1271
+ }];
1272
+ readonly options: readonly [];
1273
+ readonly examples: readonly ["quantbrasil holdings rename 123 \"Longo Prazo\""];
1274
+ };
1275
+ readonly tool: {
1276
+ readonly name: "qb_holding_rename";
1277
+ readonly title: "Rename holding";
1278
+ };
1279
+ readonly outputModes: readonly ["json", "human"];
1280
+ } | {
1281
+ readonly id: "holdings.set-targets";
1282
+ readonly kind: "mutation";
1283
+ readonly visibility: readonly ["cli", "opencode"];
1284
+ readonly description: "Set target weights for a holding owned by the authenticated user.";
1285
+ readonly http: {
1286
+ readonly method: "POST";
1287
+ readonly path: "/api/desk/tools/holding/set_targets";
1288
+ readonly inputMode: "json_body";
1289
+ readonly schemas: {
1290
+ readonly request: "HoldingSetTargetsRequest";
1291
+ readonly response: "PortfolioMutationResponse";
1292
+ };
1293
+ };
1294
+ readonly cli: {
1295
+ readonly group: "holdings";
1296
+ readonly command: "set-targets";
1297
+ readonly summary: "Set target weights for a holding.";
1298
+ readonly positional: readonly [{
1299
+ readonly kind: "positional";
1300
+ readonly name: "portfolio_id";
1301
+ readonly type: "integer";
1302
+ readonly required: true;
1303
+ readonly placeholder: "ID";
1304
+ readonly description: "Stable saved object identifier.";
1305
+ }, {
1306
+ readonly kind: "positional";
1307
+ readonly name: "targets";
1308
+ readonly type: "string_array";
1309
+ readonly required: true;
1310
+ readonly placeholder: "TICKER:PESO";
1311
+ readonly multiple: true;
1312
+ readonly collectionFormat: "space_separated";
1313
+ readonly description: "One or more target weights in TICKER:WEIGHT_PCT form.";
1314
+ }];
1315
+ readonly options: readonly [];
1316
+ readonly examples: readonly ["quantbrasil holdings set-targets 123 PRIO3:50 VALE3:50"];
1317
+ };
1318
+ readonly tool: {
1319
+ readonly name: "qb_holding_set_targets";
1320
+ readonly title: "Set holding target weights";
1321
+ };
1322
+ readonly outputModes: readonly ["json", "human"];
1323
+ } | {
1324
+ readonly id: "holdings.set-positions";
1325
+ readonly kind: "mutation";
1326
+ readonly visibility: readonly ["cli", "opencode"];
1327
+ readonly description: "Set position quantities for a holding owned by the authenticated user.";
1328
+ readonly http: {
1329
+ readonly method: "POST";
1330
+ readonly path: "/api/desk/tools/holding/set_positions";
1331
+ readonly inputMode: "json_body";
1332
+ readonly schemas: {
1333
+ readonly request: "HoldingSetPositionsRequest";
1334
+ readonly response: "PortfolioMutationResponse";
1335
+ };
1336
+ };
1337
+ readonly cli: {
1338
+ readonly group: "holdings";
1339
+ readonly command: "set-positions";
1340
+ readonly summary: "Set position quantities for a holding.";
1341
+ readonly positional: readonly [{
1342
+ readonly kind: "positional";
1343
+ readonly name: "portfolio_id";
1344
+ readonly type: "integer";
1345
+ readonly required: true;
1346
+ readonly placeholder: "ID";
1347
+ readonly description: "Stable saved object identifier.";
1348
+ }, {
1349
+ readonly kind: "positional";
1350
+ readonly name: "positions";
1351
+ readonly type: "string_array";
1352
+ readonly required: true;
1353
+ readonly placeholder: "TICKER:QUANTIDADE";
1354
+ readonly multiple: true;
1355
+ readonly collectionFormat: "space_separated";
1356
+ readonly description: "One or more position quantities in TICKER:QUANTITY form.";
1357
+ }];
1358
+ readonly options: readonly [];
1359
+ readonly examples: readonly ["quantbrasil holdings set-positions 123 PRIO3:1600 BTC-USD:0.25"];
1360
+ };
1361
+ readonly tool: {
1362
+ readonly name: "qb_holding_set_positions";
1363
+ readonly title: "Set holding position quantities";
1364
+ };
1365
+ readonly outputModes: readonly ["json", "human"];
1366
+ } | {
1367
+ readonly id: "holdings.historical-return";
1368
+ readonly kind: "read";
1369
+ readonly visibility: readonly ["cli", "opencode"];
1370
+ readonly description: "Calculate historical return for a holding.";
1371
+ readonly http: {
1372
+ readonly method: "POST";
1373
+ readonly path: "/api/desk/tools/holding/historical_return";
1374
+ readonly inputMode: "json_body";
1375
+ readonly schemas: {
1376
+ readonly request: "PortfolioHistoricalReturnRequest";
1377
+ readonly response: "HistoricalReturnResponse";
1378
+ };
1379
+ };
1380
+ readonly cli: {
1381
+ readonly group: "holdings";
1382
+ readonly command: "historical-return";
1383
+ readonly summary: "Calculate historical return for a saved holding.";
1384
+ readonly positional: readonly [{
1385
+ readonly kind: "positional";
1386
+ readonly name: "portfolio_id";
1387
+ readonly type: "integer";
1388
+ readonly required: true;
1389
+ readonly placeholder: "ID";
1390
+ readonly description: "Stable saved object identifier.";
1391
+ }];
1392
+ readonly options: readonly [{
937
1393
  readonly kind: "option";
938
1394
  readonly flag: "--from";
939
1395
  readonly name: "start_date";
940
1396
  readonly type: "string";
941
- readonly required: true;
1397
+ readonly required: false;
942
1398
  readonly placeholder: "AAAA-MM-DD";
943
- readonly description: "Inclusive start date in ISO format.";
1399
+ readonly description: "Inclusive start date in ISO format. Use with --to, or use --period.";
944
1400
  }, {
945
1401
  readonly kind: "option";
946
1402
  readonly flag: "--to";
947
1403
  readonly name: "end_date";
948
1404
  readonly type: "string";
949
- readonly required: true;
1405
+ readonly required: false;
950
1406
  readonly placeholder: "AAAA-MM-DD";
951
- readonly description: "Inclusive end date in ISO format.";
1407
+ readonly description: "Inclusive end date in ISO format. Use with --from, or use --period.";
1408
+ }, {
1409
+ readonly kind: "option";
1410
+ readonly flag: "--period";
1411
+ readonly name: "period";
1412
+ readonly type: "string";
1413
+ readonly required: false;
1414
+ readonly placeholder: "PERIODO";
1415
+ readonly description: "Lookback period such as 1y, 3y, 5y, or 6m. Mutually exclusive with --from/--to.";
952
1416
  }];
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"];
1417
+ readonly examples: readonly ["quantbrasil holdings historical-return 123 --from 2024-01-01 --to 2025-01-01", "quantbrasil holdings historical-return 123 --period 1y"];
954
1418
  };
955
1419
  readonly tool: {
956
- readonly name: "qb_historical_return";
957
- readonly title: "Calculate historical return";
1420
+ readonly name: "qb_holding_historical_return";
1421
+ readonly title: "Calculate holding historical return";
958
1422
  };
959
1423
  readonly outputModes: readonly ["json", "human"];
960
1424
  } | {
961
- readonly id: "analytics.beta";
1425
+ readonly id: "holdings.beta";
962
1426
  readonly kind: "read";
963
1427
  readonly visibility: readonly ["cli", "opencode"];
964
- readonly description: "Calculate portfolio beta against IBOV for a saved portfolio or an ad-hoc basket.";
1428
+ readonly description: "Calculate holding beta against IBOV.";
965
1429
  readonly http: {
966
1430
  readonly method: "POST";
967
- readonly path: "/api/desk/tools/portfolio/beta";
1431
+ readonly path: "/api/desk/tools/holding/beta";
968
1432
  readonly inputMode: "json_body";
969
1433
  readonly schemas: {
970
1434
  readonly request: "PortfolioBetaRequest";
@@ -972,31 +1436,18 @@ export declare function getCapabilityById(id: CapabilityId): {
972
1436
  };
973
1437
  };
974
1438
  readonly cli: {
975
- readonly group: "analytics";
1439
+ readonly group: "holdings";
976
1440
  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";
1441
+ readonly summary: "Calculate holding beta against IBOV.";
1442
+ readonly positional: readonly [{
1443
+ readonly kind: "positional";
982
1444
  readonly name: "portfolio_id";
983
1445
  readonly type: "integer";
984
- readonly required: false;
1446
+ readonly required: true;
985
1447
  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
- }, {
1448
+ readonly description: "Stable saved object identifier.";
1449
+ }];
1450
+ readonly options: readonly [{
1000
1451
  readonly kind: "option";
1001
1452
  readonly flag: "--years";
1002
1453
  readonly name: "years";
@@ -1007,21 +1458,21 @@ export declare function getCapabilityById(id: CapabilityId): {
1007
1458
  readonly enumValues: readonly ["1", "3", "5"];
1008
1459
  readonly description: "Historical lookback window in years. Accepted values: 1, 3, or 5.";
1009
1460
  }];
1010
- readonly examples: readonly ["quantbrasil analytics beta --portfolio 123 --years 3", "quantbrasil analytics beta --asset PRIO3:120 --asset WINFUT:-20 --years 1"];
1461
+ readonly examples: readonly ["quantbrasil holdings beta 123 --years 3"];
1011
1462
  };
1012
1463
  readonly tool: {
1013
- readonly name: "qb_portfolio_beta";
1014
- readonly title: "Calculate portfolio beta";
1464
+ readonly name: "qb_holding_beta";
1465
+ readonly title: "Calculate holding beta";
1015
1466
  };
1016
1467
  readonly outputModes: readonly ["json", "human"];
1017
1468
  } | {
1018
- readonly id: "analytics.var";
1469
+ readonly id: "holdings.var";
1019
1470
  readonly kind: "read";
1020
1471
  readonly visibility: readonly ["cli", "opencode"];
1021
- readonly description: "Calculate one-day Value-at-Risk for a saved portfolio or an ad-hoc basket.";
1472
+ readonly description: "Calculate one-day Value-at-Risk for a holding.";
1022
1473
  readonly http: {
1023
1474
  readonly method: "POST";
1024
- readonly path: "/api/desk/tools/portfolio/var";
1475
+ readonly path: "/api/desk/tools/holding/var";
1025
1476
  readonly inputMode: "json_body";
1026
1477
  readonly schemas: {
1027
1478
  readonly request: "PortfolioVaRRequest";
@@ -1029,31 +1480,18 @@ export declare function getCapabilityById(id: CapabilityId): {
1029
1480
  };
1030
1481
  };
1031
1482
  readonly cli: {
1032
- readonly group: "analytics";
1483
+ readonly group: "holdings";
1033
1484
  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";
1485
+ readonly summary: "Calculate one-day Value-at-Risk for a holding.";
1486
+ readonly positional: readonly [{
1487
+ readonly kind: "positional";
1039
1488
  readonly name: "portfolio_id";
1040
1489
  readonly type: "integer";
1041
- readonly required: false;
1490
+ readonly required: true;
1042
1491
  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
- }, {
1492
+ readonly description: "Stable saved object identifier.";
1493
+ }];
1494
+ readonly options: readonly [{
1057
1495
  readonly kind: "option";
1058
1496
  readonly flag: "--years";
1059
1497
  readonly name: "years";
@@ -1072,11 +1510,11 @@ export declare function getCapabilityById(id: CapabilityId): {
1072
1510
  readonly defaultValue: 95;
1073
1511
  readonly description: "Confidence level in percent, for example 95 or 99.";
1074
1512
  }];
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"];
1513
+ readonly examples: readonly ["quantbrasil holdings var 123 --years 1 --confidence 95"];
1076
1514
  };
1077
1515
  readonly tool: {
1078
- readonly name: "qb_portfolio_var";
1079
- readonly title: "Calculate portfolio VaR";
1516
+ readonly name: "qb_holding_var";
1517
+ readonly title: "Calculate holding VaR";
1080
1518
  };
1081
1519
  readonly outputModes: readonly ["json", "human"];
1082
1520
  };