{"_id":"adtest-mcp","name":"adtest-mcp","dist-tags":{"latest":"1.1.0"},"versions":{"1.1.0":{"name":"adtest-mcp","version":"1.1.0","description":"AI-only ad scoring for Claude: score image, video or text ads on 13 dimensions before you spend.","mcpName":"ai.adtest/adtest-mcp","type":"module","bin":{"adtest-mcp":"index.js"},"keywords":["mcp","model-context-protocol","claude","ad-testing","creative-testing","advertising","marketing","ai"],"homepage":"https://adtest.ai/","bugs":{"url":"https://github.com/menaker/adtest-mcp/issues"},"repository":{"type":"git","url":"git+https://github.com/menaker/adtest-mcp.git"},"author":{"name":"AdTest.AI","email":"support@adtest.ai","url":"https://adtest.ai"},"license":"MIT","engines":{"node":">=18"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"_id":"adtest-mcp@1.1.0","gitHead":"af4b3cbc9adc1f3ab420b7bb359fe6bcfa7770e0","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-WJOWxCQB1TqwhQKMT1OL/r9yxyahXMDwpzwXAIoi/s9gWQcxzP072ftzpcGvpmVcBRAvWtuI8ekoffvot5iT3w==","shasum":"682131cc545a24af1a8f9b27663fc731ee9b3a21","tarball":"https://registry.npmjs.org/adtest-mcp/-/adtest-mcp-1.1.0.tgz","fileCount":4,"unpackedSize":11311,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCijqlHy7X96sxWhh2Tu7nLo7e+fPiU0pOW7UyhUK3FHQIhAKnbNuz5fvXdsRF06mpxAKdvkVyZwzJe4lnzNb0WV49L"}]},"_npmUser":{"name":"adtestai","email":"mobopinions@gmail.com"},"directories":{},"maintainers":[{"name":"adtestai","email":"mobopinions@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adtest-mcp_1.1.0_1788298923321_0.07558022199500436"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-01T21:42:02.999Z","1.1.0":"2026-09-01T21:42:03.450Z","modified":"2026-09-01T21:42:03.698Z"},"maintainers":[{"name":"adtestai","email":"mobopinions@gmail.com"}],"description":"AI-only ad scoring for Claude: score image, video or text ads on 13 dimensions before you spend.","homepage":"https://adtest.ai/","keywords":["mcp","model-context-protocol","claude","ad-testing","creative-testing","advertising","marketing","ai"],"repository":{"type":"git","url":"git+https://github.com/menaker/adtest-mcp.git"},"author":{"name":"AdTest.AI","email":"support@adtest.ai","url":"https://adtest.ai"},"bugs":{"url":"https://github.com/menaker/adtest-mcp/issues"},"license":"MIT","readme":"# AdTest.AI MCP server\n\n[![npm](https://img.shields.io/npm/v/adtest-mcp)](https://www.npmjs.com/package/adtest-mcp) · Registry name: `ai.adtest/adtest-mcp` · License: MIT\n\nAdds a single **`analyze_advert`** tool to Claude (Desktop, Code, or any MCP client) that\nruns AdTest.AI's **AI-only** 13-dimension analysis of an advert — **image, video, or text** —\nand returns a detailed scoring report. (Human-panel validation is available in the\n[web app](https://app.adtest.ai) only, not through this server.)\n\nQuick add for Claude Code:\n\n```bash\nclaude mcp add adtest -e ADTEST_API_KEY=adk_your_key_here -- npx -y adtest-mcp\n```\n\n## Setup\n\n1. **Get an API key:** sign in at <https://app.adtest.ai> → the **Developer** (gear)\n   icon → **Generate key**. Make sure your wallet has funds — each successful\n   analysis costs **$1**.\n\n2. **Add the server to your Claude config** (Claude Desktop:\n   `claude_desktop_config.json`; Claude Code: `.mcp.json`):\n\n   ```json\n   {\n     \"mcpServers\": {\n       \"adtest\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"adtest-mcp\"],\n         \"env\": { \"ADTEST_API_KEY\": \"adk_your_key_here\" }\n       }\n     }\n   }\n   ```\n\n   Or run it from a local checkout (after `npm install` in this folder):\n\n   ```json\n   {\n     \"mcpServers\": {\n       \"adtest\": {\n         \"command\": \"node\",\n         \"args\": [\"/absolute/path/to/mcp-server/index.js\"],\n         \"env\": { \"ADTEST_API_KEY\": \"adk_your_key_here\" }\n       }\n     }\n   }\n   ```\n\n3. **Restart Claude**, then just ask:\n   - *“Analyze this advert: https://example.com/ad.jpg”*\n   - *“Analyze this ad video file: /Users/me/promo.mp4”*\n   - *“Score this ad copy: 50% off all shoes this weekend — shop now.”*\n\n## The tool\n\n`analyze_advert` — provide **one** of:\n\n| arg | meaning |\n|-----|---------|\n| `url` | public URL of an image or video advert (we download it) |\n| `file_path` | local image/video file to upload |\n| `text` | ad copy to analyze |\n| `brand_url` *(optional)* | advertiser website — improves brand/logo detection |\n\nReturns the AI analysis text plus the amount charged and your remaining balance.\n\n## How it works (async — so video works)\n\nThe server submits the job to `POST /developer/ai-analysis/jobs`, gets a\n`job_id` back immediately, then polls `GET /developer/ai-analysis/jobs/{job_id}`\nevery few seconds until it's `complete` or `failed`. This is why **video works**:\na single synchronous request would be cut off by the CDN edge timeout (~100s),\nbut video analysis can take several minutes. You're charged **once, on success**,\nwhen the job completes — a failed job is never billed.\n\n## Notes\n\n- Registered in the official MCP Registry as `ai.adtest/adtest-mcp`.\n\n- Auth is the `x-api-key` header, set from `ADTEST_API_KEY`.\n- Endpoint defaults to `https://app.adtest.ai/adtest-api`; override with\n  `ADTEST_API_BASE` for staging.\n- Poll ceiling defaults to 15 min; override with `ADTEST_POLL_TIMEOUT_MS`\n  (milliseconds) for very long video.\n- Rate limits: 30 submits/min and 2000/day per key (60/min per IP); polling is\n  generous (240/min) and handled for you.\n- Errors come back as readable text: `invalid_api_key`, `insufficient_funds`,\n  `no_creative`, `invalid_url`, `unsupported_media_type`, `too_many_requests`,\n  `analysis_failed` (the last is **not** charged).\n- Requires Node ≥ 18.\n\n## Links\n\n- Product: <https://adtest.ai>\n- App and API keys: <https://app.adtest.ai>\n- Issues: <https://github.com/menaker/adtest-mcp/issues>\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","readmeFilename":"README.md","_rev":"1-bc0589163b1b90cc53f8e88982bc2317"}