Skip to content

Releases: mathbeal/avenir-mcp

v0.8.0

Choose a tag to compare

@mathbeal mathbeal released this 25 Oct 05:17
a4c758b

get_budget_vs_actual now says what the months before carried over: each category gets a carried_over field, so an overspend is read against what was really available, not only against the month's budget (#163).

The documentation home page has a 20-second tour video, linked from the README (#169), and the demo card names its amounts plainly: what is available, what was budgeted and what is left from earlier months (#168, #170). Links to web.archive.org are replaced by YNAB's own API changelog (#165).

Security: fastmcp 4.1.2 in the plugin lock (#166). CI now fails a release pull request whose number is not the one git-cliff computes (#167).

No change to tool names or existing arguments. See CHANGELOG.md.

v0.7.1

Choose a tag to compare

@mathbeal mathbeal released this 24 Oct 17:12
18a3cf3

The confirmation before move_money and set_category_budget now says what the category will have available, signed, wherever that differs from what is budgeted (#157). get_spending_trends reads the months up to the current one instead of months budgeted ahead (#151), and reconcile_account looks for duplicates from the plan's day rather than the machine's clock (#161).

Security: fastmcp 4.1.2 (#154), and every lock file in the repository is now audited in CI (#160). avenir-mcp can also run in a container, from a Dockerfile at the root (#158).

The README now starts with the install and what you can ask, with a new demo (#155); tool descriptions explain their parameters and point to the right sibling tool (#153).

No change to tool names or arguments. See CHANGELOG.md.

v0.7.0

Choose a tag to compare

@mathbeal mathbeal released this 22 Oct 16:15
5636b46

Two new ways to install: Claude Desktop installs avenir-mcp from one file, the .mcpb extension (#108), and Claude Code installs it as a plugin, read-only and locked (#143). Cursor, LM Studio and VS Code get a one-click install link (#144); updating the extension is the same drop as installing it (#145).

Also: fastmcp 4.1.1 (#140), certifi and vite raised past their advisories (#141), and one place now records that an undo was applied (#135).

No change to tool names or arguments. See CHANGELOG.md.

v0.6.0

Choose a tag to compare

@mathbeal mathbeal released this 10 Oct 15:07
f23df9b

Two new tools and one new kind of split: list_payees shows the labels a bank import left, and rename_payee cleans one up (#111); split_transaction can now split a transfer that leaves the budget for a tracking account (#112). avenir-mcp states which version of YNAB's API it is built and tested against (#99), and Python 3.15 is supported (#61).

Also: transient YNAB failures are retried, but only for requests that cannot create a duplicate (#127); the package ships the PEP 561 py.typed marker its classifier promises (#113).

No change to tool names or arguments. Python code that imported tool functions from avenir_mcp.server should import them from their own module: server now exports its entry points only (#119). See CHANGELOG.md.

v0.5.0

Choose a tag to compare

@mathbeal mathbeal released this 02 Oct 16:05
780f896

Five new tools for reading the plan over time: get_runway says how many months the money set aside would last (#91); get_savings_rate says how much of the income was kept, month by month (#92); get_underfunded_targets says which targets still need money this month (#93); get_debt_payoff_plan says when the debts would be paid off, avalanche or snowball (#94); get_age_of_money shows YNAB's Age of Money month by month, and its trend (#95).

Also: the site and the repository show a card when shared (#96). No breaking change. See CHANGELOG.md.

v0.4.0

Choose a tag to compare

@mathbeal mathbeal released this 02 Oct 04:56
877b4e2

New tool: get_net_worth_trend shows, month by month, what the accounts hold, what is owed on the debt accounts and the net worth (#89).

Breaking: the HTTP transport always requires a token. Without AVENIR_MCP_HTTP_TOKEN, the server makes one at start-up and prints it once on stderr; a read-only HTTP setup without a token gets 401 until its client sends it. stdio is unchanged.

Also: names in confirmation questions stay on one line; the initialize answer reports avenir-mcp's version; fastmcp 4.0.10. The build is reproducible: the published wheel and sdist can be rebuilt bit for bit (see SECURITY.md). The documentation moved to https://avenir-mcp.pages.dev/avenir-mcp/. See CHANGELOG.md.

v0.3.0

Choose a tag to compare

@mathbeal mathbeal released this 01 Oct 17:17

At start-up the server checks, at most once a day, whether a newer release is on PyPI, and tells the agent so it can mention it; it never upgrades itself. The check is turned off with AVENIR_MCP_NO_UPDATE_CHECK=1, DO_NOT_TRACK=1 or in CI (#66). On a read-only server, no tool description names a hidden write tool. See CHANGELOG.md.

v0.2.1

Choose a tag to compare

@mathbeal mathbeal released this 01 Oct 10:20
a0583e3

Tool descriptions now say when to use each report and name their alternatives; on a read-only server they no longer point to write tools that are not registered (#63). A malformed pagination cursor is refused cleanly instead of failing in decoding (#60). See CHANGELOG.md.

avenir-mcp 0.2.0

Choose a tag to compare

@mathbeal mathbeal released this 29 Sep 20:30
b1225d3

First beta: tool and argument names may still change until 1.0.

Added

  • Set_category_target sets, changes or removes a category's target (#55)
  • Find_recurring_charges lists subscriptions and other monthly charges with their yearly cost (#54)
  • A "YNAB API terms: self-checked" badge, dated, that turns red when YNAB changes them (#53)
  • List_accounts says whether each bank link works and when it was reconciled (#45)
  • Flag_transactions marks what the user should check, confirmed and undoable (#47)
  • Import_transactions brings in the bank's latest transactions, as Import does (#37)
  • Move_money covers an overspent category in one confirmed, undoable step (#36)
  • The guide is also the server's instructions (#29)

Documentation

  • Make avenir-mcp findable where people look, within YNAB's naming rules (#52)
  • The API coverage page also lists what each tool reads and writes (#48)
  • Show the demo budget in each page's language (#42)
  • The home page chart shows what is left in each category, not a share used (#38)
  • README shows the last commit and links to the site in each language (#23)
  • French, German, Dutch and Spanish read in full against the source and DeepL (#31)
  • Say plan where YNAB now says plan, in the code and in every language (#28)
  • A privacy page says what avenir-mcp keeps, for how long, and how to erase it (#27)
  • The notice that avenir-mcp is unofficial uses YNAB's exact wording (#26)
  • The site in Dutch (#20)
  • The site in German (#19)
  • The README opens on an ordinary question, not on an attack (#25)
  • Two French headings that a back-translation found ambiguous (#22)
  • Spanish pages read as Spanish, not as English in Spanish words (#21) (#32)
  • Roadmap, from a document to the year's schedules (#17)
  • The README shows a real conversation and the forecast chart

Fixed

  • Refuse a credit card payment category on a transaction, which YNAB ignores (#59)
  • Set_category_target says what YNAB does on credit card and loan categories (#57)
  • Configure switches one write gate instead of piling up filters (#51)
  • Refuse a NUL character in text sent to YNAB, before asking the user (#46)
  • Create_transactions refuses what YNAB refuses, before asking the user (#34)
  • The privacy pages say what the journal really keeps (#33)
  • Bound months_count and suggest_categories' limit; README links reach the site (#18)
  • A schedule covers its payee's longer bank labels in the forecast
  • Stay well within YNAB's rate limit, and never retry a 429

Internal

  • Remove the 42 pylint suppressions that silenced nothing (#44)
  • Check that docstrings match signatures, order included, tests documented (#49)
  • Pre-commit runs ruff, typos and zizmor as CI does (#35)
  • Check every link of the README and the docs, on pull requests and weekly (#24)
  • Snyk ignores two http-cache-semantics flaws in the docs build
  • Python 3.15 warns instead of turning pull requests red

Performance

  • Normalise each payee once when looking for duplicates (#41)
  • Pair transfers by amount instead of comparing every two pending (#40)
  • Benchmark the computing functions on a five-year plan (#39)

Tests

  • Every rule YNAB states on what a tool sends has its test, or a reason (#58)
  • Fuzz what comes from outside, and name a journal line that is not text (#50)

avenir-mcp 0.1.0

Choose a tag to compare

@mathbeal mathbeal released this 27 Sep 06:46

Added

  • Forecast_balance projects YNAB's scheduled transactions
  • List_scheduled_transactions says what falls due between two dates
  • Find_transactions filters by category and by payee
  • Find_transactions finds a payment by dates, amount and account
  • Split_transaction splits one transaction across categories, after a yes
  • Budget usage names each category's group, and the home chart shows it
  • JSON logs for a log collector, and no financial data in any log
  • The HTTP transport admits only this machine, and a token for writes
  • Https-only API address, a token file, and confirmation only in the client
  • Describe every field of every answer, and leave splits and internal categories out
  • Evaluate Avenir with a real agent on a demo budget
  • Resources and prompts
  • Confirm every remaining write, and quiet diagnostics
  • Confirm and undo changes to budgeted amounts
  • Compact month answers in currency units, and month validation
  • Read-only by default, every tool annotated
  • Forecast the balance month by month
  • Reconcile an account with the bank's balance
  • Rename or move a category after a confirmed preview
  • Apply categories after a confirmed preview, and undo them
  • Suggest categories for all pending transactions in one call
  • Recognise a merchant across differently dated bank labels
  • First public version of avenir-mcp

Changed

  • The forecast's averages can leave out more payees
  • YNAB's plans: the client calls /plans, the tools say plan
  • Structured data is a pydantic model, and docstrings follow the Google style
  • Call the project avenir-mcp everywhere
  • Smaller confirmation and forecast functions, as Sonar suggested
  • Drop the tools that safer ones replace

Documentation

  • YNAB's references, and budgets renamed plans
  • Eleven tasks pass with Sonnet, and the comparison keeps compatible models
  • The counts after split_transaction and find_transactions, 19 tools
  • Find_transactions in the features and the counts
  • Split_transaction in the guides, the limits and the counts
  • The README shows a badge for each kind of check
  • The name avenir-mcp is set apart from the prose
  • The roadmap lists the newest milestone first
  • The home page's categories follow the page's language
  • A chart of August on the home page, drawn from a real answer
  • The publisher's name and the EU AI Act in the legal notice
  • Legal notice, YNAB's required wording, intended use, and signed-off commits
  • A guided site in English, French and Spanish, and ways to contribute
  • Starlight in English, French and Spanish
  • Documentation site, publishing chain, and a stricter hygiene test
  • Set_category_budget no longer writes immediately

Fixed

  • The user's agreement in the conversation counts for a confirmation code
  • Find_transactions never returns a deleted transaction
  • Split_transaction refuses a deleted transaction, before asking
  • Every confirmation code says only the user can agree
  • Secrets stay masked when printed or logged
  • What a real budget showed suggest_categories got wrong
  • A reconciliation confirms exactly the transactions it showed
  • An id cannot steer a request, and last-used never mixes two budgets
  • Bank text shown on one line, and impossible amounts refused
  • Drop bank account numbers from normalized payees
  • Suggest only assignable categories, learnt in the direction of the money
  • Keep the full transaction list across delta syncs

Internal

  • Run once per pull request, and macOS on the newest Python only
  • Gitleaks looks for secrets in every commit
  • Ruff formats, sorts imports and runs bandit's checks
  • CodeQL and the OpenSSF Scorecard once public, and an SBOM with each release
  • MCP Inspector checks the server as a client sees it
  • Declare every package the code imports, and check it with deptry
  • Windows is required too
  • Renovate keeps dependencies current
  • Checks a pull request can be merged on
  • Every commit of a pull request is signed off
  • Support Python 3.12 and 3.13
  • Bound httpx and pydantic below their next major version
  • Python 3.14.7, FastMCP 4 and the 2026-07-28 MCP protocol
  • Grant each job read access to the code
  • Quality workflow, and dependencies free of known advisories

Tests

  • A task asks which yearly payment the forecast expects, 17/17
  • The demo plan has scheduled transactions, and a task asks what falls due, 16/16
  • An evaluation task asks which payments made Restaurants overspent, 15/15
  • Every operation of YNAB's API is accounted for
  • Three evaluation tasks check the words budget and plan, 14/14
  • The multi-model runner stops when the API budget is spent
  • A tenth evaluation task finds a payment already categorised, 10/10
  • A tenth evaluation task splits a purchase from its receipt, 10/10
  • The evaluation runs with models of other providers
  • Properties on generated cases, and mutation testing
  • The plugin that sets the name avenir-mcp apart has its own tests
  • A craftier injected memo, and 9/9 after the security fixes