FazmieVoltar ao Fazmie

Documentação do MCP

Suas finanças. Sua IA. O Fazmie não tem IA própria nem cobra por IA: você conecta a que já usa (Claude, ChatGPT, OpenCode ou outra) pelo MCP (Model Context Protocol). Ela lê e muda os dados da sua casa, só da sua casa, depois de você autorizar. Esta página é gerada do próprio código: o que está aqui é o que o servidor oferece hoje.

Como conectar

  1. 1Na sua IA (Claude, ChatGPT, OpenCode ou outra), adicione um conector MCP com o endereço abaixo.
  2. 2Entre no Fazmie quando ela pedir e toque em Autorizar.
  3. 3Peça o que quiser. Não há chave para copiar.

Endereço do servidor

https://fazmie.com/api/mcp

Ferramentas

Os nomes, as descrições e os parâmetros vêm do servidor e estão em inglês: é o idioma que a IA lê. Ela responde no seu idioma.

Ler

get_guide

How Fazmie works, what each tool does and the rules. Read it before starting.

Parâmetros

Sem parâmetros.

get_cycle

Shows the pay cycle (from payday until the day before the next one): overdue bills, payday provisions (savings pots), upcoming bills, paid ones, warnings, free spending and monthly fixed cost. Free-spending weeks come separately in freeSpendingWeeks: they are NOT bills and are not paid. No 'date' = current cycle.

Parâmetros

  • date
    string

    Any day inside the cycle you want to see

list_items

Lists every entry, largest first, with the total monthly fixed cost.

Parâmetros

Sem parâmetros.

get_settings

Cycle start, fixed investment per cycle, reference weekly amount, members and per-cycle overrides.

Parâmetros

Sem parâmetros.

get_investments

The household's net worth (already had + contributions to every investment − withdrawals + returns) and, per investment, how much was contributed (contributions marked as invested) and withdrawn. Amounts in reais.

Parâmetros

Sem parâmetros.

get_week_events

Free-spending telemetry: how each week closed (zeroed, leftover, short) and when the person took money from the next week (borrow; spentBefore = the balance the week had when the person chose 'Reset the current one'). A shortfall can leave the next week negative; in the last week it goes on the next cycle as a one-time entry. Returns the facts and a summary with counts and sums. Amounts in reais. Use it to find patterns (e.g. in how many weeks money ran short).

Parâmetros

  • since
    string

    Only facts from cycles starting on this date or later

get_changes

History of changes to entries and marks (app, AI and spreadsheet): when, who and what, newest first. Use it to answer 'what was done yesterday?' and to find the id of something to undo.

Parâmetros

  • days
    integer

    How many days back. Default: 7

simulate

Simulates a cycle without saving anything: what if the income, the investment or the bills change? Useful to see the effect of cutting or adding a bill on the weekly amount and the fixed cost.

Parâmetros

  • date
    string

    A day inside the simulated cycle. Default: today

  • salary
    number
  • investAmount
    number
  • removeItemIds
    uuid[]

    Entries to remove in the simulation

  • addItems
    object[]

    New entries in the simulation

  • addItems[].nameobrigatório
    string

    Name of the bill, income or investment

  • addItems[].kindobrigatório
    "bill" | "provision" | "income" | "investment"

    bill = a bill paid on a date; income = income (monthly salary, or once: 13th salary, bonus, vacation pay); investment = a repeating investment contribution (not spending); provision = old type

  • addItems[].frequencyobrigatório
    "monthly" | "weekly" | "yearly" | "once"

    monthly, weekly, yearly or once (one time)

  • addItems[].amountobrigatório
    number

    Amount in reais. For weekly, the amount of each week

  • addItems[].variable
    boolean

    An amount that changes (electricity, water, card)

  • addItems[].cardId
    uuid

    Paid by card: id of the credit card bill entry (e.g. a gym charged to the Nubank card). It doesn't add to the cycle's bills, because the money leaves with the card bill; it stays in the fixed cost. null removes it

  • addItems[].businessDay
    integer

    Monthly on the Nth business day (e.g. salary on the 5th business day = 5), instead of dueDay. The date changes every month (no Saturdays, Sundays or national holidays). null goes back to dueDay

  • addItems[].dueDay
    integer

    Due day (monthly bills, and yearly). When changed, the past (until yesterday) stays on the old day

  • addItems[].dueMonth
    integer

    Due month (yearly)

  • addItems[].weekday
    integer

    Weekday, 0 = Sunday ... 6 = Saturday (weekly)

  • addItems[].date
    string

    Single date (once)

  • addItems[].node
    string

    Name of the savings pot. Empty = uses the name

  • addItems[].yearlyMode
    "spread" | "warn"

    Yearly bill: spread sets aside 1/12 per cycle; warn only warns ahead

  • addItems[].active
    boolean

    false = paused, not in the cycle

  • addItems[].endsOn
    string

    Installments: date of the last one. null = never ends

  • addItems[].startsOn
    string

    First date it applies. Before that it didn't exist. On create, empty (missing or null) = the first occurrence that has not happened yet (never an infinite past); send a past date to charge the past. On update, null = always. With installmentsTotal (and no endsOn) it is the date of installment 1 and the last installment is calculated from it

  • addItems[].category
    string

    Category by name (uppercase). Prefer the app's fixed ones (see the guide; stored names are Portuguese): MORADIA, SAÚDE, FILHOS, ASSINATURAS, CARTÕES... A new name creates a category of the person's own. Card bills go in CARTÕES

  • addItems[].installmentsTotal
    integer

    Installments: the purchase's total count (with endsOn shows 'installment 5/48')

  • addItems[].countsAsFixed
    boolean

    Fixed cost, marked by the person. No end: default true. With an end date (installments): default false; true for a long contract (e.g. land). One-time is never fixed

  • addItems[].owner
    string

    Who pays: a member's email (see get_settings → members). null = the household (everyone)

  • addItems[].shift
    "before" | "after"

    Income and investment: if the date falls on a weekend or holiday, before moves it earlier, after moves it later, null = stays. Only monthly/yearly. Bills ignore it: they always move to the next business day

Lançamentos

create_item

Creates a bill, income or investment. monthly needs dueDay (or businessDay); weekly needs weekday; yearly needs dueDay and dueMonth; once needs date. A financing or any plan with many installments (even 400) is ONE entry: monthly + installmentsTotal + startsOn (the date of installment 1) + dueDay. Never create one entry per month.

Parâmetros

  • nameobrigatório
    string

    Name of the bill, income or investment

  • kindobrigatório
    "bill" | "provision" | "income" | "investment"

    bill = a bill paid on a date; income = income (monthly salary, or once: 13th salary, bonus, vacation pay); investment = a repeating investment contribution (not spending); provision = old type

  • frequencyobrigatório
    "monthly" | "weekly" | "yearly" | "once"

    monthly, weekly, yearly or once (one time)

  • amountobrigatório
    number

    Amount in reais. For weekly, the amount of each week

  • variable
    boolean

    An amount that changes (electricity, water, card)

  • cardId
    uuid

    Paid by card: id of the credit card bill entry (e.g. a gym charged to the Nubank card). It doesn't add to the cycle's bills, because the money leaves with the card bill; it stays in the fixed cost. null removes it

  • businessDay
    integer

    Monthly on the Nth business day (e.g. salary on the 5th business day = 5), instead of dueDay. The date changes every month (no Saturdays, Sundays or national holidays). null goes back to dueDay

  • dueDay
    integer

    Due day (monthly bills, and yearly). When changed, the past (until yesterday) stays on the old day

  • dueMonth
    integer

    Due month (yearly)

  • weekday
    integer

    Weekday, 0 = Sunday ... 6 = Saturday (weekly)

  • date
    string

    Single date (once)

  • node
    string

    Name of the savings pot. Empty = uses the name

  • yearlyMode
    "spread" | "warn"

    Yearly bill: spread sets aside 1/12 per cycle; warn only warns ahead

  • active
    boolean

    false = paused, not in the cycle

  • endsOn
    string

    Installments: date of the last one. null = never ends

  • startsOn
    string

    First date it applies. Before that it didn't exist. On create, empty (missing or null) = the first occurrence that has not happened yet (never an infinite past); send a past date to charge the past. On update, null = always. With installmentsTotal (and no endsOn) it is the date of installment 1 and the last installment is calculated from it

  • category
    string

    Category by name (uppercase). Prefer the app's fixed ones (see the guide; stored names are Portuguese): MORADIA, SAÚDE, FILHOS, ASSINATURAS, CARTÕES... A new name creates a category of the person's own. Card bills go in CARTÕES

  • installmentsTotal
    integer

    Installments: the purchase's total count (with endsOn shows 'installment 5/48')

  • countsAsFixed
    boolean

    Fixed cost, marked by the person. No end: default true. With an end date (installments): default false; true for a long contract (e.g. land). One-time is never fixed

  • owner
    string

    Who pays: a member's email (see get_settings → members). null = the household (everyone)

  • shift
    "before" | "after"

    Income and investment: if the date falls on a weekend or holiday, before moves it earlier, after moves it later, null = stays. Only monthly/yearly. Bills ignore it: they always move to the next business day

create_items

Creates several entries at once (e.g. importing a spreadsheet). Same rules as create_item.

Parâmetros

  • itemsobrigatório
    object[] (max 200)
  • items[].nameobrigatório
    string

    Name of the bill, income or investment

  • items[].kindobrigatório
    "bill" | "provision" | "income" | "investment"

    bill = a bill paid on a date; income = income (monthly salary, or once: 13th salary, bonus, vacation pay); investment = a repeating investment contribution (not spending); provision = old type

  • items[].frequencyobrigatório
    "monthly" | "weekly" | "yearly" | "once"

    monthly, weekly, yearly or once (one time)

  • items[].amountobrigatório
    number

    Amount in reais. For weekly, the amount of each week

  • items[].variable
    boolean

    An amount that changes (electricity, water, card)

  • items[].cardId
    uuid

    Paid by card: id of the credit card bill entry (e.g. a gym charged to the Nubank card). It doesn't add to the cycle's bills, because the money leaves with the card bill; it stays in the fixed cost. null removes it

  • items[].businessDay
    integer

    Monthly on the Nth business day (e.g. salary on the 5th business day = 5), instead of dueDay. The date changes every month (no Saturdays, Sundays or national holidays). null goes back to dueDay

  • items[].dueDay
    integer

    Due day (monthly bills, and yearly). When changed, the past (until yesterday) stays on the old day

  • items[].dueMonth
    integer

    Due month (yearly)

  • items[].weekday
    integer

    Weekday, 0 = Sunday ... 6 = Saturday (weekly)

  • items[].date
    string

    Single date (once)

  • items[].node
    string

    Name of the savings pot. Empty = uses the name

  • items[].yearlyMode
    "spread" | "warn"

    Yearly bill: spread sets aside 1/12 per cycle; warn only warns ahead

  • items[].active
    boolean

    false = paused, not in the cycle

  • items[].endsOn
    string

    Installments: date of the last one. null = never ends

  • items[].startsOn
    string

    First date it applies. Before that it didn't exist. On create, empty (missing or null) = the first occurrence that has not happened yet (never an infinite past); send a past date to charge the past. On update, null = always. With installmentsTotal (and no endsOn) it is the date of installment 1 and the last installment is calculated from it

  • items[].category
    string

    Category by name (uppercase). Prefer the app's fixed ones (see the guide; stored names are Portuguese): MORADIA, SAÚDE, FILHOS, ASSINATURAS, CARTÕES... A new name creates a category of the person's own. Card bills go in CARTÕES

  • items[].installmentsTotal
    integer

    Installments: the purchase's total count (with endsOn shows 'installment 5/48')

  • items[].countsAsFixed
    boolean

    Fixed cost, marked by the person. No end: default true. With an end date (installments): default false; true for a long contract (e.g. land). One-time is never fixed

  • items[].owner
    string

    Who pays: a member's email (see get_settings → members). null = the household (everyone)

  • items[].shift
    "before" | "after"

    Income and investment: if the date falls on a weekend or holiday, before moves it earlier, after moves it later, null = stays. Only monthly/yearly. Bills ignore it: they always move to the next business day

propose_item

Proposes a bill, income or investment for the user to review and confirm interactively with buttons in the chat, instead of directly saving it to the database. Use this when the user is asking for suggestions, planning, or asking how to log a new bill. The app renders an interactive confirmation card with [Criar lançamento] and [Descartar] buttons.

Parâmetros

  • nameobrigatório
    string

    Name of the bill, income or investment

  • kindobrigatório
    "bill" | "provision" | "income" | "investment"

    bill = a bill paid on a date; income = income (monthly salary, or once: 13th salary, bonus, vacation pay); investment = a repeating investment contribution (not spending); provision = old type

  • frequencyobrigatório
    "monthly" | "weekly" | "yearly" | "once"

    monthly, weekly, yearly or once (one time)

  • amountobrigatório
    number

    Amount in reais. For weekly, the amount of each week

  • variable
    boolean

    An amount that changes (electricity, water, card)

  • cardId
    uuid

    Paid by card: id of the credit card bill entry (e.g. a gym charged to the Nubank card). It doesn't add to the cycle's bills, because the money leaves with the card bill; it stays in the fixed cost. null removes it

  • businessDay
    integer

    Monthly on the Nth business day (e.g. salary on the 5th business day = 5), instead of dueDay. The date changes every month (no Saturdays, Sundays or national holidays). null goes back to dueDay

  • dueDay
    integer

    Due day (monthly bills, and yearly). When changed, the past (until yesterday) stays on the old day

  • dueMonth
    integer

    Due month (yearly)

  • weekday
    integer

    Weekday, 0 = Sunday ... 6 = Saturday (weekly)

  • date
    string

    Single date (once)

  • node
    string

    Name of the savings pot. Empty = uses the name

  • yearlyMode
    "spread" | "warn"

    Yearly bill: spread sets aside 1/12 per cycle; warn only warns ahead

  • active
    boolean

    false = paused, not in the cycle

  • endsOn
    string

    Installments: date of the last one. null = never ends

  • startsOn
    string

    First date it applies. Before that it didn't exist. On create, empty (missing or null) = the first occurrence that has not happened yet (never an infinite past); send a past date to charge the past. On update, null = always. With installmentsTotal (and no endsOn) it is the date of installment 1 and the last installment is calculated from it

  • category
    string

    Category by name (uppercase). Prefer the app's fixed ones (see the guide; stored names are Portuguese): MORADIA, SAÚDE, FILHOS, ASSINATURAS, CARTÕES... A new name creates a category of the person's own. Card bills go in CARTÕES

  • installmentsTotal
    integer

    Installments: the purchase's total count (with endsOn shows 'installment 5/48')

  • countsAsFixed
    boolean

    Fixed cost, marked by the person. No end: default true. With an end date (installments): default false; true for a long contract (e.g. land). One-time is never fixed

  • owner
    string

    Who pays: a member's email (see get_settings → members). null = the household (everyone)

  • shift
    "before" | "after"

    Income and investment: if the date falls on a weekend or holiday, before moves it earlier, after moves it later, null = stays. Only monthly/yearly. Bills ignore it: they always move to the next business day

  • reason
    string

    Short explanation of why this entry is proposed

propose_change

Proposes ONE change that eases this week or this cycle, shown in the chat as a card with [Aplicar] and [Descartar]; nothing is saved until the person taps Aplicar. Kinds: borrow_week (take an amount from the following week; in the last week, from the next cycle), skip_bill (skip a bill that isn't fixed cost, this cycle only; actionKey from get_cycle), skip_investment (skip this cycle's contribution; offer it only next to other options, never alone), spread_yearly (a yearly bill starts setting aside 1/12 per cycle; itemId from list_items). One call per option: to offer two ways out, call it twice.

Parâmetros

  • kindobrigatório
    "borrow_week" | "skip_bill" | "skip_investment" | "spread_yearly"
  • amount
    number

    borrow_week: amount in reais

  • weekNumber
    integer

    borrow_week: the week that receives the money (default: today's week)

  • actionKey
    string

    skip_bill / skip_investment: the actionKey from get_cycle

  • itemId
    uuid

    spread_yearly: the yearly bill's id

  • reason
    string

    One short sentence: why this option

update_item

Changes an entry's fields. Send only what changes. Use active=false to pause.

Parâmetros

  • idobrigatório
    uuid
  • name
    string

    Name of the bill, income or investment

  • kind
    "bill" | "provision" | "income" | "investment"

    bill = a bill paid on a date; income = income (monthly salary, or once: 13th salary, bonus, vacation pay); investment = a repeating investment contribution (not spending); provision = old type

  • frequency
    "monthly" | "weekly" | "yearly" | "once"

    monthly, weekly, yearly or once (one time)

  • amount
    number

    Amount in reais. For weekly, the amount of each week

  • variable
    boolean

    An amount that changes (electricity, water, card)

  • cardId
    uuid

    Paid by card: id of the credit card bill entry (e.g. a gym charged to the Nubank card). It doesn't add to the cycle's bills, because the money leaves with the card bill; it stays in the fixed cost. null removes it

  • businessDay
    integer

    Monthly on the Nth business day (e.g. salary on the 5th business day = 5), instead of dueDay. The date changes every month (no Saturdays, Sundays or national holidays). null goes back to dueDay

  • dueDay
    integer

    Due day (monthly bills, and yearly). When changed, the past (until yesterday) stays on the old day

  • dueMonth
    integer

    Due month (yearly)

  • weekday
    integer

    Weekday, 0 = Sunday ... 6 = Saturday (weekly)

  • date
    string

    Single date (once)

  • node
    string

    Name of the savings pot. Empty = uses the name

  • yearlyMode
    "spread" | "warn"

    Yearly bill: spread sets aside 1/12 per cycle; warn only warns ahead

  • active
    boolean

    false = paused, not in the cycle

  • endsOn
    string

    Installments: date of the last one. null = never ends

  • startsOn
    string

    First date it applies. Before that it didn't exist. On create, empty (missing or null) = the first occurrence that has not happened yet (never an infinite past); send a past date to charge the past. On update, null = always. With installmentsTotal (and no endsOn) it is the date of installment 1 and the last installment is calculated from it

  • category
    string

    Category by name (uppercase). Prefer the app's fixed ones (see the guide; stored names are Portuguese): MORADIA, SAÚDE, FILHOS, ASSINATURAS, CARTÕES... A new name creates a category of the person's own. Card bills go in CARTÕES

  • installmentsTotal
    integer

    Installments: the purchase's total count (with endsOn shows 'installment 5/48')

  • countsAsFixed
    boolean

    Fixed cost, marked by the person. No end: default true. With an end date (installments): default false; true for a long contract (e.g. land). One-time is never fixed

  • owner
    string

    Who pays: a member's email (see get_settings → members). null = the household (everyone)

  • shift
    "before" | "after"

    Income and investment: if the date falls on a weekend or holiday, before moves it earlier, after moves it later, null = stays. Only monthly/yearly. Bills ignore it: they always move to the next business day

delete_item

Deletes an entry. It isn't gone for good: it goes to the history and can be undone with undo_change. Before deleting something that looks duplicated, compare name, day and amount and ask the person: two similar entries on different days are NOT duplicates. To pause, prefer update_item with active=false.

Parâmetros

  • idobrigatório
    uuid

delete_items

Deletes several entries at once (up to 500), for example the one-per-month entries created by mistake for a plan that should be a single entry. They aren't gone for good: they go to the history and each can be undone with undo_change. Show the person what will be deleted and wait for them to confirm. Compare names, days and amounts first: similar entries on different days are NOT duplicates.

Parâmetros

  • idsobrigatório
    uuid[] (max 500)

rename_category

Renames a category in every entry. Using another category's name merges both. Empty to = deletes it (entries end up without a category).

Parâmetros

  • fromobrigatório
    string
  • toobrigatório
    string

audit_categories

Audits the household's entries and finds categorization discrepancies without calling external AI (zero cost): 1) detects items in OUTROS that match known semantic keywords, 2) detects conflicting categories for entries with similar names across the household (e.g. partner logged 'Obra' in one category and 'Reforma' in another, or one logged in MORADIA and another in OUTROS).

Parâmetros

Sem parâmetros.

docs.groups.projects

list_projects

Lists every project (a named plan for a life event: trip, wedding, renovation, party) with its summary: ring (paid vs budget or planned), next payment due, days to the event, planned amount per cycle and budget alert. A project only groups entries so the person sees insight on those expenses; it never changes the cycle math.

Parâmetros

Sem parâmetros.

get_project

One project with its summary and its entries.

Parâmetros

  • idobrigatório
    uuid

create_project

Creates a project (a named plan grouping entries). kind is trip, wedding, renovation, party or blank. budget is optional and only a reference (it never blocks anything); eventOn is the optional event date (YYYY-MM-DD).

Parâmetros

  • nameobrigatório
    string

    Name of the plan (e.g. Trip to Japan)

  • kindobrigatório
    "trip" | "wedding" | "renovation" | "party" | "blank"

    What kind of life event it is

  • budget
    number

    Optional budget in reais (reference only)

  • eventOn
    string

    Optional event date (YYYY-MM-DD)

update_project

Changes a project. Send only what changes. budget or eventOn as null clears it.

Parâmetros

  • idobrigatório
    uuid
  • name
    string
  • kind
    "trip" | "wedding" | "renovation" | "party" | "blank"
  • budget
    number

    Budget in reais (reference only). null clears it

  • eventOn
    string

    Event date. null clears it

close_project

Marks a project closed (it lives in a collapsed section) or reopens it. Deleting is separate (delete_project).

Parâmetros

  • idobrigatório
    uuid
  • closedobrigatório
    boolean

    true closes, false reopens

set_items_project

Attaches many entries to projects at once (up to 500): { itemId, projectId }. projectId null detaches. Only one-time and installment entries can join a project (recurring monthly, weekly and yearly are refused); an entry must have a date. Closed, deleted and foreign projects are refused. Prefer it over repeating a single attach.

Parâmetros

  • itemsobrigatório
    object[] (max 500)
  • items[].itemIdobrigatório
    uuid
  • items[].projectIdobrigatório
    uuid

    The project, or null to detach

delete_project

Deletes a project (soft delete: its entries keep their project and it can be undone with undo_change). Show the person what you will delete and wait for them to confirm.

Parâmetros

  • idobrigatório
    uuid

Pagamentos

mark_done

Marks a cycle action as done (bill paid, money set aside, investment made). Use payDate and actionKey from get_cycle. For amounts that change, send paidAmount.

Parâmetros

  • payDateobrigatório
    string
  • actionKeyobrigatório
    string
  • paidAmount
    number

    Real amount paid, in reais

  • doneBy
    string

    Who did it. Default: the AI's name

  • status
    "paid" | "provisioned" | "skipped" | "pending"

    paid = paid (default); provisioned = money set aside, not paid yet; skipped = skip this month only; pending = to pay with a different amount this month (send paidAmount)

unmark_done

Undoes an action marked as done.

Parâmetros

  • payDateobrigatório
    string
  • actionKeyobrigatório
    string

record_payments

Records many payments of ONE entry at once, by month (e.g. a financing statement: '2022-03: R$ 1,850.12'). Use it after create_item for a plan that already has history, instead of creating one entry per month. Each month becomes 'paid' with the amount given; months with no installment are returned in `skipped`. Up to 600 months per call. Only bills and investments (not income).

Parâmetros

  • itemIdobrigatório
    uuid
  • paymentsobrigatório
    object[] (max 600)
  • payments[].monthobrigatório
    string
  • payments[].paidAmountobrigatório
    number

    Real amount paid, in reais

  • payments[].paidOn
    string

    The day it was paid, if the statement says. Default: the due date

  • doneBy
    string

    Who did it. Default: the AI's name

confirm_incomes

Says how much will really come in for each income of a cycle (variable income). No 'date' = the next cycle. Use the income's name (e.g. 'Salary 1'). Amounts in reais.

Parâmetros

  • date
    string

    Any day inside the cycle. Default: the next cycle

  • amountsobrigatório
    object[]
  • amounts[].nameobrigatório
    string
  • amounts[].amountobrigatório
    number

Importar planilha

import_spreadsheet

Step 1 of importing a spreadsheet or statement. YOU read the file; send its rows here and the server decides how they fit Fazmie: one entry per thing (not one per month), installment plans, fixed or variable amounts, the app's categories, and which rows are payments already made. Nothing is saved yet. Send rows in chunks of up to 400 (call again with the same importId; do not resend a chunk), with done=false while more rows are coming and done=true on the last chunk to get the review. Show the review to the person, fix what they say with `overrides` in commit_import, then call commit_import.

Parâmetros

  • importId
    uuid

    From the first call. Omit it to start a new import

  • rows
    object[] (max 400)
  • rows[].nameobrigatório
    string

    The name as written in the sheet (keep '3/12' if it is there)

  • rows[].amountobrigatório
    number

    Amount in reais, positive

  • rows[].dateobrigatório
    string

    The due date if the sheet has it; otherwise the day it was paid or received. YYYY-MM-DD

  • rows[].paid
    boolean

    true if this row was already paid / received

  • rows[].paidAmount
    number

    Amount really paid, if different from amount

  • rows[].paidOn
    string

    The day it was paid, if the sheet has it apart from date

  • rows[].type
    "expense" | "income" | "investment"

    Default expense

  • rows[].category
    string

    The sheet's category column, as written

  • rows[].installment
    string

    '3/12', if the sheet has it in its own column

  • done
    boolean

    true on the last chunk: returns the full review

commit_import

Step 2: saves what import_spreadsheet proposed, after the person agreed. Creates the entries and records the payments already made. `overrides` fix single entries by ref (name, category, amount, dueDay, variable, countsAsFixed, skip). Entries marked SKIPPED (already in the app) are not created unless an override says skip=false. Returns the created ids: pass them to delete_items to undo the whole import.

Parâmetros

  • importIdobrigatório
    uuid
  • overrides
    object[] (max 500)
  • overrides[].refobrigatório
    string
  • overrides[].name
    string
  • overrides[].category
    string
  • overrides[].amount
    number
  • overrides[].dueDay
    integer
  • overrides[].variable
    boolean
  • overrides[].countsAsFixed
    boolean
  • overrides[].skip
    boolean

Ajustes do ciclo

update_settings

Changes settings for every cycle. Send only what changes. Amounts in reais.

Parâmetros

  • cycleMode
    "income" | "day"

    income = the cycle starts when a monthly income comes in; day = a fixed day (no fixed salary)

  • cycleIncomeId
    uuid

    income mode: id of the income entry that starts the cycle (list_items, kind = income)

  • paydayDay
    integer

    day mode: the fixed day the cycle starts

  • investAmount
    number
  • referenceWeekly
    number

set_cycle_override

Sets the income total and/or investment for one cycle only (13th salary, bonus, vacation pay). payDate is the real payday (see get_cycle). Send both as null to remove.

Parâmetros

  • payDateobrigatório
    string
  • salary
    number
  • investAmount
    number
  • note
    string

docs.groups.delivery

list_content_deliveries

Lists all communication and notification templates (morning summary, payday, friday close, partner actions) with their active status, delivery channels (push, email, whatsapp) and localized copies.

Parâmetros

Sem parâmetros.

update_content_delivery

Updates the channels (push, email, whatsapp), the pause (active) or the localized copy of a message, with no deploy. Copy can only be edited for cycle_payday ({amount}, {date}), monday_plan ({amount}) and friday_week_close ({amount}); the other messages are built by the system (channels and pause only). partner_action only has push.

Parâmetros

  • idobrigatório
    string

    ID of the message template, e.g. morning_summary, cycle_payday, friday_week_close, partner_action

  • channels
    "push" | "email" | "whatsapp"[]

    Active delivery channels for this notification

  • active
    boolean

    Whether this notification template is active or paused

  • copyPt
    object

    Portuguese copy template

  • copyEn
    object

    English copy template

Histórico

undo_change

Undoes a change from the history (id from get_changes): puts the entry or the mark back as it was. Show the person what you will undo and wait for them to confirm.

Parâmetros

  • idobrigatório
    uuid

O guia que a IA recebe

Ao conectar, a IA recebe este manual. É assim que ela aprende as regras do Fazmie.

Ver o guia completo
FAZMIE GUIDE (always up to date)

WHAT IT IS
Fazmie organizes a household's money. You only see and change the household that authorized you.

HOW MONEY IS PLANNED
- By cycle: from the day the income that starts the cycle comes in until the day before the next one. It is not the calendar month.
- A salary is an income entry like any other (kind = income), usually monthly (frequency = monthly).
  13th salary, bonus and vacation pay are one-time income (frequency = once). The cycle's money is the sum of the income in it.
- Income or bill on the "Nth business day" (e.g. salary on the 5th business day): businessDay instead of dueDay. The date changes every month.
- The app's fixed categories (every household has them; nobody renames or deletes them). Their stored names are Portuguese
  (use them as written). Bills: MORADIA (housing), ALIMENTAÇÃO (food), TRANSPORTE (transport), SAÚDE (health), EDUCAÇÃO (education),
  FILHOS (children), PETS, ASSINATURAS (subscriptions), LAZER (leisure), IMPOSTOS (taxes), DÍVIDAS (debts), CARTÕES (credit card
  bills), OUTROS (other). Income: SALÁRIO (salary), RENDA EXTRA (extra income), 13º E BÔNUS (13th and bonus), RENDIMENTOS (returns),
  REEMBOLSO (refund). Investment: INVESTIMENTO. Use a fixed one whenever it fits; a new name creates a category of the person's own
  (e.g. THIAGO, CNPJ).
- Paid by card (cardId): a bill charged to a credit card (subscription, gym) is linked to the card's bill. It doesn't add to the
  cycle's bills (the money leaves with the card bill) and the card bill shows "includes ...". It still shows in the list
  (marked "cleared" when the charge hits the card; paying the bank is marking the card bill paid). When adding a subscription, ask if it's
  on a card. Changing cardId (or sending null) applies from today on: past months stay on the previous card.
- A bill that falls on a weekend or holiday moves by itself to the next business day (the law); there is no choice. shift
  (before/after) is only for income and investments: what to do if the date falls on a weekend or holiday, monthly and yearly.
- Amounts in Brazilian reais (R$). In tools, dates are YYYY-MM-DD.
- A bill's states: to pay, overdue, provisioned (the money was already set aside) and paid. Income doesn't have these states.
- Free spending: what's left of the income after bills and the investment, split into weeks (freeSpendingWeeks in get_cycle).
  A week is NOT a bill: there's no "paid week" or "unpaid week". It ends by itself on its last day. Then the person says in the app
  how it closed (zeroed, leftover or short; closedAs). A week balance can go negative (a shortfall bigger than the next
  week leaves it negative). In the cycle's last week a shortfall is taken from the next cycle instead, as a normal
  one-time entry there. "provisioned" = the week's money was set aside in a separate pot. "balance" is
  the BALANCE the person says they still have (the card; they update it by hand to "hold back a bit"); "planned" is the calculated
  share of free spending. The balance doesn't go into any calculation. Never offer to mark a week as paid. For patterns, use
  get_week_events.
  The app does NOT record day-to-day spending (on purpose): never say "no spending recorded". The person can change a week's amount
  by hand; don't invent a reason for a different amount. Only mention borrowing ("borrow") that shows up in get_week_events, with its date.
- Fixed cost: the sum of entries marked as fixed cost (countsAsFixed), per month. Income is never a fixed cost.
- LONG PLANS AND FINANCING (important). A financing, loan or any plan with many installments (even 400 of them, with years of
  history) is ONE entry, never one entry per month: create_item {kind: bill, frequency: monthly, dueDay, installmentsTotal: N,
  startsOn: the date of installment 1, amount: the usual installment}. The last installment and the "installment 57/420"
  numbering follow from that. Installments before the app's history start count as paid by themselves. To keep the REAL amounts
  and dates from a statement, send them all in ONE call to record_payments (month + paid amount, up to 600 per call): do not
  call mark_done once per month. If entries were already created one per month by mistake, create the single plan, record
  their payments with record_payments, then remove the extras with delete_items (one call, up to 500, undoable); show the
  person what will be removed and wait for the OK first.
- IMPORTING A SPREADSHEET OR STATEMENT (many rows): never create entries one by one. YOU read the file; the server classifies.
  1) import_spreadsheet: send the rows (name, amount, date, paid, category column, type) in chunks of up to 400, reusing the
  importId, with done=false until the last chunk (done=true returns the review). Send the due date when the sheet has it, else
  the payment date; keep "3/12" in the name. Use type income / investment when the sheet says so. Never resend a chunk.
  2) Show the person the review: counts, what needs attention, and the categories the server was not sure about. Nothing is
  saved yet. 3) commit_import with the importId and overrides (by ref) for what the person corrected, e.g. category or skip.
  It creates the entries and records the payments already made. Entries already in the app are skipped. To undo, delete_items
  with the returned createdIds. The server groups by name: the same name on different days of a month stays separate.
- Many AI apps stop after about 60 tool calls in one turn. Prefer the bulk tools (create_items, record_payments, delete_items,
  set_items_project) over repeating a single-item tool.
- PROJECTS (grouping only). A project is a named plan for a life event (trip, wedding, renovation, party) that only
  GROUPS entries so the person sees insight on those expenses; it never changes the cycle math. Only one-time and
  installment BILLS can join a project (income, investment, and recurring monthly, weekly and yearly entries cannot);
  every project entry is a normal entry with a date. A budget is only a reference (it never blocks anything).

TOOLS
See:
- get_cycle: the current cycle or the one of a date (overdue, what's due, what was paid, fixed cost). Start here.
- get_week_events: how each free-spending week closed (zeroed, leftover, short) and when the person took money from the next week (from the next cycle, in the last week). Read-only: the person answers in the app.
- get_changes: what changed in the last days (who, when, what). undo_change undoes a change by id (confirm first).
- get_investments: the household's net worth (already had + contributions − withdrawals + returns) and each investment's contributions and withdrawals.
- list_items: every entry.
- get_settings: the cycle (which income starts it), investment and who is in the household. Salaries: see list_items with kind = income.
- get_guide: this guide.
Entries:
- create_item: adds a bill, an income OR an investment (once, monthly, weekly, yearly or in installments; only bills have installments).
  An investment is an entry (kind = investment): a repeating contribution, taken before free spending and not counted as spending or fixed cost. Didn't invest in a cycle? mark_done with status skipped. Invested another amount? mark_done with paidAmount.
- create_items: adds several at once (e.g. the person sends their spreadsheet).
- propose_item: proposes an entry with an interactive confirmation card for the person to review before saving.
- propose_change: proposes ONE change for this cycle as a card the person applies (take from the next week, skip a
  bill that isn't fixed, skip this cycle's contribution, set a yearly bill aside per cycle). Nothing is saved until
  they tap Aplicar. When the Home sends the person to ease a week or a cycle, offer one or two of these, never fixed
  bills, and the contribution only as one option among others.
- record_payments: records many payments of ONE entry by month (a financing statement, a card history) in one call.
- update_item: changes an entry (amount, day, category, fixed cost, shift...).
- delete_item: deletes an entry (can be undone). First compare name, day and amount: the same name on different days
  (e.g. child support on the 5th and the 15th) is NOT a duplicate. When in doubt, ask and don't delete.
- delete_items: deletes several entries at once (undoable). Confirm with the person first.
- rename_category: renames a category in every entry.
- audit_categories: audits household entries and flags categorization discrepancies (e.g. items in OUTROS matching known keywords, or conflicting categories for similar names).
Marking:
- mark_done: marks a cycle bill as paid (or provisioned), with the amount paid. A free-spending week: provisioned only.
- unmark_done: undoes the mark.
Projects:
- list_projects: every project with its summary (ring, next payment due, days to the event, planned amount per cycle, budget alert).
- get_project: one project with its summary and its entries.
- create_project: a named plan (kind trip, wedding, renovation, party or blank; optional budget and event date).
- update_project: changes a project (budget or eventOn as null clears it).
- close_project: closed=true closes it (collapsed section), false reopens it.
- set_items_project: attaches MANY entries at once ({itemId, projectId}; null detaches). Only one-time and installment
  bills can join; prefer it over repeating a single attach.
- delete_project: deletes a project (its entries keep their project; undoable).
Settings and variable income:
- update_settings: changes settings (fixed cost goal, which income starts the cycle...). investAmount is the old way: prefer an entry with kind = investment.
- confirm_incomes: confirms how much really came in during a cycle (variable salary).
- set_cycle_override: changes the income total or the investment for one cycle only.
Content delivery and notifications:
- list_content_deliveries: lists all configured notifications and communication templates (morning summary, payday, friday wrap-up, partner actions), with active channels (push, email, whatsapp) and localized copy.
- update_content_delivery: updates a notification template's active status, delivery channels (push, email, whatsapp) and localized copy (title, body in pt and en) without needing code deploys.
Testing:
- simulate: "what if" without changing anything (e.g. what if I cut this bill?).

RULES
- Talk in the person's language, with short sentences.
- Before deleting, changing amounts or marking several bills, show what you will do and wait for the person to confirm.
- "I paid X": find the bill in the cycle with get_cycle and use mark_done with the amount said.
- Never show the access key or save it in a public file.