Agent skill

Apple Mail Setup

by davekilleen in davekilleen/Dex

Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built.

MITAuto-check passedDocuments & Office

Install Apple Mail Setup

skills CLI
$ npx skills add davekilleen/Dex --skill apple-mail-setup -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install davekilleen/Dex apple-mail-setup --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/apple-mail-setup .claude/skills/apple-mail-setup && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
apple-mail-setup
GitHub stars
493
Token cost
~2.5k tokens
SKILL.md length
1,400 words
Files
1
Skills in repo
61
Repo updated
First seen
Licence
MIT

At a glance

Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built.

  • Works in 7 steps: Confirm the platform → Install the server → Register the server at user scope → …
  • The user says connect Apple Mail
  • SKILL.md covers The failure this prevents, Process, Ongoing health and Troubleshooting, plus 1 more section
  • Calls pipx, claude and brew

What it does

Apple Mail Setup is an agent skill from davekilleen/Dex. Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built. Use when the user says 'connect Apple Mail', 'set up mail search', 'Dex can't find my emails', 'mail search returns nothing'. Not for Gmail or Google Workspace; use google-workspace-setup.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Documents & Office, covering Cloud office suites and Email management. It works with Google Workspace, macOS, Gmail and Model Context Protocol. The repository describes itself as: Your AI Chief of Staff — a personal operating system starter kit that adapts to your role. No coding required. The licence is MIT.

When your agent uses it

  • The user says connect Apple Mail
  • Set up mail search
  • Dex cant find my emails
  • Mail search returns nothing

Example prompts

  • “connect Apple Mail”
  • “set up mail search”
  • “Dex can”
  • “/apple-mail-setup”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Confirm the platform
  2. Install the server
  3. Register the server at user scope
  4. Grant Full Disk Access to two apps — the terminal and the app that launches Mail search
  5. Build the index
  6. Verify — do not skip this
  7. After success

What it can do on your machine

Read from SKILL.md and the folder at commit 227f78e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pipx
    • claude
    • brew

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pipx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Apple Mail Setup loads about 2.5k tokens when it runs. Until then it costs about 84 tokens; SKILL.md has 1,400 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~84
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from davekilleen/Dex at commit 227f78e, republished under its MIT licence (© davekilleen). 1,400 words, ~2,484 tokens.

Download SKILL.mdSave it as .claude/skills/apple-mail-setup/SKILL.md (or your agent's skills folder).
name
apple-mail-setup
description
Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built. Use when the user says 'connect Apple Mail', 'set up mail search', 'Dex can't find my emails', 'mail search returns nothing'. Not for Gmail or Google Workspace; use `google-workspace-setup`.

Apple Mail Setup — Make Mail Search Actually Work

Purpose: Connect a community Apple Mail MCP server and — critically — build and verify its search index, so mail search reports honestly instead of failing silently.

When to run:

  • User types /apple-mail-setup
  • User asks about connecting Apple Mail, or wants Dex to read their inbox
  • /dex-doctor reports mail.apple-search as broken
  • User says mail search "finds nothing" or their daily plan misses obvious emails

The failure this prevents

Apple Mail servers have two data paths with different permissions, and only one of them announces failure:

PathNeedsWhat happens when it's missing
List / read messagesAutomation permissionPrompts you — you notice
SearchA pre-built local index (default ~/.apple-mail-mcp/index.db), which requires Full Disk Access to build and to keep currentLooks empty — or worse, returns subject/sender hits labelled as body matches.

Because list and read keep working, the integration looks healthy. On older server versions, search returned nothing. On the current supported release (0.4.3), a missing index no longer stays silent: body search falls through to a live Mail query of subject and sender, then labels those hits as body matches. That is plausible-looking evidence for a search that never read a message body.

One reporter ran the silent version for months. The labelled-as-body version is worse than silence.

So this setup is not finished when the server is registered. It is finished when the index exists, the serving process can read ~/Library/Mail, and /dex-doctor reports mail.apple-search as OK.


Process

1. Confirm the platform

Apple Mail is macOS-only. On any other platform, say so plainly and stop: "Apple Mail integration only works on macOS. For Gmail, run /google-workspace-setup."

2. Install the server

Check whether it is already installed: which apple-mail-mcp

If not, install the version Dex currently supports and tests: pipx install 'apple-mail-mcp==0.4.3'

apple-mail-mcp is community-maintained. Version 0.4.3 is Dex's current supported contract for its index schema and CLI. Do not upgrade it during setup; a newer community release should be adopted only after Dex's health checks and macOS CI prove compatibility.

If pipx itself is missing: brew install pipx && pipx ensurepath

3. Register the server at user scope

Dex requires an explicit scope (a hook enforces this). Register it for the user:

claude mcp add --scope user apple-mail -- apple-mail-mcp serve
4. Grant Full Disk Access to two apps — the terminal and the app that launches Mail search

This is the step people skip, and skipping it is what produces the silent (or worse, plausible-looking) failure. Building the index reads ~/Library/Mail directly, which macOS protects. Keeping the index current does the same read from whatever process launches the Mail server — that is Dex, Claude, or Cursor, not the terminal that ran index.

Those are two different grants. The one you would naturally test (Terminal) is not the one that keeps search alive.

Full Disk Access is a broad macOS permission: the approved app can read protected personal data across the Mac, not only Mail. Grant it to:

  1. The terminal app that will run the one-off index command
  2. The app that launches the Mail server (Dex, Claude, or Cursor)

Walk the user through it for each app:

1. Open System Settings (Command+Space, type "System Settings")
2. Click "Privacy & Security" in the sidebar
3. Click "Full Disk Access"
4. Click "+" and add the app
5. Toggle it ON
6. Quit and reopen that app — the permission only applies to a fresh launch

Explain why in one line: "macOS treats your mail files as private. The indexer needs permission to build the search copy, and the app that runs Mail search needs the same permission to keep that copy current — without it, refresh can report success after reading nothing."

5. Build the index

If any Dex, Claude, or Cursor session is using Mail search, quit those first. A live Mail server holds the search-index lock for its whole life, so the command below fails while those sessions are open.

Have the user run, in the terminal they just granted access to:

umask 077; apple-mail-mcp index --verbose

umask 077 makes any new database and SQLite sidecar files private to this Mac account. The build takes a few minutes on a large mailbox and must be run manually. After the build, leave Full Disk Access on for the app that launches the Mail server. Background sync reads ~/Library/Mail the same way the indexer does; if that grant is missing, every refresh can return zero changes and still write a fresh "last synced" time.

6. Verify — do not skip this
apple-mail-mcp status
  • "No index found" → Full Disk Access was not actually in effect. The most common cause is not quitting and reopening Terminal after toggling it. Go back to step 4, then step 5.
  • A non-zero email count and a recent last-sync time → continue to the Doctor check.

Then confirm through Dex itself: /dex-doctor — check mail.apple-search reports OK. Doctor also verifies that the database and any -wal / -shm sidecars are exactly 0600 (readable and writable only by this Mac account).

7. After success

Confirm: "✅ Mail search is working — indexed and fresh."

Then tell them the two maintenance facts that matter:

  1. A recent "last synced" time is not proof the index is alive. If the app that launches the Mail server lacks Full Disk Access, refresh can read nothing, write a fresh timestamp, and leave the copy frozen for months. Doctor now checks that this process can actually read ~/Library/Mail, not only that the index file looks fresh.
  2. The terminal grant can be removed after the build. The Dex / Claude / Cursor grant cannot — that is the process that keeps the copy current.

Show full SKILL.md (525 more words)Show less

Ongoing health

/dex-doctor runs mail.apple-search as a deep check and reports:

VerdictMeaning
OFFNo Apple Mail server registered — opt-in, not a problem
OKThe configured SQLite index has real schema and data, a successful sync within its configured freshness limit, private file permissions, and this process can read ~/Library/Mail
BROKENCommand missing; config invalid; index missing, empty, unreadable, corrupt, incomplete, stale, readable by other local accounts, or the serving process cannot read the Mail store — each with the exact fix and the Full Disk Access prerequisite
UNKNOWNA server is registered but this isn't macOS

Troubleshooting

Search returns empty but status says an index exists: Run /dex-doctor. A file can exist while its schema is broken, it contains zero messages, or its recorded sync is stale. If Doctor asks you to rebuild, quit every Dex, Claude, or Cursor session that is using Mail search first, then run apple-mail-mcp rebuild --verbose. A live Mail server holds the search-index lock for its whole life.

The index is in a custom location: Dex follows APPLE_MAIL_INDEX_PATH from the registered MCP server first, then [index] path in ~/.apple-mail-mcp/config.toml, then the default location. Doctor applies the same order.

"No index found" even after granting Full Disk Access: Quit Terminal completely (Command+Q, not just closing the window) and reopen it. macOS applies the permission at launch.

Search worked before and stopped: Run apple-mail-mcp status, then /dex-doctor. A recent last-sync time is not enough — if Doctor says the serving process cannot read ~/Library/Mail, grant Full Disk Access to Dex / Claude / Cursor (not only Terminal), quit and reopen that app, then rebuild. If Doctor asks you to refresh or rebuild the index, quit every Dex, Claude, or Cursor session that is using Mail search first — a live Mail server holds the search-index lock for its whole life, so the refresh command fails while those sessions stay open.

Search returns subject-looking hits labelled as body matches: On 0.4.3, body search with no usable index falls through to a live Mail query of subject and sender. Treat that as broken, not as evidence. Run /dex-doctor.

The model keeps retrying searches with different keywords: That's the server's empty-result hint ("try fewer keywords") being misread as a search miss rather than a missing index. Run apple-mail-mcp status to check the real cause — and if it says no index, that hint was the bug, not your query.


Technical Notes

  • Index location: ~/.apple-mail-mcp/index.db by default; the server supports a custom path through its MCP environment or config.toml
  • Why an index at all: searching it takes ~2ms versus seconds for driving Mail.app directly
  • What it contains: message subjects, senders, bodies, local .emlx paths, attachment metadata, and sync records; the database plus any -wal / -shm sidecars must be 0600
  • What leaves the Mac: the index file stays local. Doctor reads only schema, counts, timestamps, integrity, and file permissions—not message text. Mail search results are returned to the configured AI client and may be sent to that client's model provider under its normal privacy settings; setup must never claim that no mail content leaves the Mac.
  • Community server: this is not a first-party Dex integration; behaviour depends on the server you install

© davekilleen, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/apple-mail-setup of davekilleen/Dex.

Open the folder on GitHubat commit 227f78e

Compare with similar skills

Apple Mail Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Apple Mail Setup compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Apple Mail Setup this skilldavekilleen/Dex493—~2.5kAutomated safety check: PassMIT
Gwskv0906/pm-kit138—~1.6kAutomated safety check: PassMIT
Google Workspaceswarmclawai/swarmclaw688—~680Automated safety check: PassMIT
Google Workspace CLIhoodini/ai-agents-skills282—~10kAutomated safety check: NotesNone
Managing Google Workspacetaylorwilsdon/google_workspace_mcp3.3k—~2.9kAutomated safety check: PassMIT
Google Workspacemitsuhiko/agent-stuff3.2k—~919Automated safety check: PassApache-2.0

Similar skills

  • Gws

    kv0906/pm-kit

    This skill should be used when the user asks to "set up gws", "install Google Workspace CLI", "connect Gmail to Claude", "manage Google Drive from terminal", "send email from CLI", "check my…

    138 GitHub stars~1.6k tokensUpdated 3 mo ago
    Documents & OfficeAuto-check passed
  • Google Workspace

    swarmclawai/swarmclaw

    Use Google Workspace CLI (gws) for Drive, Docs, Sheets, Gmail, Calendar, Chat, and related Workspace API tasks.

    688 GitHub stars~680 tokensUpdated 3 mo ago
    Documents & OfficeAuto-check passed
  • Google Workspace CLI

    hoodini/ai-agents-skills

    Interact with all Google Workspace APIs via the gws CLI. An agent skill from hoodini/ai-agents-skills.

    282 GitHub stars~10k tokensUpdated 2 mo ago
    Documents & OfficeAuto-check: notes
  • Managing Google Workspace

    taylorwilsdon/google_workspace_mcp

    Manages Google Workspace operations across 12 services (Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Contacts, Chat, Apps Script, Custom Search).

    3.3k GitHub stars~2.9k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Google Workspace

    mitsuhiko/agent-stuff

    Access Google Workspace APIs (Drive, Docs, Calendar, Gmail, Sheets, Slides, Chat, People) via local helper scripts without MCP.

    3.2k GitHub stars~919 tokensUpdated 11 days ago
    Documents & OfficeAuto-check passed
  • Gmail Query Syntax

    provos/ironcurtain

    Reference for Gmail's search query syntax — operators like is:sent, newerthan:, from:, has:attachment, label:, and how they compose.

    612 GitHub stars~971 tokensUpdated 2 days ago
    Productivity & AutomationAuto-check passed

More from davekilleen/Dex

All 61 skills in this repo
  • Dspy Ruby

    davekilleen/Dex

    This skill should be used when working with DSPy.rb, a Ruby framework for building type-safe, composable LLM applications.

    493 GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check passed
  • Diff Adopt Profile

    davekilleen/Dex

    Adopt a full published Heydex profile by handle ('set me up like @davekilleen').

    493 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Diff Generate

    davekilleen/Dex

    Package one workflow — how you use Dex for a specific job — into a shareable DexDiff methodology doc.

    493 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Creating Agent Skills

    davekilleen/Dex

    Expert guidance for creating, writing, and refining Claude Code Skills.

    493 GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • Feedback

    davekilleen/Dex

    Report a Dex bug to the Dex team with zero homework — Dex investigates locally, builds a privacy-safe report, shows it to you (or auto-sends if you've chosen that), and tracks the ticket until it's…

    493 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Dhh Rails Style

    davekilleen/Dex

    This skill should be used when writing Ruby and Rails code in DHH's distinctive 37signals style.

    493 GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed

Questions about Apple Mail Setup

What does Apple Mail Setup do?

Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built. Apple Mail Setup is an agent skill from davekilleen/Dex. Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built.

When should I use Apple Mail Setup?

Apple Mail Setup fits situations like: the user says connect Apple Mail; set up mail search; dex cant find my emails; mail search returns nothing.

How do I install Apple Mail Setup in Claude Code?

Run `npx skills add davekilleen/Dex --skill apple-mail-setup -a claude-code`. Or copy the skill folder (.claude/skills/apple-mail-setup in davekilleen/Dex) into .claude/skills/apple-mail-setup in your project. Claude Code loads it when a task matches its description.

How do I install Apple Mail Setup in Codex?

Run `npx skills add davekilleen/Dex --skill apple-mail-setup -a codex`. Or copy the skill folder (.claude/skills/apple-mail-setup in davekilleen/Dex) into .agents/skills/apple-mail-setup in your project. Codex loads it when a task matches its description.

Can I use Apple Mail Setup in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add davekilleen/Dex --skill apple-mail-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/apple-mail-setup, .gemini/skills/apple-mail-setup, .github/skills/apple-mail-setup and .opencode/skills/apple-mail-setup in your project.

What does Apple Mail Setup need to run?

Going by SKILL.md and its folder, Apple Mail Setup needs the command-line tools its instructions call (pipx, claude and brew).

Does Apple Mail Setup access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Apple Mail Setup safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Apple Mail Setup use?

Apple Mail Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Apple Mail Setup use?

About 2.5k tokens (SKILL.md is roughly 9.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Apple Mail Setup?

Skills that share tags, products or a category with Apple Mail Setup: Gws (kv0906/pm-kit, 138 stars), Google Workspace (swarmclawai/swarmclaw, 688 stars), Google Workspace CLI (hoodini/ai-agents-skills, 282 stars) and Managing Google Workspace (taylorwilsdon/google_workspace_mcp, 3.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Apple Mail Setup?

davekilleen (a GitHub user) maintains it in davekilleen/Dex, which has 493 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on October 8, 2026.

Source: davekilleen/Dex on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.