Skip to main content
Glama
EmiyaKatuz

crispasr-agent-transcriber

by EmiyaKatuz

# crispasr-agent-transcriber

Local-only transcription for Codex and MCP-based AI agents, powered by CrispASR. No cloud uploads, no API keys required for transcription.

GitHub Release | npm installer | PyPI package | MCP Registry

What it does

Give it a local audio or video file. It:

  1. Probes the spoken language (English or Chinese) using CrispASR's FireRed LID.

  2. Starts a local CrispASR server with the right backend -- Cohere Transcribe for English, Qwen3-ASR for Chinese.

  3. Extracts audio from video with ffmpeg when needed.

  4. Calls CrispASR's /v1/audio/transcriptions endpoint.

  5. Writes the transcript and metadata to disk.

  6. For video understanding, captures synchronized keyframes and writes an agent-readable manifest.

Everything runs on your machine. Media never leaves it.

Related MCP server: whisper-transcribe-mcp

Quick install for Codex

The plugin includes the Codex Skill, command-line tool, and MCP server. Media stays on your computer. Model files are never downloaded during install/update; use the explicit models command when you want the installer to fetch them.

1. Install prerequisites

Install Node.js 20 or newer, uv, and ffmpeg. The installer uses uv to provide Python.

node --version
uv --version
ffmpeg -version

2. Run the installer

npx @emiyakatuz/crispasr-agent-transcriber@latest install

The installer:

  • downloads the matching GitHub Release and verifies its SHA-256 checksum;

  • installs the plugin under ~/plugins/crispasr-agent-transcriber;

  • installs the Python and MCP dependencies;

  • detects CUDA, Vulkan, or CPU and installs the best CrispASR build;

  • registers the plugin in the Codex Personal marketplace;

  • preserves existing models, binaries, and outputs during updates.

3. Add the local models

Download the recommended local English, Chinese, and language-detection bundle:

npx @emiyakatuz/crispasr-agent-transcriber@latest models

The command downloads only approved GGUF files into:

~/plugins/crispasr-agent-transcriber/models/

Then verify the installation:

npx @emiyakatuz/crispasr-agent-transcriber@latest doctor

4. Enable the plugin

With a Codex build that supports plugin commands, run:

codex plugin add crispasr-agent-transcriber@personal

If the CLI has no codex plugin command, open the Codex desktop Plugins view and install CrispASR Transcriber from the Personal marketplace. Start a new conversation, then ask:

Transcribe C:\path\to\sample.mp4 with CrispASR using auto language detection.
Save a verbose JSON transcript and an SRT subtitle file.

Update or uninstall

npx @emiyakatuz/crispasr-agent-transcriber@latest update
npx @emiyakatuz/crispasr-agent-transcriber@latest uninstall

Uninstall preserves local models, CrispASR binaries, and outputs. Use uninstall --purge-data only when those files should also be deleted. See Plugin installation for manual installation and troubleshooting.

Direct command-line use

After installation, you can run the transcription script without Codex:

Set-Location (Join-Path $HOME "plugins\crispasr-agent-transcriber")
uv run python scripts/transcribe.py sample.mp4 --profile auto `
  --manage-server `
  --models-dir models `
  --format verbose_json

Use with other AI agents

The MCP server is the cross-agent interface. Any agent that supports MCP stdio can run the released package directly from GitHub:

uvx --from "crispasr-agent-transcriber[mcp] @ git+https://github.com/EmiyaKatuz/crispasr-agent-transcriber.git@v0.4.0" crispasr-agent-mcp

Use the same command and arguments in Claude Desktop, Cursor, or another MCP client. See AI agent integrations for a generic MCP configuration and Codex CLI command.

Maintainer publishing

End users do not need the release steps. Maintainers should follow the publishing guide for Codex Marketplace, PyPI, MCP Registry, and cross-agent distribution.

Required models

Install/update never downloads models. Use the explicit models command or download these three recommended GGUF files into a local directory such as models/:

Purpose

Local file

Variant / size

Model page

File page

English ASR

cohere-transcribe-q4_k.gguf

Q4_K, smaller default

Cohere Transcribe 03-2026 GGUF

Download

Chinese ASR

qwen3-asr-1.7b-q4_k.gguf

Q4_K, smaller default

Qwen3-ASR 1.7B GGUF

Download

Language detection

firered-lid-q4_k.gguf

Q4_K default

FireRed LID GGUF

Download

Optional model IDs include english-q5-0, english-q5-1, english-q6, english-q8, english-f16, chinese-q8, chinese-f16, lid-q2, lid-q8, and lid-f16. Download a specific option with:

npx @emiyakatuz/crispasr-agent-transcriber@latest models --model-id english-q8

All three upstream model families are Apache 2.0 licensed.

For automatic English/Chinese routing, pass both ASR paths. The language probe runs first, and only the matching model is loaded:

--english-model models\cohere-transcribe-q4_k.gguf
--chinese-model models\qwen3-asr-1.7b-q4_k.gguf
--lid-backend firered --lid-model models\firered-lid-q4_k.gguf

For an explicit english or chinese profile, --model remains available as a single-model override.

CrispASR binary management

The tool auto-detects, installs, and updates the CrispASR binary from GitHub releases.

Flag

Effect

--install-crispasr

Download latest platform binary to bin/

--update-crispasr

Upgrade to newest release

--crispasr-status

Show installed version + update availability

--crispasr-bin-dir PATH

Custom directory (default ./bin)

--crispasr-bin PATH

Exact path to crispasr.exe

When --manage-server is set and no binary is found, it auto-installs before starting the server.

GPU detection

On install and update, the tool checks your hardware:

  1. CUDA -- nvidia-smi available, or CUDA_PATH / CUDA_HOME set, or CUDA in PATH -> downloads crispasr-*-cuda variant.

  2. Vulkan -- vulkaninfo or VULKAN_SDK set (only when CUDA is absent) -> downloads crispasr-*-vulkan variant.

  3. CPU -- fallback when no GPU toolkit is detected.

macOS always uses the universal binary.

Profiles

Profile

Backend

ASR model

Language hint

english

cohere

Cohere Transcribe 03-2026

en

chinese

qwen3-1.7b

Qwen3-ASR 1.7B

zh

auto

determined by LID

determined by LID

detected

auto mode runs FireRed language detection on the media, then routes English to Cohere or Chinese to Qwen3-1.7B. Mixed or uncertain content stops with a clear error asking you to re-run with --profile english or --profile chinese.

Usage

Managed server (tool starts CrispASR for you)

uv run python scripts/transcribe.py sample.wav `
  --profile auto `
  --manage-server `
  --models-dir models `
  --format srt `
  --out-dir outputs

Add --keep-server to leave the server running after transcription.

Manual server (you start CrispASR)

# Terminal 1 -- start the server
crispasr --server --backend cohere `
  -m models\cohere-transcribe-q4_k.gguf `
  --port 8080

# Terminal 2 -- transcribe
uv run python scripts/transcribe.py sample.mp4 `
  --profile english `
  --server-url http://127.0.0.1:8080 `
  --format verbose_json

If the running server's backend doesn't match the selected profile, the tool prints the exact command you need to start the correct server.

Output formats

--format

File extension

Contents

text

.txt

Plain transcript

verbose_json

.json

Full response with segments

srt

.srt

SubRip subtitles

vtt

.vtt

WebVTT subtitles

A .metadata.json sidecar is always written alongside the transcript.

Video files

Video files are detected automatically. ffmpeg extracts the audio track to a temporary mono 16 kHz WAV before sending it to CrispASR. The temporary file is deleted when transcription finishes.

All CLI flags

--profile auto|english|chinese
--format text|verbose_json|srt|vtt|json
--out-dir PATH
--server-url URL
--allow-remote-server
--manage-server
--keep-server
--model PATH               Local GGUF override for an explicit profile
--english-model PATH       Cohere model selected after English detection
--chinese-model PATH       Qwen3-ASR model selected after Chinese detection
--models-dir PATH          Directory containing approved local GGUF models
--allow-model-auto-download
--lid-model PATH           Local LID model path
--lid-backend firered|silero|ecapa|whisper
--host HOST                Managed server host (default 127.0.0.1)
--port PORT                Managed server port (default 8080)
--language CODE            Language hint for transcription
--prompt TEXT              Initial prompt/context
--vad                      Enable voice activity detection
--diarize                  Enable speaker diarization
--diarize-method METHOD
--hotwords WORD,WORD       Comma-separated hotwords
--no-timestamps
--preprocess auto|always|never
--api-key KEY              If CRISPASR_API_KEYS is enabled
--crispasr-bin-dir PATH
--crispasr-bin PATH
--install-crispasr
--update-crispasr
--crispasr-status
--list-models
--download-models
--model-id MODEL_ID
--overwrite-models

MCP server

uv sync --extra mcp
uv run --extra mcp crispasr-agent-mcp

Exposed tools:

Tool

Description

crispasr_health

Check CrispASR server health

crispasr_backends

List available backends

crispasr_detect_language

Run language detection on a file

crispasr_list_models

List approved model choices and local install status

crispasr_download_models

Explicitly download approved model files

crispasr_resolve_model_paths

Return recommended local model paths

transcribe_audio

Transcribe an audio file

transcribe_video

Transcribe a video file

understand_video

Transcribe a video, capture synced keyframes, and return an agent context

transcribe_folder

Batch-transcribe a folder

Security model

  • No cloud uploads. Media files stay on the local filesystem.

  • No remote servers by default. --server-url only accepts localhost unless --allow-remote-server is explicitly passed.

  • No URL inputs. Only local file paths are accepted. URLs, S3, and other remote schemes are rejected.

  • No shell injection. ffmpeg is called with argument lists and shell=False. No user-controlled strings are interpolated into shell commands.

  • No implicit model downloads. Install/update never downloads models, and CrispASR model auto-download (-m auto) requires --allow-model-auto-download. The models command and crispasr_download_models tool download only allowlisted Hugging Face files.

  • Temporary files are cleaned up. Converted WAV files and LID probe windows are deleted when transcription finishes.

  • Binary downloads are explicit. CrispASR binary installs only from the official CrispStrobe/CrispASR GitHub releases.

  • Verified plugin releases. The npm installer requires the plugin ZIP to match the SHA-256 value published in the same GitHub Release.

  • Narrow installer writes. The installer manages only its plugin directory and the named Personal marketplace entry. Updates preserve local models, binaries, and outputs.

  • Generated understanding stays local. Video keyframes, manifests, and agent context files are written under the selected output directory and are ignored by Git.

Verify

uv run pytest
uv run ruff check .  # zero lint warnings

License

This project is licensed under the MIT License.

Third-party components and attribution

This tool orchestrates several independently-licensed projects. It does not bundle, fork, or redistribute their code -- it downloads pre-built binaries and calls them as subprocesses or HTTP services at runtime.

Component

License

Role

CrispASR

MIT

ASR engine, server, language detection

ffmpeg

LGPL 2.1+ / GPL 2+

Media decoding and audio extraction

Cohere Transcribe 03-2026

Apache 2.0

English ASR model (loaded by CrispASR)

Qwen3-ASR 1.7B

Apache 2.0

Chinese ASR model (loaded by CrispASR)

FireRed LID

Apache 2.0

Language detection model (loaded by CrispASR)

httpx

BSD

HTTP client for CrispASR API

MCP Python SDK

MIT

MCP server framework

Node.js

MIT

npm installer runtime

adm-zip

MIT

Verified plugin ZIP extraction

Model files must be downloaded separately by the user from their respective HuggingFace repositories. See Required models above.

  • CrispASR -- the ASR engine this tool wraps

  • CrisperWeaver -- CrispASR's desktop GUI (not used by this tool)

Available Tools

10 tools
crispasr_backendsC

List available backends from a running CrispASR server.

ParametersJSON Schema
NameRequiredDescriptionDefault
server_urlNohttp://127.0.0.1:8080

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions the server must be running but does not state that this is a read-only network call, what happens if the server is unreachable, or whether any side effects exist. The minimal wording offers little beyond the basic action.

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 a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple listing tool and immediately states the core action and scope.

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?

For a simple list operation with one optional parameter and no output schema, the description covers the main outcome but omits details like return format, error behavior, or prerequisites. Given the lack of annotations, it is adequate but minimal; an agent might need to infer how to interpret the result.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the parameter meaning. It does not mention server_url at all, nor explain how it relates to the server or how to format it. While the schema provides a default, the description adds no semantic value to the parameter.

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 the tool lists available backends from a running CrispASR server, naming the specific verb and resource. It is distinguishable from siblings like crispasr_list_models, though it doesn't explicitly call out the distinction, so it misses a perfect 5.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like crispasr_list_models or crispasr_health. There are no exclusion criteria or context hints about selecting this tool over siblings. The description only states what it does, not when to choose it.

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

crispasr_detect_languageA

Run language detection on a media file using CrispASR LID.

Returns the detected language and routing decision (english / chinese / uncertain). Requires a local LID model path. The firered backend is recommended.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
lid_modelYes
lid_backendNofirered
crispasr_binNocrispasr

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are present, so the description carries the behavioral disclosure burden. It does this reasonably well by stating the output values, the prerequisite of a local LID model path, and the recommended backend. It does not describe failure modes, exact return formatting, or model-resolution behavior, but the core runtime behavior is clear.

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 three short sentences with no filler. The main action is front-loaded, followed by return semantics, then prerequisites and a recommendation. Every sentence 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?

For a tool with no annotations and no output schema, the description covers the core operation but leaves some gaps: it does not specify the exact output structure, accepted media file types, or how this tool relates to sibling model-management tools like crispasr_download_models and crispasr_resolve_model_paths. It is functional but not fully 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 schema has 0% description coverage, but the description compensates by mapping 'media file' to file_path, 'local LID model path' to lid_model, and 'firered backend is recommended' to lid_backend. It does not mention crispasr_bin, but this is an optional parameter and the required parameters are semantically covered.

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: 'Run language detection on a media file using CrispASR LID.' It also states the return value, detected language plus routing decision, and is clearly distinct from transcription-focused siblings like transcribe_audio and transcribe_video.

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 language detection and routing to english/chinese/uncertain, but it does not explicitly say when to use it instead of transcription tools or mention alternatives. The local LID model path requirement and recommended firered backend are useful setup guidance but not usage-scenario guidance.

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

crispasr_download_modelsA

Download approved GGUF models into a local models directory.

Downloads only from the built-in allowlist. By default, installs the recommended English, Chinese, and language-detection models.

ParametersJSON Schema
NameRequiredDescriptionDefault
model_idsNo
overwriteNo
models_dirNomodels

TDQS

A3.6/5.0
Behavior2/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 of behavioral disclosure. It does add useful context about the allowlist and default model set, but it never explains whether existing files are overwritten, what the overwrite parameter controls, or network/storage 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 short, front-loaded with the core purpose, and every sentence adds distinct value: what it downloads, the allowlist restriction, and the default behavior. There is no filler or redundancy.

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?

This is adequate for a simple download tool with all-optional parameters, but with 0% schema coverage and no output schema it leaves the agent to infer parameter semantics and post-download effects. It is a minimum-viable definition with clear gaps around overwrite and model selection.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter explanation. It only indirectly explains the model_ids default by describing the recommended default models, and it says nothing about how to specify model IDs, what models_dir means, or the effect of overwrite.

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 ('Download'), a specific resource ('approved GGUF models into a local models directory'), and a key constraint (built-in allowlist). This clearly distinguishes it from sibling tools like crispasr_list_models and crispasr_resolve_model_paths.

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 conveys that this tool is for installing approved GGUF models and explains the default behavior (installs recommended English, Chinese, and language-detection models). It does not explicitly name when-not-to-use or alternatives, but the intended context is unambiguous.

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

crispasr_healthB

Check whether a CrispASR server is running and what backend it uses.

ParametersJSON Schema
NameRequiredDescriptionDefault
server_urlNohttp://127.0.0.1:8080

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavior. It conveys a read-only health check and names the expected output (running status and backend), but it does not disclose failure behavior, response format, timeouts, or authentication needs. Adequate but shallow.

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?

A single 14-word sentence with no filler, front-loaded with the verb and resource. Every word earns its place for a tool of this simplicity.

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?

For a simple health check with one optional parameter, the description covers the core purpose and output concept. But with no output schema and no annotations, it omits return value details, error behavior, and the role of server_url, making it sufficient for selection but not fully complete for robust invocation.

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

Parameters2/5

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

The input schema has one parameter with 0% description coverage, and the description never mentions server_url. The parameter name and default are self-explanatory, but the description itself adds no meaning or usage guidance for it, so it fails to compensate for the coverage gap.

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 uses a specific verb ('Check') and names the resource ('a CrispASR server') plus the concrete outcome: whether it is running and which backend it uses. It does not explicitly distinguish itself from the sibling crispasr_backends, which also concerns backends, so it falls just short of a 5.

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 use case is implied: call this when you need to verify server health or identify the active backend before other operations. However, there is no explicit guidance about when not to use it or how it relates to alternatives like crispasr_backends, leaving context to inference.

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

crispasr_list_modelsA

List approved local GGUF model choices and installation status.

ParametersJSON Schema
NameRequiredDescriptionDefault
models_dirNomodels

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It conveys a non-mutating 'List' operation and hints at output via 'installation status,' but it doesn't explain what 'approved' means, whether models_dir is scanned, or what the returned entries look like.

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?

One sentence with no filler; the key action, object, and status output are front-loaded. Every word contributes to the definition.

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?

The tool is a simple read-only listing with a single optional parameter and no output schema. The description conveys what is listed (approved choices plus installation status), which is enough to invoke it, though it leaves the models_dir semantics implicit.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate, but it never mentions models_dir. The parameter name and default are self-explanatory, but the description adds no meaning about how the directory relates to approved choices or installation status.

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 names a specific verb and resource: 'List approved local GGUF model choices and installation status.' This clearly identifies what the tool does and differentiates it from siblings like crispasr_download_models, which downloads, and crispasr_resolve_model_paths, which resolves paths.

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

Usage Guidelines2/5

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

No guidance is given on when to call this tool versus alternatives. It does not mention using it before download_models or as a way to verify installed models, leaving the agent to infer context from sibling names.

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

crispasr_resolve_model_pathsC

Return recommended local model paths for auto-routed transcription.

ParametersJSON Schema
NameRequiredDescriptionDefault
models_dirNomodels

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It only states that the tool returns recommended paths; it does not disclose whether it scans the local filesystem, requires existing models, makes network calls, has side effects, or what happens if the models directory is missing.

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 a single sentence with no filler and the core purpose is front-loaded. It is concise and readable, though it sacrifices some helpful detail that could have been included without much bloat.

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

Completeness2/5

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

Given the absence of annotations, an output schema, and parameter descriptions, this one-line description is too thin for an agent to use the tool confidently. It leaves unresolved questions about the expected output format, the meaning of 'recommended', and how 'models_dir' affects behavior.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain the 'models_dir' parameter at all. The parameter name and default value are self-explanatory to a degree, but the description adds no meaning beyond the schema and fails to compensate for the missing schema documentation.

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 uses a specific verb and resource: 'Return recommended local model paths' for 'auto-routed transcription'. It is clear about what the tool does, though it does not explicitly differentiate itself from siblings like crispasr_list_models or crispasr_download_models.

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 phrase 'for auto-routed transcription' implies the context in which this tool is relevant, but there is no explicit guidance on when to use it versus alternatives, no prerequisites, and no when-not-to-use information. Usage is implied rather than stated.

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

transcribe_audioA

Transcribe a local audio file through a CrispASR server.

Supports auto language routing (needs --lid-model) or explicit english / chinese profiles. Can start a managed server on demand.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
out_dirNooutputs
profileNoauto
file_pathYes
lid_modelNo
models_dirNomodels
server_urlNo
keep_serverNo
lid_backendNofirered
chinese_modelNo
english_modelNo
manage_serverNo
response_formatNoverbose_json
allow_model_auto_downloadNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It does disclose meaningful behavior: auto language routing, explicit english/chinese profiles, and the ability to start a managed server on demand. But it omits important side effects such as output writing, model downloading behavior, and server lifecycle when manage_server is enabled.

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 compact and front-loaded, with no filler. Each sentence adds useful information about the tool's scope or modes.

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

Completeness2/5

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

For a tool with 14 parameters, no annotations, and no output schema, the description is not complete enough. It fails to explain return formats, output location, model download behavior, or the relationship between server_url and a managed server, all of which an agent would need to invoke the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for 14 undocumented parameters. It only touches on a few concepts: lid_model via '--lid-model', profile via 'english / chinese profiles', and manage_server via 'start a managed server on demand'. Most parameters (response_format, out_dir, models_dir, allow_model_auto_download, server_url, keep_server, etc.) are left unexplained.

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 clear verb ('Transcribe') and a specific resource ('a local audio file through a CrispASR server'). This distinguishes it from sibling tools like transcribe_video and transcribe_folder, which target different inputs.

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 useful selection context: use auto language routing under one condition, explicit profiles under another, and optionally start a managed server. However, it does not explicitly contrast this tool with transcribe_video or transcribe_folder, leaving some routing to inference.

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

transcribe_folderA

Batch-transcribe all supported media files in a folder.

Keeps a managed server running across all files when --manage-server and --keep-server are both set.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
out_dirNooutputs
profileNoauto
lid_modelNo
models_dirNomodels
server_urlNo
folder_pathYes
keep_serverNo
lid_backendNofirered
chinese_modelNo
english_modelNo
manage_serverNo
response_formatNoverbose_json
allow_model_auto_downloadNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the disclosure burden. It adds a genuine behavioral detail about keeping a managed server running across files when manage-server and keep-server are set, but it omits other relevant side effects such as output file writing, model downloads, or runtime expectations. The CLI-style flag names also do not match the schema parameter names.

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 short sentences: the first states the core purpose, and the second adds a meaningful behavioral caveat. There is no filler, redundancy, or restatement of schema details.

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

Completeness1/5

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

For a 14-parameter tool with no annotations, no output schema, and 0% parameter coverage, a two-sentence description is far from sufficient. It never explains supported media formats, the required folder_path, output behavior, or server/model prerequisites.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only gestures at two boolean parameters using CLI-style names. It adds no semantics for the required folder_path or for the many model, output, and server-related parameters, so it fails to compensate for the schema gap.

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 first sentence uses a specific verb (batch-transcribe) and a specific resource (all supported media files in a folder), which clearly distinguishes this folder-level tool from single-file siblings like transcribe_audio and transcribe_video.

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 phrase 'Batch-transcribe all supported media files in a folder' provides clear usage context for folder-level batch jobs and implies it is not for single-file transcription. However, it does not explicitly name alternatives or state exclusions.

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

transcribe_videoA

Transcribe a local video file through a CrispASR server.

Extracts audio with ffmpeg before sending to CrispASR. Supports the same options as transcribe_audio.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
out_dirNooutputs
profileNoauto
file_pathYes
lid_modelNo
models_dirNomodels
server_urlNo
keep_serverNo
lid_backendNofirered
chinese_modelNo
english_modelNo
manage_serverNo
response_formatNoverbose_json
allow_model_auto_downloadNo

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavior itself. It reveals that ffmpeg extracts audio before a CrispASR request, a useful non-obvious detail. However, it says nothing about output writing to out_dir, model downloading, server lifecycle management, or return formats, all of which are implied by the 14 parameters.

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?

Three short sentences, each adds value: purpose, pipeline, and option compatibility. No filler; key information is front-loaded.

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

Completeness2/5

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

For a 14-parameter tool with no annotations and no output schema, this is incomplete. It explains the pipeline but omits side effects (files written, model downloads, server management) and return behavior; relying on a sibling tool for option details is an indirect substitute.

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

Parameters2/5

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

With 0% schema description coverage and 14 parameters, the burden is on the description, but it names no parameter semantics. 'Supports the same options as transcribe_audio' is a useful pointer to a sibling tool, yet it does not explain model, out_dir, response_format, keep_server, or other options on its own.

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 opening sentence names a specific verb ('Transcribe'), a resource ('local video file'), and a target ('CrispASR server'). The ffmpeg extraction line explains the video-to-audio pipeline, and the last line ties it to transcribe_audio, making it clearly distinct from audio-only transcription.

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 positions this tool for local video files, and the ffmpeg extraction implies video-to-audio handling. It does not explicitly list when-not-to-use cases or compare against sibling tools such as transcribe_audio or understand_video, so guidance stops short of a full routing rule.

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

understand_videoC

Transcribe a local video, capture synced keyframes, and persist an agent context.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
out_dirNooutputs
profileNoauto
file_pathYes
lid_modelNo
ffmpeg_binNoffmpeg
models_dirNomodels
server_urlNo
keep_serverNo
lid_backendNofirered
chinese_modelNo
english_modelNo
manage_serverNo
max_keyframesNo
response_formatNoverbose_json
max_return_text_charsNo
allow_model_auto_downloadNo
keyframe_interval_secondsNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only discloses the high-level outcome. It does not mention the server management behavior implied by server_url, manage_server, keep_server, model auto-download, ffmpeg dependencies, or the fact that outputs are written to disk and models may need to be downloaded.

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 one concise, front-loaded sentence with no filler. It clearly communicates the main action and result, though the brevity comes at the cost of critical contextual details.

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

Completeness2/5

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

This is a complex tool with 18 parameters, no output schema, and no annotations, yet the description explains neither the output contract nor the significant side effects. An agent cannot confidently determine prerequisites, resource implications, or what 'persist an agent context' means in practice.

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

Parameters2/5

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

Schema description coverage is 0% and there are 18 parameters, so the description must compensate but does not. It only loosely maps to file_path and keyframe-related parameters, and it says nothing about model, server, response_format, out_dir, or the many other parameters an agent must configure correctly.

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 states a specific, multi-part purpose: transcribe a local video, capture synced keyframes, and persist an agent context. This goes beyond a vague verb and helps distinguish it from sibling tools like transcribe_video and transcribe_audio, though it does not explicitly name which sibling does what.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus transcribe_video, transcribe_audio, or transcribe_folder, and no exclusions or alternatives are mentioned. The phrase 'local video' implies one use case, but the agent is left to infer when the keyframe/context persistence capability should be selected.

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. 10 tool updatesv0.4.0
    • First observedcrispasr_backends
    • First observedcrispasr_detect_language
    • First observedcrispasr_download_models
    • First observedcrispasr_health
    • First observedcrispasr_list_models
    • First observedcrispasr_resolve_model_paths
    • First observedtranscribe_audio
    • First observedtranscribe_folder
    • First observedtranscribe_video
    • First observedunderstand_video

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation4/5

Most tools are clearly separated by domain: server health/backends, model management, language detection, and transcription tasks. The main ambiguity is between transcribe_video and understand_video, since both transcribe local video, and crispasr_backends vs crispasr_health both report server state.

Naming Consistency3/5

The set is readable and consistently snake_case, but conventions are mixed: crispasr_backends and crispasr_health are noun-style, crispasr_* management tools use verb_noun, transcribe_* forms its own group, and understand_video is a vague outlier.

Tool Count5/5

10 tools is well within the ideal range and each area of the domain—server health, backends, models, language detection, audio/video transcription, batch processing, and agent context—is represented. The size fits the server's scope without feeling bloated.

Completeness4/5

The core workflow is covered end-to-end: check the server, download models, resolve paths, detect language, and transcribe individual or batch media files. Minor gaps exist, such as no model removal tool and no explicit management/retrieval for the agent context persisted by understand_video.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers