The API, on one page.
Everything below is generated from the same schemas that validate every request — if it's here, it's real. Agents should read the machine feeds; this page is for the humans checking their work.
llms.txt — orientation, written for agents
openapi.json — the full document (OpenAPI 3.1)
https://mcp.mintro.money/mcp — MCP, same bearer key, 19 tools
Auth: Authorization: Bearer <your api key> · errors: { error: { code, message } } · money: integer cents · mutations accept Idempotency-Key
post /v1/budgets/{budget_id}/assignments · `budget:write`.
Give money a job: assign, move, record income, cover overspending
get /v1/budgets/{budget_id}/month · `budget:read`.
The month view: ready to assign, and available per envelope
post /v1/budgets/{budget_id}/auto-assign · `budget:write`.
Fund the month: YNAB's whole auto-assign menu, in one call
post /v1/budgets/{budget_id}/recurring/{id}/enter · `budget:write`.
Enter a bill: write it, file it, move to its next date
get /v1/budgets/{budget_id}/report · `budget:read`.
Spending and funding across a window of months
get /v1/budgets/{budget_id}/recurring · `budget:read`.
Bills you know are coming
post /v1/budgets/{budget_id}/recurring · `budget:write`.
Declare a recurring bill
patch /v1/budgets/{budget_id}/recurring/{id} · `budget:write`.
Change or pause a recurring bill
delete /v1/budgets/{budget_id}/recurring/{id} · `budget:write`.
Remove a recurring bill
post /v1/budgets/{budget_id}/recurring/{id}/advance · `budget:write`.
Move a recurring bill on to its next occurrence
get /v1/budgets/{budget_id}/categories · `budget:read`.
List categories in render order
post /v1/budgets/{budget_id}/categories · `budget:write`.
Create a category
patch /v1/budgets/{budget_id}/categories/{id} · `budget:write`.
Rename a category or change its position
delete /v1/budgets/{budget_id}/categories/{id} · `budget:write`.
Delete a category; its envelopes survive, uncategorized
put /v1/budgets/{budget_id}/envelopes/order · `budget:write`.
Bulk placement: reorder categories and envelopes in one call
get /v1/budgets/{budget_id}/entries · `budget:read`.
Filed history — search entries
post /v1/budgets/{budget_id}/entries · `budget:write`.
File a transaction into envelopes (splits = several elements)
patch /v1/budgets/{budget_id}/entries/{id} · `budget:write`.
Move or adjust an entry
delete /v1/budgets/{budget_id}/entries/{id} · `budget:write`.
Undo an entry
post /v1/budgets/{budget_id}/envelopes · `budget:write`.
Create an envelope
get /v1/budgets/{budget_id}/envelopes · `budget:read`.
List envelopes
get /v1/budgets/{budget_id}/envelopes/{id} · `budget:read`.
Envelope with recent entries
patch /v1/budgets/{budget_id}/envelopes/{id} · `budget:write`.
Rename, close (force for non-zero), set or clear target
get /v1/budgets/{budget_id}/papers · `budget:read`.
List papers (contents omitted)
get /v1/budgets/{budget_id}/papers/{slug} · `budget:read`.
Read a paper verbatim
put /v1/budgets/{budget_id}/papers/{slug} · `budget:write`.
Create or replace a paper (last write wins)
delete /v1/budgets/{budget_id}/papers/{slug} · `budget:write`.
Delete a paper
get /v1/budgets/{budget_id}/templates · `budget:read`.
Starter envelope templates
post /v1/budgets/{budget_id}/templates/{id}/apply · `budget:write`.
Create the template's envelopes that do not already exist
get /v1/budgets/{budget_id}/holdings · `budget:read`.
List holdings on this budget
post /v1/budgets/{budget_id}/holdings · `budget:write`.
Declare a holding; look up a public price when a symbol is given
get /v1/budgets/{budget_id}/holdings/{id} · `budget:read`.
One holding
patch /v1/budgets/{budget_id}/holdings/{id} · `budget:write`.
Rename, close, change symbol or quantity
delete /v1/budgets/{budget_id}/holdings/{id} · `budget:write`.
Delete a holding and its valuations
post /v1/budgets/{budget_id}/holdings/{id}/refresh · `budget:write`.
Look up a public price and append a valuation if found
get /v1/budgets/{budget_id}/holdings/{id}/valuations · `budget:read`.
Price history for one holding (newest first, cap 100)
post /v1/budgets/{budget_id}/holdings/{id}/valuations · `budget:write`.
Set the unit price by hand and append a valuation
post /v1/budgets/{budget_id}/holdings/{id}/buy · `budget:write`.
Buy more: money leaves an account, quantity is added
get /v1/budgets/{budget_id}/picture · `budget:read`.
The entire picture: accounts, holdings, loans, net, aim projection
get /v1/budgets/{budget_id}/loans · `budget:read`.
List installment loans on this budget
post /v1/budgets/{budget_id}/loans · `budget:write`.
Declare an installment loan; optionally against a holding and a paying account
get /v1/budgets/{budget_id}/loans/{id} · `budget:read`.
One loan
patch /v1/budgets/{budget_id}/loans/{id} · `budget:write`.
Rename, retarget a holding or paying account, change terms, or agree remaining
delete /v1/budgets/{budget_id}/loans/{id} · `budget:write`.
Delete a loan and its balance events
get /v1/budgets/{budget_id}/loans/{id}/balances · `budget:read`.
Payment history for one loan (newest first, cap 100)
post /v1/budgets/{budget_id}/loans/{id}/payments · `budget:write`.
Record a payment: split from the terms, update remaining
post /v1/budgets/{budget_id}/loans/{id}/pay-from-account · `budget:write`.
Pay the loan from an account: write the outflow and the estimated split
get /v1/budgets/{budget_id}/aim · `budget:read`.
What this budget is for, plus this month's progress
put /v1/budgets/{budget_id}/aim · `budget:write`.
Set or replace what you want this budget to do
delete /v1/budgets/{budget_id}/aim · `budget:write`.
Clear the aim; the contribution envelope stays
post /v1/budgets/{budget_id}/aim/preview · `budget:read`.
See what this plan would do, without writing it
get /v1/health
Liveness plus instance feature flags
get /openapi.json
This document
get /llms.txt
Plaintext orientation for agents
get /v1/plans
Every plan, its price and its included bank connections
get /v1/me · `budget:read`.
Who this key is: scopes, budgets, plan limits, rate limit
get /v1/budgets · `budget:read`.
Every budget on the account
post /v1/budgets · `budget:write`.
Start a new budget
get /v1/budgets/{budget_id} · `budget:read`.
One-call budget snapshot
patch /v1/budgets/{budget_id} · `budget:write`.
Rename a budget, or close/reopen it
get /v1/budgets/{budget_id}/export · `budget:read`.
One budget as a single JSON document
get /v1/inbox · `budget:read`.
Unfiled, unexpired transactions, newest first
get /v1/transactions · `budget:read`.
Stored transactions: the register
post /v1/transactions/import · `budget:write`.
Manual import: the agent brings normalized transactions (spending negative); idempotent per identical row
patch /v1/transactions/{id} · `budget:write`.
Edit a manually entered transaction
delete /v1/transactions/{id} · `budget:write`.
Delete a manually imported transaction
get /v1/transactions/{id} · `budget:read`.
Transaction with its entries
post /v1/transactions/{id}/match · `budget:write`.
This bank row is the bill I already entered
post /v1/accounts · `budget:write`.
Add an account by hand
get /v1/accounts · `budget:read`.
Every account on the tenant
post /v1/transfers · `budget:write`.
Move money between the person's own accounts
post /v1/transfers/confirm · `budget:write`.
These two existing rows are a transfer — you said so
delete /v1/transfers/{id} · `budget:write`.
Remove both legs of a transfer
get /v1/age-of-money · `budget:read`.
How long the money you are spending sat here first
get /v1/cashflow · `budget:read`.
Projected cash: posted history plus declared recurrences
get /v1/streaks · `budget:read`.
Clerk-work streaks, computed on read, off until asked
patch /v1/streaks · `budget:write`.
Set streaks to off, quiet, or on
get /v1/accounts/{id}/reconciliation · `budget:read`.
Where this account stands against the bank
patch /v1/accounts/{id}/cleared · `budget:write`.
Tick transactions on or off the cleared list
get /v1/accounts/{id}/forecast · `budget:read`.
Project this account's cash through a horizon
post /v1/accounts/{id}/reconcile · `budget:write`.
Compare cleared rows against a statement, and lock if they agree
patch /v1/accounts/{id} · `budget:write`.
Point a credit account at its payment envelope, and/or set the forecast warn-below
delete /v1/accounts/{id} · `budget:write`.
Delete a manual account and everything imported into it
get /v1/connections · `connections:read`.
Linked banks
post /v1/connections/link · `connections:write`.
Hosted Plaid link URL — hand it to the human; only they authenticate
post /v1/connections/{id}/relink · `connections:write`.
Hosted link URL in update mode
delete /v1/connections/{id} · `connections:write`.
Remove the bank; the budgets and filed transactions survive
post /v1/webhook-endpoints · `webhooks:manage`.
Register an endpoint (secret returned once)
get /v1/webhook-endpoints · `webhooks:manage`.
List endpoints with their delivery health
delete /v1/webhook-endpoints/{id} · `webhooks:manage`.
Delete an endpoint
post /v1/webhook-endpoints/{id}/test · `webhooks:manage`.
Queue a ping event and show exactly what will be delivered
Request and response shapes live in openapi.json. Or skip all of this: hand your agent the setup page and let it read the docs. That's rather the point.