Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

screenpipe

NPM · SCREENPIPE-MCP · SCANNED SEP 24

Search your local screen recordings, audio transcripts, and computer activity from screenpipe.

Available components

−2 this week 81 Trust /100
Trust breakdown (7 categories)

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
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
Install

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

# add to Claude Code
claude mcp add screenpipe-screenpipe-mcp -- npx -y screenpipe-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "screenpipe-screenpipe-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "screenpipe-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "screenpipe-screenpipe-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "screenpipe-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add screenpipe-screenpipe-mcp -- npx -y screenpipe-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "screenpipe-screenpipe-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "screenpipe-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add screenpipe-screenpipe-mcp --command npx --arg -y --arg screenpipe-mcp
# ~/.hermes/config.yaml
mcp_servers:
  screenpipe-screenpipe-mcp:
    command: "npx"
    args: ["-y", "screenpipe-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "screenpipe-screenpipe-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "screenpipe-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add screenpipe-screenpipe-mcp -t stdio -c npx -a -y screenpipe-mcp
// mcp.json
{
  "mcpServers": {
    "screenpipe-screenpipe-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "screenpipe-mcp"
      ]
    }
  }
}
Changelog

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.

Diagnostics

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 →

MCP tools · 30 exposed · ~4,706 tokens

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 →

Tool Tokens
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).

NameTypeReqDescription
app_namestringOptional app name filter to focus on one app
end_timestringyesISO 8601, relative (e.g. 'now'), or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD')
include_parsed_contextbooleanOptionally 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_limitintegerMaximum parsed-context rows (default 10, max 20).
start_timestringyesISO 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.

NameTypeReqDescription
content_typestringyesvision = screen frame, audio = audio chunk. Get the id from search-content results (frame_id / chunk_id).
idintegeryesContent item ID (OCR result frame_id, or audio result chunk_id)
tagsarrayyesTags 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.

NameTypeReqDescription
actionstringyesAudio 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.

NameTypeReqDescription
enabledbooleanEnable on creation (default true).
historybooleanFeed the previous run's output back in as context on the next run (default false).
namestringyeskebab-case id, e.g. 'daily-time-report'. Becomes the folder name + pipe id.
presetarrayOptional AI model preset name(s), e.g. ['Primary','Fallback']. Omit to use the default preset.
promptstringyesThe 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_nowbooleanRun once immediately after creating, to test it (default true).
schedulestringyesWhen 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.

NameTypeReqDescription
end_timestringyesISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD')
output_pathstringOptional absolute path for the MP4 (e.g. ~/Downloads/clip.mp4). Defaults to the screenpipe data dir's exports/ folder.
start_timestringyesISO 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.

NameTypeReqDescription
frame_idintegeryesFrame 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.

NameTypeReqDescription
kindstringOptional target kind, such as notification, chat, memory, block, artifact, or structured_output.
limitintegerMaximum records (default 50, max 500).
producerstringOptional producer reference, for example pipe:daily-recap. Pipe tokens are always restricted to themselves.
qstringOptional text search across comments, snapshots, target ids, producers, and context.
ratingstringOptional rating filter.
sincestringOptional RFC3339 lower bound on updated_at.
target_idstringOptional 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.

NameTypeReqDescription
frame_idintegeryesFrame ID
purposestringread 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).

NameTypeReqDescription
idintegeryesMeeting ID (from list-meetings results)
include_transcriptbooleanAlso return the meeting's transcript segments with speaker names and timestamps.
transcript_offsetintegerSkip 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).

NameTypeReqDescription
app_namestringFilter by exact app name (case-sensitive, e.g. 'Google Chrome')
end_timestringISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD')
fuzzy_matchbooleanEnable typo-tolerant matching
limitintegerMax results (default 20)
offsetintegerPagination offset
qstringyesKeyword query (FTS5 syntax: quoted phrases, AND/OR, prefix*)
start_timestringISO 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.

NameTypeReqDescription
end_timestringISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD')
limitintegerMax results (default 20)
offsetintegerPagination offset
qstringCase-insensitive substring filter on title, attendees (names/emails), and note. Searches all history.
start_timestringISO 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.

NameTypeReqDescription
limitintegerMax results (default 10)
offsetintegerPagination 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).

NameTypeReqDescription
speaker_to_keep_idintegeryesSpeaker ID to keep
speaker_to_merge_idintegeryesSpeaker 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.

NameTypeReqDescription
namestringyesThe 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.

NameTypeReqDescription
namestringyesThe 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.

NameTypeReqDescription
actor_idintegerWith content_type='parsed', filter items by a resolved actor identity.
app_namestringFilter by app name (e.g. 'Google Chrome', 'Slack', 'zoom.us'). Case-sensitive.
content_typestringFilter 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_timestringISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD'). Defaults to now.
frame_idintegerWith content_type='parsed', return parsed data attached to one frame.
include_framesbooleanInclude base64 screenshots (OCR only). Warning: large response.
include_relatedbooleanWith 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…
limitintegerMax results (default 10, max 20). Start with 5 for exploration.
max_content_lengthintegerTruncate each result's text via middle-truncation. Use 200-500 to keep responses compact.
max_lengthintegerMax content length in characters
min_lengthintegerMin content length in characters
offsetintegerPagination offset. Use when results say 'use offset=N for more'.
qstringFull-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_idsstringComma-separated speaker IDs to filter audio
speaker_namestringFilter audio by speaker name (case-insensitive partial match)
start_timestringAccepted: 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.
tagsstringComma-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_namestringFilter 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).

NameTypeReqDescription
app_namestringFilter by app name
end_timestringISO 8601, relative time, or local calendar ('today', 'yesterday', 'tomorrow', 'YYYY-MM-DD')
frame_idintegerFilter to specific frame ID from search results
limitintegerMax results (default 50). Start with 10-20.
offsetintegerPagination offset
purposestringread returns the compact memory outline; automation returns fresh refs, best-effort keys, state, bounds, and allowed actions. Omit to follow the desktop capture profile.
qstringFull-text search on element text
rolestringElement role filter (e.g. 'AXButton', 'AXLink', 'AXTextField')
sourcestringElement source. 'accessibility' is preferred (OS-native tree). 'ocr' for apps without a11y.
start_timestringISO 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.

NameTypeReqDescription
namestringSpeaker 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.

NameTypeReqDescription
app_namestringExact app name, case-insensitive.
device_idstringExact device ID from synced-devices.
device_namestringExact device name from synced-devices.
limitintegerMax results (default 50, max 200).
qstringCase-insensitive substring query. Omit to return all matching records in the window.
sincestringISO 8601 lower bound.
since_hours_agonumberAlternative relative time window in hours.
untilstringISO 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.

NameTypeReqDescription
actionsarrayUp to 5 action buttons. Each needs id, label, type ('pipe'|'chat'|'api'|'deeplink'|'dismiss').
bodystringNotification body (markdown supported)
pipe_namestringyesName of the pipe/tool sending this notification
prioritystringEvery 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_secsintegerAuto-dismiss after N seconds (default 20). Use 0 for persistent.
titlestringyesNotification title (short, descriptive)

No output schema declared.

No examples provided.

start-meeting ~51

Manually start a meeting recording session.

NameTypeReqDescription
appstringApp name (default 'manual')
attendeesstringComma-separated attendee names
titlestringMeeting 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.

NameTypeReqDescription
attendeesstringComma-separated attendee names
idintegeryesMeeting ID
meeting_appstringApp / source name (e.g. 'meet.google.com', 'manual')
meeting_endstringISO 8601 end time (rarely needed)
meeting_startstringISO 8601 start time (rarely needed)
notestringFull new note body. To preserve existing notes, fetch them first via get-meeting and concatenate before passing.
titlestringMeeting 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.

NameTypeReqDescription
contentstringMemory text (required for creation)
deletebooleanSet true to delete the memory identified by id
idintegerMemory ID — omit to create new, provide to update/delete
importancenumber0.0 (trivial) to 1.0 (critical). Default 0.5.
source_contextobjectOptional metadata linking to source (app, timestamp, etc.)
tagsarrayTags. 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.

NameTypeReqDescription
idintegeryesSpeaker ID
metadatastringJSON metadata string
namestringNew speaker name

No output schema declared.

No examples provided.

Common questions

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.