Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
APPLE_TOOLS_INDEX_DAYS_BACKNoNumber of days back to index when building the search index30

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
smart_searchA

Intelligent search across Mail, Messages, and Calendar. Automatically determines which sources to search based on your query. Returns results grouped by time when multiple sources match. Use this for complex queries that might span multiple data sources.

mail_searchB

Semantic search for emails using AI embeddings. Finds emails by meaning, not just keywords. Supports filtering by sender, recipient, attachments, mailbox, sent/received, and flagged.

mail_recentA

Get most recent emails without semantic search. Use this when the user asks for 'recent emails', 'latest emails', 'what emails did I get', or 'unread emails'.

mail_dateB

Get all emails from a specific date. Supports natural language like 'today', 'yesterday', 'November 13', 'last Friday'. Use this when the user asks for emails on a specific date.

mail_readA

Read full email content. Use the file_path from mail_search or mail_recent results.

mail_findA

Exact email lookup in Mail's own database (not the semantic index, so it never waits on indexing and matches filters exactly). Returns JSON: one row per copy (the same Message-ID in INBOX and Sent is two rows) with message_id, subject, from, to, received, mailbox, account_id. Needs at least one of subject_prefix, subject_contains, from, to, message_ids. Trash is excluded unless include_trash or mailboxes asks for it. Pair with mail_trash message_ids to clear what it finds.

mail_linksA

Links in one email, decoded: each http(s) link with its visible text, from the HTML anchors (quoted-printable and base64 decoded, & unescaped) and bare URLs in the plain-text part. Use the id from mail_find. mail_read strips HTML, so it loses link targets; use this when you need the URL behind a button such as a sign-in or confirm link. Reads Mail's message file directly and never waits on the index. downloaded:false means Mail has not saved the file yet.

messages_searchB

Semantic search for iMessages/SMS using AI embeddings. Finds messages by meaning. Supports filtering by contact, group chats, specific group name, and attachments.

messages_recentA

Get most recent messages without semantic search. Use this when the user asks for 'recent messages', 'latest texts', or 'what messages did I get'. My own messages show a To: line naming the contact or group chat they were sent to.

messages_conversationA

Get full conversation history with a specific contact. Shows messages in chronological order.

calendar_searchB

Semantic search for calendar events using AI embeddings. Finds events by meaning. Supports filtering by calendar name and all-day events.

calendar_dateA

Get all events on a specific date. Supports natural language dates like 'today', 'tomorrow', 'next Tuesday', 'Jan 15'.

calendar_free_timeB

Find free time slots on a specific date. Analyzes calendar to find available time windows.

mail_sendersB

List most frequent email senders. Helps identify who you communicate with most.

rebuild_indexA

Rebuild the search index for one or more data sources. This clears the existing index and re-indexes all content from scratch. Use this if search results are stale, missing, or if the index is corrupted. Can rebuild emails, messages, calendar, or all sources at once.

audit_indexB

Audit search index against source data with 0% tolerance. Reports missing items, orphaned entries, and duplicates with detailed file paths and remediation suggestions. Validates 100% of source data.

messages_contactsB

List all contacts you've messaged, sorted by most recent. Shows message count and last message date.

calendar_upcomingA

Get next N upcoming events across all calendars. Simpler than calendar_search for quick schedule overview.

calendar_weekA

Get all events for the current week or a future week. Shows events grouped by day.

mail_threadB

Get all emails in a conversation thread. Finds related emails by matching subject lines.

calendar_recurringB

List recurring events (events that appear multiple times). Shows upcoming occurrences.

contacts_searchB

Search your contacts by name, email, phone, or organization. Returns matching contacts with all their details.

contacts_lookupB

Look up a specific contact by email, phone number, or name. Returns full contact details including all emails and phone numbers.

person_searchA

Search ALL communication with a specific person across Mail, Messages, and Calendar. Automatically finds their emails and phone numbers from Contacts to search all sources.

mail_sendA

Send an email through Mail.app. Success requires Sent/Outbox verification, not merely an AppleScript return. Multiple recipients require confirm=true. Durable claims never expire uncertainty or automatically retry; changing/removing a key cannot bypass pending or terminal not_sent lineage. Read structuredContent.mail_send: suppression/replay is not a new delivery and cannot advance a page ledger. Legacy pending claims cannot be reconciled. A later retry after terminal not_sent needs separate protected single-use authorization, not confirm or a new key.

mail_send_reconcileB

No-send claim adjudication. Legacy claims are always ineligible. begin establishes a persistent global writer fence before fresh evidence is collected; commit requires protected administrator-provisioned approval, complete Sent AND Outbox evidence, and exclusion of all old/queued/script writers. Missing authority refuses. Neither action sends, retries, wakes Mail, changes the page ledger, or issues retry permission.

mail_draftA

Save an email to Drafts without sending it. Drafts are never delivered, so no recipient confirmation is required.

mail_replyA

Reply to an existing email. The reply text is pasted above the quoted original in a visible Mail window (System Events focus on the message body, then Command-Up and clipboard paste — not Cmd-A, which would replace the quote; AppleScript content is not set because Mail 16 leaves it empty). reply_all=true fans out to every original recipient and requires confirm=true. A real send is verified in Sent/Outbox before success. A send hang is a timeout, not TCC, unless Mail reports -1743/-10004; hang recover uses In-Reply-To. Clients must Sent-check before retrying a timed-out send.

mail_forwardA

Forward an existing email to new recipients. An optional note is pasted above the forwarded original in a visible Mail window (same System Events prepend as mail_reply; AppleScript content is not set). More than one recipient requires confirm=true. A real send is verified in Sent/Outbox before success. A send hang is a timeout, not TCC, unless Mail reports -1743/-10004; hang recover matches intended To plus Fwd: subject or original Message-ID. Clients must Sent-check before retrying a timed-out send.

mail_markC

Mark an email as read or unread.

mail_archiveC

Move an email to its account's Archive mailbox.

mail_trashA

Move email to Trash. Destructive: requires confirm=true, otherwise the call only reports what would be trashed. One message: message_id or file_path. Many: message_ids (up to 500, e.g. from mail_find) moves every copy of each (INBOX, Sent, Archive...) to that account's Trash; each copy's Message-ID is re-checked before it moves. A bulk call stops starting new moves after ~35s and reports 'remaining'; run it again for the rest.

messages_sendA

Send an iMessage or SMS. Address it with 'to' (E.164 phone numbers like +15551234567, or Apple ID emails) or with 'chat_id' (a chat GUID from chat.db, e.g. 'iMessage;-;+15551234567' or 'iMessage;+;chat123456'). Group chats and multiple recipients require confirm=true.

calendar_list_calendarsA

List the calendars in Calendar.app with their writability, so events land on the intended calendar instead of the default.

calendar_addB

Create a calendar event. Times must be explicit local datetimes (YYYY-MM-DD HH:MM). Supports recurrence (FREQ=DAILY/WEEKLY/MONTHLY/YEARLY with INTERVAL, COUNT or UNTIL, BYDAY) and alerts in minutes before the start. Returns the new event id.

calendar_editA

Update an existing event by id. Pass only the fields to change. Setting alerts_minutes_before replaces the event's existing alerts.

calendar_removeA

Delete a calendar event by id. Destructive: requires confirm=true, otherwise the call only reports what would be deleted.

calendar_rsvpB

Respond to a calendar invitation: accept, decline, or tentative.

contacts_addC

Create a contact in Contacts.app. Returns the new contact id.

contacts_editB

Update a contact by id. Emails and phones are added unless replace_emails / replace_phones is set; replacing with an empty list removes them and requires confirm=true.

contacts_removeA

Delete a contact by id. Destructive: requires confirm=true, otherwise the call only reports what would be deleted.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 41 tools

Disambiguation4/5

Most tools have sharply distinct purposes and the descriptions explicitly disambiguate the risky pairs (mail_search semantic vs mail_find exact vs mail_recent vs mail_date; calendar_search vs calendar_date vs calendar_week vs calendar_upcoming). Remaining friction is the sheer number of near-sibling retrieval tools per domain, plus contacts_search vs contacts_lookup and person_search vs smart_search, but the descriptions give clear selection cues in each case.

Naming Consistency4/5

There is a strong, predictable domain-prefix scheme (mail_*, messages_*, calendar_*, contacts_*) which makes grouping obvious. Suffixes mix patterns though — noun_verb (mail_search, calendar_search) alongside noun_adj/noun_noun (mail_recent, calendar_date, mail_links) and unprefixed outliers (smart_search, person_search, rebuild_index, audit_index).

Tool Count3/5

41 tools is heavy for what is four Apple data domains plus index maintenance; each domain carries 7-10 tools including many overlapping read paths. Some are clearly niche (mail_send_reconcile with a dense claim-adjudication contract, rebuild_index, audit_index) and inflate the surface beyond what most agents need.

Completeness4/5

Coverage is genuinely broad: mail read/search/send/draft/reply/forward/archive/trash/mark, messages read/search/send, calendar full CRUD plus RSVP, recurring, free-time and calendar listing, and contacts CRUD plus search/lookup. Gaps are minor but real — no flag/star setter despite a flagged search filter, no draft listing/retrieval or sending an existing draft, no mail move (only archive/trash), and no contact list-all.

Maintenance

ActivityActive
ResponsivenessNo recent community issues