fin-app-mcp 2.3.2 → 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 +51 -7
  2. package/package.json +1 -1
package/index.mjs CHANGED
@@ -872,7 +872,8 @@ CAMPOS:
872
872
  - name: string — nome da conta (obrigatório, ex: "Nubank", "Inter", "Carteira").
873
873
  - institution: string — nome da instituição financeira.
874
874
  - type: string — 'cash' (corrente/carteira/poupança) ou 'credit' (cartão de crédito) (obrigatório).
875
- - 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).
876
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.
877
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.
878
879
  - closing_day: number — dia de fechamento da fatura, 1-28 (obrigatório para type 'credit').
@@ -882,21 +883,27 @@ CAMPOS:
882
883
  REGRAS DE NEGÓCIO:
883
884
  - Cartão de crédito (type 'credit') EXIGE closing_day e due_day.
884
885
  - closing_day e due_day devem estar entre 1 e 28.
885
- - Valores em centavos.
886
- - **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.
887
889
 
888
- EXEMPLO — cartão novo (sem fatura preexistente):
890
+ EXEMPLO — cartão novo BRL (sem fatura preexistente):
889
891
  { "name": "Nubank", "type": "credit", "closing_day": 19, "due_day": 26, "credit_limit_cents": 500000 }
890
892
 
891
893
  EXEMPLO — cartão migrado com fatura já aberta:
892
- { "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`,
893
899
  inputSchema: {
894
900
  type: "object",
895
901
  properties: {
896
902
  name: { type: "string", description: "Nome da conta (ex: Nubank, Inter)" },
897
903
  institution: { type: "string", description: "Nome da instituição financeira" },
898
904
  type: { type: "string", description: "'cash' ou 'credit'" },
899
- 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)" },
900
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)." },
901
908
  initial_invoice_amount_cents: { type: "number", description: "Valor da fatura inicial em centavos. Use com initial_invoice_date." },
902
909
  closing_day: { type: "number", description: "Dia de fechamento da fatura (1-28, obrigatório para credit)" },
@@ -948,6 +955,40 @@ EXEMPLO — remover cutoff de um cartão criado errado:
948
955
  required: ["account_id"],
949
956
  },
950
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
+ },
951
992
  {
952
993
  name: "fin_criar_categoria",
953
994
  description: `Cria uma nova categoria de transação.
@@ -1200,6 +1241,9 @@ async function handleTool(name, args) {
1200
1241
  }
1201
1242
  return ok(await api("PATCH", `/api/genius/accounts/${account_id}`, body));
1202
1243
  }
1244
+ case "fin_deletar_conta": {
1245
+ return ok(await api("DELETE", `/api/genius/accounts/${args.account_id}`));
1246
+ }
1203
1247
  case "fin_listar_categorias": {
1204
1248
  return ok(await api("GET", `/api/genius/categories`));
1205
1249
  }
@@ -1225,7 +1269,7 @@ async function handleTool(name, args) {
1225
1269
  // ── Server ──────────────────────────────────────────────────────────
1226
1270
 
1227
1271
  const server = new Server(
1228
- { name: "fin-app", version: "2.3.2" },
1272
+ { name: "fin-app", version: "2.3.3" },
1229
1273
  { capabilities: { tools: {}, resources: {} } }
1230
1274
  );
1231
1275
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fin-app-mcp",
3
- "version": "2.3.2",
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",