Inspiration

Close week at a mid-size company is a week of spreadsheets and status pings: who's blocked, why is freight over, can I book this accrual. CFOs ask those questions out loud all day. Alexa+ plus MCP finally makes it possible to answer them by voice — if the agent has hard guardrails on anything that writes to the books.

What it does

CloseCall is a self-hosted MCP server (spec 2025-11-25, Streamable HTTP) with seven tools: close_status, top_variances, variance_explain, cash_runway, accrual_propose, approve_entry and audit_trail, plus policy and checklist resources and a morning-briefing prompt. A web console simulates the Alexa+ experience (mic or text in, spoken answer and cards out) and is a real MCP client of the same endpoint. Accruals of $5k or less auto-post, accruals up to $50k wait for CFO approval ("Approve it" works across turns), and anything larger is refused. Every write goes to a hash-linked audit trail.

How we built it

Python stdlib only, so it runs with zero dependencies or keys. server.py implements JSON-RPC 2.0 over Streamable HTTP: initialize/version negotiation, Mcp-Session-Id sessions, the MCP-Protocol-Version header, 202 for notifications, 404 for unknown sessions, 405 on GET, and an Origin check. client.py is a minimal MCP client. host.py plans each utterance either through Amazon Bedrock Converse tool use (CLOSECALL_PLANNER=bedrock, with MCP inputSchemas passed straight in as Bedrock toolSpecs) or through a deterministic intent router offline. Integration tests start the server and exercise the full approve/deny flow.

Challenges we ran into

There's no self-serve way to register a self-hosted MCP URL with a real Alexa+ host, so we built the simulator as a true MCP client rather than a mock. AWS credit codes ran out on Oct 7, so the Bedrock planner is optional and the UI labels which planner answered. Keeping the model out of spend decisions meant putting the policy inside the tool, not the prompt.

Accomplishments that we're proud of

It's a spec-conformant MCP server with no dependencies. Policy enforcement is deterministic and can be audited. The approval state carries across turns ("Approve it"), and a voice UX can be demoed end to end in two minutes.

What we learned

MCP tool schemas map almost 1:1 onto Bedrock Converse toolSpecs. Voice answers need to be one or two sentences, with the detail moved to cards. The most important design choice for finance agents is which tools are allowed to write.

What's next for CloseCall

Connectors for NetSuite, QuickBooks and Xero; OAuth on the MCP endpoint; registering with Alexa+ when hosting opens up; AgentCore deployment; and multi-approver workflows (controller plus CFO).

Track: Alexa+ · Mini challenge: AWS Builder

Built With

Share this project:

Updates

Submission history