Inspiration
Small business owners don't have a CFO. They have a bank app, a spreadsheet, and a late night worry about payroll. The questions are simple. How much do I have? Will I be short next month? Did I get charged twice? Can I afford to hire? Answering them takes an hour of reconciling. I have spent twenty years building finance and AI systems for large companies, and I wanted the owner of a bakery to get the same answers by asking out loud.
What it does
Till is an MCP server with ten tools for a small business owner's money questions.
- "Anything I should worry about?" The morning brief gives cash on hand, the tightest week in the next 13, and the charges that need a look.
- "Dispute the flour one." Till remembers the decision, so tomorrow's brief only shows what is new.
- "Can I afford a part time baker at 1,800 a month?" Till reruns the 13 week forecast with the new cost and answers comfortable, tight, or not yet.
- "Why was September so expensive?" Month over month spending by category, biggest drivers first.
- "Warn me if cash drops under 12 thousand." Remembered, and checked by every forecast and brief.
Every answer leads with one sentence written to be heard ("about 16.7 thousand dollars", not "$16,717.31"), and every tool also returns a card through MCP Apps with the number, a forecast line against your cash alert, and the details.
How we built it
- Deterministic math, no model in the loop. Recurring bill detection, a 13 week cash forecast, rule based checks for duplicate payments, price jumps and large first time vendors, and an affordability test, all in plain Python. Every number Till speaks is traceable to code.
- MCP server on the MCP Python SDK 2.3.0 over Streamable HTTP, negotiating protocol 2025-11-25.
- MCP Apps cards. Every tool is bound to one UI resource,
ui://till/card.html, served astext/html;profile=mcp-app. Hosts without Apps support still get the full text. - Memory across sessions. Cash alerts, reviewed charges, and the last brief live in SQLite per business.
- Voice web client. Alexa+ tools are not open to hackathon builders, so we built a web page that is a real MCP client: it sends initialize, tools/list and tools/call over Streamable HTTP, hosts the MCP Apps card in a sandboxed iframe, and uses Claude to pick and chain tools. With no API key it falls back to a keyword router.
- Wire level tests that speak raw JSON-RPC to the server and call every tool.
All demo data is a fictional bakery with four problems planted on purpose.
Challenges we ran into
There is no public way to test against Alexa+, so we had to decide what a voice host should speak. Our answer: the first text block of every result is a sentence written for the ear, so any host can read it as is. Writing our own MCP Apps host meant piecing the handshake together from the spec.
Accomplishments that we're proud of
One spoken sentence like "dispute that flour payment, and can I swing a 2,400 dollar mixer next week?" becomes two tool calls and a two sentence answer, with every number traceable to code. The anomaly rules find exactly the four problems planted in the demo books and nothing else.
What we learned
Voice changes the output format more than the logic. "$16,717.31" is unreadable aloud; "about 16.7 thousand" is an answer. Remembering past decisions matters more for voice than for screens, because nobody wants to hear the same four warnings every morning.
What's next for Till
Bank feeds instead of CSV, a weekly spoken digest, and businesses with more than one location.
Till is a tool for owners, not a licensed advisor, and does not give tax or investment advice.
Built With
- claude
- html5
- javascript
- mcp
- python
- sqlite
- starlette
- web-speech-api
Log in or sign up for Devpost to join the conversation.