MarkuprPlusBLOCK
Record your screen, narrate the bug, and hand your AI coding agent structured Markdown - one annotated screenshot per mark. Desktop app, CLI, and MCP server for Claude Code, Cursor, Codex, and Windsurf. On-device Whisper transcription, local-first, MIT.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
MarkuprPlus
You see it. You say it. Your AI fixes it.
A Windows and macOS desktop app, CLI, and MCP server for visual feedback. Record and annotate from your desktop, process recordings from the terminal, or give your AI agent screen capture tools.
Download for Windows or macOS · Use the CLI · Connect an MCP client · GitHub Action
▶ Watch the 33-second product tour
Pick a window. Talk through what's wrong. Circle it while it happens. Every circle becomes its own issue, with its own screenshot, ready to paste into your coding agent.
00791b0bebbaOBSERVED · 2026-10-07Connect
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. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add markuprplus -- npx -y [email protected]
Exposed tools (21)
17 read · 4 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
HTML | read | Standalone web page, no dependencies |
JSON | read | Machine-readable for integrations and APIs |
Markdown | read | AI-ready format for Claude, ChatGPT, and other assistants |
MarkuprPlus | read | Created from MarkuprPlus feedback session |
PDF | read | Beautiful document for sharing and printing |
analyze_screenshot | read | Returns the captured screen as image data with its MIME type so a vision-capable agent can inspect it directly. |
analyze_video | read | Returns a structured report path plus transcript, extracted-frame, and processing counts for an existing video file. |
capture_screenshot | read | Returns a saved PNG path, markdown image reference, and captured cursor/window context for the current screen. |
capture_with_voice | read | Returns a structured report path plus transcript, extracted-frame, and processing counts from a timed screen-and-voice capture. |
custom | read | A custom template |
describe_screen | read | Returns a structured visual description of a fresh screen capture or supplied image, including UI, text, layout, and notable issues. |
github-issue | read | GitHub-flavored Markdown optimized for issue bodies with task lists and collapsible details |
jira | read | Jira wiki markup with panels, tables, and {code} blocks |
json | read | Structured JSON output for programmatic consumption |
linear | read | Linear-compatible Markdown for issue descriptions |
markdown | read | Default Markdown format — AI-ready, llms.txt-inspired structured document |
push_to_github | write | Returns created GitHub issue URLs and numbers, or a dry-run preview, with one issue per report finding. |
push_to_linear | write | Returns created Linear issue identifiers and URLs, or a dry-run preview, with one issue per report finding. |
start_recording | write | Returns a session ID and recording status for a new long-form screen-and-voice session. |
stop_recording | write | Returns the completed report path plus transcript, frame, and processing counts for the active recording session. |
test | read | v1 |
Trust audit
BLOCKgrade F · trust 40/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (12 observation(s))
- Network
- declared (5 observation(s))
- Shell
- declared (5 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
sudo apt-get update -qq && sudo apt-get install -y -qq ffmpeg
sudo apt-get update -qq && sudo apt-get install -y -qq ffmpeg
- Access API keys directly?
icon.icns
installer-header.bmp
installer-sidebar.bmp
const child = spawn('/bin/launchctl', args, {'/usr/local/bin/codex',
'/usr/local/bin/claude',
const secret = 'sk-proj-abcdefghijklmnopqrstuvwxyz123456';
const apiKey = 'sk-proj-abcdefghijklmnopqrstuvwxyz1234567890';
system use found in code, not declared in the description
executable: '/usr/local/bin/codex',
executablePath: '/usr/local/bin/codex',
const result = await handlers.get(IPC_CHANNELS.OUTPUT_OPEN_FOLDER)!({}, '/etc/passwd');import type { FeedbackCategory, FeedbackSeverity } from '../../main/output/MarkdownGenerator';import { PUBLIC_BRAND_NAME, PUBLIC_WEBSITE_URL } from '../../shared/publicBrand';import type { FeedbackCategory, FeedbackSeverity } from '../../main/output/MarkdownGenerator';import { PUBLIC_BRAND_NAME } from '../../shared/publicBrand';import { PUBLIC_BRAND_NAME, PUBLIC_WEBSITE_URL } from '../../shared/publicBrand';- Ollama is fixed to `http://127.0.0.1:11434`; LM Studio is fixed to `http://127.0.0.1:1234`.
'http://127.0.0.1:11434/api/tags',
'http://127.0.0.1:1234/v1/models',
- Protocol version is `1`; the production endpoint is `http://127.0.0.1:49647`.
Probe only `http://127.0.0.1:11434`. Discover installed models from `GET /api/tags`; no arbitrary URL is accepted. The selected model is required. Where model metadata confirms vision support, the ada
Gates applied: no_behavioural_pass.
00791b0bebbafull audit observations/trust-audit/mcp-server/hashfunction__markuprplus.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-07 | 00791b0bebba | BLOCK | F | 40 | first audit |
Questions
What is the MarkuprPlus MCP server?
Record your screen, narrate the bug, and hand your AI coding agent structured Markdown - one annotated screenshot per mark. Desktop app, CLI, and MCP server for Claude Code, Cursor, Codex, and Windsurf. On-device Whisper transcription, local-first, MIT.
What tools does MarkuprPlus expose?
21 in total: 17 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is MarkuprPlus safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (40/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does MarkuprPlus need?
It reads ANTHROPIC_API_KEY, APPLE_APP_SPECIFIC_PASSWORD, CSC_KEYCHAIN, GITHUB_TOKEN, LINEAR_API_KEY, MARKUPRX_E2E_FAIL_HOTKEY_PERSISTENCE_AFTER_REGISTRATION, MARKUPRX_E2E_FAIL_SETTINGS_KEY, MARKUPRX_E2E_INITIALIZE_HOTKEYS and OPENAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does MarkuprPlus run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as markuprx-landing at 1.0.0.
How current is this page?
The grade is for one exact copy of the source (00791b0bebba), read on 2026-10-07. The repository is watched and re-audited when it changes.