Zernote
Server Details
User research workspace to transcribe interviews and turn conversations into insights.
- Status
- Healthy
- Uptime
- 5.7% over 38 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
TDQS
Scored across 14 tools
Each tool targets a distinct resource or action (cards, insights, interviews, JTBD, projects, uploads, search), and the domain labels are mostly clear. The upload pipeline tools (mcp_prepare_upload, mcp_confirm_upload, mcp_sign_upload_parts) could be confused with upload_interview, but the 'App-only' qualifier and distinct purposes help disambiguate.
The read/edit tools follow a consistent {resource}_{verb} pattern (cards_read, interviews_read, jtbd_edit, projects_edit), but upload_interview, get-skills, search, and the mcp_*_upload group break this pattern, mixing verb-first and noun-first conventions. The mixed styles are still readable but not uniform.
14 tools is well-scoped for a research platform covering projects, interviews, cards, insights, JTBD, and upload workflows. Each tool has a place, and the count is in the sweet spot without redundancy or bloat.
Core workflows are covered (project create/list/rename, interview upload/read/edit/search, JTBD read/edit, card and insight reads), but projects and interviews have no delete operation, and cards/insights are read-only with no editing tools. These lifecycle gaps create potential dead ends for agents managing data.
Available Tools
14 toolscards_readCards ReadARead-onlyInspect
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" 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.
| Name | Required | Description | Default |
|---|---|---|---|
| lens | No | Optional exact lens filter. | |
| codes | No | Optional code tags; any match (e.g. pain:synthesis, gtm:pricing). | |
| limit | No | Max cards to return (default 50, max 200). | |
| offset | No | Number of cards to skip (default 0). | |
| folder_id | No | Deprecated alias for project_id. | |
| project_id | No | Optional project UUID — cards from interviews in this project (alias: folder_id). | |
| interview_id | No | Optional interview UUID to scope cards. | |
| interview_ids | No | Optional interview UUIDs to scope cards. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/destructiveHint annotations, the description discloses the mandatory citation behavior, the exact markdown format using item.url, the preference for verbatim quotes over paraphrase, and a verification workflow. This is substantial behavioral context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences carry a dense but relevant payload. The field list is compact, the critical CITATION REQUIRED directive is prominently emphasized, and there is no filler. Slightly dense, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain return values, and it does: card structure, URL behavior, citation format, filtering, and verification path. An agent can invoke this tool correctly and process its results without needing to infer unstated behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description reiterates the 'any match' semantics for codes and the lens enum, but these are already in the schema. It adds little parameter-level meaning beyond the structured definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'List L2 coded claim-cards' and enumerates the exact fields included, making the tool's purpose explicit and distinct from sibling read tools like insights_read or interviews_read. The resource (L2 coded claim-cards) is unambiguous and the filtering options are stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the filtering dimensions and provides an explicit alternative: 'Verify with interviews_read action=transcript around_chunk_index when a wider quote window is needed.' This gives clear when-to-use guidance for a related sibling. It does not contrast with search or insights_read, but the primary use case is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-skillsStartup ideas / office hoursARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Skill id. Empty = catalog. Examples: office-hours-zernote, zernote-plan-research. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only/safe; description adds 'works without login' (auth context) and explains catalog-vs-playbook behavior with omitted vs provided id. It does not describe output shape/pagination, but the simple read-only nature makes this a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, each earns its place: use case, contained skill IDs, id behavior, exclusions, auth. The telegraphic style is efficient but could be slightly more polished.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter read-only tool with no output schema, the description covers purpose, id semantics, contents, exclusions, and auth. It may not detail return format, but this is minor given the simple tool and high schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the id parameter fully, including examples and empty=catalog. The description adds semantic value by mapping office-hours-zernote to 'challenge the idea' and zernote-plan-research, which goes beyond the schema's bare examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly scopes the tool to startup ideas/office hours and explains the catalog/playbook behavior, and explicitly says it is not for listing interviews or projects. It lacks a direct verb like 'list' or 'retrieve', leaving the action slightly implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use ('startup ideas, office hours...') and when-not-to-use ('not for listing interviews or projects') but does not name the sibling tools to use instead. This is strong usage guidance, but not full explicit routing to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insights_readInsights ReadARead-onlyInspect
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" 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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | get_node: insight, interview, or group UUID. Not used for ungrouped. | |
| limit | No | List only: max insight bodies (default 25, max 100). | |
| action | Yes | list = paged insight bodies + outline. get_node = one insight, interview, group, or ungrouped cluster. | |
| offset | No | List only: skip this many matching insight bodies (default 0). | |
| group_id | No | List filter: insight_groups.id UUID (not a render index like group-0). | |
| folder_id | No | Deprecated alias for project_id. | |
| node_type | No | get_node: which node to load. | |
| group_name | No | List filter: case-insensitive group name match. | |
| project_id | No | Project/folder UUID (required for list and for get_node group/ungrouped/insight). | |
| insight_ids | No | List filter: only these insight UUIDs. | |
| interview_id | No | List filter: only insights from this interview. Interview must be in the project. | |
| ungrouped_only | No | List filter: only insights that are not in a cross-interview group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: list returns a compact outline plus a page of insight bodies, get_node returns one node, and citation requirements are detailed (markdown format, use item.url, include ?t= when start_seconds is set). It also warns that quote_start is a character offset, not a player timestamp, which prevents a common misuse. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: it front-loads the two actions, then filters, then citation requirements. Every sentence adds information, and the warning about quote_start is important. It is slightly long, but the complexity of the tool (two actions, many filters, citation rules) justifies the length. A small deduction for the citation paragraph being a bit run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 12 parameters, two actions, and no output schema, the description covers the key operational details: what each action returns, how filters work, which parameters are required for which action, and how to format citations. The absence of an output schema is compensated by the description's explanation of the result shape (outline + insight bodies, node types). An agent has enough to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters. The description adds meaning by explaining the relationship between action and parameters (e.g., id is used for get_node, not for ungrouped; project_id is required for list and for get_node group/ungrouped/insight; group_id is a DB UUID not a render index). It also clarifies the citation-related use of item.url, which is not in the schema. This is strong added value, though the schema already carries most of the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the project Insights graph, and distinguishes two actions: list (folder-wide outline plus insight bodies) and get_node (single node of type insight, interview, group, or ungrouped). It names the resource (Insights graph) and the specific operations, making it easy for an agent to understand what this tool does and how it differs from sibling read tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use list vs get_node, and provides filter guidance (interview_id, group_id, group_name, insight_ids, ungrouped_only). It also warns against using quote_start and instructs to prefer quotes over paraphrase, which is actionable usage guidance. It does not explicitly name sibling alternatives, but the action-level guidance is strong and contextually sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interviews_editInterviews EditADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Interview UUID (rename, write_summary, write_notes, retranscribe, assign_speakers). | |
| notes | No | Full note text that replaces the existing notes field (write_notes). | |
| title | No | New title (rename). | |
| action | Yes | Edit action. | |
| enabled | No | Voiceprint on/off (set_voiceprint). false deletes stored voice biometrics. | |
| summary | No | Full summary markdown that replaces the existing summary (write_summary). Expected sections: # Summary, ## Profile, ## Tools & workflow, ## Pains & friction, # Other topics. | |
| language | No | Transcription language code for retranscribe (e.g. en, ru, nl). Charges tokens for audio duration. | |
| folder_id | No | Deprecated alias for project_id. | |
| project_id | No | Destination project UUID for move (alias: folder_id). Omit or null for Inbox. | |
| interview_ids | No | Interview UUIDs to move. | |
| assigned_names | No | Human names matching speaker_labels (assign_speakers). Use a real name, not "Interviewer N". | |
| speaker_labels | No | Diarization labels to assign (assign_speakers), e.g. ["A"]. Voiceprint interviewer confirm: one label in this call (same identity then backfills other interviews). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses important side effects: retranscribe 'charges transcription tokens again', disabling voiceprint 'purges biometric voice data', and write_notes/write_summary 'replace the entire field (not append)'. It also explains the voiceprint backfill behavior across interviews sharing voice_identity_id, which is critical operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place, covering all seven actions plus special conditions. It is front-loaded with the action list, though the single-paragraph format could be better organized into per-action bullets for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no output schema and destructive annotations, the description covers conditional usage, token costs, data purging, field replacement semantics, and voiceprint backfill behavior. An agent has enough information to invoke the tool correctly across all action variants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, but the description adds a valuable action-to-parameter mapping that the flat schema does not convey. It clarifies conditional requirements like retranscribe needing id+language and assign_speakers needing speaker_labels+assigned_names, and adds semantic warnings such as 'Use a real name, not "Interviewer N"'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb set — 'Rename, move, write summary/notes, retranscribe, assign/confirm speakers, or toggle voiceprint' — tied clearly to interviews as the resource. This operation list immediately distinguishes the tool from read-only siblings like interviews_read and cards_read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit per-action parameter requirements ('action=rename needs id+title', 'move needs interview_ids') and concrete trigger conditions such as 'If transcript_quality.looks_corrupted=true, offer retranscribe' and 'If need_approve_speakers=true, show quote links then assign_speakers'. It does not explicitly contrast with sibling tools, but the internal usage routing is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interviews_readInterviews ReadARead-onlyInspect
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" using interview_url / matching chunk url from tool results (includes ?t= when start_seconds is set). Prefer quotes over paraphrase.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Interview UUID (required for get, status, transcript). | |
| limit | No | For list: max interviews (default 20, max 100). For transcript: max characters (default 4000, max 20000). | |
| action | Yes | Read action. Use list (brief or summary_mode=full) for overview; use transcript when you need a quote window. | |
| offset | No | For list: skip count. For transcript without around_chunk_index: character offset (default 0). | |
| folder_id | No | Deprecated alias for project_id. | |
| inbox_only | No | When true with action=list, list Inbox interviews (no project). Ignored if project_id is set. | |
| notes_mode | No | List only. none (default) = omit notes body. full = researcher notes (truncated on list). Use summary when notes are not required. | |
| project_id | No | Optional project UUID to filter list (alias: folder_id). | |
| radius_chars | No | Transcript only with around_chunk_index: chars before/after chunk match (default 1500, max 8000). | |
| summary_mode | No | List only. brief (default) = short # Summary for triage/rename. full = all summary_fragments (profile/tools/pains/other_topics) when brief is insufficient. | |
| around_chunk_index | No | Transcript only: expand a window around this vector-search chunk_index (use instead of blind offset when available). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/destructiveHint annotations, the description discloses default behavior (summary_mode=brief), list item fields like need_approve_speakers, the identity-backfill side effect, and the required citation format with URL construction. This is substantial behavioral context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but logically ordered as a numbered workflow (list → search → transcript), with the citation requirement placed at the end as an actionable directive. Every sentence adds information, and the key workflow is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with no output schema, the description richly covers the common paths and return-ish details (summary fragments, need_approve_speakers, matching chunks). It omits guidance on action=get and action=status, which are listed in the schema and may need clarification, but the main paths are sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds meaningful usage context for around_chunk_index ('from matching_chunks'), explains the interplay between summary_mode and triage vs. analysis, and clarifies that id is required for get/status/transcript. It does not deeply explain action=get or status, but parameters themselves are well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read interviews' and immediately enumerates a concrete action list (list, get, status, transcript) with usage examples. It clearly differentiates this tool from the search sibling by explicitly directing evidence-seeking calls to `search` rather than this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance: summary_mode=brief for renaming/folder triage, summary_mode=full for deeper analysis, `search` for evidence, and transcript with around_chunk_index for quote windows. This leaves no ambiguity about which sibling or action to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jtbd_editJTBD EditCDestructiveInspect
Edit JTBD graph: extract_interview, move_interview, create_segment, fill_in job, update_job, delete_job.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| when | No | ||
| action | Yes | ||
| job_id | No | ||
| so_that | No | ||
| category | No | ||
| language | No | Job tree language for extract_interview (en or ru). Defaults to en. Quotes stay in the interview language. | |
| folder_id | No | ||
| i_want_to | No | ||
| project_id | No | ||
| segment_id | No | ||
| human_edited | No | ||
| interview_id | No | ||
| to_segment_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal destructiveHint=true and readOnlyHint=false, but the description adds no behavioral detail beyond repeating the action enum. It does not disclose that delete_job is irreversible or otherwise describe side effects, which is important for a destructive multi-action tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is short and 'Edit JTBD graph' is front-loaded, but brevity is achieved by listing values already present in the schema. The 'fill_in job' phrase is grammatically awkward, and the structure provides no explanatory elaboration to justify its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 14-parameter destructive dispatcher tool with only 7% schema description coverage and no output schema needs per-action parameter mappings and behavior notes. The description is far too incomplete for an agent to know how to construct a valid call or what consequences to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 14 parameters and only 7% schema description coverage, the description carries a heavy burden to explain parameters, but it does not. The action list adds no meaning beyond the schema enum and none of the action-specific parameters are mapped to their corresponding operations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource ('Edit JTBD graph') and lists the available actions, which distinguishes it from jtbd_read at a high level. However, it never explains what a JTBD graph is or what the listed actions actually do, and the action list simply duplicates the input schema's enum.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings like interviews_edit, projects_edit, or jtbd_read. It also does not explain how an agent should select among the six action values for a given editing scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jtbd_readJTBD ReadARead-onlyInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| folder_id | No | Project/folder UUID (list_segments). | |
| project_id | No | Alias for folder_id. | |
| segment_id | No | Segment UUID (get_tree). | |
| interview_id | No | Interview UUID (get_tree). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds the citation requirement (cite job quotes with specific format), which is a behavioral trait not in annotations. It doesn't mention output format or pagination, but for a read tool with annotations, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the tool's purpose and actions. The citation requirement is placed at the end. No wasted words, but could be slightly more concise by merging the action requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description covers all necessary information to select and invoke correctly: actions, required parameters, and citation format. It lacks explicit mention of return format, but annotations cover safety, and this is not a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, with most parameters having descriptions. The description adds value by explaining the relationship between actions and required parameters, and clarifies that project_id is an alias for folder_id. It also clarifies the citation format requirement, which is not in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads JTBD job graph segments and trees, naming two specific actions and their required parameters. It distinguishes from siblings like jtbd_edit by the read-only nature, but doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use each action (list_segments needs folder_id/project_id, get_tree needs segment_id or interview_id). It doesn't explicitly state when NOT to use this tool versus alternatives, but the action-specific guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_confirm_uploadConfirm UploadAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional title to apply before confirm. | |
| filename | Yes | Original filename. | |
| language | Yes | STT language for audio/video (e.g. en, ru, nl). Not used for text/PDF (no transcription). | |
| object_key | Yes | R2 object key from prepare. | |
| size_bytes | Yes | File size in bytes. | |
| interview_id | Yes | Interview UUID from prepare. | |
| multipart_parts | No | Completed parts (part_number + etag) when using multipart. | |
| multipart_upload_id | No | Multipart upload id — complete assembly before confirm. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, but the description clarifies the tool has side effects (enqueues transcription, marks files ready). It also explains that text/PDF skip transcription, which is valuable behavioral info. However, it doesn't state what happens on failure or if it's idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the main purpose and the key partition between media types. It earns its place by prioritizing the most decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters and no output schema, the description covers the essential flow (confirm upload, transcription behavior) but omits details like return value or error cases. Given the complexity and annotations, it's fairly complete but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-documented. The description adds context that 'language' is used only for audio/video and not for text/PDF, and that multipart_parts/multipart_upload_id are for multipart uploads. This adds meaningful guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it confirms a completed R2 upload for an Inbox interview and distinguishes between media types (audio/video get transcription, text/PDF do not). It specifies the tool's role in the upload flow. It doesn't explicitly differentiate from siblings like mcp_prepare_upload or mcp_sign_upload_parts, but the purpose is evident from the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it should be used after completing the upload (single PUT or multipart) and references the prepare step for keys. It doesn't explicitly name alternatives or when not to use it, but the context signals and flow are reasonably clear given the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_prepare_uploadPrepare UploadAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional interview title (defaults to sanitized filename). | |
| filename | Yes | Original filename. | |
| upload_id | No | Optional multipart upload id from a previous prepare (resume). | |
| size_bytes | Yes | File size in bytes. | |
| content_type | No | MIME type for the PUT (optional). | |
| interview_id | No | Optional: existing empty interview UUID — resume upload without creating a new card. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=false and destructiveHint=false annotations, the description discloses that calling it creates an Inbox interview and that passing interview_id avoids creating a new card. This adds meaningful side-effect context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core action, output type, multipart condition, and resume behavior with no filler. The key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately names the return values: presigned R2 upload URL or multipart upload_id. It covers resume behavior and large-file handling, though it does not specify response field names or next-step workflow with sibling confirm/sign tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter already has a meaningful description in the input schema. The tool description adds general context about multipart and resume behavior but does not significantly enrich the parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'create an Inbox interview' and return a presigned R2 upload URL or multipart upload_id. It clearly distinguishes this prepare step from the sibling confirm/sign tools by describing the preparation role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is app-only, handles both single-upload and large-file multipart cases, and explains how to resume with interview_id and upload_id. It does not explicitly name alternatives or exclusions, but the intended use is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_sign_upload_partsSign Upload PartsAInspect
App-only: return presigned R2 URLs for one or more multipart upload parts (resume-safe).
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes | Multipart upload id from prepare. | |
| object_key | Yes | R2 object key from prepare. | |
| interview_id | Yes | Interview UUID from prepare. | |
| part_numbers | Yes | Part numbers to sign (1-based, max 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, destructiveHint=false), so the description carries most of the burden. It adds 'App-only' and 'resume-safe', hinting at authentication context and repeatability, but does not explain URL validity, required permissions, or side effects. It neither contradicts the annotations nor fully discloses behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence that front-loads the core action, resource, and scope. Every word contributes meaning; there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All four required parameters are fully documented in the schema, but there is no output schema and the description does not explain how the returned URLs fit into the broader multipart flow (e.g., uploading parts to R2 and then calling mcp_confirm_upload). The tool is understandable for a single call, but some workflow context is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has a clear description (e.g., 'from prepare'). The description's phrase 'one or more multipart upload parts' and 'resume-safe' adds slight framing, but no additional parameter-level meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('return') and resource ('presigned R2 URLs for one or more multipart upload parts'), making the tool's action clear. It does not explicitly contrast with sibling tools like mcp_prepare_upload or mcp_confirm_upload, but the multipart part-signing scope is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context ('App-only', 'resume-safe') that implies when the tool should be used, but it does not explicitly state when to use this tool versus siblings such as mcp_prepare_upload, mcp_confirm_upload, or upload_interview. No exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_editProjects EditAInspect
Create or rename projects. action=create needs name; action=rename needs id and name. Delete is not supported yet.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Project UUID (required for rename). | |
| name | No | Project name (required for create and rename). | |
| action | Yes | Edit action. | |
| description | No | Optional project description (create/rename). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal mutation (readOnlyHint=false) and non-destructiveness (destructiveHint=false); the description adds the specific constraint that delete is not supported. It does not disclose side effects like whether rename overwrites an existing project or what the response contains, so it is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all informative; front-loaded with the core purpose, then action rules, then boundary. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create/rename tool with full schema coverage, the description covers supported actions and their parameter requirements, and flags the unsupported delete. The main gap is no mention of return/result, but since there is no output schema and the operations are simple, this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, name, action, and description. The description's action=create/rename rules are a useful restatement but add little new meaning beyond the property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('projects') and the exact mutations it supports ('create or rename'), and explicitly rules out delete. This clearly distinguishes it from read-only siblings like projects_read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives action-specific parameter rules ('action=create needs name; action=rename needs id and name'), which tells an agent how to select the correct invocation, and says delete is unsupported. It does not name read-side alternatives like projects_read for inspection use cases, so the guidance is clear but not fully explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_readProjects ReadARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of projects to return (default 50, max 200). | |
| action | Yes | Read action. Currently only list. | |
| offset | No | Number of projects to skip before returning results (default 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by stating that action=list returns projects for the authenticated user, clarifying the request scope and reinforcing that this is a read-only listing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The main purpose is front-loaded, followed immediately by a routing note and a concise behavior statement, and every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only tool, the description covers purpose, user scope, and the key sibling distinction. Pagination and parameter behavior are fully handled by the schema, so nothing essential is missing for invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so limit, offset, and action are already documented with types, defaults, and enum constraints. The description restates the list behavior but adds no parameter detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read existing research folders,' making the primary purpose immediately clear. It also distinguishes itself from get-skills by stating what it is not for, so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Not for a new startup idea or office hours — call get-skills first,' giving a clear when-not-to-use rule and naming an alternative. This is direct usage guidance rather than leaving the decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearchARead-onlyInspect
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" 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of interviews to return (default 5, max 10). Ignored when interview_id is set. | |
| query | Yes | Natural language search query (hypothesis / claim to evidence). | |
| chunks_limit | No | Max matching chunks per interview (default 3 corpus / 8 when interview_id set; max 10 / 20). | |
| interview_id | No | Optional interview UUID — search only inside this interview; returns smaller chunk windows. | |
| chunks_offset | No | Skip this many top chunks per interview (default 0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. The description adds citation requirements and behavior (returns smaller windows with interview_id), which is useful. However, it doesn't disclose performance limits or edge cases, so a middle score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the purpose and scoping behavior, and includes crucial citation instructions without excessive detail. Each sentence contributes to effective use, from purpose to expansion options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explicitly lists the return fields (matching_chunks with chunk_index, text, similarity, start_seconds?, url), which is sufficient for an agent to process results. It also covers citation format and expansion, making it complete for a read-only search tool. Slight deduction for not detailing how to handle empty results or errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds meaning beyond the schema by explaining how interview_id affects the result window size, and by specifying context for the query as a hypothesis/claim. The limit and chunks_limit defaults are in the schema, but the description clarifies their behavior in relation to interview_id, adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a semantic search for evidence/counter-evidence, specifying the resource (interview context) and the distinguishing feature of optional scoping by interview_id. It differentiates from siblings like interviews_read by focusing on hypothesis-driven evidence retrieval rather than reading interviews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides when to use the tool (after obtaining interview context) and how to expand results (via interviews_read action=transcript), providing clear alternatives and next steps. It does not state when not to use it, but the context condition is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_interviewUpload InterviewAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds useful behavior beyond annotations: it opens a user-facing widget, imposes file size/type limits, and explains what happens after upload (transcription for audio/video, immediate readiness for text/PDF, no diarization). Annotations are not contradicted, and this context substantially helps set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all information-dense: the primary action comes first, followed by use-case guidance and post-upload behavior. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with annotations and no output schema, the description covers the action, the trigger conditions, file constraints, and behavioral outcomes. Nothing an agent needs to decide whether and when to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description has no parameter documentation burden. The baseline of 4 applies; no schema or description gaps exist here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (opens the "Upload To Zernote" widget) and a specific resource (Inbox for this chat), and clarifies it is the usual ingest path in Claude. This clearly distinguishes it from the internal mcp_prepare/mcp_sign/mcp_confirm sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States exactly when to use it: when the user wants to upload/add an interview or get started on an empty account. It gives clear context but does not explicitly mention when not to use it or name alternatives for direct programmatic upload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get-skills1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Skill id. Empty = catalog. Examples: who-is-user, plan-research."New value: +"Skill id. Empty = catalog. Examples: office-hours-zernote, zernote-plan-research."
14 tool updates
- First observed
cards_read - First observed
get-skills - First observed
insights_read - First observed
interviews_edit - First observed
interviews_read - First observed
jtbd_edit - First observed
jtbd_read - First observed
mcp_confirm_upload - First observed
mcp_prepare_upload - First observed
mcp_sign_upload_parts - First observed
projects_edit - First observed
projects_read - First observed
search - First observed
upload_interview
Related MCP Connectors
Qualitative research platform. Design studies, analyze interviews, and generate insights.
AI-powered user research for everyone
AI-moderated research platform: create and launch studies and query interview results.
Run user research from any AI tool. Create studies, recruit participants, query insights.
Related MCP Servers
- AlicenseCqualityBmaintenanceRun real user interviews from AI agents and retrieve structured insights with themes and verbatim quotes.52 npm5MIT
- AlicenseNot gradedqualityCmaintenanceEnables semantic search and grounded answering over customer-research interviews, with every answer traceable to source quotes.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI-moderated interviews that become cited, searchable transcripts, with a repository Q&A tool that returns exact transcript quotes.MIT
- AlicenseNot gradedqualityCmaintenanceTransforms scattered customer feedback from sources like Slack, Zoom, and JIRA into actionable product insights and AI-generated PRDs. It features over 50 tools for semantic clustering, sentiment analysis, and VOC-based prioritization to streamline product management workflows.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.