Skip to main content
Glama

eve-mcp

MCP-server voor EVE (klembord- en transcriptiegeschiedenis op de Mac), uitgebreid met drie tools voor RoxyBot, de spraakgestuurde Android-launcher. In RoxyBot heet deze bron "BioBASE".

De server roept de eve-CLI aan en geeft de JSON terug. Alle data blijft op de Mac.

Tools

Tool

Doet

eve_search, eve_recent, eve_get, eve_activity, eve_app_stats, eve_categories, eve_categorize, eve_restore, eve_get_selection, eve_ingest_recording, eve_export_clip, eve_live_talk

De bestaande EVE-tools (ongewijzigd)

contacts_resolve

naam → {contact: {naam, nummer}} of {contact: null}

profile_get

sleutel (thuis, werk) → {sleutel, waarde}

log_append

{type, doel, ts, status, inhoud?} → {ack: true}

RoxyBot vertaalt memory_query naar eve_search. Via de relay mag de bot alleen contacts_resolve, profile_get en memory_query gebruiken; log_append roept alleen de telefoon zelf aan. De telefoon dwingt dat af.

Related MCP server: altic-mcp

Vereisten

  • macOS met de EVE-app en de eve-CLI (standaard /opt/homebrew/bin/eve)

  • Node.js 20 of nieuwer

  • Voor RoxyBot: Tailscale op de Mac en op de telefoon

Installeren

git clone https://github.com/netvistamedia/eve-mcp.git
cd eve-mcp
npm install
npm test          # compileert (tsc) en draait de tests; raakt geen draaiende dienst

npm run build voert na het compileren launchctl kickstart … ai.eve.mcp uit. Gebruik npx tsc of npm test als je alleen wilt bouwen.

Als MCP-server voor Claude Code (stdio)

Wijs de bestaande eve-server in je Claude-config naar deze build:

"eve": {
  "command": "/opt/homebrew/bin/node",
  "args": ["/pad/naar/eve-mcp/dist/index.js"],
  "env": { "EVE_BIN": "/opt/homebrew/bin/eve" }
}

Of kopieer dist/ over een bestaande installatie, bijvoorbeeld ~/.claude/eve-mcp/dist.

RoxyBot-gegevens

De drie RoxyBot-tools lezen en schrijven in ~/Library/Application Support/eve/roxybot/ (of EVE_ROXYBOT_DIR). Maak de twee JSON-bestanden zelf aan:

// contacts.json
[{ "naam": "Sarah de Vries", "nummer": "+31612345678", "aliassen": ["Sarah"] }]
// profile.json
{ "thuis": "Keizersgracht 1, Amsterdam", "werk": "Stationsplein 2, Utrecht" }

log_append schrijft regels naar log.jsonl in dezelfde map (alleen leesbaar voor jou). Past een naam bij meer dan één contact, dan geeft contacts_resolve null: liever niets dan de verkeerde persoon bellen.

HTTP-modus voor RoxyBot (via Tailscale)

RoxyBot bereikt EVE via Streamable HTTP op je Tailscale-adres, met een bearer-token. Zonder EVE_MCP_TOKEN weigert de HTTP-modus te starten.

Eenmalig proberen

export EVE_BIN=/opt/homebrew/bin/eve
export EVE_MCP_HOST=$(tailscale ip -4)     # 100.x.y.z — alleen het tailnet
export EVE_MCP_PORT=8787
export EVE_MCP_TOKEN=$(openssl rand -hex 32)
node dist/index.js
# eve-mcp: Streamable HTTP on http://100.x.y.z:8787/mcp

Blijvend via launchd

Maak ~/Library/LaunchAgents/ai.eve.mcp.plist (vul paden, adres en token in):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>ai.eve.mcp</string>
  <key>ProgramArguments</key>
  <array>
    <string>/opt/homebrew/bin/node</string>
    <string>/pad/naar/eve-mcp/dist/index.js</string>
  </array>
  <key>EnvironmentVariables</key>
  <dict>
    <key>EVE_BIN</key><string>/opt/homebrew/bin/eve</string>
    <key>EVE_MCP_HOST</key><string>100.x.y.z</string>
    <key>EVE_MCP_PORT</key><string>8787</string>
    <key>EVE_MCP_TOKEN</key><string>JOUW-TOKEN</string>
  </dict>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>StandardErrorPath</key><string>/tmp/eve-mcp.log</string>
</dict>
</plist>
chmod 600 ~/Library/LaunchAgents/ai.eve.mcp.plist        # het token staat erin
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.eve.mcp.plist
launchctl kickstart -k gui/$(id -u)/ai.eve.mcp             # herstarten na een nieuwe build

Claude Code start zijn eigen stdio-exemplaar en heeft deze dienst niet nodig.

Koppelen met RoxyBot

Met dezelfde variabelen als hierboven:

EVE_MCP_HOST=… EVE_MCP_PORT=… EVE_MCP_TOKEN=… npm run roxybot-qr

Dit toont een QR-code (roxybot-eve://<host>:<poort>?token=<token>&v=1). Scan hem in RoxyBot via instellingen → BioBASE (EVE) → QR-code scannen, of vul host, poort en token daar handmatig in. Het script accepteert alleen Tailscale-adressen.

Beveiliging

  • De HTTP-modus luistert alleen op het opgegeven adres; gebruik je Tailscale-IP, niet 0.0.0.0.

  • Het token geeft toegang tot je EVE-geschiedenis: bewaar het niet in gedeelde bestanden en laat de QR-code niet open in beeld staan.

  • RoxyBot bewaart het token versleuteld in Android Keystore en praat alleen met Tailscale-adressen.

Licentie

MIT — zie LICENSE.

Available Tools

15 tools
contacts_resolveResolve a contact (RoxyBot)A

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.

NameRequiredDescriptionDefault
naamYesThe name as spoken, e.g. 'Sarah'.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses case/accent-insensitive matching, the first-name shortcut, and — critically — that ambiguous multi-matches yield {contact: null} rather than an error. Missing is any note on auth/prerequisites or the phone-number format returned, which keeps it off a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action, then matching rules, then return contract. Every clause carries information; nothing is restated from the schema or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by sketching the return object and the null case, which is what an agent needs to branch on the result. Only the number's format and any auth assumptions are left implicit for a mutation-free single-parameter lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics the schema lacks: the value may be a name or alias, case and accents are ignored, and a unique first-name match is accepted. That directly informs what to pass.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Find a phone number by name") plus the consumer (RoxyBot calls and messages). No sibling tool does contact resolution, so the agent can route here unambiguously; the matching rules and return shape further pin down scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use (resolving a contact for RoxyBot calls/messages) and, implicitly, that this is the lookup path when only a name is known. It does not name exclusions or alternatives, but no sibling provides overlapping functionality, so little is left ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_activityActivity aggregationA

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.

NameRequiredDescriptionDefault
limitNoMax group rows. Default 30.
rangeNoTime window: today, yesterday, week, month, 7d, 24h. Default today.
group_byNoAggregation dimension. Default app.
source_appNoBundle id filter. Clips: the source app. Transcriptions: matches recording start OR end app. Screenshots: the captured app.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden; 'aggregate counts' implies a read-only, side-effect-free operation, which is helpful. It does not state that explicitly, nor does it hint at cost or result-size characteristics beyond what the schema's limit default conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the capability and its grouping axes first, then usage examples and the optional scope. Every clause earns its place with no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All four parameters are optional and fully described in the schema, and 'aggregate counts grouped by' implicitly conveys the row-and-count return shape. Since there is no output schema, a brief statement of the result form would have closed the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so range, group_by, limit, and source_app are already documented in the schema, giving a baseline of 3. The description adds only the framing that source_app is an optional scoping filter; no extra syntax or defaulting nuance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation (aggregate counts) over a specific resource (clips and transcriptions) and enumerates the grouping dimensions, which lets an agent distinguish it from list-style siblings like eve_recent. It stops short of differentiating from eve_app_stats, which plausibly overlaps on per-app counts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Two concrete example questions ('what apps did I work in today', 'when am I most active this week') map directly onto the group_by choices, and 'Optionally scope to one app' signals the source_app use case. No explicit when-not or named alternative among the many siblings is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_app_statsPer-app statisticsA

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'.

NameRequiredDescriptionDefault
sinceNoTime window: today, yesterday, week, month, 7d, 24h, or yyyy-MM-dd. Default month.
bundleYesSource app bundle id, e.g. com.apple.Safari.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden; it does disclose the exact return metrics, which is genuinely useful given there is no output schema. It says nothing about behavior for an unknown bundle id (empty stats vs error), whether it is purely read-only, or performance over long time windows.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler: the metric list comes first and the illustrative use case second. Everything is front-loaded and each phrase maps to a dimension the agent cares about (content and usage).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with no output schema, enumerating the returned metrics plus a usage example is close to sufficient. The remaining gap is edge-case behavior (missing/unknown bundle) which the description does not address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (bundle, since) are fully documented with examples and the default window. The description reinforces that stats are scoped to a single app and a time window, but adds no syntax or format detail beyond the schema — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('statistics for a single source app') and enumerates the metrics returned (total clips, content-type breakdown, first/last seen, favorites, copies). It does not explicitly contrast with siblings such as eve_categories or eve_activity, so scope-vs-alternative is left partly implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The quoted example ('how much did I copy from Safari this month') gives a concrete scenario that maps both parameters to a real question. There are no exclusions or explicit alternatives, so the agent must infer when a different sibling (e.g. eve_activity) is the better call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_categoriesList 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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the return payload shape (names, entry counts, purpose text) and the read-only listing nature. It omits ordering, whether categories with zero entries appear, and whether the list is complete or truncated, which are minor but real gaps for a no-parameter enumerator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The returned-content summary comes first and the downstream-usage pointer second, which is the correct front-loading order.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no annotations and no output schema, the description supplies enough: what comes back and how to use it. It stops short of describing ordering or empty-state behavior, which an agent might want, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing about inputs the description needs to explain. The description instead spends its words on output semantics, which is the right allocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (all user-defined categories) and enumerates exactly what each returned item contains (entry counts, purpose descriptions). It also clarifies the domain concept — categories group mixed history entry types (clips, transcriptions, recordings, live talks) into projects — so an agent can distinguish this from entry-level siblings like eve_get or eve_recent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes the agent forward ('Use the names with eve_recent/eve_search category filters or eve_categorize'), which is the primary reason to call this tool. However, it offers no exclusion criteria — e.g. it never says not to use this when you only need a single category or when eve_activity would suffice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_categorizeAssign or remove a categoryA

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.

NameRequiredDescriptionDefault
addNoCategory name to add (created if new).
removeNoCategory name to remove.
targetsYesEntries as <type>:<id>, e.g. clip:12, screen_recording:3. Types: clip|transcription|transcription_job|screen_recording|live_talk|screenshot.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden; it does add one genuinely behavioral fact — that the running app refreshes automatically after the call — plus the implicit create-if-new on add. However it never says whether add and remove can be combined in one call, whether removal is destructive/reversible, or what permissions are needed, which are the key unknowns for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the add/remove duality and the write-path framing before the audience line. The phrase 'from the agent side' is slightly vague, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three fully documented parameters, no nested objects, and no output schema, the essentials are covered. It is still thin on the interaction between the two optional mutation parameters and on failure semantics (removing a category that isn't applied), which matter more here because no annotations declare the safety profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the <type>:<id> format and valid types, giving a baseline of 3. The description earns above baseline by adding provenance — where to obtain valid targets (eve_recent/eve_search/eve_get_selection) — which the schema does not say.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (add/remove), the resource (categories on history entries), and explicitly positions itself as 'the write path' versus the read siblings eve_recent/eve_search/eve_get_selection. An agent can distinguish it from eve_categories or eve_search without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for invocation: it is the agent-side write path for organizing entries into projects, and targets come from eve_recent/eve_search/eve_get_selection results. It stops short of naming exclusions or pointing to eve_categories for discovering existing category names, so it is clear but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_export_clipExport a clip from a recordingA

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.

NameRequiredDescriptionDefault
titleYesClip title shown in the Aufnahmen tab.
formatNoOutput format. Default mp4 (with audio). gif is silent, 10 fps, max 800 px wide.
qualityNoMP4 bitrate: share 2.5 Mbit/s (default), full 10 Mbit/s.
segmentsYesCut ranges, sorted and non-overlapping. One range = a simple cut.
recording_idYesRecording id from eve_recent/eve_search (type recording).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the master video is never modified, that output lands in a clips/ folder beside it, that a new row appears in the Aufnahmen tab, and that a remapped transcript is generated. It omits any indication of processing time/cost for transcoding or permission requirements, which matters for a media-writing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation, followed by a compact workflow and side-effects sentence; every sentence carries information an agent needs. The final sentence is densely packed with three facts, mildly reducing scanability, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the important ground: preconditions, non-destructiveness, and where the artifact lands. The remaining gap is what the tool returns (clip id, path, status object), which the agent must infer since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description adds real meaning by explaining that multiple ranges are stitched into ONE clip in order and that positions are millisecond word positions from the transcript, clarifying what 'segments' actually means operationally. It does not touch title/format/quality, but the schema already covers those with defaults and bitrate details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Cut a shareable mini-clip out of a screen recording') with a precision qualifier ('second-exact'). No sibling tool in the list exports clips, so the distinction is implicit but unambiguous from the operation described.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit three-step workflow: call eve_get with type 'recording' to read transcript_segments, pick cut ranges from millisecond word positions, then call this tool. That is a concrete prerequisite chain naming the sibling to use first, leaving nothing to inference about ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_getGet full clipA

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.

NameRequiredDescriptionDefault
idYesClip, recording, screenshot, or transcription id from a prior search/recent result.
typeNoEntity type. Default clip.
include_contextNoAlso include the linked transcription record, if any (clips only).

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does well: it explains that content is full and untruncated, describes per-type return content, and explains how to resolve screenshot blob hashes. It does not explicitly mention permissions or error behavior, but 'fetch' adequately signals a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured: it front-loads the core purpose, then organizes details by entity type. Every sentence carries useful selection or interpretation information for a polymorphic retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema or annotations, the description compensates by explaining return content for each entity type and how to resolve blob hashes. An agent should be able to call this correctly and interpret the results from the description plus schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters. The description adds value beyond the schema by clarifying type-specific behavior, especially what recording transcript_segments provide and that include_context applies to clips.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: fetch one clip, recording, screenshot, or transcription by id with full content. It clearly distinguishes this full-detail retrieval from search/recent by saying to use it after those tools return an id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes the agent: use after eve_search/eve_recent returns an id. It also names the downstream relationship to eve_export_clip for recordings, making the workflow position clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_get_selectionWhat is the user looking atA

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, and it does disclose the return shape (each selected item with a snippet/title), a freshness field with its exact semantics, and empty-result behavior. It does not state side effects or access requirements, but 'get' plus a read-shaped return makes read-only intent clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what the tool returns, then the staleness caveat, then the empty case. Every sentence contributes a distinct operational fact with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only lookup with no output schema, the description covers what is returned, the key freshness signal, and the empty case — everything an agent needs to call and interpret it. No essential gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly spends no words on parameter explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: the entries currently selected by the user in eve's history board, described as the live focus context. This is clearly distinguishable from sibling retrieval tools like eve_recent, eve_search, or eve_get, which fetch raw history rather than current selection state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete interpretive rule — check updated_at, and treat an old value as possibly stale and worth confirming — plus the meaning of an empty items list. It does not, however, name when to prefer a sibling tool such as eve_recent or eve_search instead, so the alternatives dimension is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_ingest_recordingIngest a persona answer videoA

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.

NameRequiredDescriptionDefault
pathYesAbsolute path to the finished video file (mp4/mov).
titleYesTitle shown in the Aufnahmen tab.
personaYesPersona name, e.g. da-vinci.
transcript_fileNoOptional absolute path to the spoken script; stored as the recording transcript.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose that this is a mutating operation with three distinct side effects: copying the file, writing a history row, and popping a UI element. It does not cover overwrite/idempotency behavior or what happens if the persona does not exist, which is the remaining gap for a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and its effects before the usage note and the input constraint. The path requirement is slightly redundant with the schema description, a minor bit of waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation, no-output-schema mutation tool with 4 params (3 required), the description covers effects, prerequisite, and input format well. The gaps are edge-case behavior (duplicate file, unknown persona) and any hint of what the call returns or throws.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains path, title, persona, and transcript_file; the description's only parameter content ('absolute path to a local mp4/mov') restates the path description. It adds no semantics for persona or title beyond what the schema provides — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — 'Deliver a finished persona answer video into eve' — and then enumerates the concrete effects (file copy, history row, persona bubble). No sibling tool on the list performs ingestion, so an agent can place it uniquely without inspecting the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use after generating a talking-head video for the user' gives a clear triggering condition, and 'Requires an absolute path to a local mp4/mov file' states the precondition. It stops short of naming when-not to use it or what to do if the file is already ingested, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_live_talkLive-Gespräch turn (voice loop with the user)A

Voice-conversation loop with the user. Call it in a loop: pass your answer to the previous utterance as reply (the app speaks and stores it), then the call blocks up to ~50s and returns the user's next utterance. Rules: after status utterance answer briefly and speakably, then call again with reply. After silence call again immediately (no reply). Stop calling on paused, ended or busy. Pass talk_id verbatim if you received one in the start instruction; on a session-initiated start omit it and send agent_label once.

NameRequiredDescriptionDefault
replyNoYour answer to the previous utterance; spoken aloud to the user.
talk_idNoTalk id from the start instruction; omit to self-connect.
agent_labelNoShort self-description for the HUD, e.g. 'claude · donna'.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does: it discloses the side effect (the app speaks and stores the reply), the ~50s blocking timeout, and the complete set of terminal/continuation statuses. Nothing about the blocking, mutating nature of the call is left to guess.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what the tool is and the core loop before the rules, and every clause carries information. It is a single dense paragraph, though, mixing mechanics and edge-case rules that would read faster as separated lines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates fully by enumerating the return statuses and what each implies. For a blocking, stateful conversational tool with three optional params, an agent has everything needed to drive the loop correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds operational meaning with `reply` as the answer to the previous utterance and the rule to pass `talk_id` verbatim or omit it and send `agent_label` once. It stops short of adding format or length guidance for `agent_label` beyond the schema example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: a voice-conversation turn loop that speaks the agent's reply and returns the user's next utterance. No sibling tool touches voice/live conversation, and the description makes the loop role unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit branch-by-branch rules keyed to the returned status: answer and re-call on `utterance`, re-call immediately with no reply on `silence`, stop on `paused`/`ended`/`busy`. It also states the `talk_id` vs `agent_label` condition for start-instruction versus session-initiated starts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_recentRecent clips or transcriptionsA

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.

NameRequiredDescriptionDefault
sortNoDefault recency. copy_count is clips-only; duration is transcriptions-only.
typeNoEntity type. Default clip. recording lists screen recordings with transcript snippets; screenshot lists captured screenshots with an OCR text preview.
limitNoMax items to return. Default 20.
orderNoSort direction. Default desc (newest/highest first).
sinceNoLower time bound: 7d, 24h, 30m, today, yesterday, week, month, or an absolute yyyy-MM-dd.
untilNoUpper time bound: today, yesterday, or an absolute yyyy-MM-dd.
cursorNoOpaque pagination token from a prior response's meta.next_cursor. Must use the same sort.
engineNoTranscription engine filter (transcriptions only).
fieldsNoComma-separated field projection to shrink output, e.g. 'id,text,source_app_bundle_id'. id is always kept.
originNoClip origin (clips only).
deletedNoOnly soft-deleted entries — the finding aid for eve_restore.
snippetNoSnippet length in characters (clips). 0 disables.
categoryNoOnly entries carrying one of these categories (OR). Get names from eve_categories.
favoritesNoReturn only favorites.
source_appNoBundle id filter. Clips: the source app. Transcriptions: matches recording start OR end app. Screenshots: the captured app.
content_typeNoClip content type (clips only).
max_durationNoMaximum transcription length in seconds (transcriptions only).
min_durationNoMinimum transcription length in seconds (transcriptions only).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does real work: it declares newest-first default ordering, the sort options per entity type, and keyset pagination via meta.next_cursor. It stops short of stating read-only safety, result caps, or what a cursor mismatch does, which the schema only partly covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and ordering, followed by quotable intent examples and a compact enumeration of supported features. No filler and no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter list tool with no output schema and no annotations, the description covers purpose, filters, sorting and pagination, and helpfully names meta.next_cursor. It omits the deleted-flag-to-eve_restore linkage and clipping defaults, but the schema fills those gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and five of the parameters are enums, so the schema already documents every parameter. The description only restates the sort mode mapping and the meta.next_cursor format, adding little beyond the structured fields; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List the most recent clips or transcriptions") with an explicit ordering scope ("newest first"), which is enough to distinguish a recency browse from a query search. It never names the sibling eve_search, so the differentiation from search is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Concrete user-intent examples ("what did I copy/dictate recently", "recent links from Safari", "my longest dictations") show exactly when to reach for this tool. It does not state when to use eve_search instead, so the when-not/alternative half of the guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eve_restoreRestore soft-deleted entriesA

Brings soft-deleted history entries back (clears their deleted flag). Find candidates with eve_recent's deleted option. The running app refreshes automatically.

NameRequiredDescriptionDefault
targetsYesEntries as <type>:<id>. Types: clip|transcription|screen_recording|live_talk|screenshot.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses the state change ('clears their deleted flag') and a side effect ('The running app refreshes automatically'), which tells the agent no restart is needed. However, it omits permission requirements, whether restore is idempotent, and what happens on partial failure across multiple targets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: what it does, how to find inputs, and the observable side effect. The core action is front-loaded with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter batch mutation with no output schema, the essential context is present: the effect, the discovery path, and the user-visible consequence. The remaining gap is feedback-related — it doesn't say what is returned (e.g., a restored count) or how invalid/unknown target IDs are reported, which matters for a batch operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the `targets` array is fully documented with the `<type>:<id>` format and the five allowed types. The description adds nothing about the parameter beyond the discovery hint, so baseline 3 applies: the schema does the work and the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Brings soft-deleted history entries back') and parenthetically explains the mechanism ('clears their deleted flag'). This clearly distinguishes it from siblings like eve_recent (listing), eve_get (fetching), and eve_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to the right discovery path: 'Find candidates with eve_recent's deleted option.' That tells the agent the prerequisite step before calling this tool. It stops short of stating exclusions, such as what to do if the entry was never deleted or hard-deleted, but the core when-to-use is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_appendAppend a log line (RoxyBot)B

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}.

NameRequiredDescriptionDefault
tsYes
doelYes
typeYes
inhoudNo
statusYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It discloses that data is written to log.jsonl on this Mac only and that the return value is {ack: true}, but it does not cover failure modes, permissions, concurrency, or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tightly written sentences, front-loads the main action, and packs parameter and return details without unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple append-log tool with no annotations or output schema, the description covers the core action, local storage location, and return shape. However, missing semantics for doel and status, plus absent failure-mode details, leave meaningful gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It names all five parameters and adds useful detail for type (call, sms, whatsapp, …), ts (epoch ms), and optional inhoud, but leaves doel and status unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: record one call or message line from the RoxyBot phone. It clearly identifies the tool as a logging operation, though it does not explicitly distinguish it from any sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this is used to log a call or message line, but gives no explicit guidance on when to use it versus alternatives or when not to use it. No sibling tool is referenced as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

profile_getRead a profile value (RoxyBot)A

Read a saved personal value such as the 'thuis' or 'werk' address. Returns {sleutel, waarde} with waarde null when unknown.

NameRequiredDescriptionDefault
sleutelYesProfile key, e.g. 'thuis' or 'werk'.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose the return shape and the null-when-unknown semantics, which is genuinely useful. It does not cover the set of valid keys, whether keys are case-sensitive, or any permission/scoping considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler; the purpose comes first and the return contract second, so the agent gets the essential facts immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, the description supplies the missing return structure, so an agent knows exactly what to expect. Only the domain of valid keys and any failure modes are left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'sleutel' parameter is already documented with the same 'thuis'/'werk' examples used in the description. The description therefore adds little beyond the schema, which is the expected baseline for a fully documented parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read a saved personal value') and grounds it with concrete examples ('thuis' or 'werk' address). It is clearly distinct from the unrelated sibling set (eve_*, contacts_resolve), though that separation comes from topic, not from any explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Read a saved personal value' implies the usage context, but there is no statement of when to prefer this tool, what happens if the key was never set, or what a companion write path would be. Usage is inferable but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv0.2.0
    • First observedcontacts_resolve
    • First observedeve_activity
    • First observedeve_app_stats
    • First observedeve_categories
    • First observedeve_categorize
    • First observedeve_export_clip
    • First observedeve_get
    • First observedeve_get_selection
    • First observedeve_ingest_recording
    • First observedeve_live_talk
    • First observedeve_recent
    • First observedeve_restore
    • First observedeve_search
    • First observedlog_append
    • First observedprofile_get

TDQS

A3.8/5.0

Scored across 15 tools

Disambiguation4/5

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'.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A standalone clipboard history MCP server for macOS that monitors clipboard in real-time, stores history locally in SQLite, and exposes it to any MCP-compatible AI assistant.
    5
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A macOS automation MCP server providing 40+ tools for controlling Messages, Contacts, Notes, Reminders, Calendar, Files, Clipboard, Windows, Safari, Chrome, screenshots, and system settings via natural language.
    91
    177
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Open-source cross-device clipboard manager with a built-in MCP server. Search and retrieve clipboard history synced across all your devices, read OCR text extracted from copied images, and add new items to the clipboard.
    5
    2,678
    AGPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    Gives AI assistants local access to a Mac's clipboard history, letting them search past clips and lists, read a clip in full (including text recognized inside screenshots), and place a clip back on the system clipboard for the user to paste. Everything runs over 127.0.0.1 with explicit user approval, and assistants cannot delete clips or see items concealed by password managers.
    1
    44 npm
    MIT