Inspiration

Banking still makes people translate a simple goal into menus, forms, account rules, and unfamiliar terminology. That friction hits older adults and first-time users hardest, but everyone feels it when a task becomes stressful or complex. We wanted AI to remove the translation work without removing the person’s authority.

What it does

At Attin is a complete single-user fictional-money bank: accounts, activity, payees, transfers, scheduled and recurring payments, cards and controls, savings goals, budgets, reports, notifications, disputes, trusted contacts, accessibility settings, and manual forms.

Its in-site assistant is powered by Featherless and moonshotai/Kimi-K3. A user asks for a banking outcome in plain language. The model selects one of 56 imperative WebMCP tools, while four visible form tools support browser-native agent interaction. The bank validates the request, prepares an exact preview, applies financial invariants, shows every consequence, and waits for a person.

No agent request executes automatically. Every protected read and every mutation requires fresh visible confirmation. Higher-consequence actions require both YES and a new arithmetic challenge. Authorizations expire after 90 seconds, are single-use, bind to the exact preview and state version, and cannot be replayed.

All money is fictional ATC, stored device-locally, with no cash value and no real payment rails.

How we built it

  • React, TypeScript, Vite, and React Router
  • Browser-native document.modelContext.registerTool()
  • One shared 56-operation descriptor layer for compatible browser agents and the in-site agent
  • Featherless server proxy with Kimi K3; the provider key never reaches the browser
  • App-owned prepare → confirm → commit coordination with cancellation, expiry, stale-state, and replay protection
  • Integer minor-unit money, atomic writes, versioned local persistence, recovery, and append-only local agent audit
  • OpenAI Codex, HyperFrames, Remotion, Kokoro TTS, Suno, and OpenAI Sites

Why WebMCP matters

At Attin does not add a deterministic intent parser. The model reasons; WebMCP publishes the bank’s real capabilities; the application owns authorization and execution. The same descriptors and confirmation boundary serve the embedded assistant and compatible browser agents.

Challenges

The hardest part was ensuring preparation could not leak protected data, and that registration, cancellation, retries, legacy persistence, linked savings reservations, balance floors, and dispute evidence all remained fail-closed. We built explicit invariants, version-bound authorization, single-pending-request coordination, and focused regression tests.

Accomplishments

  • 56 imperative tools and 4 visible form surfaces
  • Confirmation for every agent read and change
  • Step-up confirmation for critical actions
  • A complete banking surface instead of a narrow proof-of-concept
  • A working Featherless/Kimi K3 assistant with no direct bank-state access
  • 141 automated tests plus lint, build, and Sites-worker verification
  • High-contrast, low-cognitive-load UX with large text, keyboard focus, and reduced motion

What we learned

Trust improves when proposal, authorization, and execution are visibly separate. WebMCP gives models semantic access to application capabilities without forcing the application to surrender its policy boundary.

What’s next

Multi-user identity, passkeys, caregiver and small-business policy packs, privacy-preserving audit export, localization, and broader WebMCP conformance testing. Real-money connectivity remains out of scope until external security review.

Try it

Live app: https://at-attin.astronebulae.chatgpt.site

ATC is fictional, device-local, and has no cash value.

Built With

  • featherless-ai
  • hyperframes
  • kimi-k3
  • kokoro-tts
  • openai-codex
  • openai-sites
  • react
  • remotion
  • suno
  • typescript
  • vite
  • webmcp
Share this project:

Updates

Submission history