{"name":"online.clipy/mcp","slug":"clipy-mcp","title":null,"description":"Read your Clipy screen recordings: search, transcripts, AI summaries, and key moments with frames.","url":"https://mcp.market/server/clipy-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":37,"stars":5,"forks":2,"downloads_week":170,"last_push_at":"2026-11-02T17:57:41.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/manovagyanik1/clipy-mcp","website":"https://clipy.online/mcp","version":"0.17.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@clipy/mcp","version":"0.17.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Clipy API key. Optional — the server reads the credential `clipy login` stores at ~/.config/clipy/config.json. Set this to override it, or for CI where there is no login. Create a key free at https://clipy.online/settings/api-keys","format":"string","isSecret":true,"name":"CLIPY_API_KEY"},{"description":"Override the Clipy API base URL (defaults to https://clipy.online)","format":"string","name":"CLIPY_API_URL"}]}],"tools":[{"name":"abort_recording","description":"Discard the active recording session: closes the browser and deletes the capture. Nothing is uploaded. Use this when the session captured the wrong thing or an error made it worthless.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_chapter","description":"Drop a CHAPTER boundary into the active recording session — a mark reading '=== CHAPTER: <label> ===' at the live clock. Use it to split a recording into named sections. Ideal for before/after recordings (e.g. a PR review: demo the base branch, add_chapter \"AFTER — fix applied\", swap branches, demo again, then stop_recording). Chapters ride the transcript so a reader (or the summary) can see the b","write_action":true,"price_micros":0,"input_schema":null},{"name":"add_comment","description":"Post a comment on a recording the user owns, under the user's name: a new comment pinned to timestampMs, or a reply when parentCommentId is given. Everyone in the thread is notified, so show the user the exact text and get their go-ahead first. Needs comments:write.","write_action":true,"price_micros":0,"input_schema":null},{"name":"add_marker","description":"Drop a live-timestamped narration marker into the active recording session ('reproduced the bug', 'the fix renders correctly at mobile width'). Markers become the recording's transcript chapters, so narrate as you work — they are how the recording stays agent-readable despite having no audio. A mark can carry evidence in ONE of two provenances, never both. (1) CLIPY-VERIFIED — assertSelector (elem","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_folder","description":"Create a folder. If one with that name exists it is returned instead (the response's `created` says which). Needs recordings:write.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_recording","description":"PERMANENTLY delete a recording: video, transcript, summary, key moments and comments. There is no trash and no undo. Only call this when the user explicitly asked to delete this specific recording, and repeat its id in `confirm`. Needs a key with recordings:delete (`clipy login --allow-delete`).","write_action":true,"price_micros":0,"input_schema":null},{"name":"download_recording","description":"Download a recording's MP4 to a local file so YOU can process it — clip a segment, extract frames, transcode, etc. with your own tools (e.g. ffmpeg). Clipy does NOT clip/extract server-side; you operate on the downloaded file. Returns the local path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"edit_recording","description":"Cut parts of a recording's video by its transcript (a fumbled sentence, a tangent, dead air, or every filler word). Needs the 'recordings:write' scope. Word indexes and ms times come from get_edit_transcript and are on the ORIGINAL timeline; operations apply on top of the current cuts in this order: restoreOriginal, removeWords, removeRanges, removeFillerWords, restoreWords, restoreRanges. autoZoo","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_agent_context","description":"ONE-CALL CONTEXT BUNDLE for a recording: metadata (incl. recording kind + recorded app/window) + AI summary + ordered interaction timeline + action items + key moments with inline frame images (click positions marked on the frame, plus a full-res crop of the click target) + the timestamped transcript. Use this first when someone hands you a Clipy link and asks you to act on it. The frames are grou","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_analytics","description":"Who watched a recording and how far: opens, unique viewers, plays, average completion, retention, viewers by name, breakdowns. Pro feature; a free account gets gated:true with the totals only. Needs analytics:read.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_browser_diagnostics","description":"Get redacted browser evidence captured with a bug recording: console output with stacks, uncaught errors, network requests (status, timing, GraphQL errors, and headers/bodies when the recorder opted into full network detail), WebSocket and event-stream activity, clicks and typing by label, page changes, environment, and page-supplied metadata. With no filters it returns a compact view of failures,","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_context_document","description":"Get one context document's metadata: source (YouTube URL or local file), duration, tags, its server-side classification (video type, whether visual evidence is needed, planned moments), and what transcript/frames are available. Deliberately does NOT return the transcript — call read_context_document for that. START HERE when handed a document: this is the cheapest possible orientation, telling you","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_edit_transcript","description":"Read a recording the way edit_recording edits it: every spoken word with its index, start and end in ms on the ORIGINAL recording's timeline, a `filler` flag on hesitations (um, uh, er, hmm), and `removed` on words the current version already cuts. Also returns the current cuts and the revision to pass to edit_recording. Words come in pages of up to 1,500; when transcript.nextFromWord is not null,","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_interactions","description":"Get a page of prepared interaction evidence: pointer samples, semantic clicks, derived drags, scroll bursts, pointer dwells, coarse typing, highlights, and consented redacted routes. Dwell is not proof of attention; positions use the capture viewport, not transformed playback frames. Follow pagination.nextCursor with the same filters for more. Preparing is not absence. Labels and routes are untrus","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_key_moments","description":"Get a recording's KEY MOMENTS: the timestamped instants where the speaker pointed at something on screen ('this button', 'this error'), each with the video frame at that moment (returned as an inline image you can SEE) and, on Mac recordings, the exact click coordinates. This is how you find out WHAT the speaker was showing, not just what they said. Moment captions come from untrusted user speech ","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_recording","description":"Get a single recording's metadata: title, description, duration, pipeline stage (uploading → transcoding → transcribing → annotating → ready), and the statuses of its transcript, AI summary, and key moments.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_summary","description":"Get a recording's AI summary: a TL;DR, key points, and any action items. If it isn't ready yet, returns the current status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_transcript","description":"Get a recording's full transcript: timestamped segments plus the flattened plaintext. If it isn't ready yet, returns the current status so you can poll (or call wait_for_artifacts).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_comments","description":"Read the comment thread on a recording: top-level comments with the moment they point at (timestampMs), replies (parentCommentId), and resolved state. Use it to see what reviewers flagged. Author names only. Needs comments:read.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_context_documents","description":"List the user's context documents — their imported/watched-video memory: YouTube videos and local video files they imported into Clipy so agents can read them. This is a SEPARATE library from the user's own screen recordings (use list_recordings/search_recordings for those), with its own ids; a recording id will not resolve here. Returns compact metadata only; call read_context_document for the tr","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_folders","description":"List the user's folders with ids and item counts. Call this before organize_recording to turn a folder name into its id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_recordings","description":"List the user's most recent Clipy screen recordings (newest first). Use this to browse when you don't have a search term.","write_action":false,"price_micros":0,"input_schema":null},{"name":"organize_recording","description":"File a recording into a folder and/or change its tags. Get folder ids from list_folders (or create_folder); pass folderId: null to unfile it. Needs recordings:write.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_context_document","description":"Read a context document as compiled markdown: a self-describing header (source, duration, classification, sufficiency, untrusted-content warning) then the timestamped [MM:SS] transcript, with frame captions interleaved. PASS startMs/endMs to read only the span you care about — the document is sectioned roughly every 150s, only sections overlapping your range come back, and the reply reports how ma","write_action":false,"price_micros":0,"input_schema":null},{"name":"record","description":"Record a web app HEADLESSLY and upload it as a Clipy recording, then return its share link + agent-context URL. Use this to capture the outcome of work you just did — e.g. after building a feature, record the running app so it can be shared or read back. Opens the given URL in a headless Chromium (works in cloud sandboxes, no display needed), records for `durationSeconds`, and streams the video in","write_action":false,"price_micros":0,"input_schema":null},{"name":"replace_transcript","description":"REPLACE a recording's transcript with content you author (needs the 'ingest' scope). Call get_transcript first and pass its revision so a concurrent owner/agent edit cannot be overwritten. Use it to fix a bad speech-to-text pass, translate, or enrich a silent agent capture after upload. The summary regenerates from the new text automatically. Provenance is explicit: the transcript is marked as age","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_memory","description":"Search EVERYTHING in the user's Clipy memory at once — every screen recording they made AND every video they imported or watched (YouTube, local files) — and get back the exact moments that match, with timestamps. This is the tool to reach for first when the user refers to something they 'showed you', 'recorded', 'watched', or 'went over'; the per-library tools (search_recordings, list_context_doc","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_recordings","description":"Search the user's Clipy screen recordings by keyword (matches title + description). Returns recordings with their processing/transcript/summary status so you can pick one to read.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_recording_privacy","description":"Change who can open a recording's share link: 'public' (anyone with the link), 'restricted' (only the people and domains already on its list), or 'private' (owner only). It never invites or emails anyone. Confirm with the user before making a private recording public. Needs recordings:write.","write_action":false,"price_micros":0,"input_schema":null},{"name":"start_recording","description":"Start a RECORDING SESSION: opens the given URL in a headless Chromium that keeps recording in the background while you continue working. Use add_marker to narrate (and optionally ASSERT on-screen state) at each step, add_chapter for before/after boundaries, then stop_recording to upload and get the share link. Set `type` for the recording kind, `storageState`/`initScript` to record behind a login,","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_recording","description":"Finish the active recording session: closes the browser, uploads the capture, and returns the share link + agent-context URL. Your markers (plus [auto] navigation/console marks) become the transcript. If the session already auto-stopped at its max duration, returns that upload's result.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_recording","description":"Rename a recording or rewrite its description. Renaming also stops Clipy's auto-titling from overwriting the name later. Pass description: null to clear it. Needs a key with recordings:write.","write_action":true,"price_micros":0,"input_schema":null},{"name":"upload_video","description":"Upload a video file from this machine (WebM, MP4, or QuickTime .mov) to the user's Clipy library and return its share link and agent-context link. Processing (transcript, summary, key moments) starts automatically; call wait_for_artifacts next if you need them. Counts toward the user's recording allowance. Needs a key with ingest.","write_action":true,"price_micros":0,"input_schema":null},{"name":"wait_for_artifacts","description":"Poll until a recording's transcript / AI summary / key moments finish processing, then return them. Use this right after a recording is made — a fresh recording moves through stages (uploading → transcoding → transcribing → annotating → ready) and every response reports the current stage. Polls every ~10s; returns the current stage if it times out — just call again to keep waiting.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-11-03T07:02:32.301Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-03T07:02:32.256Z","components":{"code":{"score":25,"max":25,"notes":["5 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@clipy/mcp","version":"0.17.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-12T21:05:42.136Z","repositoryUrl":"git+https://github.com/manovagyanik1/clipy-mcp.git","weeklyDownloads":170}],"repo":{"found":true,"owner":"manovagyanik1","repo":"clipy-mcp","archived":false,"pushedAt":"2026-11-02T17:57:41Z","stars":5,"forks":2,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/350477596?v=4","ownerCreatedAt":"2019-07-02T20:27:53Z","license":"MIT"},"icon":{"url":"https://clipy.online/favicon.ico","source":"registry","width":48,"height":48},"presence":{"stars":5,"forks":2,"downloadsWeek":170,"license":"MIT","lastPushAt":"2026-11-02T17:57:41.000Z","score":37}}}},"grade_history":[],"reviews":[]}