-
-
Today: Pick a family member, then talk or type to the calendar.
-
Week: Hearth checks the whole week for clashes.
-
Chores: Fair-share view of the last 14 days, so chores are assigned with a reason.
-
Inbox: Requests and kids’ events wait here for an adult’s approval.
-
Who is where: Everyone’s day on one timeline.
-
Day view: Events are color-coded by person.
-
This week: Weekly summary of events, clashes and open chores.
Inspiration
Every family has one person who holds the whole week in their head: who has a meeting, who can pick up the kids, which grandparent can't do evenings. Shared calendars store events, but they never notice that Mom and Dad are both busy when a child needs an adult at a parent-teacher meeting. We wanted a calendar that notices, explains why, and offers a fix, and that anyone in the family can just talk to.
What it does
Hearth is a self-hosted MCP server and Agent Skill that lets a whole family manage plans by voice or text.
- Natural language in, typed tools out. "Tuesday gym at 7, Wednesday tuition 6 to 7, Friday Nani's birthday dinner" becomes three real events through MCP tools.
- Deterministic conflict engine. Person clashes, coverage clashes (a child's event needs an adult) and rule violations are found by plain code, each with a plain-English reason. The model never decides conflicts.
- Learned family rules. "Dadi can't do evening pickups" is saved and enforced on later plans.
- Fixes with Undo. Ranked options, a confirm card and one-tap Undo. Nothing changes without confirmation.
- Ask a person. A clash can be fixed by asking a free family member, such as Dadi, who accepts or declines like a real family member would.
- Week Guard warns about next week's problems before they happen. Hearth also does bulk add, an approval inbox for kids' events, import from pasted text, fair chores with the reason, and a planning-load report.
Family members are simulated as speaker chips (Mom, Dad, Rohan, Dadi), which stand in for voice profiles.
How we built it
- MCP server (24 tools) over Streamable HTTP, backed by SQLite. Tools cover family, events, conflicts and fixes, rules, asking and approving, and chores.
family_conflicts, a separate open-source (MIT) Python package with the conflict engine. It is plain code, with times stored in UTC and shown in the family timezone, and half-open intervals.- Agent Skill (
skills/family-coordinator) that teaches an agent how to use the tools well. - Streamlit app that acts as the MCP client. The agent layer runs in three modes: an offline mock (default), Strands with Amazon Bedrock, and a Bedrock Converse path. Amazon Polly can speak replies.
- Under the hood view shows the raw JSON-RPC calls, so anyone can see that every action is a real tool call.
- Tests: 49 tests, including every MCP tool over real HTTP, a golden demo, the Ask-Dadi loop, a Strands path, and an utterance-to-tool eval.
Challenges we ran into
- Keeping the model out of the decisions. Conflicts must be correct every time, so we moved all conflict logic into deterministic code and left the model only to understand language and phrase answers.
- Defining "covered". A child's event is covered if an adult attends or a parent is free. If both parents are busy, we report it and rank fixes, such as moving a flexible event (with a 30-minute travel gap) or asking a free adult.
- No Alexa+ device. Alexa+ tooling is partner-only, so we built a simulated experience: the web app is the MCP client, and the server is the same one any MCP client could use.
- Time handling. Timezones, ambiguous "Thursday at 5", and missing end times (we assume one hour and say so on the card).
Accomplishments that we're proud of
- A clash flow that feels natural end to end: detect, explain, rank fixes, ask Dadi, accept, undo.
- A standalone MCP server with 24 tools that works from any MCP client, not just our app.
- 49 passing tests, including real MCP over HTTP and the real Strands loop.
- A conflict engine shipped as its own open-source package.
What we learned
- MCP makes the line between "what the model understands" and "what the system does" very clear, which is exactly what a family tool needs for trust.
- Confirmation cards and Undo matter more than clever answers. People trust a tool that never changes things silently.
- Explaining why a clash exists is as important as finding it.
What's next for Hearth
- A real Alexa+ skill once partner tooling is available
- Google Calendar and iCal sync
- Multi-household support and per-member notifications
Built With
- agent-skills
- ai-agents
- alexa-plus
- amazon-bedrock
- amazon-polly
- awsagentic-ai
- conflict-detection
- family-calendar
- fastapi
- fastmcp
- json-rpc
- mcp
- model-context-protocol
- natural-language-processing
- open-source
- pydantic
- pytest
- python
- scheduling
- sqlalchemy
- sqlite
- strands-agents
- streamlit
- tool-calling
- voice-assistant
Log in or sign up for Devpost to join the conversation.