Zernote
by zernote.com · remote · no sign-in to list tools · v1.0.0 · published by com.zernote
User research workspace to transcribe interviews and turn conversations into insights.
17 tools: 3 can delete or cancel things, 6 change things and 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things6Claude Code: ask: see these tools
- Only reads8Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http zernote https://zernote.com/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
17 tools
Deletes or cancels 3Claude Code: deny
guides_editReplace an existing interview guide from markdown.No findings
Why it is in this group
- The name "guides_edit" says "edit": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Replace an existing interview guide from markdown. To create the first guide, call guides_create. Text before the first ## is the intro. ## Title (12) or ## Title (7–11) is a block; minutes are the last number in parentheses. Lines starting with - or 1. are questions; a leading * marks a key question; the next indented line is the question note. A paragraph under the block heading before the first question is the block note. ## Конспект is the post-interview notes template, not a block. Optional line `Общее время: 30` or `Total: 30` sets total minutes; otherwise they are the sum of block minutes. Anything that does not match is returned in remainder and kept, not dropped. The previous guide is replaced entirely.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
interviews_editRename, move, write summary/notes, retranscribe, assign/confirm speakers, or toggle voiceprint.No findings
Why it is in this group
- The name "interviews_edit" says "edit": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Rename, move, write summary/notes, retranscribe, assign/confirm speakers, or toggle voiceprint. action=rename needs id+title; move needs interview_ids (+ optional project_id); write_summary needs id+summary; write_notes needs id+notes; retranscribe needs id+language (charges transcription tokens again; analyze-only, keeps notes). assign_speakers needs id+speaker_labels+assigned_names. For voiceprint interviewer confirm: one label + real name on one interview after quote links; that identity backfills other interviews sharing voice_identity_id — re-list instead of confirming every card. set_voiceprint needs enabled bool (false purges biometric voice data). If need_approve_speakers=true, show quote links then assign_speakers when the user confirms. If transcript_quality.looks_corrupted=true, offer retranscribe with the correct language. write_notes and write_summary replace the entire notes or summary field (not append).
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
jtbd_editEdit JTBD graph: extract_interview, move_interview, create_segment, fill_in job, update_job, delete_job.No findings
Why it is in this group
- The name "jtbd_edit" says "edit": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Edit JTBD graph: extract_interview, move_interview, create_segment, fill_in job, update_job, delete_job.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
Changes things 6Claude Code: ask
guides_createCreate the first interview guide on a project.No findings
Why it is in this group
- The name "guides_create" says "create": a word for a change.
Description, as the server wrote it Create the first interview guide on a project. Use this to upload a new guide. Pass structured fields, not markdown: intro, blocks (title, minutes, notes, questions with text/note/key), and notes_template. Needs at least one block with a title. Fails if the project already has a guide — then use guides_edit. Core does not show the guide. Live reads it on the project.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
mcp_confirm_uploadApp-only: confirm a completed R2 upload (single PUT or multipart) for an Inbox interview.No findings
Why it is in this group
- The name "mcp_confirm_upload" says "upload": a word for a change.
Description, as the server wrote it App-only: confirm a completed R2 upload (single PUT or multipart) for an Inbox interview. Audio/video is enqueued for transcription (STT + diarization). Text (.txt/.md) and PDF are stored and marked ready immediately — no transcription.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
mcp_prepare_uploadApp-only: create an Inbox interview and return a presigned R2 upload URL (or multipart upload_id for large files).No findings
Why it is in this group
- The name "mcp_prepare_upload" says "upload": a word for a change.
Description, as the server wrote it App-only: create an Inbox interview and return a presigned R2 upload URL (or multipart upload_id for large files). Pass interview_id (+ upload_id for multipart) to resume without a new card.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
mcp_sign_upload_partsApp-only: return presigned R2 URLs for one or more multipart upload parts (resume-safe).No findings
Why it is in this group
- The name "mcp_sign_upload_parts" says "upload": a word for a change.
Description, as the server wrote it App-only: return presigned R2 URLs for one or more multipart upload parts (resume-safe).
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
projects_editCreate or rename projects.No findings
Why it is in this group
- The name "projects_edit" says "edit": a word for a change.
Description, as the server wrote it Create or rename projects. action=create needs name; action=rename needs id and name. Delete is not supported yet.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
upload_interviewOpens the in-Claude MCP Apps widget "Upload To Zernote" so the user can drop a file into Inbox in this chat (audio/video max 2GB; text .txt/.md or PDF max 50MB).No findings
Why it is in this group
- The name "upload_interview" says "upload": a word for a change.
Description, as the server wrote it Opens the in-Claude MCP Apps widget "Upload To Zernote" so the user can drop a file into Inbox in this chat (audio/video max 2GB; text .txt/.md or PDF max 50MB). Use when the user wants to upload/add an interview or get started on an empty account — this is the usual ingest path in Claude. Audio/video starts transcription; text/PDF become ready immediately (no speaker diarization). Claude can name interviews after upload.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
Only reads 8Claude Code: allow
cards_readList L2 coded claim-cards (claim + optional quote + chunk_index + lens + codes + start_seconds?No findings
Why it is in this group
- The name "cards_read" says "read": a word for reading.
Description, as the server wrote it List L2 coded claim-cards (claim + optional quote + chunk_index + lens + codes + start_seconds? + url). Filter by project_id, interview_id / interview_ids, codes (any match), or lens (workflow|gtm|privacy|other). CITATION REQUIRED: actively cite each card.quote to the user as markdown ["verbatim quote"]({base_url}/project/interview/{id}?t={seconds}) using item.url from the tool result (already absolute; includes ?t= when start_seconds is set). Prefer quotes over paraphrase. Verify with interviews_read action=transcript around_chunk_index when a wider quote window is needed.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
get-skillsUse for startup ideas, office hours, and “I installed this connector to work through an idea”.No findings
Why it is in this group
- The name "get-skills" says "get": a word for reading.
Description, as the server wrote it Use for startup ideas, office hours, and “I installed this connector to work through an idea”. Inside: office-hours-zernote (challenge the idea), zernote-plan-research. Omit id for the catalog, then pass id for the full playbook. Not for listing interviews or projects. Works without login.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
guides_readRead the interview guide stored on a project.No findings
Why it is in this group
- The name "guides_read" says "read": a word for reading.
Description, as the server wrote it Read the interview guide stored on a project. The guide has an intro, ordered blocks (title, minutes, questions, notes), total time, a notes template, and any markdown that did not parse. Returns an empty guide when the project has none.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
insights_readRead the project Insights graph in pages or by node.No findings
Why it is in this group
- The name "insights_read" says "read": a word for reading.
Description, as the server wrote it Read the project Insights graph in pages or by node. action=list returns a compact folder-wide outline (groups + interviews) plus a page of insight bodies. Filter with interview_id, group_id (DB UUID, not UI group-0), group_name, insight_ids, or ungrouped_only. action=get_node returns one node: insight | interview | group | ungrouped. CITATION REQUIRED: actively cite each item.quote as markdown ["verbatim quote"]({base_url}/project/interview/{id}?t={seconds}) using item.url from the tool result (already absolute; includes ?t= when start_seconds is set). Prefer quotes over paraphrase. Do not use quote_start — that is a character offset, not a player timestamp.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
interviews_readRead interviews.No findings
Why it is in this group
- The name "interviews_read" says "read": a word for reading.
Description, as the server wrote it Read interviews. Typical path: (1) action=list with summary_mode=brief (default) — returns the short # Summary. List items include need_approve_speakers (+ pending_speakers / hint): when true, show interviewer quote links then confirm via assign_speakers; one identity confirm backfills other interviews sharing voice_identity_id. Use summary_mode=brief for renaming or folder triage. Use summary_mode=full when Profile/Tools/Pains/Other topics are needed for deeper analysis. (2) call `search` when you need evidence or counter-evidence for a hypothesis; (3) use action=transcript with around_chunk_index from matching_chunks when a quote window is required. CITATION REQUIRED: when answering the user, actively cite evidence as markdown ["verbatim quote"]({base_url}/project/interview/{id}?t={seconds}) using interview_url / matching chunk url from tool results (includes ?t= when start_seconds is set). Prefer quotes over paraphrase.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
jtbd_readRead JTBD job graph segments and trees.No findings
Why it is in this group
- The name "jtbd_read" says "read": a word for reading.
Description, as the server wrote it Read JTBD job graph segments and trees. action=list_segments needs folder_id/project_id. action=get_tree needs segment_id or interview_id. CITATION REQUIRED: cite job quotes as ["text"](interview_url).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
projects_readRead existing research folders.No findings
Why it is in this group
- The name "projects_read" says "read": a word for reading.
Description, as the server wrote it Read existing research folders. Not for a new startup idea or office hours — call get-skills first. action=list returns projects for the authenticated user.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
searchSemantic search for evidence / counter-evidence after you have interview context (e.g.No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it Semantic search for evidence / counter-evidence after you have interview context (e.g. from list/summary). Optional interview_id scopes search to one interview and returns smaller text windows. Returns matching_chunks[{chunk_index, text, similarity, start_seconds?, url}]. CITATION REQUIRED: actively cite hits to the user as markdown ["verbatim quote from text"]({base_url}/project/interview/{id}?t={seconds}) using each chunk's url field from the tool result (already absolute; includes ?t= when start_seconds is present). Prefer quoting matching_chunks over paraphrase. Expand with interviews_read action=transcript around_chunk_index when a wider quote window is needed.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http zernote https://zernote.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__zernote__get-skills",
"mcp__zernote__projects_read",
"mcp__zernote__guides_read",
"mcp__zernote__interviews_read",
"mcp__zernote__search",
"mcp__zernote__cards_read",
"mcp__zernote__insights_read",
"mcp__zernote__jtbd_read"
],
"ask": [
"mcp__zernote__projects_edit",
"mcp__zernote__guides_create",
"mcp__zernote__upload_interview",
"mcp__zernote__mcp_prepare_upload",
"mcp__zernote__mcp_sign_upload_parts",
"mcp__zernote__mcp_confirm_upload"
],
"deny": [
"mcp__zernote__guides_edit",
"mcp__zernote__interviews_edit",
"mcp__zernote__jtbd_edit"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as zernote. Review it before you use it.