Propose a pull request
Pull requests are welcome, from a typo to a new tool. This page is the path to follow; Development describes the repository and its checks in detail. You need a GitHub account, git, uv and just.
Step by step
Section titled “Step by step”-
Fork and clone. On GitHub, click Fork, then clone your copy. With the GitHub CLI, in one command:
Terminal window gh repo fork mathbeal/avenir-mcp --clonecd avenir-mcp -
Install and check the starting point.
Terminal window uv sync # Python 3.14 and the locked development toolsjust check # everything must pass before you change anything -
Create a branch named after the change:
Terminal window git switch -c feat/subscription-increases -
Write the test first, watch it fail, then write the code that makes it pass. Tests use invented data only — never YNAB, never your budget. Add to the demo budget in
evals/demo_budget.pyif an example needs new figures. -
Run the checks until they all pass:
Terminal window just fix # formatjust check # ruff, pylint, mypy, pytest (100 % coverage), vocabulary, lockjust hygiene # typos, workflow auditjust secrets # gitleaks on every commit (needs Docker) -
Update the documentation. If a tool, its arguments or its answers changed, run
uv run python -m docsgenand commit what it writes. A page written by hand is changed in English, French and Spanish together;just docsbuilds the site and fails on a broken link. -
Commit with a prefix that says the kind of change — the changelog is generated from it:
Terminal window git commit -s -m "feat: list subscriptions whose price went up"-ssigns the commit off: you certify the Developer Certificate of Origin — you wrote the change, or have the right to submit it under the MIT licence. -
Push and open the pull request.
Terminal window git push -u origin feat/subscription-increasesgh pr create --fillOr open it from the link GitHub prints. Fill in the template: what and why, how it was checked, the checklist, and
Closes #<issue>.
What happens next
Section titled “What happens next”| Stage | What to expect |
|---|---|
| CI | the same checks as just check and just hygiene, on Linux, macOS and Windows, the documentation build, the MCP Inspector, signed-off commits and a title starting with the kind of change; CI passed and MCP Inspector must be green. For a first contribution, a maintainer approves the run first. |
| Review | comments on the code; push new commits to the same branch to answer them |
| Merge | squashed into one commit on main, with your pull request’s title as its message |
| Release | your change appears in the next version’s changelog |
What gets a pull request merged
Section titled “What gets a pull request merged”- One change per pull request, small enough to review in one sitting.
- Tests written first, covering every line and branch.
- No new runtime dependency without a reason written in the pull request.
- Writes stay safe: a tool that changes the budget previews, waits for confirmation and can be undone — see Safety by design.
- No real financial data, anywhere: code, tests, documentation, screenshots.
- Every commit signed off (
git commit -s).
The full contract is in AGENTS.md, which applies to people and to coding agents alike.
Unofficial project. We are not affiliated, associated, or in any way officially connected with YNAB or any of its subsidiaries or affiliates. YNAB and You Need A Budget are registered trademarks of YNAB. avenir-mcp is provided as is, without warranty, and is not financial advice. Legal notice