Always-on context for AI agents — local desktop daemon capturing screen (OCR), voice (Whisper), keyboard/mouse, and clipboard activity, exposing data to AI agents over MCP
ContextPulse defines 21 tools with consistent verb-noun naming (get_*, search_*, memory_*). All tools have descriptions (avg ~120 chars, within baseline 34-392). Input schemas are present with type declarations and parameter descriptions. However, output schemas are entirely undocumented, no tool specifies what fields or structure it returns. This is a critical gap: LLMs cannot plan downstream calls or extract data without knowing response structure. Memory tools (15-21) are well-described with clear TTL/tag semantics. Screen capture tools (1-10) lack guidance on when to use overlapping variants (e.g., get_screenshot vs get_recent vs get_context_at). Knowledge graph tools (11-14) use domain-specific terminology (bi-temporal KG, fused recall) without sufficient explanation for agents unfamiliar with the domain. Error handling is absent, no tool documents failure modes, recovery paths, or actionable error messages.
Return a summary of ContextPulse: what it captures, how to install, and where to connect.
Recall what was true/happening around a moment in time. Temporal recall over the KG: the active project, apps in use, and context facts valid at the specified time.
Recall consolidated facts about a subject from the knowledge graph. Fused recall over the bi-temporal KG — a subject's current, non-retracted facts (states, relationships, decisions) that plain keyword search can't answer.
Summarize the user's activity (apps, focus time, OCR keyword hits) over the last N hours.
Return per-application time-on-task over the last N hours.
Report the rolling capture buffer's size, age range, retention policy, and disk usage.
No output schemas documented for any tool. LLMs cannot infer response structure, field names, or types. This prevents downstream tool chaining and forces agents to guess at response format.
Knowledge graph tools (facts_about, context_at, kg_timeline, search_knowledge) use domain jargon ('bi-temporal KG', 'fused recall', 'canonical entity id') without sufficient explanation. Agents unfamiliar with knowledge graph terminology cannot determine when to use these tools or how to interpret results.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Return screen + activity context from a specific point in the recent past.
List the user's connected displays with resolution, scaling, and which is active.
Return the most recent N screenshots from the rolling capture buffer.
Run OCR over the current screen and return extracted text only.
Capture a screenshot of the active monitor (or a specified monitor) at native resolution.
Show the history of facts about a subject over recent days. Every fact whose validity overlaps the window, oldest first — how a subject's state evolved.
Delete a memory by key. Returns whether deletion succeeded. Removes from hot and warm tiers immediately.
List stored memories, optionally filtered by tag. Returns non-expired memories ordered by most recently updated first.
Retrieve a memory by exact key. Checks hot tier first, then warm tier. Returns the memory value and metadata, or not-found if missing/expired.
Search stored memories by keyword, semantic similarity, or both. Modes: hybrid (combines FTS5 keyword rank with semantic cosine similarity), keyword (FTS5 full-text search), semantic (pure vector search).
Search memories by semantic meaning using vector embeddings. Uses the all-MiniLM-L6-v2 model to find conceptually similar memories even when they use different words.
Return storage statistics for the memory system. Reports entry counts per tier, database sizes.
Store a key-value memory. Overwrites if key already exists. Memories persist in warm tier (SQLite WAL) and hot tier (in-memory, 5 min). Use tags to group related memories; set ttl_hours=0 for permanent storage.
Full-text search the OCR history of past screen captures.
Full-text search the knowledge graph's observations. Ranked full-text search over captured observation text (OCR, transcripts, typed bursts, clipboard).
Overlapping screen capture tools lack disambiguation. get_screenshot, get_recent, get_context_at, and get_screen_text all retrieve screen data but with unclear distinctions. Descriptions do not explain when to prefer one over another.
No error handling guidance. Tools do not document failure modes, recovery paths, or actionable error messages. An agent cannot determine if a failure is retryable, user-fixable, or fatal.
Destructive tool (memory_forget) lacks confirmation or dry-run capability. Agents can permanently delete memories without a safety gate or undo mechanism.