Fastmail Search

faist mirrors your Fastmail inbox into your own Supabase, then exposes it to Claude and other MCP clients as SQL. With hybrid lexical and semantic search.

FAIST · faist.dev SECTION 01 · OPEN 0%

v0.4 · public beta · self-host ready

your fastmail, indexed.

every message in your fastmail account, mirrored into a SQL database you own, with embeddings for semantic search. natural language for humans. SQL for agents.

start free → see how it works no credit card · MIT core · OAuth in 3 clicks

data in your own postgres no model training, ever pg_dump & go

FAIST / 2026 / FASTMAIL → SQL · EMBEDDED · REAL-TIME

scroll

v0.4 · beta · build 1184

02 / 06 · the index

indexed · embedded · queryable

your inbox,

as a database
that thinks.

every message becomes a row. every row carries an embedding vector for similarity search. all of it real-time, all of it in postgres.

[email protected] nov 12

re: lease renewal d3 — counter

Per our call, we'd accept a 36-month term if the escalator stays at…

[email protected] nov 12

your invoice is ready · $214.00

Hi Sam, your Pro plan invoice for October is attached…

[email protected] nov 11

re: claude integration · ship it

Let's land the MCP bindings on monday. I'll review your PR tonight…

[email protected] nov 11

payout · $2,184.22 sent

Your funds are on the way. Expected arrival: November 13.

[email protected] nov 10

october office hours · summary

Twelve founders, six topics. The deck and notes are linked below…

[email protected] nov 10

thanksgiving?

are you driving up or do you want me to come down this year. — k

ƒ

INDEX

messages — postgres · your project 8 tables · 1 ƒ ext

#fromsubjectsentembedding(1536)
1[email protected]re: lease renewal d3 — counter2d
2[email protected]your invoice is ready · $214.002d
3[email protected]re: claude integration · ship it3d
4[email protected]payout · $2,184.22 sent3d
5[email protected]october office hours · summary4d
6[email protected]thanksgiving?4d

0 / 12,418 rows — indexed live

03 / 06 · two interfaces

two interfaces, one schema

natural language for humans.

SQL for agents.

the same rows, two surfaces. ask a question in english and faist translates it. or skip the translation: any agent that speaks SQL or MCP can read your inbox without ever touching your fastmail credentials.

— 01 / for humans natural language

"what's that lease thing paula sent?"

type the question. faist embeds it, runs the similarity search, and threads the answer back — citations included.

U

whats that lease thing paula sent last week — i need the counter clause

ƒ

Found it — Paula Mendez, Black Mountain Law, Nov 12 · "re: lease renewal d3 — counter". The counter is a 36-month term with a 2.5% annual escalator. Want me to pull the thread or draft a reply?

U

show me the SQL

ƒ

select * from messages
where embedding <-> embed('paula lease counter') < 0.32
order by sent_at desc limit 5;

— 02 / for agents SQL · MCP · webhook

a database any agent can read.

claude, cursor, openwebui — plus your own scripts. one read-only fastmail token in. structured rows out. agents never see your credentials.

-- claude · MCP server · 127.0.0.1:7474

-- tool: query(sql)

select "from", subject, sent_at

from messages

where embedding <-> embed('paula lease counter') < 0.32

order by sent_at desc limit 5;

[email protected] re: lease renewal d3 — counter 2d

[email protected] re: lease renewal d2 6d

docusign-noreply document completed 6d

(3 rows ·84 ms· provider=zero-retention)

natural language · for humans

MCP server · OAuth2

webhook on new row

just postgres · psql ok

04 / 06 · real-time

real-time, not batched

new mail arrives.

a row appears.
that's the loop.

faist holds a live JMAP stream with fastmail. messages, threads, labels, attachments — they land in your database within a second of hitting your inbox. nothing to schedule, nothing to refresh.

indexed [email protected] re: lease renewal d3 — counter · now indexed [email protected] thanksgiving? · now indexed [email protected] your invoice is ready · $214.00 · now indexed [email protected] re: claude integration · ship it · now indexed [email protected] payout · $2,184.22 sent · now indexed [email protected] october office hours · summary · now indexed security@1password new sign-in from macOS · now indexed [email protected] shared "faist · landing draft" · now indexed notion-team weekly digest · 12 pages · now indexed [email protected] PR #128 ready for review · now indexed [email protected] re: lease renewal d3 — counter · now indexed [email protected] thanksgiving? · now indexed [email protected] your invoice is ready · $214.00 · now indexed [email protected] re: claude integration · ship it · now indexed [email protected] payout · $2,184.22 sent · now indexed [email protected] october office hours · summary · now indexed security@1password new sign-in from macOS · now indexed [email protected] shared "faist · landing draft" · now indexed notion-team weekly digest · 12 pages · now indexed [email protected] PR #128 ready for review · now

05 / 06 · pricing

pricing

start free.

go unlimited when you outgrow it.

both tiers run against your supabase project — the difference is what we charge to keep the pipeline open. cancel any time. pg_dump takes the rest with you.

Free

$0/month

enough room to wire it up to your inbox, prove it works, and let an agent or two read your mail.

  • 5,000 emails backfill from fastmail
  • limited live updates — best-effort stream
  • limited queries per day across NL + SQL
  • MCP server · OAuth2 sign-in
  • just postgres · pg_dump & go start free →

most picked

Pro

$3/month

unlimited everything. for your full archive and the agents you actually use day-to-day.

  • unlimited backfill — your entire fastmail history
  • unlimited live updates · sub-second JMAP stream
  • unlimited queries — NL, SQL, MCP, webhooks
  • MCP server · OAuth2 sign-in
  • priority support · self-host migration assist start pro →

prices in USD. supabase project costs (typically $0–$25/mo) are paid directly to supabase. there is no faist-hosted plan — your data never lives on our servers.

06 / 06 · the promises

the promises · everything else is just plumbing

three things we will never ask of you.

— 01

your data lives in your database.

faist writes into a supabase project you own. our backend is stateless: no shadow mailbox, no rehosting. if you delete the project, the data is gone — we never had a second copy.

supabase project · 8 tables · row-level security on

— 02

privacy first. no data fed to the AI models.

embeddings flow through zero-retention endpoints. no message body, no metadata, nothing is ever used to train a model. when a model finishes a request, the provider has nothing left to remember.

embedding provider · zero-retention · no training opt-in

— 03

no vendor lock. migrate any time.

it's just postgres. the schema is documented and MIT-licensed. point a pg_dump at it and walk away — every row, every embedding, every relation. drop us; your data stays.

pg_dump $DATABASE_URL > faist.sql

07 · the questions

faq · the questions we get most

common questions.

What is faist?

faist is a TypeScript service that ingests email from any JMAP provider (Fastmail, Stalwart, generic) into a Postgres database you own, then exposes it to AI agents as SQL — via a REST endpoint or an MCP (Model Context Protocol) server for Claude, Cursor, Continue, and Cline.

How is faist different from the official Fastmail MCP server?

Fastmail's MCP exposes live inbox operations as tools (read, search, draft). faist builds a full historical index of every message in your own Supabase, with hybrid lexical (pgroonga BM25) and semantic (pgvector) search, and surfaces it to your agent as plain SQL so it can aggregate, group, and join across years of mail.

Where does my email data live?

In your own Supabase project. faist installs a scoped jmap schema and a dedicated jmap_indexer Postgres role; your service-role key is never persisted by faist. If you delete the Supabase project, the data is gone.

Which MCP clients does faist support?

Any MCP client that speaks Streamable HTTP — including Claude Code (CLI and VSCode extension), VSCode's native MCP, Cursor, Continue, Cline, and the MCP Inspector. Authentication uses OAuth 2.1 with dynamic client registration, or a per-user PAT minted from the dashboard.

Does faist work with providers other than Fastmail?

Yes. faist talks to any JMAP provider — Fastmail, Stalwart, or any generic JMAP server — so the same SQL surface works regardless of who hosts your email.

— · start

three clicks · then it's just postgres

put AI on your inbox.

keep the rest.

sign in with OAuth. point faist at a supabase project. paste a fastmail token. by the time you've blinked, your inbox is a database — and it's yours.

start free → read the docs

no credit card MIT core self-host anytime pg_dump & go

Related Servers

NotebookLM Web Importer

Import web pages and YouTube videos to NotebookLM with one click. Trusted by 200,000+ users.

Install Chrome Extension