your apple apps, as tools

Native Apple apps
for AI agents.

Calendar, Reminders, Mail, Notes, Contacts and Messages, over MCP: 46 tools your agent can call, each with a matching CLI verb, running through Apple's own frameworks — EventKit, Contacts and ScriptingBridge, no osascript processes. A local index makes Mail search milliseconds, and none of it ever leaves your Mac.

cargo install bite-mcp

macOS 13+ · MIT Claude Code, ZCode and other agent CLIs

v0.5.0latest release46 toolssix apps, one serverMITlicencemacOS 13+Ventura or newer
a live session, indexed
6 Apple apps · bite 0.5.0

Illustration: the sidebar lists the six apps and their tool counts. The panes show real bite 0.5.0 output; personal senders, subjects and account names are redacted, and duplicate or personal search hits are omitted.

Six apps, one server.

Calendar, Reminders, Mail, Notes, Contacts and Messages, each through its native engine: EventKit and Contacts.framework where Apple provides one, ScriptingBridge where it doesn't. The helper installs once at a stable path, so macOS permission grants survive every upgrade.

One registry, two faces.

MCP schemas and CLI verbs are generated from the same table, so reminders_create and bite reminders create can never drift — a CI conformance test fails the build if they do. Agents get typed tools; you get the same verbs in your terminal.

Mail search in milliseconds.

A detached crawl worker indexes Mail into a local LanceDB database — the newest 30 days first, then backfill to a year, deltas after that — and searches answer from the index: 8–10 ms full-text on the 124k-message benchmark, no Apple Events on the query path.

Calendar, Reminders and Contacts mirror into the same index for the unified search tool.

Permissions, handled.

Every macOS prompt is one-time and attributed where you'd expect it; every denial returns an exact fix — a command or a System Settings deep link your agent relays verbatim. bite doctor shows the whole state without raising a prompt, and --fix opens the right pane for anything denied.

Local-only, by design.

No server, no account, no telemetry. Everything — index, crawl batches, helper — lives in one 0700 data dir, purged on demand: index_forget drops a scoped range after a preview and stays dropped across re-crawls; rebuilds can skip message bodies entirely.

Bulk, without the storm.

Bulk mark, move and delete run as one script per operation through the crawl worker — a handful of Apple Events total where per-message MCPs send thousands — and every one previews first: confirm_required: true with the selection spelled out until you pass confirm.

More from Ktesio

  • Hekma The control plane for agent workloads: run, see and steer AI agents.
all projects on ktesio.dev

Give them your apps.

One command installs bite and its native helper; bite setup then writes the MCP config into every agent CLI it finds — Claude Code, ZCode, Codex, OpenCode, Cursor, VS Code, Gemini.

cargo install bite-mcp

Then: bite setup the marketplace plugin and every supported agent CLI