{
  "markdown": "<div align=\"center\">\n\n# 🎬 UploadCheck MCP\n\n### The quality gate between your AI and \"publish\".\n\n**Your agent can generate video. It can't tell you the audio cut out at 0:08, a frame froze at the stitch seam, or the captions are cropped. UploadCheck can — and hands back the exact timestamps to fix.**\n\n[![npm](https://img.shields.io/npm/v/@drantoniou/uploadcheck-mcp?color=2563eb)](https://www.npmjs.com/package/@drantoniou/uploadcheck-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-22c55e.svg)](./LICENSE)\n[![For: Claude Code · Cursor · Codex](https://img.shields.io/badge/for-Claude%20Code%20·%20Cursor%20·%20Codex-0d9488.svg)](#install)\n[![Free tier](https://img.shields.io/badge/free%20tier-200%20min%2Fmo-f97362.svg)](https://uploadcheck.app)\n\n</div>\n\n> **For anyone whose agent, pipeline, or editor produces media that ships to real people** — AI-video pipelines, Shorts/Reels, podcasts, client deliverables.\n\n---\n\n## The problem\n\nAn agent that writes code can run the tests. An agent that renders a video has no idea whether it's broken.\n\nSo the broken export ships: silence where narration should be, a frozen frame where two clips were stitched, lips out of sync, captions clipped by the platform UI, loudness well off target. Somebody notices in the comments.\n\n**UploadCheck is the check your agent calls before it publishes.** Point it at the finished file. It returns `PASS`, `WATCH`, or `BLOCK` with per-flag timestamps and machine-actionable fixes — so the agent repairs only the flagged span and re-checks, instead of guessing or shipping.\n\n## Install\n\n```bash\nnpx -y @drantoniou/uploadcheck-mcp\n```\n\n<details>\n<summary><b>Claude Code</b></summary>\n\n```bash\nclaude mcp add --env UPLOADCHECK_API_BASE_URL=https://api.uploadcheck.app \\\n  --env UPLOADCHECK_API_KEY=YOUR_KEY \\\n  --transport stdio --scope user uploadcheck -- npx -y @drantoniou/uploadcheck-mcp\n```\n</details>\n\n<details>\n<summary><b>Cursor / Claude Desktop</b> (<code>mcp.json</code>)</summary>\n\n```json\n{\n  \"mcpServers\": {\n    \"uploadcheck\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@drantoniou/uploadcheck-mcp\"],\n      \"env\": {\n        \"UPLOADCHECK_API_BASE_URL\": \"https://api.uploadcheck.app\",\n        \"UPLOADCHECK_API_KEY\": \"YOUR_KEY\"\n      }\n    }\n  }\n}\n```\n</details>\n\n<details>\n<summary><b>Codex</b></summary>\n\n```bash\ncodex mcp add uploadcheck \\\n  --env UPLOADCHECK_API_BASE_URL=https://api.uploadcheck.app \\\n  --env UPLOADCHECK_API_KEY=YOUR_KEY \\\n  -- npx -y @drantoniou/uploadcheck-mcp\n```\n</details>\n\nGet a free key at **[uploadcheck.app](https://uploadcheck.app)** — 40+ gates, 200 checked minutes/month, no card.\nMachine-readable install snippets for every client live in [`mcp-install.json`](./mcp-install.json).\n\n> **Keep your key private.** It's a secret bearer token tied to your plan minutes. Put it in your personal MCP config — never in a committed file, a shared prompt, or a report.\n\n## Use it\n\nOnce installed, just ask:\n\n```text\ncheck ./final-cut.mp4 before I upload\n```\n\nThe agent calls `qc_run_local_file`, polls `qc_get_job`, then reads `qc_get_report` and shows you the flags with timestamps.\n\n## What it checks\n\n**40+ automated gates run on every check**, including:\n\n| | |\n|---|---|\n| **Picture** | frozen/looped frames, black frames, canvas fit & pillarboxing, temporal warping, flicker, interlace combing |\n| **Audio** | dead air, clipping, loudness (LUFS) & true peak, loudness range, channel balance, mains hum, dropouts |\n| **Sync & text** | lip/audio drift, caption safe-area, text contrast, cropped or overlapping text |\n| **Delivery** | resolution/codec/frame-rate spec, Shorts/Reels format |\n\nPaid plans add AI \"oracle\" gates — garbled speech, duplicated faces in AI crowds, narration match.\n\n*What it doesn't do: it doesn't tell you whether a clip was AI-generated. It assumes it might be, and checks whether it's clean enough to publish.*\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `qc_estimate_cost` | Estimate checked minutes and effective gates before running |\n| `qc_run_local_file` | Check a local export (reads the file, sends it to the hosted API) |\n| `qc_run_video` | Check a YouTube URL, signed URL, upload id, or base64 payload |\n| `qc_get_job` | Poll status, progress, verdict, metered minutes |\n| `qc_get_report` | The finished report: verdict + timestamped flags + evidence |\n| `qc_get_events` | Lifecycle events, so the agent can explain what ran |\n| `qc_get_artifacts` | List generated report artifacts |\n| `qc_get_marker_csv` | Editor marker CSV (drop flags straight into your NLE timeline) |\n| `qc_create_upload_url` | Signed upload URL for larger files |\n\nPass `idempotency_key` to `qc_run_video` when an agent might retry the same asset — the API returns the existing job instead of duplicating the run.\n\nUse `profile` when you know the media type but don't want to hand-pick gates: `auto`, `shorts`, `audio`, `thumbnail`, `generic_creator_video`, and named delivery targets like `youtube_shorts`, `podcast_delivery`, `broadcast_r128`, `ai_render_gate`. Explicit `checks` always win.\n\n## Environment\n\n```bash\nexport UPLOADCHECK_API_BASE_URL=\"https://api.uploadcheck.app\"\nexport UPLOADCHECK_API_KEY=\"<workspace_api_key>\"\n```\n\nThis package is a thin MCP client over the hosted UploadCheck API — checks run server-side, not on your machine. Small and medium local files can be sent inline (base64) without durable storage; use signed upload URLs for large ones.\n\n## Links\n\n- **Website & free key** — [uploadcheck.app](https://uploadcheck.app)\n- **Docs (API + MCP + full gate reference)** — [uploadcheck.app/docs](https://uploadcheck.app/docs/)\n- **Signed PASS/BLOCK receipts** — [uploadcheck.app/docs/receipts](https://uploadcheck.app/docs/receipts/)\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n",
  "bytes": 5756,
  "sha": "7137749a0da83967eb4bf561e0c27a3dd325b20ec6cf4ee2cc0a9bb9c93e28b3",
  "repo_slug": "ajantoniou/uploadcheck-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_app_uploadcheck_uploadcheck_03abf547/readme"
}