eve-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EVE_BIN | No | Path to the eve CLI binary. | /opt/homebrew/bin/eve |
| EVE_MCP_HOST | No | Host address for the HTTP mode (use the Tailscale IP, not 0.0.0.0). | |
| EVE_MCP_PORT | No | Port for the HTTP mode (e.g. 8787). | |
| EVE_MCP_TOKEN | No | Bearer token for the HTTP mode. Without it the HTTP mode refuses to start. | |
| EVE_ROXYBOT_DIR | No | Directory where the RoxyBot tools read and write contacts.json, profile.json and log.jsonl. | ~/Library/Application Support/eve/roxybot/ |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| eve_searchA | Full-text search (FTS5) across copied clips and voice transcriptions on this Mac. Use to find a specific item by its words — e.g. 'the URL I copied from Slack', 'what I dictated about the budget'. Returns clips[] and transcriptions[] with match snippets. Default sort is relevance (best matches first, top-N). For chronological paging through many results, set sort to recency/created and a single source (clips OR transcriptions), then page with the returned cursor. |
| eve_recentA | List the most recent clips or transcriptions, newest first. Use for 'what did I copy/dictate recently' or, with filters, 'recent links from Safari' / 'my longest dictations'. Supports sorting (recency|created|copy_count for clips, duration for transcriptions), favorites, time bounds, and keyset pagination via meta.next_cursor. |
| eve_activityA | Aggregate counts of clips and transcriptions grouped by app, origin, content_type, hour, or day. Use for 'what apps did I work in today', 'when am I most active this week'. Optionally scope to one app. |
| eve_getA | Fetch one clip, screen recording, screenshot, or transcription by id with full, untruncated content. Clips: html, rtf size, OCR-extracted blob_text, optionally the linked voice transcription. Recordings (type 'recording'): the full recording row plus transcript_segments — millisecond word positions on the video timeline, the data needed to pick cut ranges for eve_export_clip. Screenshots (type 'screenshot'): full OCR text and the blob hash — resolve it to bytes via the blob-path CLI command / /api/blob route. Transcriptions (type 'transcription'): the full transcription row plus a linked screenshot (blob hash + OCR text), when one was captured at dictation stop. Use after eve_search/eve_recent returns an id. |
| eve_app_statsA | Statistics for a single source app: total clips, breakdown by content type, first/last seen, favorite count, total copies. Use for 'how much did I copy from Safari this month'. |
| eve_ingest_recordingA | Deliver a finished persona answer video into eve: copies the file into the user's recording folder, writes the history row and pops the persona bubble in the app. Use after generating a talking-head video for the user. Requires an absolute path to a local mp4/mov file. |
| eve_get_selectionA | The history entries the user has currently selected in eve's history board — their live focus context. Returns each selected item with a snippet/title. Check updated_at: it is the moment of the last selection change; if it is old, the selection may be stale and worth confirming. Empty items means nothing is selected right now. |
| eve_export_clipA | Cut a shareable mini-clip out of a screen recording, second-exact. Workflow: call eve_get with type 'recording' to read transcript_segments (millisecond word positions on the video timeline), pick one or more cut ranges, then call this tool. Multiple ranges are stitched into ONE clip in order. The master video is never modified; the clip lands in a clips/ folder next to it and appears as its own row in the app's Aufnahmen tab, carrying a remapped timed transcript of its own. |
| eve_categoriesA | All user-defined categories with entry counts and purpose descriptions. Categories group mixed history entries (clips, transcriptions, recordings, live talks) into projects; the description states why a category exists. Use the names with eve_recent/eve_search category filters or eve_categorize. |
| eve_categorizeA | Adds a category to (or removes it from) history entries — the write path for organizing entries into projects from the agent side. Targets are type:id pairs from eve_recent/eve_search/eve_get_selection results. The running app refreshes automatically. |
| eve_restoreA | Brings soft-deleted history entries back (clears their deleted flag). Find candidates with eve_recent's deleted option. The running app refreshes automatically. |
| eve_live_talkA | Voice-conversation loop with the user. Call it in a loop: pass your answer to the previous utterance as |
| contacts_resolveA | Find a phone number by name for RoxyBot calls and messages. Matches name or alias, ignoring case and accents; a unique first-name match also counts. Returns {contact: {naam, nummer}} or {contact: null} when nothing or more than one person matches. |
| profile_getA | Read a saved personal value such as the 'thuis' or 'werk' address. Returns {sleutel, waarde} with waarde null when unknown. |
| log_appendB | Record one call or message line from the RoxyBot phone: type (call, sms, whatsapp, …), doel, ts (epoch ms), status and optional inhoud. Written to log.jsonl on this Mac only. Returns {ack: true}. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Most tools target clearly distinct resources or actions: search vs recent vs get vs selection vs export are separable, and the RoxyBot helpers (contacts_resolve, log_append) and profile_get stand apart. The main overlap is eve_activity vs eve_app_stats, which both produce aggregate counts and differ only in grouping scope; the descriptions help but an agent could pick the wrong one for 'how much did I copy from Safari'.
Consistent snake_case throughout, with domain prefixes (eve_, profile_, log_, contacts_) applied predictably to their respective areas. Minor deviation: some eve_ tools are verb-led (eve_search, eve_get, eve_restore, eve_categorize) while others are noun-led (eve_activity, eve_categories, eve_app_stats), so the action isn't always the second token, but the set stays readable.
15 tools covers a genuinely broad surface — clipboard/dictation history, recordings, export, categories, live voice conversation, and phone-side logging/contacts. It sits at the top of the comfortable range but each tool maps to a distinct operation with no obviously redundant entries.
Read and organize workflows are well covered (search, recent, get, stats, categories, categorize, restore, export, live talk). Notable gaps: no category create/delete or rename, no way to write profile values (profile_get is read-only), and no entry delete — only restore of soft-deletes — leaving dead ends for common lifecycle operations.