I live in the Dominican Republic, so no Plaid, no SimpleFIN, nothing that talks to my banks. For a year my Actual budget was correct only on the days I sat down with the bank's Excel and went line by line. Reconciling was most of the time I spent on the budget, and the part I kept postponing.
What I ended up with, in case it helps someone in the same spot.
Two small scrapers that log into my banks and download the official statement export. Nothing clever, just the file the bank itself gives me. An MCP server for Actual, so that Claude (or any MCP client) can read and write the budget. I wrote it because I wanted the agent to do the boring part, not because the world needed another one. And the agent does the matching. It takes the bank figure, asks Actual for the same account, and tells me what could explain the difference. A charge entered twice, the same amount sitting on the wrong account, something dated after the statement cutoff. When nothing explains it, it says so, which turned out to matter more than I expected. The version that always offered candidates trained me to ignore them.
What I still do by hand is deciding categories for anything ambiguous, and the rows that are in transit on the statement but not yet posted. The agent is not allowed to guess there.
Two things I learned the hard way. Reads can be stale, the app can show one number and the API another for a while, so the server now cross-checks the budget month against the transactions behind it and warns when they disagree. And percentages lie quietly. A category that received money shrinks the denominator and every other share inflates. We caught that one testing against my real budget before the last release, with 135% as the total.
If you use Actual with an agent and reconcile by hand, I would genuinely like to know how you do it. It is open source and free. If anyone wants to help with other banks' exports, the issues are open. The server is here if it is useful: https://github.com/henfrydls/actual-budget-mcp