# HQBase

Shared team inbox that deploys into your own Cloudflare account, with an OAuth-protected MCP server.

HQBase is an AGPL shared email workspace: shared mailboxes, team access controls, multi-domain, drafts, and audit history, running entirely on Cloudflare Workers, D1, R2, and Queues so mail and credentials stay in the customer's account. The Builder ships a remote MCP server with a read-only profile at /mcp and a mail-actions profile at /mcp/full covering search, threads, labels, drafts, send, reply, and forward.

Alternative to: Front, Help Scout

- Capabilities: adaptable, operable
- Vertical: support-bookkeeping
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: unknown (recorded, never ranked)
- Repo: https://github.com/HQBase/hqbase (AGPL-3.0), 317 stars, last commit 2026-09-01
- Last activity: 2026-09-01
- Page: apps/hqbase--hqbase.html
- JSON: apps/hqbase--hqbase.json

## Use it when

- we answer support@ and billing@ as a team and want the inbox in our own Cloudflare account with no per-seat fee
- we want our agent to search the shared inbox, draft replies for review, and send only from a scoped mail-actions profile

## Gotchas

- Cloudflare-only; Queues and Durable Objects may need the Workers Paid plan (confirm)
- AGPL-3.0-only license
- Send, reply, and forward are not idempotent through MCP; clients must not retry without checking
- Young project (Show HN 2026-08-11); Herald macOS client is community-maintained

## Editions

- Free (self-hosted on Cloudflare): Free, open source
  - source: https://github.com/HQBase/hqbase
  - one-click: https://deploy.workers.cloudflare.com/?url=https%3A%2F%2Fgithub.com%2FHQBase%2Fhqbase%2Ftree%2Fdeploy

## Adaptable: make it yours

Effort: config-only (5 things to edit)

Adapting HQBase means deploying it into your Cloudflare account: wrangler.jsonc declares the D1, R2 (MAIL_OBJECTS), Queue (HQBASE_JOBS), Durable Object (MAIL_EVENTS), and MAIL_SENDER bindings; BETTER_AUTH_SECRET is generated at install and local values go in .dev.vars. config/product.json carries product settings. Mailboxes, domains, and access are then set in the app. There is no prompt surface; the MCP profile (/mcp versus /mcp/full) is the only agent-facing switch.

- Env vars: BETTER_AUTH_SECRET, HQBASE_LOCAL_SEED_PASSWORD
- Config files: wrangler.jsonc, .dev.vars, config/product.json
- Prompt files: none
- Accounts you'll need: Cloudflare (Workers, D1, R2, Queues, Email Routing); a domain on Cloudflare DNS

## Operable: what an agent can drive

Operability: official. Interface: mcp at https://hqbase.io/docs/mcp/ (published by the builder, remote).

### Reach (partial coverage)

- Search and read mail across shared mailboxes: reachable. read-only profile: list_mailboxes, search_messages, list_conversations, get_message, get_thread, get_attachment
- Draft replies: reachable. /mcp/full: create_draft, update_draft, add_draft_attachment
- Send, reply, and forward: reachable. /mcp/full: send_email, reply_to_message, forward_message; docs warn repeated sends can send twice
- Organize with labels and conversation state: reachable. add_label, remove_label, update_message, update_conversation
- Assign conversations to teammates: undetermined. update_conversation exists; whether it sets assignee is not stated on the MCP docs page
- Manage team access to mailboxes: not reachable. access controls are admin UI per docs; no user or permission tools in the MCP list
- Add domains and mailboxes: not reachable. multi-domain setup is an operator flow (docs/specs/multi-domain), not an MCP tool
- Install, update, back up, restore: not reachable. operations run through the deployment and signed-release workflow, not MCP
- Review audit history: undetermined. audit history is a product feature; no audit tool in the MCP list

## Code stack

- Languages: TypeScript
- Frameworks: Cloudflare Workers, Vite, Better Auth
- Package manager: pnpm
- Database: Cloudflare D1, Cloudflare R2
- Hosting target: Cloudflare Workers (Deploy to Cloudflare button)

## Model stack

- Providers: any MCP client
- Models: none
- Keys you need (names only): none
- Prompts live in: none
- Tools: list_mailboxes, list_labels, search_messages, list_conversations, get_message, get_thread, get_attachment, update_message, update_conversation, add_label, remove_label, list_drafts, get_draft, create_draft, update_draft, delete_draft, add_draft_attachment, remove_draft_attachment, send_email, reply_to_message, forward_message

## Evidence and confidence

- formFactor: README: Vite frontend, Wrangler Worker backend, D1 database (confidence 0.9)
- executionModel: no model calls in README or wrangler bindings (confidence 0.85)
- operability: hqbase.io/docs/mcp: endpoints /mcp and /mcp/full, OAuth device or PKCE with dynamic client registration, tool list (confidence 0.95)
- effort: README develop section names .dev.vars keys; wrangler.jsonc bindings; .env.example says BETTER_AUTH_SECRET is generated at install (confidence 0.8)
- editions: README and hqbase.io: open source, runs in your Cloudflare account; no pricing page found (confidence 0.7)
- active: gh api: pushed 2026-09-01, 317 stars; signed release workflow
- reach:  (confidence 0.85)

## Open questions

- Which Cloudflare plan is required (free versus Workers Paid) for Queues and Durable Objects
- Whether update_conversation covers assignment
- Any paid support or hosted edition from the Builder

## Sources

- https://github.com/HQBase/hqbase (sourcing:support-bookkeeping:community)
- https://hqbase.io (sourcing:support-bookkeeping:community)
- https://hqbase.io/docs/mcp/ (analysis)
