@quantbrasil/cli 0.1.0-beta.2 → 0.1.0-beta.4

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