korovin-aa97-talkthroughSAFE
Recordings in. Agent-ready evidence out. Local-first MCP for transcripts, keyframes, OCR, speakers, and wall-clock evidence.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/korovin-aa97/talkthrough-mcp/actions/workflows/ci.yml) [](LICENSE) [](pyproject.toml) [](https://pypi.org/project/talkthrough-mcp/)
Quickstart · Tools · Benchmarks · FAQ · Troubleshooting · Changelog · Contributing
Don't write a bug report. Record it.
Give Claude Code or Codex a narrated .mov/.mp4 — or a public video link — and talkthrough turns it into searchable transcript, exact frames, OCR and wall-clock timestamps, locally — so your agent writes an evidence-backed issue draft or investigates the fix.
Also works for meetings, workshops, product demos, and production incidents.
Illustration — an animation of the `/talkthrough:bug` storyline, not a screen capture: the recording is indexed locally (transcript · keyframes · OCR · wall-clock), the evidence checkpoint is assembled, and the draft is ready to file with your own tracker tooling (`gh`, Jira, a GitHub MCP server — talkthrough itself never leaves your machine and never posts anything).
Real runs, no animation:
- [▶ Watch the demo with sound (1:18)](https://youtu.be/nHfGfEiVdE8) — an
unedited session: a narrated recording goes in, a ready-to-file bug-report.md comes out.
- Silent recording → issue draft —
the whole thing as files you can re-run: a Playwright-recorded, audio-free
b3c731f6ee1fOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add talkthrough-mcp -- uvx talkthrough-mcp==0.4.2
Exposed tools (9)
8 read · 1 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
extract_frame | read | manifest = _load(job_id) |
get_frames | read | manifest = _load(job_id) |
get_moment | read | if end_ms < start_ms: |
get_transcript | read | manifest = _load(job_id) |
label_speakers | write | Persist a validated speaker-name patch under the existing job lock. |
list_jobs | read | manifests = jobs.list_jobs() |
process_media | read | result = await _run_with_progress( |
process_url | read | # The initial message names the network step honestly and never echoes |
search | read | manifest = _load(job_id) |
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (19)
meeting-demo.m4a
meeting-interrupt.m4a
meeting-two-voices.m4a
multilang-ru-demo.m4a
"\nAgent-followable install steps for any client: [`llms-install.md`](../../llms-install.md).\n"
"[`llms-install.md`](../../llms-install.md)."
("https://169.254.169.254/latest/meta-data", UnsafeUrlError, "private, loopback"),"127.0.0.1", "10.1.2.3", "172.16.5.5", "192.168.1.1", "169.254.169.254",
("GET", f"https://203.0.113.10/clip.mp4?{CANARY}", "HTTP/1.1 200 OK"),("https://127.0.0.1/clip.mp4", UnsafeUrlError, "private, loopback"),("https://10.0.0.5/clip.mp4", UnsafeUrlError, "private, loopback"),("https://169.254.169.254/latest/meta-data", UnsafeUrlError, "private, loopback"),("https://100.64.0.1/clip.mp4", UnsafeUrlError, "private, loopback"),decoded = json.loads(base64.b64decode(urllib.parse.unquote(cursor.group(1))))
decoded_lm = json.loads(base64.b64decode(urllib.parse.unquote(lm_studio.group(1))))
"Vera Smith\nVERA-SMITH\nИрина Петрова\n张伟\n12345\n" # noqa: RUF001
assets/demo.gif
`curl -LsSf https://astral.sh/uv/install.sh | sh`).
`curl -LsSf https://astral.sh/uv/install.sh | sh`
Gates applied: no_behavioural_pass.
b3c731f6ee1ffull audit observations/trust-audit/mcp-server/korovin-aa97__talkthrough-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | b3c731f6ee1f | SAFE | B | 89 | first audit |
Questions
What is the korovin-aa97-talkthrough MCP server?
Recordings in. Agent-ready evidence out. Local-first MCP for transcripts, keyframes, OCR, speakers, and wall-clock evidence.
What tools does korovin-aa97-talkthrough expose?
9 in total: 8 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is korovin-aa97-talkthrough safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does korovin-aa97-talkthrough need?
No credential environment variables were found in its source, so it appears to need none.
How does korovin-aa97-talkthrough run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as talkthrough-mcp.
How current is this page?
The grade is for one exact copy of the source (b3c731f6ee1f), read on 2026-10-11. The repository is watched and re-audited when it changes.