overview / problem

I built InboxPort after running into a connector limitation myself: connecting more inboxes solved the account problem, but created a harder permissions problem.

The question became: what should a particular AI client be allowed to do inside a particular email account?

what I built

Multiple Gmail accounts, multiple Outlook accounts, one MCP endpoint, per-account and per-installation permissions, account pause and revocation, and permission gating around search, read, draft, and send-request actions.

Message bodies are fetched from the provider on demand. The system is not designed to retain a mailbox corpus.

architecture

AI client → MCP endpoint → installation permissions → account permissions → Gmail API / Microsoft Graph → provider-side messages and drafts

interesting decisions

Human-approved sending

The AI requests approval for a provider-side draft. The owner sees the exact draft, creates a short-lived approval envelope, and authorization is checked again immediately before dispatch.

Draft hash validation

Immediately before sending, the provider-side draft is fetched again and compared with the approved draft hash. If it changed, sending is blocked.

Permission boundaries

Search, read, draft, and send-request permissions are checked per account and per AI client installation instead of treating OAuth as blanket access.

verification

The August 2, 2026 verification run documented 227 passing unit and security tests, along with clean lint, TypeScript, and production build checks.

limitations