screenpipe
NPM · SCREENPIPE-MCP · SCANNED SEP 24
Search your local screen recordings, audio transcripts, and computer activity from screenpipe.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (SEE LICENSE IN LICENSE.md) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 3 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability80
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4800 tokens (~145/item across 33 items; 30 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 31 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the screenpipe MCP server?
screenpipe runs locally as an npm package, launched with npx -y screenpipe-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · screenpipe-mcp
claude mcp add screenpipe-screenpipe-mcp -- npx -y screenpipe-mcp
{
"mcpServers": {
"screenpipe-screenpipe-mcp": {
"command": "npx",
"args": [
"-y",
"screenpipe-mcp"
]
}
}
} {
"servers": {
"screenpipe-screenpipe-mcp": {
"command": "npx",
"args": [
"-y",
"screenpipe-mcp"
]
}
}
} codex mcp add screenpipe-screenpipe-mcp -- npx -y screenpipe-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"screenpipe-screenpipe-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"screenpipe-mcp"
],
"enabled": true
}
}
} openclaw mcp add screenpipe-screenpipe-mcp --command npx --arg -y --arg screenpipe-mcp
mcp_servers:
screenpipe-screenpipe-mcp:
command: "npx"
args: ["-y", "screenpipe-mcp"] {
"McpServers": {
"screenpipe-screenpipe-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"screenpipe-mcp"
]
}
}
} assistant mcp add screenpipe-screenpipe-mcp -t stdio -c npx -a -y screenpipe-mcp
{
"mcpServers": {
"screenpipe-screenpipe-mcp": {
"command": "npx",
"args": [
"-y",
"screenpipe-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Sept 26 −2
- Security disclosure: unverified → fail ▼ functional
- Stability: pass → 0.87 functional
- 23 Sept 26 +1
- Stability: 0.97 → pass security
- 22 Sept 26 0
- Security disclosure: fail → unverified ▼ functional
- 21 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.83 functional
- 17 Sept 26 +1
- Stability: 0.97 → pass security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Sept 2026 · Analysed npm/screenpipe-mcp@0.19.4
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
activity-summary ~304
Rich activity overview: authoritative active minutes, app/window time, edited document paths, key text, and audio transcriptions, with optional parsed task context when available. USE WHEN: any broad question about what the user did — 'what was I doing?', 'how long on X?', 'which apps?', 'recap my morning'. This is almost always the right first call for time-range questions — usually sufficient without follow-up searches. Use parsed/path evidence to identify tasks, but only active-minute fields for duration; frame and row counts are never time. DO NOT USE for: finding a specific keyword (use keyword-search) or a specific UI control (use search-elements).
| Name | Type | Req | Description |
|---|---|---|---|
| app_name | string | – | Optional app name filter to focus on one app |
| end_time | string | yes | ISO 8601, relative (e.g. 'now'), or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
| include_parsed_context | boolean | – | Optionally include a bounded parsed-context sample for identifying projects and tasks. Parsed capture is experimental and may be disabled or unsupported. Context only; never use row counts as duratio… |
| parsed_context_limit | integer | – | Maximum parsed-context rows (default 10, max 20). |
| start_time | string | yes | ISO 8601, relative (e.g. '3h ago'), or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
No output schema declared.
No examples provided.
add-tags ~222
Tag a screen frame (vision) or audio chunk (audio) so it can be retrieved later. Tags are a shared linking layer: use namespaced tags (person:ada, project:atlas, topic:pricing) to connect a capture to a person, project, or topic. The SAME tag string also works on memories (via update-memory), so tagging a frame and a memory with person:ada links them. Retrieve later with search-content tags='person:ada' (add content_type+start_time/end_time to scope to a timeframe). Note: frames are pruned by retention, so for durable links prefer tagging a memory; tag frames/audio for shorter-term recall.
| Name | Type | Req | Description |
|---|---|---|---|
| content_type | string | yes | vision = screen frame, audio = audio chunk. Get the id from search-content results (frame_id / chunk_id). |
| id | integer | yes | Content item ID (OCR result frame_id, or audio result chunk_id) |
| tags | array | yes | Tags to add. Prefer namespaced: person:<name>, project:<name>, topic:<name>. |
No output schema declared.
No examples provided.
control-recording ~34
Start or stop audio recording. This does not pause or resume screen capture.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Audio recording action |
No output schema declared.
No examples provided.
create-pipe ~396
Create a pipe — a scheduled AI automation that runs a markdown prompt on a schedule (e.g. 'every day at 9am'). Writes ~/.screenpipe/pipes/<name>/pipe.md, installs it, enables it, and (by default) runs it once to test. USE WHEN: the user wants to automate a recurring task (daily summary, reminder, report, monitor, sync). IMPORTANT: read the screenpipe://guide/pipes resource FIRST — it documents the prompt format, schedule syntax, presets, and how the pipe prompt should query screenpipe. After creating, check pipe-logs to confirm the test run worked.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | – | Enable on creation (default true). |
| history | boolean | – | Feed the previous run's output back in as context on the next run (default false). |
| name | string | yes | kebab-case id, e.g. 'daily-time-report'. Becomes the folder name + pipe id. |
| preset | array | – | Optional AI model preset name(s), e.g. ['Primary','Fallback']. Omit to use the default preset. |
| prompt | string | yes | The markdown instructions the AI agent runs every scheduled execution. Be specific: what to query (which screenpipe endpoints + time range), how to process it, and what to output (write a note, send… |
| run_now | boolean | – | Run once immediately after creating, to test it (default true). |
| schedule | string | yes | When to run: 'every 30m', 'every 1h', 'every day at 9am', 'every monday at 9am', or a cron expression like '0 9 * * *'. |
No output schema declared.
No examples provided.
export-video ~173
Export an MP4 of screen recordings for a time range, with synced microphone audio. Frames are placed at their real timestamps, so the clip's duration matches the wall-clock span you requested (not a sped-up timelapse). Returns the file path. Can take a few minutes for long ranges.
| Name | Type | Req | Description |
|---|---|---|---|
| end_time | string | yes | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
| output_path | string | – | Optional absolute path for the MP4 (e.g. ~/Downloads/clip.mp4). Defaults to the screenpipe data dir's exports/ folder. |
| start_time | string | yes | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
No output schema declared.
No examples provided.
frame-context ~57
Get full accessibility text, parsed tree nodes, and URLs for a specific frame ID. Use after search-content to get detailed context for a specific moment.
| Name | Type | Req | Description |
|---|---|---|---|
| frame_id | integer | yes | Frame ID from search-content results (content.frame_id field) |
No output schema declared.
No examples provided.
get-feedback ~181
Search local user ratings and written comments attached to AI-produced notifications, chats, memories, blocks, artifacts, and other targets. Use before generating related work so you preserve what earned up ratings and correct what earned down ratings.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Optional target kind, such as notification, chat, memory, block, artifact, or structured_output. |
| limit | integer | – | Maximum records (default 50, max 500). |
| producer | string | – | Optional producer reference, for example pipe:daily-recap. Pipe tokens are always restricted to themselves. |
| q | string | – | Optional text search across comments, snapshots, target ids, producers, and context. |
| rating | string | – | Optional rating filter. |
| since | string | – | Optional RFC3339 lower bound on updated_at. |
| target_id | string | – | Optional exact target id. |
No output schema declared.
No examples provided.
get-frame-elements ~77
Get all UI elements for a specific frame. More targeted than search-elements when you already have a frame_id.
| Name | Type | Req | Description |
|---|---|---|---|
| frame_id | integer | yes | Frame ID |
| purpose | string | – | read returns the memory outline; automation returns targeting context for a downstream automation tool. Omit to follow the desktop capture profile. Refresh before each action. |
No output schema declared.
No examples provided.
get-meeting ~122
Get a meeting by ID: title, attendees, times, and the full note. Pass include_transcript=true to also get the speaker-attributed transcript segments — do this when the note is empty and you need to reconstruct what was said (much better than searching raw audio by time range).
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Meeting ID (from list-meetings results) |
| include_transcript | boolean | – | Also return the meeting's transcript segments with speaker names and timestamps. |
| transcript_offset | integer | – | Skip this many transcript segments (pagination for long meetings). |
No output schema declared.
No examples provided.
health-check ~27
Check if screenpipe is running and healthy. Returns recording status, frame/audio stats, timestamps.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
keyword-search ~259
Fast FTS5 keyword search across OCR + audio combined. Returns matches with frame_id, app, timestamp, and text positions. USE WHEN: you have a specific keyword/phrase and want the fastest hit-list (e.g. 'find every screen where I typed "stripe"'). DO NOT USE for: structured filters by content_type / speaker / window — this endpoint ignores those (use search-content instead). DO NOT USE for: broad questions like 'what was I doing' (use activity-summary).
| Name | Type | Req | Description |
|---|---|---|---|
| app_name | string | – | Filter by exact app name (case-sensitive, e.g. 'Google Chrome') |
| end_time | string | – | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
| fuzzy_match | boolean | – | Enable typo-tolerant matching |
| limit | integer | – | Max results (default 20) |
| offset | integer | – | Pagination offset |
| q | string | yes | Keyword query (FTS5 syntax: quoted phrases, AND/OR, prefix*) |
| start_time | string | – | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
No output schema declared.
No examples provided.
list-audio-devices ~20
List available audio input/output devices for recording.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list-meetings ~272
List detected meetings (Zoom, Teams, Meet, etc.) with id, duration, app, attendees, and note status. Pass `q` to substring-match title, attendee names/emails, and notes — `q` searches ALL meeting history, so when looking for a meeting with a person or on a topic ('when did I last talk to Noah?'), pass `q` and OMIT start_time. Only constrain the time range when the question itself is time-bound. Results are newest-first; without `q`, old meetings only surface via time range or offset pagination. Follow up with get-meeting (id from results) for the full note and transcript.
| Name | Type | Req | Description |
|---|---|---|---|
| end_time | string | – | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
| limit | integer | – | Max results (default 20) |
| offset | integer | – | Pagination offset |
| q | string | – | Case-insensitive substring filter on title, attendees (names/emails), and note. Searches all history. |
| start_time | string | – | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD'). Omit when searching by q — it filters all history. |
No output schema declared.
No examples provided.
list-monitors ~16
List available monitors/screens for capture.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list-pipes ~47
List the user's pipes (scheduled AI automations) with their enabled state + schedule. USE WHEN: the user asks what automations/pipes exist, or before you create or edit one.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list-unnamed-speakers ~48
List speakers that haven't been named yet. Useful for speaker identification workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (default 10) |
| offset | integer | – | Pagination offset |
No output schema declared.
No examples provided.
merge-speakers ~60
Merge two speakers into one (e.g. when the same person was detected as different speakers).
| Name | Type | Req | Description |
|---|---|---|---|
| speaker_to_keep_id | integer | yes | Speaker ID to keep |
| speaker_to_merge_id | integer | yes | Speaker ID to merge into the kept one |
No output schema declared.
No examples provided.
pipe-logs ~50
Get a pipe's recent execution logs / output. USE WHEN: debugging why a pipe misbehaved, or reading the result of a test run.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | The pipe id/name. |
No output schema declared.
No examples provided.
run-pipe ~71
Run a pipe once immediately (a test run), independent of its schedule. USE WHEN: you just created/edited a pipe and want to verify it, or the user says 'run X now'. Then read pipe-logs to see what it did.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | The pipe id/name. |
No output schema declared.
No examples provided.
search-content ~886
Search screen text, audio transcriptions, input events, memories, and parsed app data. Returns timestamped results with app context. USE WHEN: you need the actual text/content of a moment — quotes, screen text, transcript lines, or compact parsed messages, emails, tasks, documents, and code review — or want to filter by speaker/window. DO NOT USE for: broad questions like 'what was I doing?' (use activity-summary, it pre-summarizes apps + windows + transcripts). Also DO NOT USE for: targeted UI controls (use search-elements). Start with limit=5, increase only if needed. Per-result text is auto-truncated to 1000 chars; pass max_content_length=0 to opt out, or a custom integer to override.
| Name | Type | Req | Description |
|---|---|---|---|
| actor_id | integer | – | With content_type='parsed', filter items by a resolved actor identity. |
| app_name | string | – | Filter by app name (e.g. 'Google Chrome', 'Slack', 'zoom.us'). Case-sensitive. |
| content_type | string | – | Filter by content type. Use 'parsed' for compact app-specific records such as messages, emails, tasks, documents, and code review; it is experimental and may be empty when parsing is disabled or unsu… |
| end_time | string | – | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD'). Defaults to now. |
| frame_id | integer | – | With content_type='parsed', return parsed data attached to one frame. |
| include_frames | boolean | – | Include base64 screenshots (OCR only). Warning: large response. |
| include_related | boolean | – | With tags set, also return the co-occurring tags (the people/projects/topics seen alongside yours, ranked by frequency) as a 'Related:' line. One call for the surrounding context instead of several f… |
| limit | integer | – | Max results (default 10, max 20). Start with 5 for exploration. |
| max_content_length | integer | – | Truncate each result's text via middle-truncation. Use 200-500 to keep responses compact. |
| max_length | integer | – | Max content length in characters |
| min_length | integer | – | Min content length in characters |
| offset | integer | – | Pagination offset. Use when results say 'use offset=N for more'. |
| q | string | – | Full-text search query. Omit to return all content in time range. Avoid for audio — transcriptions are noisy, q filters too aggressively. For an attached activity episode, its generated title/summary… |
| speaker_ids | string | – | Comma-separated speaker IDs to filter audio |
| speaker_name | string | – | Filter audio by speaker name (case-insensitive partial match) |
| start_time | string | – | Accepted: ISO 8601 ('2024-01-15T10:00:00Z'), relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD'). Always provide to avoid scanning entire history. |
| tags | string | – | Comma-separated tags; returns only items carrying ALL of them (e.g. 'person:ada,project:atlas'). Works for screen + audio (content_type 'ocr'/'audio'/'all', tags written by add-tags) AND memories (co… |
| window_name | string | – | Filter by window title substring |
No output schema declared.
No examples provided.
search-elements ~316
Search UI elements (buttons, links, text fields) from the accessibility tree, filterable by role. USE WHEN: you want a specific UI control or page-structure question — 'find every Submit button I saw', 'list the links in that page'. DO NOT USE for: general text/content (use search-content) or fast keyword lookup (use keyword-search).
| Name | Type | Req | Description |
|---|---|---|---|
| app_name | string | – | Filter by app name |
| end_time | string | – | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
| frame_id | integer | – | Filter to specific frame ID from search results |
| limit | integer | – | Max results (default 50). Start with 10-20. |
| offset | integer | – | Pagination offset |
| purpose | string | – | read returns the compact memory outline; automation returns fresh refs, best-effort keys, state, bounds, and allowed actions. Omit to follow the desktop capture profile. |
| q | string | – | Full-text search on element text |
| role | string | – | Element role filter (e.g. 'AXButton', 'AXLink', 'AXTextField') |
| source | string | – | Element source. 'accessibility' is preferred (OS-native tree). 'ocr' for apps without a11y. |
| start_time | string | – | ISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD') |
No output schema declared.
No examples provided.
search-speakers ~42
Search for speakers by name prefix. Returns speaker ID, name, and metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Speaker name prefix to search for (case-insensitive) |
No output schema declared.
No examples provided.
search-synced-content ~209
Search Data Sync records from this signed-in user's devices. Results include device name, device ID, and timestamp for attribution. USE WHEN: the user asks about another/named device, asks across devices, or local search does not cover the requested machine. For the current machine only, use search-content. Start with a narrow time range and limit=10.
| Name | Type | Req | Description |
|---|---|---|---|
| app_name | string | – | Exact app name, case-insensitive. |
| device_id | string | – | Exact device ID from synced-devices. |
| device_name | string | – | Exact device name from synced-devices. |
| limit | integer | – | Max results (default 50, max 200). |
| q | string | – | Case-insensitive substring query. Omit to return all matching records in the window. |
| since | string | – | ISO 8601 lower bound. |
| since_hours_ago | number | – | Alternative relative time window in hours. |
| until | string | – | ISO 8601 upper bound. |
No output schema declared.
No examples provided.
send-notification ~184
Send a notification to the screenpipe desktop UI. Use high priority only for time-sensitive failures or decisions needing human attention; routine findings and completed tasks should be normal or low.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | – | Up to 5 action buttons. Each needs id, label, type ('pipe'|'chat'|'api'|'deeplink'|'dismiss'). |
| body | string | – | Notification body (markdown supported) |
| pipe_name | string | yes | Name of the pipe/tool sending this notification |
| priority | string | – | Every priority appears in the top-right panel. High also appears in the focused Priority view, normal (default) stays in All, and low is toast-only by default. |
| timeout_secs | integer | – | Auto-dismiss after N seconds (default 20). Use 0 for persistent. |
| title | string | yes | Notification title (short, descriptive) |
No output schema declared.
No examples provided.
start-meeting ~51
Manually start a meeting recording session.
| Name | Type | Req | Description |
|---|---|---|---|
| app | string | – | App name (default 'manual') |
| attendees | string | – | Comma-separated attendee names |
| title | string | – | Meeting title |
No output schema declared.
No examples provided.
stop-meeting ~17
Stop the current manual meeting recording session.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
synced-devices ~82
List this signed-in user's Screenpipe devices that have uploaded Data Sync records, including each device name and last sync time. USE WHEN: the user asks what devices are available, names another device, or asks a cross-device question and you need the exact device_name filter. This never accepts an account or bucket identifier; the local app forwards the signed-in user's identity.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
update-meeting ~219
Update a meeting's mutable fields (title, attendees, note, app, start/end). Partial: only the fields you pass are written, others stay as-is. Use this to save an AI-generated summary into the meeting note — read the current note first via get-meeting and pass the existing notes plus your additions so you don't overwrite the user's writing. Convention: append AI-generated summary text under a `## Summary` heading at the bottom of the existing note.
| Name | Type | Req | Description |
|---|---|---|---|
| attendees | string | – | Comma-separated attendee names |
| id | integer | yes | Meeting ID |
| meeting_app | string | – | App / source name (e.g. 'meet.google.com', 'manual') |
| meeting_end | string | – | ISO 8601 end time (rarely needed) |
| meeting_start | string | – | ISO 8601 start time (rarely needed) |
| note | string | – | Full new note body. To preserve existing notes, fetch them first via get-meeting and concatenate before passing. |
| title | string | – | Meeting title |
No output schema declared.
No examples provided.
update-memory ~218
Create, update, or delete a persistent memory (facts, preferences, decisions the user wants to remember). To retrieve memories, use search-content with content_type='memory'. To create: provide content + tags. To update: provide id + fields to change. To delete: provide id + delete=true.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | – | Memory text (required for creation) |
| delete | boolean | – | Set true to delete the memory identified by id |
| id | integer | – | Memory ID — omit to create new, provide to update/delete |
| importance | number | – | 0.0 (trivial) to 1.0 (critical). Default 0.5. |
| source_context | object | – | Optional metadata linking to source (app, timestamp, etc.) |
| tags | array | – | Tags. Prefer namespaced (person:ada, project:atlas, topic:pricing) so this memory links to the same people/projects you tag on frames/audio. Retrieve with search-content content_type='memory' tags='p… |
No output schema declared.
No examples provided.
update-speaker ~46
Rename a speaker or update their metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Speaker ID |
| metadata | string | – | JSON metadata string |
| name | string | – | New speaker name |
No output schema declared.
No examples provided.
What is the screenpipe MCP server?
screenpipe is an MCP server listed in the public MCP registry as io.github.screenpipe/screenpipe-mcp. Search your local screen recordings, audio transcripts, and computer activity from screenpipe. This page covers its npm package (screenpipe-mcp).
Is the screenpipe MCP server safe to use?
screenpipe scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the screenpipe MCP server expose?
screenpipe exposes 30 tools: search-content, synced-devices, search-synced-content, list-meetings, activity-summary, and 25 more. Their descriptions and schemas cost roughly 4,706 tokens of context every time the server is loaded.
Is the screenpipe MCP server still maintained?
screenpipe is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.