Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
Record your screen, narrate feedback, get structured Markdown with screenshots. Desktop app, CLI, and MCP server for AI coding agents like Claude Code, Cursor, and Windsurf. <p align="center"> <img src="src/renderer/assets/logo.svg" alt="markupR" width="80" height="80"> </p> <h1 align="center">markupR</h1> <p align="center"> <strong>Record your screen. Say what's wrong. Your AI agent fixes it.</strong> </p> <p align="center"> <a href="https://www.npmjs.com/package/markupr"><img src="https://img.shields.io/npm/v/markupr?style=flat-square" alt="npm version"></a> <a href="https://www.npmjs. Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 2/25/2026.
Freshness
Last checked 2/25/2026
Best For
markupr is best for mcp, mcp-server, model-context-protocol workflows where MCP compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB MCP, runtime-metrics, public facts pack
Record your screen, narrate feedback, get structured Markdown with screenshots. Desktop app, CLI, and MCP server for AI coding agents like Claude Code, Cursor, and Windsurf. <p align="center"> <img src="src/renderer/assets/logo.svg" alt="markupR" width="80" height="80"> </p> <h1 align="center">markupR</h1> <p align="center"> <strong>Record your screen. Say what's wrong. Your AI agent fixes it.</strong> </p> <p align="center"> <a href="https://www.npmjs.com/package/markupr"><img src="https://img.shields.io/npm/v/markupr?style=flat-square" alt="npm version"></a> <a href="https://www.npmjs.
Public facts
4
Change events
0
Artifacts
0
Freshness
Feb 25, 2026
Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 2/25/2026.
Trust score
Unknown
Compatibility
MCP
Freshness
Feb 25, 2026
Vendor
Markupr
Artifacts
0
Benchmarks
0
Last release
2.6.8
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 2/25/2026.
Setup snapshot
git clone https://github.com/eddiesanjuan/markupr.gitSetup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Markupr
Protocol compatibility
MCP
Adoption signal
1 GitHub stars
Handshake status
UNKNOWN
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
text
Cmd+Shift+F --> talk --> Cmd+Shift+F --> Cmd+V into your agent
bash
npx --package markupr markupr-mcp
bash
npx markupr analyze ./recording.mov
markdown
# Feedback Session -- Feb 5, 2026 ## FB-001: Button sizing issue The submit button is way too small on mobile. I'm trying to tap it and keep hitting the cancel link underneath. Needs more vertical padding, maybe 12px minimum tap target.  ## FB-002: Loading state feels janky After the spinner disappears, the content pops in with no transition. There's a visible layout shift -- the sidebar jumps left by about 20 pixels. 
json
{
"mcpServers": {
"markupR": {
"command": "npx",
"args": ["--yes", "--package", "markupr", "markupr-mcp"]
}
}
}text
You: "The sidebar is overlapping the main content on mobile. Can you see it?"
Agent: [calls capture_screenshot]
"I can see the issue -- the sidebar has position: fixed but no z-index,
and it's 280px wide with no responsive breakpoint. Let me fix the CSS..."
[fixes the code]Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB MCP
Editorial quality
ready
Record your screen, narrate feedback, get structured Markdown with screenshots. Desktop app, CLI, and MCP server for AI coding agents like Claude Code, Cursor, and Windsurf. <p align="center"> <img src="src/renderer/assets/logo.svg" alt="markupR" width="80" height="80"> </p> <h1 align="center">markupR</h1> <p align="center"> <strong>Record your screen. Say what's wrong. Your AI agent fixes it.</strong> </p> <p align="center"> <a href="https://www.npmjs.com/package/markupr"><img src="https://img.shields.io/npm/v/markupr?style=flat-square" alt="npm version"></a> <a href="https://www.npmjs.
Desktop app workflow is the default: record + narrate + stop, then ship context-rich markdown (frames + cursor/window/focus hints when available) directly to your agent.
AI coding agents can't see your screen. When you find a bug, you context-switch into writing mode -- describing the layout issue in text, manually screenshotting, cropping, and dragging images into the right spot. You speak at 150 words per minute but type at 60. The context is lost in translation.
markupR is a desktop capture app first. You hit a hotkey, narrate what you see, and stop. Then it runs a post-session pipeline that aligns transcript timestamps with the recording, extracts the right frames, and outputs structured Markdown your agent can execute against immediately.
Cmd+Shift+F --> talk --> Cmd+Shift+F --> Cmd+V into your agent
Download from markupr.com or GitHub Releases.
macOS install note: Apple notarization is currently rolling out. If macOS warns on first launch, use Right-click -> Open once to trust the app. If needed, run:
xattr -dr com.apple.quarantine /Applications/markupR.app
Cmd+Shift+F (macOS) or Ctrl+Shift+F (Windows) to startnpx --package markupr markupr-mcp
npx markupr analyze ./recording.mov
Use this when you already have a video file. The desktop app remains the primary capture workflow.
Every important frame can carry extra machine-usable context, not just pixels.
manual, pause, or voice-command)This makes the report a high-signal liaison between you and your agent: what you said, what you saw, and where your attention was.
Local-first. Whisper runs on your device. Your recordings, transcripts, and screenshots never leave your machine. No cloud dependency, no account required.
AI-native output. The Markdown output is structured for LLM consumption -- headings, categories, severity levels, inline screenshots, and capture-context hints. Not a raw transcript with random images.
Works everywhere. Desktop app for daily flow. CLI for scripts and CI/CD. MCP server for agent integration. GitHub Action for PR feedback. Same pipeline, four interfaces.
Open source. MIT licensed. No telemetry, no tracking, no analytics. Read the source, fork it, ship it.
# Feedback Session -- Feb 5, 2026
## FB-001: Button sizing issue
The submit button is way too small on mobile. I'm trying to tap it
and keep hitting the cancel link underneath. Needs more vertical
padding, maybe 12px minimum tap target.

## FB-002: Loading state feels janky
After the spinner disappears, the content pops in with no transition.
There's a visible layout shift -- the sidebar jumps left by about
20 pixels.

Each screenshot is extracted from the exact video frame matching your narration timestamp, with context hints attached when available. See full examples in examples/.
Give your AI coding agent eyes and ears. Add markupR as an MCP server and it can capture screenshots, record your screen with voice, and receive structured reports -- all mid-conversation.
Claude Code (~/.claude/settings.json):
{
"mcpServers": {
"markupR": {
"command": "npx",
"args": ["--yes", "--package", "markupr", "markupr-mcp"]
}
}
}
Cursor / Windsurf -- same config in your MCP settings.
| Tool | Description |
|------|-------------|
| capture_screenshot | Grab the current screen and attach context metadata (cursor + active app/window + focus hints when available). |
| capture_with_voice | Record screen + mic for a set duration. Returns a structured report. |
| analyze_video | Process any existing .mov or .mp4 into Markdown with extracted frames (fallback path for externally captured recordings). |
| analyze_screenshot | Run a screenshot through the AI analysis pipeline. |
| start_recording | Begin an interactive recording session. |
| stop_recording | End the session and run the full pipeline. |
You: "The sidebar is overlapping the main content on mobile. Can you see it?"
Agent: [calls capture_screenshot]
"I can see the issue -- the sidebar has position: fixed but no z-index,
and it's 280px wide with no responsive breakpoint. Let me fix the CSS..."
[fixes the code]
No copy-pasting screenshots. No rewriting what you already know. The agent gets structured report context and acts.
Full MCP documentation: README-MCP.md
# Run without installing
npx markupr analyze ./recording.mov
# Or install globally
npm install -g markupr
markupr analyze <video> -- Process an existing screen recording into structured Markdown.
markupr analyze ./bug-demo.mov
markupr analyze ./recording.mov --output ./reports
markupr analyze ./recording.mov --template github-issue
markupr analyze ./recording.mov --no-frames # transcript only
markupr watch [directory] -- Watch for new recordings and auto-process them.
markupr watch ~/Desktop --output ./reports
markupr push github <report> -- Create GitHub issues from a feedback report.
markupr push github ./report.md --repo myorg/myapp
markupr push github ./report.md --repo myorg/myapp --dry-run
markupr push linear <report> -- Create Linear issues from a feedback report.
markupr push linear ./report.md --team ENG
markdown (default) | json | github-issue | linear | jira | html
brew install ffmpeg / apt install ffmpeg / choco install ffmpeg)Run markupR in CI to get visual feedback on pull requests:
- uses: eddiesanjuan/markupr-action@v1
with:
video-path: ./recordings/
github-token: ${{ secrets.GITHUB_TOKEN }}
Cmd+Shift+F (macOS) or Ctrl+Shift+F (Windows) +-----------+
Screen + Voice -> | Whisper | -> Timestamped transcript
+-----------+
|
+-----------+
| Analyzer | -> Key moments identified
+-----------+
|
+-----------+
| ffmpeg | -> Frames extracted at exact timestamps
+-----------+
|
+-----------+
| Generator | -> Structured Markdown with inline screenshots
+-----------+
The pipeline degrades gracefully. No ffmpeg? Transcript-only output. No Whisper model? Timer-based screenshots. No API keys? Everything runs locally.
Desktop app capture remains the default path. CLI/MCP analyze_video remains available when you need to process an existing recording.
For architecture details, see CLAUDE.md.
git clone https://github.com/eddiesanjuan/markupr.git
cd markupR
npm install
npm run dev
| Command | Description |
|---------|-------------|
| npm run dev | Development mode with hot reload |
| npm run build | Build everything (desktop + CLI + MCP) |
| npm test | Run all tests |
| npm run lint | Lint |
| npm run typecheck | Type check |
git checkout -b feature/your-featurenpm test && npm run lint && npm run typecheckSee CONTRIBUTING.md for full guidelines.
MIT -- see LICENSE.
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
80
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
74
Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Rank
72
An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"MCP"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_MCP",
"generatedAt": "2026-04-17T06:15:03.127Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "MCP",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "mcp",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "mcp-server",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "model-context-protocol",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "screen-recording",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "screenshot",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "developer-tools",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "ai-agent",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "claude-code",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "cursor",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "windsurf",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "ai-coding",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "feedback",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "visual-feedback",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "bug-reporting",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "bug-report",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "markdown",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "transcription",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "whisper",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "voice",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "voice-recording",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "code-review",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "developer-experience",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "devtools",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "cli",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "electron",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "menu-bar",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "macos",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "windows",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "markupr",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "github-action",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:MCP|unknown|profile capability:mcp|supported|profile capability:mcp-server|supported|profile capability:model-context-protocol|supported|profile capability:screen-recording|supported|profile capability:screenshot|supported|profile capability:developer-tools|supported|profile capability:ai-agent|supported|profile capability:claude-code|supported|profile capability:cursor|supported|profile capability:windsurf|supported|profile capability:ai-coding|supported|profile capability:feedback|supported|profile capability:visual-feedback|supported|profile capability:bug-reporting|supported|profile capability:bug-report|supported|profile capability:markdown|supported|profile capability:transcription|supported|profile capability:whisper|supported|profile capability:voice|supported|profile capability:voice-recording|supported|profile capability:code-review|supported|profile capability:developer-experience|supported|profile capability:devtools|supported|profile capability:cli|supported|profile capability:electron|supported|profile capability:menu-bar|supported|profile capability:macos|supported|profile capability:windows|supported|profile capability:markupr|supported|profile capability:github-action|supported|profile"
}Facts JSON
[
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Markupr",
"href": "https://markupr.com",
"sourceUrl": "https://markupr.com",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-25T03:23:16.932Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "MCP",
"href": "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-25T03:23:16.932Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1 GitHub stars",
"href": "https://github.com/eddiesanjuan/markupr",
"sourceUrl": "https://github.com/eddiesanjuan/markupr",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-25T03:23:16.932Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-eddiesanjuan-markupr/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[]
Sponsored
Ads related to markupr and adjacent AI workflows.