Skip to main content
Glama
johanthoren

ParrotScribe MCP Server

by johanthoren

ParrotScribe MCP Server (Deprecated) & Lex Copilot

WARNING

This MCP server is deprecated. It willcontinue to work for users who stay on Parrot Scribe versions before 0.4.0, but it will not work once you upgrade to 0.4.0 or newer. Use the integrated MCP server built into Parrot Scribe instead.

An MCP (Model Context Protocol) server that enables AI agents to interact with the ParrotScribe transcription service on macOS.

Meet Lex: Your Tactical Meeting Copilot

If you are using Opencode, I recommend that you use the pre-configured agent called Lex. Lex transforms passive transcription into an active research and navigation tool.

  • Real-time Context: Ask "What's that?" or "What did they just say?" to get instant explanations.

  • Zero-Latency Knowledge: Proactively loads domain-specific skills based on transcript keywords.

  • Tactical Summaries: Generates structured meeting notes, identifying key facts and action items.

  • Persona-Ready: Tailor Lex to any role (Journalist, Researcher, Engineer) via private directives.

Installing Lex

  1. Ensure you are on Parrot Scribe < 0.4.0 and this MCP server is configured in your environment.

  2. Copy agent/lex.md from this repository into your local .opencode/agent/ directory.


Related MCP server: TypeWhisper MCP

What It Does

ParrotScribe captures real-time audio from your microphone and system audio, transcribes it using Whisper, and this MCP server exposes that transcription data to AI agents. This enables workflows like:

  • Meeting Monitor: AI monitors a live call and surfaces relevant information

  • Action Item Tracker: AI detects commitments and prepares follow-up actions

  • Real-time Researcher: AI looks up technical terms mentioned in conversation

  • Session Summarizer: AI generates structured summaries after calls

Prerequisites

  • macOS with ParrotScribe installed

  • Node.js 18 or higher

  • The pscribe CLI must be available in your PATH (it will be if ParrotScribe is installed correctly)

  • Parrot Scribe version < 0.4.0 (once 0.4.0 is released, this package is unsupported)

Legacy Installation (Parrot Scribe < 0.4.0 only)

If you are using Parrot Scribe 0.4.0 (or newer), do not install this package. Use the app's integrated MCP server.

No installation needed. Configure your AI agent to run:

npx @johanthoren/parrotscribe-mcp-server

Option 2: Global Install

npm install -g @johanthoren/parrotscribe-mcp-server

Then run with:

parrotscribe-mcp-server

Option 3: From Source

git clone https://github.com/johanthoren/parrotscribe-mcp.git
cd parrotscribe-mcp
npm install
npm run build
node dist/index.js

Configuration

Opencode

Add to your ~/.config/opencode/opencode.jsonc:

{
  "mcp": {
    "parrotscribe": {
      "type": "local",
      "command": ["npx", "@johanthoren/parrotscribe-mcp-server"]
    }
  }
}

Claude Code

Add to your project's .mcp.json or global MCP config:

{
  "mcpServers": {
    "parrotscribe": {
      "command": "npx",
      "args": ["@johanthoren/parrotscribe-mcp-server"]
    }
  }
}

Claude Desktop

Add to your claude_desktop_config.json (typically at ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "parrotscribe": {
      "command": "npx",
      "args": ["@johanthoren/parrotscribe-mcp-server"]
    }
  }
}

Environment Variables (Optional)

Variable

Description

Default

PSCRIBE_PATH

Path to the pscribe executable. Only needed if pscribe is not in your PATH (edge case).

pscribe

Available Tools

Tool

Description

pscribe_start

Start real-time audio transcription

pscribe_stop

Stop/pause the current transcription

pscribe_status

Get service status, session ID, duration

pscribe_tail

Get recent transcript entries with filtering

pscribe_cat

Display complete sessions with time-based filtering

pscribe_grep

Search for patterns across transcript sessions

pscribe_sessions

List past transcription sessions

pscribe_new

Force start a new session

pscribe_tail Parameters

Parameter

Type

Description

n

number

Number of entries to return (default: 10)

since_line

number

Start from line N (for polling)

status

string

Filter: all, confirmed, unconfirmed, translated, speech

session_id

string

Read from a specific session

pscribe_cat Parameters

Parameter

Type

Description

session_ids

string[]

Session IDs to display (from pscribe_sessions)

since

string

Show sessions starting after this ISO8601 timestamp

until

string

Show sessions starting before this ISO8601 timestamp

last

number

Show last N sessions

status

string

Filter: all, confirmed, unconfirmed, speech

Use pscribe_cat for historical queries like "summarize yesterday's standup" - the AI converts natural language time references to ISO8601.

pscribe_grep Parameters

Parameter

Type

Description

pattern

string

The pattern to search for (regex supported) - required

since

string

Only search sessions starting after this ISO8601 timestamp

until

string

Only search sessions starting before this ISO8601 timestamp

status

string

Filter: all, confirmed, unconfirmed, speech

ignore_case

boolean

Case-insensitive search

count

boolean

Show match count per session instead of matches

after_context

number

Show N lines after each match (-A)

before_context

number

Show N lines before each match (-B)

context

number

Show N lines before and after each match (-C)

Use pscribe_grep for queries like "did anyone mention deployment last week?" or "find all references to the API".

Output Format: TOON

The server returns transcript data in TOON format, a token-efficient format designed for LLM consumption:

transcript{timestamp,source,status,segment,confidence,duration,language,text}:
  2024-01-15T14:30:00+01:00,M,C,1,0.95,2.5,en,Hello world
  2024-01-15T14:30:05+01:00,S,C,2,0.92,3.1,sv,Hej dar

Fields

Field

Description

timestamp

ISO8601 with timezone

source

M (microphone), S (system audio), E (events)

status

C (confirmed), U (unconfirmed), T (translated), N (no_speech)

segment

Incrementing segment number

confidence

Whisper confidence score (0.0-1.0)

duration

Segment duration in seconds

language

ISO 639-1 code (e.g., en, sv, de)

text

Transcribed content

Polling Strategy

For real-time monitoring, agents should:

  1. Call pscribe_status to ensure a session is active

  2. Call pscribe_tail with n: 10 to get initial context

  3. Note the last_line number from the response metadata

  4. Periodically call pscribe_tail with since_line: last_line + 1

  5. Use status: "confirmed" to focus on finalized transcriptions

Example Prompts

See the examples/ directory for ready-to-use prompts:

  • standup.md: Daily standup meeting assistant

  • retro.md: Sprint retrospective facilitator

  • code-review.md: Code review meeting tracker

  • pair-programming.md: Pair programming session monitor

  • adr.md: Architecture Decision Record generator

Security & Privacy

  • Local-Only: Data flows exclusively from the local pscribe CLI to the local AI agent via stdio

  • Zero-Cloud: No analytics, no telemetry, no intermediate servers

  • User Control: You decide when transcription is active and which AI agent receives the data

Development

# Install dependencies
npm install

# Development mode (auto-reload)
npm run dev

# Build
npm run build

# Test with MCP inspector
npm run inspect

License

MIT

Available Tools

8 tools
pscribe_catA

Display complete transcript sessions with time-based filtering. Returns TOON format: timestamp,source,status,segment,confidence,duration,language,text

  • source: M=microphone, S=system (audio), E=events

  • status: C=confirmed, U=unconfirmed, T=translated, N=no_speech

  • segment: sequential segment number

  • confidence: 0-1 for confirmed, empty for unconfirmed

  • duration: seconds

  • language: ISO 639-1 code (e.g., en, sv, de)

  • text: transcribed content (quoted if contains commas)

Use this for historical queries like "summarize yesterday's standup" or "what was discussed last week". Convert natural language time references to ISO8601 (e.g., "yesterday morning" → appropriate timestamp).

ParametersJSON Schema
NameRequiredDescriptionDefault
lastNoShow last N sessions.
dedupNoDeduplicate entries by segment ID, keeping confirmed over unconfirmed (default: false).
sinceNoShow sessions starting after this ISO8601 timestamp (e.g., 2024-01-15T09:00:00+01:00).
untilNoShow sessions starting before this ISO8601 timestamp.
statusNoFilter by segment status (default: confirmed).
session_idsNoSession IDs to display (from pscribe_sessions). If omitted, uses time filters or --last.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It supplies detailed return format semantics (TOON format, source/status codes, text quoting), making the output behavior predictable. It also explains time-filter handling. It does not explicitly state read-only behavior, but 'Display' implies non-destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear lead statement, bulleted output format details, and a usage example. It is somewhat lengthy but every section contributes value, and it avoids redundancy. The front-loaded purpose and organized format make it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a query tool with no output schema, the description sufficiently explains the return format and the primary historical use case. It does not explicitly describe the interaction between 'session_ids' and time filters beyond what the schema already states, but the schema covers that. Overall, it is complete enough for a 6-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 6 parameters. The description adds guidance on interpreting time references for 'since'/'until' but does not add new parameter-level meaning. Baseline 3 is appropriate because the structured schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Display complete transcript sessions with time-based filtering.' It identifies the specific resource (transcript sessions) and distinguishes from siblings like pscribe_tail (real-time streaming) and pscribe_grep (search) by focusing on full historical session display. The verb 'Display' and resource scope are precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Use this for historical queries like...' providing concrete use cases and guidance on converting natural language time references to ISO8601. However, it does not explicitly mention when not to use this tool or name alternative sibling tools, so it stops short of full exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pscribe_grepA

Search for patterns across transcript sessions.

Use this for queries like "did anyone mention deployment last week?" or "find all references to the API". Returns matching lines with session ID prefix. Use --count for summary statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoShow match count per session instead of matches (default: false).
dedupNoDeduplicate entries by segment ID, keeping confirmed over unconfirmed (default: false).
sinceNoOnly search sessions starting after this ISO8601 timestamp.
untilNoOnly search sessions starting before this ISO8601 timestamp.
statusNoFilter by segment status (default: confirmed).
contextNoShow N lines before and after each match (-C).
patternYesThe pattern to search for (regex supported).
ignore_caseNoCase-insensitive search (default: false).
after_contextNoShow N lines after each match (-A).
before_contextNoShow N lines before each match (-B).

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must carry the full burden of behavioral disclosure. It does mention the output format ('Returns matching lines with session ID prefix') and the --count option, but it fails to disclose the important default filter (status=confirmed) that significantly affects results. This is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized: four sentences, each earning its place. It front-loads the core purpose, adds a practical usage example, mentions the output format, and briefly notes the count flag. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 10 parameters, no annotations, and no output schema, the description is relatively thin. It covers the main use case and output format but omits crucial context like the default status filter and does not explain how context parameters work. It is adequate but has clear gaps for such a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds minimal parameter meaning beyond what the schema already provides; it references --count but does not expand on any other parameter. It does not compensate for gaps because there are none, but it also adds little value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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: 'Search for patterns across transcript sessions.' It clearly distinguishes this from sibling tools by focusing on searching rather than starting/stopping/tailing sessions. The concrete usage examples ('did anyone mention deployment last week?') further clarify its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for when to use the tool ('Use this for queries like...'), but it does not explicitly mention when not to use it or name alternative tools. It provides no exclusions, but the guidance is strong enough for a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pscribe_newA

Force start a new transcription session. Use when you want a clean session boundary. Returns confirmation with new session ID.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It reveals that the tool 'force starts' a new session (implying a reset), and discloses the return value ('confirmation with new session ID'). However, it does not explicitly state side effects like terminating an ongoing session, which could be important.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action, no redundant wording. Every word adds value, making it both concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's zero parameters and no output schema, the description covers purpose, usage context, and return value. This is sufficient for a low-complexity tool, leaving no critical gaps for an agent to select and invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema coverage (vacuously), so the baseline is 4. The description does not need to add parameter details, and none are expected for this simple tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Force start') and resource ('new transcription session'), clearly distinguishing it from sibling tools like pscribe_start by adding the 'clean session boundary' nuance. This makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use it: 'Use when you want a clean session boundary.' It does not name alternatives or exclusions, but the context is clear and the sibling tools imply the difference from normal start.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pscribe_sessionsA

List recent transcription sessions. Returns: session ID, date, duration, segment count for each session.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax sessions to list (default: 10)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. The word 'List' clearly signals a read-only operation, and the return fields are disclosed. However, it does not explicitly state that this is non-destructive, nor does it clarify sorting behavior or any side effects, which would be useful but are not critical for a 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loading the core purpose and then listing return fields. Every word earns its place, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description is adequately complete: it states the action, the resource, and the return payload. It does not explain what 'recent' means or how the limit interacts with results, but these are minor gaps given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully covers the only parameter (limit) with a description, so the schema does the heavy lifting. The description does not add any additional semantic detail about the parameter beyond what is already in the schema, hence the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'recent transcription sessions', which distinguishes it from sibling tools that start, stop, or inspect sessions. It also specifies the exact returned fields (session ID, date, duration, segment count), leaving no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for viewing session history, but it does not explicitly contrast it with alternatives like pscribe_status (current session) or pscribe_tail (session content). There is no 'when to use this vs. other tools' guidance, though the simple verb+resource makes the primary use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pscribe_startA

Start real-time audio transcription (microphone and system audio). Returns status message confirming transcription started.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description provides some behavioral context: it captures both microphone and system audio, and returns a status message. However, it omits whether the process runs asynchronously, how it stops, or any permission requirements, which are important gaps for a starting tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action, no filler. Very efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool, the description covers the action and return value. It doesn't elaborate on the workflow with sibling tools, but the simplicity of the tool makes this sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since the input schema has no parameters, the baseline is 4. The description correctly doesn't add parameter details because there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb ('Start') and the resource ('real-time audio transcription'), with explicit scope of 'microphone and system audio'. This distinguishes it from siblings like pscribe_stop and pscribe_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: this tool starts transcription. It doesn't explicitly mention alternatives or exclusions, but the purpose is unambiguous enough that an agent would know when to use it. A 5 would require explicit 'use X instead of Y' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pscribe_statusA

Get the current status of the ParrotScribe service. Returns: version, status (listening/stopped), session ID, duration, model, capture settings, output directory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return fields and the possible status values (listening/stopped), which is helpful. However, it does not explicitly state that the tool is read-only or has no side effects, which is important for a status check with no annotation safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: first an action statement, second a return field list. It is front-loaded, concise, and every sentence adds value with no repetition or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameterless status tool with no output schema, the description provides a clear enumeration of the returned fields and status values. Minor gaps include not explaining what 'duration' refers to or potential connection errors, but overall it is sufficiently complete for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is trivially 100%. The baseline for 0 parameters is 4, and the description need not explain parameters. It adds clarity by stating what the returned status object contains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' with a clear resource 'current status of the ParrotScribe service'. It immediately distinguishes from siblings like pscribe_start/stop by focusing on status retrieval. The return field list further clarifies the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied but not explicitly stated. There is no mention of 'use this before starting' or 'instead of pscribe_tail'. However, given the sibling set, checking status is an intuitive prelude to start/stop decisions, so some context exists but explicit alternatives/exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pscribe_stopA

Stop (pause) the current transcription session. Returns status message confirming transcription stopped.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must bear the full burden. It discloses the action and the return value, but leaves ambiguity about whether 'pause' implies resumability, whether the operation is idempotent, and what happens if no session is active. This is a moderate gap in behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences that immediately state the action and the return value. There is no redundant or filler content; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description covers the basic action and return. However, it lacks edge-case details such as behavior with no active session, possible error conditions, or the distinction between a resumable pause and a permanent stop. These omissions make it minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is an empty object. With no parameters to document, the baseline of 4 applies. The description adds no parameter-specific information, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Stop (pause) the current transcription session.' It uses a specific verb and resource, and the mention of returning a status message further clarifies its purpose. This distinguishes it from sibling tools like pscribe_start and pscribe_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: when you want to stop or pause the current transcription session. It does not explicitly mention alternatives or exclusions, but the context is unambiguous for a simple stop operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pscribe_tailA

Get recent transcript entries. Returns TOON format: timestamp,source,status,segment,confidence,duration,language,text

  • source: M=microphone, S=system (audio), E=events

  • status: C=confirmed, U=unconfirmed, T=translated, N=no_speech

  • segment: sequential segment number

  • confidence: 0-1 for confirmed, empty for unconfirmed

  • duration: seconds

  • language: ISO 639-1 code (e.g., en, sv, de)

  • text: transcribed content (quoted if contains commas)

Use 'n' for last N lines, OR 'since_line' to poll from a specific line (mutually exclusive). For polling: call with since_line, note the last line number, then call again with that number + 1.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of entries to show (default: 10). Ignored if since_line is set.
dedupNoDeduplicate entries by segment ID, keeping confirmed over unconfirmed (default: false). Note: last_line metadata reflects raw line count before dedup.
statusNoFilter by segment status (default: all). 'speech' = confirmed + unconfirmed + translated (excludes no_speech).
session_idNoSession ID to read (from pscribe_sessions). Default: current session.
since_lineNoStart from this line number (for polling). When set, returns ALL lines from this position onwards.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It thoroughly discloses the TOON output format, field meanings, dedup behavior ('keeping confirmed over unconfirmed'), and the nuance that 'last_line metadata reflects raw line count before dedup.' It also explains mutual exclusivity and the polling workflow, exceeding typical transparency expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense yet well-organized: a single-sentence purpose, a bulleted format explanation, and concise usage notes. No sentence is wasted; all information is relevant and directly supports correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description must explain return values and behavior itself. It thoroughly covers the TOON format, each field, status filter semantics, dedup behavior, and polling usage. This makes the description complete for a 5-parameter tool with no structured metadata beyond the input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Though the schema already covers all 5 parameters (100% coverage), the description adds meaningful context beyond the schema: n and since_line are mutually exclusive, since_line enables a polling pattern, and dedup has a metadata caveat. This is exactly the kind of relational and usage nuance that schemas cannot convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get recent transcript entries,' which is a specific verb+resource combination. The 'recent' scope hints at differentiation from sibling list/search tools, but it does not explicitly name alternatives like pscribe_cat or pscribe_grep, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on using 'n' for last N lines and 'since_line' for polling, including a step-by-step polling pattern: 'call with since_line, note the last line number, then call again with that number + 1.' However, it does not discuss when to choose this tool over siblings, leaving the alternatives unmentioned.

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. 8 tool updatesv0.3.2
    • First observedpscribe_cat
    • First observedpscribe_grep
    • First observedpscribe_new
    • First observedpscribe_sessions
    • First observedpscribe_start
    • First observedpscribe_status
    • First observedpscribe_stop
    • First observedpscribe_tail

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a distinct purpose: start/stop control, status queries, live tail, session listing, forcing new sessions, full transcript display, and search. Even tail vs cat are differentiated by time scope (recent polling vs historical full sessions).

Naming Consistency4/5

All tools share the pscribe_ prefix and use lowercase with underscores, but the suffix style mixes verbs (start, stop, tail, cat, grep) with nouns (status, sessions) and an odd 'new'. The prefix keeps it predictable, though a stricter verb_noun pattern would be more consistent.

Tool Count5/5

8 tools is well-scoped for a transcription service covering control, live monitoring, session management, and historical queries. Each tool earns its place without redundancy.

Completeness4/5

The surface covers the full transcription lifecycle: start, stop, status, live polling, session listing, new session creation, full transcript viewing, and search. Minor gaps like explicit pause/resume or export/delete exist, but agents can work around them (start resumes, grep/cat serve export needs).

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Transcribes audio/video files, generates summaries and structured knowledge items, and supports Notion integration and chat-based interaction. Works as a standalone CLI, Notion integration, or MCP server tool for agent ecosystems.
    15
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Connects to the TypeWhisper macOS app to let coding agents transcribe local files, inspect model status, search history, and manage dictionary terms and corrections.
    10
    19
    2
    GPL 3.0
  • A
    license
    A
    quality
    C
    maintenance
    Provides voice transcription control and polling for MCP-compatible agents, enabling start/stop/pause/resume and retrieval of new text via tools.
    8
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Gives your AI a live, speaker-labeled transcript of the meeting or call happening right now, plus the ability to push advice into the meeting window and speak out loud on the Mac. Requires the VoxAI macOS app — the server reads and writes that app's local files, so tools only return real data on macOS.
    -