fin-app-mcp 2.3.1 → 2.3.3

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 (2) hide show
  1. package/index.mjs +55 -10
  2. package/package.json +1 -1
package/index.mjs CHANGED
@@ -564,15 +564,16 @@ REGRAS DE NEGÓCIO:
564
564
  },
565
565
  {
566
566
  name: "fin_deletar_transacao",
567
- description: `Deleta uma transação pelo ID.
567
+ description: `Deleta apenas a transação especificada pelo ID.
568
568
 
569
- QUANDO USAR: remover uma transação lançada por engano ou duplicada.
569
+ QUANDO USAR: remover uma transação lançada por engano ou duplicada, ou remover uma parcela específica de um parcelamento sem afetar as outras.
570
570
 
571
571
  CAMPOS:
572
572
  - transaction_id: string UUID — ID da transação (obrigatório).
573
573
 
574
574
  REGRAS DE NEGÓCIO:
575
- - ATENÇÃO: se a transação faz parte de um parcelamento, deletar UMA parcela deleta TODAS as parcelas do grupo (todas com o mesmo installment_group_id).
575
+ - **Deleta APENAS a transação especificada.** Se a transação faz parte de um parcelamento, as outras parcelas do mesmo installment_group_id permanecem intactas.
576
+ - Para apagar um grupo inteiro de parcelamento, delete cada parcela individualmente usando os IDs retornados por fin_buscar_transacoes ou fin_todas_transacoes.
576
577
  - A operação é irreversível.`,
577
578
  inputSchema: {
578
579
  type: "object",
@@ -871,7 +872,8 @@ CAMPOS:
871
872
  - name: string — nome da conta (obrigatório, ex: "Nubank", "Inter", "Carteira").
872
873
  - institution: string — nome da instituição financeira.
873
874
  - type: string — 'cash' (corrente/carteira/poupança) ou 'credit' (cartão de crédito) (obrigatório).
874
- - initial_balance_cents: numbersaldo inicial em centavos (default: 0). Para cartão credit, é o valor de uma fatura preexistente (use com initial_invoice_date).
875
+ - currency: string'BRL' ou 'USD' (default: BRL). Apenas contas cash podem ser USD. Use USD para carteira em dólar, Wise, conta americana, etc. Cartão de crédito DEVE ser BRL.
876
+ - initial_balance_cents: number — saldo inicial em centavos **da moeda da conta** (default: 0). Para conta USD, é em centavos de dólar (ex: $370 = 37000). Para cartão credit, é o valor de uma fatura preexistente (use com initial_invoice_date).
875
877
  - initial_invoice_date: string YYYY-MM-DD — data da fatura inicial (cutoff histórico). OMITIR é o comportamento recomendado para cartões novos — significa "sem cutoff", ou seja, transações com qualquer tx_date (inclusive anteriores à criação) contam no total da fatura.
876
878
  - initial_invoice_amount_cents: number — alias de initial_balance_cents quando se refere a fatura inicial de cartão. Use junto com initial_invoice_date.
877
879
  - closing_day: number — dia de fechamento da fatura, 1-28 (obrigatório para type 'credit').
@@ -881,21 +883,27 @@ CAMPOS:
881
883
  REGRAS DE NEGÓCIO:
882
884
  - Cartão de crédito (type 'credit') EXIGE closing_day e due_day.
883
885
  - closing_day e due_day devem estar entre 1 e 28.
884
- - Valores em centavos.
885
- - **Para cartão de crédito**: por padrão (quando initial_invoice_date é omitido), o cartão é criado SEM cutoff histórico. Transações com qualquer tx_date contam no total da fatura. Use initial_invoice_date + initial_invoice_amount_cents apenas se o usuário tem um saldo de fatura preexistente vindo de outro sistema.
886
+ - **currency: 'USD' só é permitido para cash.** Tentar criar credit + USD retorna erro de validação.
887
+ - Valores em centavos da moeda da conta (cents de BRL ou cents de USD, conforme currency).
888
+ - **Para cartão de crédito**: por padrão (quando initial_invoice_date é omitido), o cartão é criado SEM cutoff histórico. Transações com qualquer tx_date contam no total da fatura.
886
889
 
887
- EXEMPLO — cartão novo (sem fatura preexistente):
890
+ EXEMPLO — cartão novo BRL (sem fatura preexistente):
888
891
  { "name": "Nubank", "type": "credit", "closing_day": 19, "due_day": 26, "credit_limit_cents": 500000 }
889
892
 
890
893
  EXEMPLO — cartão migrado com fatura já aberta:
891
- { "name": "Itaú", "type": "credit", "closing_day": 1, "due_day": 9, "initial_invoice_date": "2026-03-15", "initial_invoice_amount_cents": 350000 }`,
894
+ { "name": "Itaú", "type": "credit", "closing_day": 1, "due_day": 9, "initial_invoice_date": "2026-03-15", "initial_invoice_amount_cents": 350000 }
895
+
896
+ EXEMPLO — conta USD (Wise, carteira em dólar):
897
+ { "name": "Wise USD", "institution": "Wise", "type": "cash", "currency": "USD", "initial_balance_cents": 20000 }
898
+ // cria conta USD com saldo $200`,
892
899
  inputSchema: {
893
900
  type: "object",
894
901
  properties: {
895
902
  name: { type: "string", description: "Nome da conta (ex: Nubank, Inter)" },
896
903
  institution: { type: "string", description: "Nome da instituição financeira" },
897
904
  type: { type: "string", description: "'cash' ou 'credit'" },
898
- initial_balance_cents: { type: "number", description: "Saldo inicial em centavos (default: 0)" },
905
+ currency: { type: "string", description: "'BRL' (default) ou 'USD'. USD só para cash." },
906
+ initial_balance_cents: { type: "number", description: "Saldo inicial em centavos da moeda da conta (default: 0)" },
899
907
  initial_invoice_date: { type: ["string", "null"], description: "YYYY-MM-DD — data da fatura inicial. Omitir ou passar null para cartão sem cutoff histórico (recomendado)." },
900
908
  initial_invoice_amount_cents: { type: "number", description: "Valor da fatura inicial em centavos. Use com initial_invoice_date." },
901
909
  closing_day: { type: "number", description: "Dia de fechamento da fatura (1-28, obrigatório para credit)" },
@@ -947,6 +955,40 @@ EXEMPLO — remover cutoff de um cartão criado errado:
947
955
  required: ["account_id"],
948
956
  },
949
957
  },
958
+ {
959
+ name: "fin_deletar_conta",
960
+ description: `Deleta uma conta bancária. Bloqueia a deleção se a conta tem transações vinculadas — não cascata.
961
+
962
+ QUANDO USAR:
963
+ - Remover uma conta criada por engano (nome errado, moeda errada, tipo errado).
964
+ - Limpar contas duplicadas antes de importar histórico.
965
+
966
+ NÃO USAR QUANDO:
967
+ - A conta tem transações importantes. Se precisa remover uma conta em uso, delete as transações primeiro OU renomeie a conta via fin_editar_conta (soft-archive via renomear para "[ARQUIVADO] Nome").
968
+
969
+ CAMPOS:
970
+ - account_id: string UUID — ID da conta (obrigatório).
971
+
972
+ REGRAS DE NEGÓCIO:
973
+ - Se a conta tem qualquer transação vinculada (como account_from ou account_to), retorna erro 409 com a contagem de transações — a conta NÃO é deletada.
974
+ - Sem cascata silenciosa: destruir histórico é pior que um erro claro.
975
+ - Se precisar de hard-delete com histórico, delete as transações primeiro.
976
+
977
+ EXEMPLO — deletar conta sem transações:
978
+ { "account_id": "uuid-da-conta" }
979
+ → retorna { ok: true, deleted: true }
980
+
981
+ EXEMPLO — tentativa bloqueada:
982
+ { "account_id": "uuid-da-conta-com-transacoes" }
983
+ → retorna 409 { ok: false, error: "Conta X tem N transação(ões) vinculada(s)...", transactions_count: N }`,
984
+ inputSchema: {
985
+ type: "object",
986
+ properties: {
987
+ account_id: { type: "string", description: "UUID da conta" },
988
+ },
989
+ required: ["account_id"],
990
+ },
991
+ },
950
992
  {
951
993
  name: "fin_criar_categoria",
952
994
  description: `Cria uma nova categoria de transação.
@@ -1199,6 +1241,9 @@ async function handleTool(name, args) {
1199
1241
  }
1200
1242
  return ok(await api("PATCH", `/api/genius/accounts/${account_id}`, body));
1201
1243
  }
1244
+ case "fin_deletar_conta": {
1245
+ return ok(await api("DELETE", `/api/genius/accounts/${args.account_id}`));
1246
+ }
1202
1247
  case "fin_listar_categorias": {
1203
1248
  return ok(await api("GET", `/api/genius/categories`));
1204
1249
  }
@@ -1224,7 +1269,7 @@ async function handleTool(name, args) {
1224
1269
  // ── Server ──────────────────────────────────────────────────────────
1225
1270
 
1226
1271
  const server = new Server(
1227
- { name: "fin-app", version: "2.3.1" },
1272
+ { name: "fin-app", version: "2.3.3" },
1228
1273
  { capabilities: { tools: {}, resources: {} } }
1229
1274
  );
1230
1275
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fin-app-mcp",
3
- "version": "2.3.1",
3
+ "version": "2.3.3",
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",