A side-by-side look at the AdButler and ProductClank MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose AdButler for marketing work as a local process; choose ProductClank for marketing over a hosted endpoint. You can also run both side by side in one mcpServers block.
ADBUTLER_API_KEY.list_advertisers, get_advertiser, create_advertiser.search_products, create_product, check_balance.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Marketing | Marketing |
| Quality signal | 59/100 · Good | 60/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | ADBUTLER_API_KEY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 11 |
| Directory activity | 2 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 627 | 54 |
| Full listing | View AdButler | View ProductClank |
list_advertisersList all advertisers in your AdButler accountget_advertiserGet details of a specific advertiser by IDcreate_advertiserCreate a new advertiserupdate_advertiserUpdate an existing advertiserdelete_advertiserDelete an advertiserarchive_advertiserArchive an advertiser (soft-delete, can be restored later)list_archived_advertisersList all archived advertisersget_archived_advertiserGet details of a specific archived advertiserunarchive_advertiserRestore an archived advertiser back to active statuslist_all_campaignsList all campaigns across all typeslist_campaignsList all standard campaignsget_campaignGet details of a specific standard campaignsearch_productsSearch the user's ProductClank products by name and return their IDs. A product_id is required to create or boost a campaign — use this to resolve it, then confirm the match with the user.create_productList a new product on ProductClank as a token-free listing (no crypto/token, no wallet). At minimum pass a `url` — the server auto-fills the name, tagline, description, logo, and X handle from the site; any field you pass explicitly overrides what's extracted. Socials are optional. Use this when search_products finds no existing match and the user wants to run a boost or campaign for a product that isn't listed yet. Returns the new product's id (and reuses an existing listing if one already matches, rather than duplicating). FREE — no credits charged. Confirm the product details with the user before calling.check_balanceReturn the connected user's ProductClank credit balance and plan. Use before launching a campaign to confirm they have enough credits (a content campaign costs 1000; a reply or quote-post boost 200; likes/bookmarks/reposts 300; a discovery campaign 10 to create + 12/post discovered).credit_historyThe connected user's credit transactions (purchases, campaign spend, participation rewards), newest first. Free, read-only. Use to account for what this connector has spent or earned. Top-ups are NOT available in-connector — send the user to app.productclank.com/credits/purchase when the balance runs low.boost_postRally the ProductClank community to engage with a specific social post. Creates a boost campaign and spends the user's credits: 'replies' generates AI reply drafts and 'quote' generates AI-drafted QUOTE POSTS (a repost WITH each member's own text, shown above the quoted post in their followers' feeds, the highest-reach action) — both cost 20 credits per draft, 10 drafts (200 credits) by default; set `count` (1–10) for a smaller boost, e.g. 3 replies = 60 credits. 'likes' (30 likes), 'bookmarks' (10 bookmarks — saving a post on X lifts its visibility) and 'repost' (10 reposts) cost 300 and ignore `count`. Supports Twitter/X, Instagram, TikTok, LinkedIn, Reddit, Farcaster, and YouTube (replies + likes on YouTube; reposts only on X and Farcaster; quote posts and bookmarks only on X) — the platform is auto-detected from the URL. product_id is OPTIONAL: link a product (from search_products or create_product) to tailor replies with the product name, or omit it for a tweet-first boost that uses generic amplification language. A TikTok video under ~1 minute old has no caption yet: the boost is still created, drafts are generated once TikTok publishes the caption (usually within a few minutes), and credits are charged only then — the result says waiting_for_post_text. Pass post_text if you already know the caption to skip the wait. Delivery is immediate by default; to pace it (e.g. 'reply 3 times over the next 6 hours'), set spread_over_hours — one slot goes out now and the rest drip out 1–2 an hour so the last lands within that window, at the same price. On a TikTok / YouTube / Instagram Reel VIDEO, add watch_quiz for 'Watch & answer': viewers can also watch to the end and answer one counting question (a linked 24h watch quiz, billed 100 credits per correct answer on top of the boost price, up to max_answers — see create_watch_quiz). Confirm the action and its credit cost with the user before calling.create_watch_quizGet people to watch a video ALL the way through: viewers open it, wait its full length, then answer ONE counting question about it ('how many times does she say X?') that only a viewer can answer. A right answer earns ProductClank points; a wrong first answer gets one more try (watch again). Public, runs exactly 24 hours. Works on any video link (TikTok, YouTube, Instagram Reels, …). COST: nothing now — the user pays 100 credits per CORRECT answer (wrong answers are free) for 24 hours after this chat, for at most max_answers people (default 20 = 2,000 credits max). Needs 100 credits on hand. Before calling: get the questions AND answers from the user (or run suggest_quiz_questions and have them confirm), and confirm max_answers and the maximum spend. Note for the user: paid watch time may count as artificial engagement under the platform's rules. To add a quiz to a boost of the same video, use boost_post's watch_quiz instead.suggest_quiz_questionsAI watches a TikTok (frames + captions) and suggests counting questions with their answers and the evidence for each — high confidence only. Creates nothing. Costs 40 credits, charged only when questions come back. Show every question WITH its evidence to the user and pass only the ones they confirm to create_watch_quiz (or boost_post's watch_quiz). If it fails, nothing is charged — ask the user for questions instead.get_watch_quiz_resultsResults of one of the user's watch quizzes (made here, in the web app, or on a boost): state (live / paused / ended), how many people started, answered, got it right, ran out of tries, or used their second try, how each question did, and the credits billed so far. Free, read-only. A question most viewers miss is usually ambiguous — say so. 'paused' with credits left means the user paused it; otherwise the balance ran out.launch_tiktok_campaignOne call for a full TikTok push on ONE video: 30 community likes + up to 10 community replies (AI-drafted comments) + a 24h 'Watch & answer' quiz (viewers watch to the end and answer a counting question). Use it when the user asks for a 'full', 'full blown', 'complete' or 'combo' TikTok campaign, or for likes + replies + quiz together, instead of calling boost_post and create_watch_quiz one by one. Defaults: likes on, 10 replies, quiz for 10 correct answers. Price: likes 300 credits, replies 20 credits each (10 = 200), billed up front; the quiz bills 100 credits per CORRECT answer over 24h, up to quiz_answers (10 = up to 1,000). FLOW: (1) call WITHOUT confirmed to get the free plan and show the user the steps and credit totals; (2) after the user says yes, call again with confirmed: true. If quiz_questions are missing on the confirmed call, the tool suggests questions from the video (40 credits) and creates nothing yet: show the user each question with its evidence, let them fix the answers, then call a third time with quiz_questions and confirmed: true. Each campaign bills separately; on a partial failure the result lists what was created — never call again blindly, it would create duplicates.suggest_content_campaignPreview a content campaign for a product BEFORE launching it. FREE — nothing is created and no credits are charged. Returns an AI-drafted campaign (title, description, call-to-action) plus whether the user can afford to launch it (1000 credits). Show the user the draft AND the credit cost, get an explicit yes, then call create_content_campaign — never launch off the back of the preview alone. Requires a product_id from search_products; write the campaign_message brief from what you know about the product.create_content_campaignLaunch a content campaign: rally the ProductClank community to create content (posts, threads, videos) for a product. Spends 1000 credits. The platform's AI expands your brief into a full campaign and auto-activates it; community submissions and winner selection happen in the ProductClank web app. Requires a product_id from search_products. Preview with suggest_content_campaign and confirm the 1000-credit cost with the user before calling.get_content_campaign_resultsSee what a content campaign actually produced: how many people submitted, the LIVE links to the content they published, which submissions were approved or rejected, and any winners picked. Free and read-only — safe to poll. This is how you close the loop on create_content_campaign; without it you only know a campaign was paid for, not whether it worked. Right after launch expect state 'processing' (the AI brief is still generating) and zero submissions — that is normal, not a failure. Accepts the campaign UUID or its public campaign number.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"adbutler": {
"command": "npx",
"args": [
"-y",
"@adbutler/mcp-server"
],
"env": {
"ADBUTLER_API_KEY": "YOUR_ADBUTLER_API_KEY_HERE"
}
}
}
}
{
"mcpServers": {
"productclank": {
"url": "https://mcp.productclank.com/mcp"
}
}
}