fin-app-mcp 2.3.4 → 3.0.0
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.
- package/index.mjs +27 -47
- package/package.json +1 -1
package/index.mjs
CHANGED
|
@@ -343,14 +343,14 @@ REGRAS DE NEGÓCIO:
|
|
|
343
343
|
// ── Mutações ──────────────────────────────────────────────────────
|
|
344
344
|
{
|
|
345
345
|
name: "fin_criar_despesa",
|
|
346
|
-
description: `Cria uma despesa.
|
|
346
|
+
description: `Cria uma despesa. Suporta parcelamento automático e multi-moeda.
|
|
347
347
|
|
|
348
348
|
QUANDO USAR:
|
|
349
349
|
- Lançar uma despesa normal (compra, conta, assinatura).
|
|
350
|
-
- Lançar um ESTORNO/CANCELAMENTO em cartão de crédito — usar com reversal_of_id.
|
|
351
350
|
- Lançar uma compra parcelada — usar com installments.
|
|
352
351
|
|
|
353
352
|
NÃO USAR QUANDO:
|
|
353
|
+
- Quiser lançar ESTORNO/CANCELAMENTO em cartão — usar fin_criar_estorno (rota dedicada, valida ownership e invariants atomicamente).
|
|
354
354
|
- Quiser lançar receita (usar fin_criar_receita).
|
|
355
355
|
- Quiser registrar pagamento de fatura de cartão (usar fin_pagar_fatura).
|
|
356
356
|
- Quiser transferir entre contas (usar fin_criar_transferencia).
|
|
@@ -365,20 +365,11 @@ CAMPOS:
|
|
|
365
365
|
- essential: boolean — se é despesa essencial.
|
|
366
366
|
- installments: number — número de parcelas (2-48). Gera N transações separadas automaticamente.
|
|
367
367
|
- current_installment: number — parcela inicial (default: 1). Passar 1 é equivalente ao default — o sistema cria todas as N parcelas começando da primeira. Use valores > 1 APENAS quando registrando uma compra parcelada que já está em andamento e você quer criar apenas as parcelas futuras (ex: installments=10, current_installment=3 cria 8 transações, da parcela 3 à 10).
|
|
368
|
-
- reversal_of_id: string UUID — ID da transação original para estorno.
|
|
369
|
-
- reversal_kind: string — 'full' ou 'partial' (obrigatório quando reversal_of_id é informado).
|
|
370
368
|
- tags: string[] — tags livres pra cortes ortogonais (ex: ["TDAH-tracking", "Lou-shared"]).
|
|
371
369
|
- original_purchase_date: string YYYY-MM-DD — data REAL da compra (use junto com installments>1 e current_installment>1 em cartão para o FIN colocar cada parcela na fatura certa a partir do cutoff do cartão).
|
|
372
370
|
- original_amount_cents: number — valor na moeda estrangeira (ex: 2000 = US$ 20,00). Use quando a despesa foi em USD.
|
|
373
371
|
- original_currency: 'BRL' | 'USD' — moeda de original_amount_cents.
|
|
374
|
-
-
|
|
375
|
-
|
|
376
|
-
REGRAS DE NEGÓCIO — ESTORNO:
|
|
377
|
-
- Para estorno em cartão: criar despesa com reversal_of_id = UUID da transação original.
|
|
378
|
-
- O amount_cents é POSITIVO — o sistema inverte automaticamente na fatura.
|
|
379
|
-
- O account_name DEVE ser o mesmo cartão da transação original.
|
|
380
|
-
- NUNCA usar fin_criar_receita para estorno em cartão — receita SOMA na fatura em vez de subtrair.
|
|
381
|
-
- A transação original deve existir, ser expense, e não ser outro estorno.
|
|
372
|
+
- exchange_rate: number — cotação em decimal (5.1023 = R$ 5,1023 por 1 USD). Opcional; use quando NÃO passar amount_cents (backend deriva BRL).
|
|
382
373
|
|
|
383
374
|
REGRAS DE NEGÓCIO — PARCELAMENTO:
|
|
384
375
|
- installments: N gera N transações separadas, cada uma em um mês consecutivo.
|
|
@@ -394,7 +385,7 @@ REGRAS DE NEGÓCIO — MULTI-MOEDA (USD):
|
|
|
394
385
|
- amount_cents é SEMPRE em BRL. Para despesas em USD, pergunte à pessoa: "cotação automática ou valor exato em BRL que saiu?".
|
|
395
386
|
- Conta USD EXIGE original_amount_cents + original_currency: "USD". Passar só amount_cents numa conta USD retorna 422.
|
|
396
387
|
- Modo (a) — pessoa informa o BRL exato: passar amount_cents (BRL) + original_amount_cents + original_currency. O backend grava BRL como fonte da verdade e deriva exchange_rate.
|
|
397
|
-
- Modo (b) — pessoa só sabe a cotação: passar original_amount_cents + original_currency +
|
|
388
|
+
- Modo (b) — pessoa só sabe a cotação: passar original_amount_cents + original_currency + exchange_rate (sem amount_cents). Backend calcula amount_cents = original_amount * rate.
|
|
398
389
|
- Modo (c) — despesa BRL normal: só passar amount_cents.
|
|
399
390
|
|
|
400
391
|
REGRAS DE NEGÓCIO — PARCELAMENTO DE COMPRA ANTIGA:
|
|
@@ -403,20 +394,17 @@ REGRAS DE NEGÓCIO — PARCELAMENTO DE COMPRA ANTIGA:
|
|
|
403
394
|
EXEMPLO — despesa simples:
|
|
404
395
|
{ "description": "Almoço", "amount_cents": 3500, "account_name": "Nubank", "category_name": "Alimentação" }
|
|
405
396
|
|
|
406
|
-
EXEMPLO — estorno:
|
|
407
|
-
{ "description": "Cancelamento Rappi", "amount_cents": 1474, "account_name": "Latam Itaú", "category_name": "Alimentação", "reversal_of_id": "uuid-da-transacao-original", "reversal_kind": "partial" }
|
|
408
|
-
|
|
409
397
|
EXEMPLO — parcelamento:
|
|
410
398
|
{ "description": "Óculos Fozoco", "amount_cents": 36792, "account_name": "Nubank", "category_name": "Saúde", "installments": 4 }
|
|
411
399
|
|
|
412
|
-
EXEMPLO — forçar ciclo:
|
|
413
|
-
{ "description": "
|
|
400
|
+
EXEMPLO — forçar ciclo (caso raro — banco lista compra em fatura diferente do esperado pela data):
|
|
401
|
+
{ "description": "Compra retroativa", "amount_cents": 59322, "account_name": "Latam Itaú", "category_name": "Tecnologia", "invoice_cycle_end": "2026-05-01" }
|
|
414
402
|
|
|
415
403
|
EXEMPLO — compra USD com BRL exato (modo a):
|
|
416
404
|
{ "description": "Camiseta NY", "amount_cents": 10200, "original_amount_cents": 2000, "original_currency": "USD", "account_name": "Wise USD", "category_name": "Pessoal", "subcategory_name": "Vestuário" }
|
|
417
405
|
|
|
418
406
|
EXEMPLO — compra USD via cotação (modo b):
|
|
419
|
-
{ "description": "Café", "original_amount_cents": 500, "original_currency": "USD", "
|
|
407
|
+
{ "description": "Café", "original_amount_cents": 500, "original_currency": "USD", "exchange_rate": 5.20, "account_name": "Wise USD", "category_name": "Alimentação" }
|
|
420
408
|
|
|
421
409
|
EXEMPLO — Ray-Ban 10x, parcela 4 em cartão Caixa (compra dez/2025, hoje abril/2026):
|
|
422
410
|
{ "description": "Ray-Ban", "amount_cents": 137000, "account_name": "Caixa Cartão", "category_name": "Pessoal", "subcategory_name": "Acessórios", "installments": 10, "current_installment": 4, "original_purchase_date": "2025-12-23" }`,
|
|
@@ -438,14 +426,6 @@ EXEMPLO — Ray-Ban 10x, parcela 4 em cartão Caixa (compra dez/2025, hoje abril
|
|
|
438
426
|
type: "number",
|
|
439
427
|
description: "Parcela inicial (default: 1). Usar para entrar no meio de parcelamento existente.",
|
|
440
428
|
},
|
|
441
|
-
reversal_of_id: {
|
|
442
|
-
type: "string",
|
|
443
|
-
description: "UUID da transação original — para estornos/créditos em cartão",
|
|
444
|
-
},
|
|
445
|
-
reversal_kind: {
|
|
446
|
-
type: "string",
|
|
447
|
-
description: "'full' ou 'partial' — obrigatório quando reversal_of_id é informado",
|
|
448
|
-
},
|
|
449
429
|
invoice_cycle_end: {
|
|
450
430
|
type: "string",
|
|
451
431
|
description: "YYYY-MM-DD — data de fechamento do ciclo. Força a transação pra uma fatura específica.",
|
|
@@ -468,9 +448,9 @@ EXEMPLO — Ray-Ban 10x, parcela 4 em cartão Caixa (compra dez/2025, hoje abril
|
|
|
468
448
|
enum: ["BRL", "USD"],
|
|
469
449
|
description: "Moeda de original_amount_cents. Use 'USD' pra despesas em dólar.",
|
|
470
450
|
},
|
|
471
|
-
|
|
451
|
+
exchange_rate: {
|
|
472
452
|
type: "number",
|
|
473
|
-
description: "Cotação em
|
|
453
|
+
description: "Cotação em decimal: 5.1023 = R$ 5,1023 por 1 USD. Use quando NÃO passar amount_cents.",
|
|
474
454
|
},
|
|
475
455
|
},
|
|
476
456
|
required: ["description"],
|
|
@@ -482,7 +462,7 @@ EXEMPLO — Ray-Ban 10x, parcela 4 em cartão Caixa (compra dez/2025, hoje abril
|
|
|
482
462
|
|
|
483
463
|
QUANDO USAR: lançar salário, freelance, dividendos, reembolso em conta corrente.
|
|
484
464
|
NÃO USAR QUANDO:
|
|
485
|
-
- Quiser lançar estorno em cartão de crédito — usar
|
|
465
|
+
- Quiser lançar estorno em cartão de crédito — usar fin_criar_estorno.
|
|
486
466
|
- Quiser transferir entre contas — usar fin_criar_transferencia.
|
|
487
467
|
|
|
488
468
|
CAMPOS:
|
|
@@ -586,30 +566,30 @@ NÃO USAR QUANDO: quiser deletar (usar fin_deletar_transacao) ou criar nova (usa
|
|
|
586
566
|
|
|
587
567
|
CAMPOS:
|
|
588
568
|
- transaction_id: string UUID — ID da transação (obrigatório).
|
|
589
|
-
-
|
|
590
|
-
-
|
|
591
|
-
-
|
|
592
|
-
-
|
|
593
|
-
-
|
|
594
|
-
-
|
|
595
|
-
-
|
|
569
|
+
- amount_cents: number — novo valor em centavos.
|
|
570
|
+
- description: string — nova descrição.
|
|
571
|
+
- category_name: string — nova categoria (por nome).
|
|
572
|
+
- subcategory_name: string — nova subcategoria (por nome).
|
|
573
|
+
- account_name: string — nova conta (por nome).
|
|
574
|
+
- tx_date: string YYYY-MM-DD — nova data.
|
|
575
|
+
- invoice_cycle_end: string YYYY-MM-DD — força a transação pra uma fatura específica (data de fechamento do ciclo).
|
|
596
576
|
|
|
597
577
|
REGRAS DE NEGÓCIO:
|
|
598
578
|
- Valores em centavos.
|
|
599
579
|
- Campos omitidos não são alterados.
|
|
600
580
|
- O transaction_id é um UUID (usar fin_buscar_transacoes ou fin_todas_transacoes para encontrar).
|
|
601
|
-
-
|
|
581
|
+
- invoice_cycle_end: usar para mover uma transação entre faturas (ex: estorno que o banco listou em fatura diferente da compra).`,
|
|
602
582
|
inputSchema: {
|
|
603
583
|
type: "object",
|
|
604
584
|
properties: {
|
|
605
585
|
transaction_id: { type: "string", description: "UUID da transação" },
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
586
|
+
amount_cents: { type: "number" },
|
|
587
|
+
description: { type: "string" },
|
|
588
|
+
category_name: { type: "string" },
|
|
589
|
+
subcategory_name: { type: "string" },
|
|
590
|
+
account_name: { type: "string" },
|
|
591
|
+
tx_date: { type: "string", description: "YYYY-MM-DD" },
|
|
592
|
+
invoice_cycle_end: { type: "string", description: "YYYY-MM-DD — data de fechamento do ciclo da fatura" },
|
|
613
593
|
},
|
|
614
594
|
required: ["transaction_id"],
|
|
615
595
|
},
|
|
@@ -644,7 +624,7 @@ QUANDO USAR:
|
|
|
644
624
|
- O banco lista um estorno na fatura mas NÃO desconta do total. Criar ajuste POSITIVO pra anular o efeito do refund no net_total.
|
|
645
625
|
|
|
646
626
|
NÃO USAR QUANDO:
|
|
647
|
-
- O estorno/crédito se comporta normalmente (abate do total na mesma fatura que a compra). Nesse caso, basta lançar o estorno com
|
|
627
|
+
- O estorno/crédito se comporta normalmente (abate do total na mesma fatura que a compra). Nesse caso, basta lançar o estorno com fin_criar_estorno.
|
|
648
628
|
- Quiser mover uma transação entre faturas (usar invoice_cycle_end em fin_criar_despesa ou fin_editar_transacao).
|
|
649
629
|
|
|
650
630
|
CAMPOS:
|
|
@@ -1209,7 +1189,7 @@ REGRAS DE NEGÓCIO:
|
|
|
1209
1189
|
},
|
|
1210
1190
|
{
|
|
1211
1191
|
name: "fin_criar_estorno",
|
|
1212
|
-
description: `Cria um estorno atômico de uma despesa —
|
|
1192
|
+
description: `Cria um estorno atômico de uma despesa. Rota canônica — chama POST /api/genius/reversals, que valida ownership e invariants atomicamente.
|
|
1213
1193
|
|
|
1214
1194
|
QUANDO USAR: quando já sabe o UUID da transação original que quer estornar (ex: achou via fin_buscar_transacoes ou fin_fatura_transacoes). A tool herda account/category/subcategory da original automaticamente.
|
|
1215
1195
|
NÃO USAR QUANDO: quiser fazer uma nova despesa sem relação com estorno (usar fin_criar_despesa).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fin-app-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "MCP server para o FIN App — finanças pessoais. Expõe tools para agents LLM operarem contas, despesas, faturas de cartão, bills recorrentes e mais.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.mjs",
|