Skills & integrations
The switches, and everything Edward can connect to.
Skills
Skills are switches in the Edward tab, under Mind → Skills. Every one starts off on a fresh install. Edward’s tools are the same fourteen on every surface, and a skill can only take some away; each row shows a live status that says what is actually true (“not paired”, “credentials rejected”).
| Skill | What turning it on gives him |
|---|---|
| Shell/Bash | His computer: bash and the file editor, in his sandbox |
| Web Search | web_search and web_fetch |
| iMessage | messages and send_message: reading and sending iMessages, and mail with them. Pings need it too |
| Push Notifications | An urgent tell_owner may buzz your phone; with it off, he leaves a note on Today instead |
| iOS Widget | The screen tool’s widget actions |
| Voice Conversations | Voice memos and live voice (with an ElevenLabs key) |
| Code Interpreter, JavaScript, SQL Database | Retired: “Edward runs this in his own shell now.” They gate nothing |
| Twilio SMS and WhatsApp, WhatsApp (MCP), Contacts, Apple Services, HTML Hosting, Alexa, Orchestrator, Claude Code Session | Status rows. Each reports whether its integration works; the switch doesn’t change Edward’s tools |
memory, schedule, screen, look, plan, tell_owner, browser and chrome are always present (chrome answers that the hands are off until you turn them on).
Messages and mail
- iMessage: read from Messages’ own database, sent through AppleScript from your own Apple ID, signed as Edward. See Listening & pings.
- Mail.app (iCloud or any account in it): read from Mail’s index on the Mac.
- Gmail: through Google’s API with an OAuth client of your own (gmail-setup.md). Email he sends goes out from your Gmail through the same guarded
send_message, and never to you. - Twilio: SMS and WhatsApp from a number of Edward’s own. Signed webhooks only, answering only your numbers unless
EDWARD_TWILIO_ANSWER_ANYONE=on. - WhatsApp as you, through the whatsapp-mcp project’s Go bridge: run it yourself, scan its QR code, then
MCP_WHATSAPP_ENABLED=true.
Reading is open in every turn; what someone else wrote marks the turn as tainted (see Guard rails).
Your Mac’s own data
- Calendar and Reminders: read from their own databases (Full Disk Access); changed only when you ask, through the EventKit helper.
- Contacts: read from the AddressBook databases; Contacts.app only as a fallback.
- apple-mcp (optional,
MCP_APPLE_ENABLED=true): only a fallback for reading your calendar when Calendar’s own database can’t be read; its other tools are not given to Edward. Install bun and clone apple-mcp (its location isMCP_APPLE_DIR, default~/apple-mcp).
Search
On Claude, search and fetch are Anthropic’s server tools and need no other key. Brave Search (BRAVE_SEARCH_API_KEY) is used only when they are off (EDWARD_SERVER_WEB_TOOLS=off) or on the Codex fallback.
Your home
- Alexa: a custom skill can ask Edward things (alexa-setup.md). Inbound requests are not signature-verified yet, so leave
ALEXA_SKILL_IDunset unless you use it. - Home Assistant: announcements on Echo devices (
HOME_ASSISTANT_URL,HOME_ASSISTANT_TOKEN). - Presence: the menu-bar companion, or any script with your widget token, tells Edward which Mac you are at.
Custom MCP servers
MCP servers already installed (by a March install, for example) run with npx or uvx, and their tools are bound beside the fourteen, prefixed with the server’s name. You can switch, restart or remove them in Mind → Servers; this release has no way to add a new one from the app, and Edward can’t install servers himself any more (he runs npx in his own shell when he wants one for himself). Because nothing can tell what a custom tool does, every one is treated as outward: its arguments are secret-scanned, its results taint the turn and are redacted, a wake that uses one writes a journal entry, and it is refused in friends’ pings and in turns that may reach nobody.
A server runs as you, unsandboxed, with an allowlisted environment (no keys of Edward’s). Its own env_vars are stored in plain text in the database and its backups: don’t put a write-capable token there without meaning to.
Also available
- Hosted pages:
HTML_HOSTING_URLandHTML_HOSTING_API_KEYpoint at a small upload service that speaks its API. There is no default host, and Edward’s tools for it were retired. - The knowledge graph (Graphiti and Kuzu), off by default: see Memory.
Removed
The Python, JavaScript and SQL sandboxes, Lightpanda, LangSmith, Find My and USPS tracking are gone. See Upgrading from March for the full list.
The long form: integrations.md.