Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ProductClank

REMOTE · MCP.PRODUCTCLANK.COM · SCANNED SEP 20

Boost posts and launch community growth campaigns from your AI assistant. OAuth, credit-billed.

+2 this week 91 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security89
Transport & Reachability100
Schema Quality & AI Usability79
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7875 tokens (~196/item across 40 items; 39 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 79% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 40 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the ProductClank MCP server?

ProductClank is a hosted endpoint at https://mcp.productclank.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.productclank.com

# add to Claude Code
claude mcp add --transport http com-productclank-productclank 'https://mcp.productclank.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-productclank-productclank": {
      "url": "https://mcp.productclank.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-productclank-productclank": {
      "type": "http",
      "url": "https://mcp.productclank.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-productclank-productclank]
url = "https://mcp.productclank.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-productclank-productclank": {
      "type": "remote",
      "url": "https://mcp.productclank.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-productclank-productclank --url 'https://mcp.productclank.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-productclank-productclank:
    url: "https://mcp.productclank.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-productclank-productclank": {
      "Transport": "http",
      "Url": "https://mcp.productclank.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-productclank-productclank -t streamable-http -u 'https://mcp.productclank.com/mcp'
// mcp.json
{
  "mcpServers": {
    "com-productclank-productclank": {
      "type": "http",
      "url": "https://mcp.productclank.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 0
    • Destructive annotations: pass → 100 functional
    • New tool “edit_reply” functional
    • New tool “publish_posts” functional
    • “create_campaign” added an optional parameter “post_visibility” cosmetic
    • “update_campaign” added an optional parameter “post_visibility” cosmetic
  • 18 Sept 26 0
    • Stability: 0.97 → pass security
  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 0
    • New tool “get_content_campaign_results” functional
  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 −4
    • Tool “boost_post” rewrote its description, which is the text the model reads security
    • Tool “check_balance” rewrote its description, which is the text the model reads security
    • Tool “find_opportunities” rewrote its description, which is the text the model reads security
    • Tool “submit_participation” rewrote its description, which is the text the model reads security
    • Stability: pass → 0.70 functional
    • Server version: 0.9.0 → 0.9.1 functional
    • “boost_post” reworded the description of “action_type” cosmetic
    • “boost_post” reworded the description of “reply_guidelines” cosmetic
    • “submit_participation” reworded the description of “reply_url” cosmetic
    • Tool “submit_participation” changed its title: Submit a posted reply to earn → Submit a posted reply or quote post to earn cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://mcp.productclank.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.productclank.com CN=YR1,O=Let's Encrypt,C=US 7 Sept 2026 6 Dec 2026 RSA 2048 SHA256-RSA 63d613a1ca95f3c7454ef6c3e689b78e053
SANs: mcp.productclank.com
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.productclank.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
productclank.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer error="invalid_token", error_description="Missing Authorization header", resource_metadata="https://mcp.productclank.com/.well-known/oauth-protected-resource"

Bearer error="invalid_token", error_description="Missing Authorization header", resource_metadata="https://mcp.productclank.com/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://mcp.productclank.com/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.productclank.com/mcp
Authorisation server https://mcp.productclank.com

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.productclank.com/mcp Verified 200
http (plaintext) http://mcp.productclank.com/mcp HTTPS enforced 301 https://mcp.productclank.com/mcp
MCP tools · 39 exposed · ~7,846 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_delegate ~88

Add a ProductClank user as a delegate on a campaign so they can view and manage it from the webapp's My Campaigns page. Free. Useful to hand oversight of an agent-created campaign to its human owner (the connected user's own id works too).

NameTypeReqDescription
campaign_idstringyes
user_idstringyesProductClank User id to grant webapp access to

No output schema declared.

No examples provided.

boost_post ~325

Rally the ProductClank community to engage with a specific social post. Creates a boost campaign and spends the user's credits: 'replies' generates 10 AI reply drafts (200 credits); 'quote' generates 10 AI-drafted QUOTE POSTS (200 credits) — a repost WITH each member's own text, shown above the quoted post in their followers' feeds, the highest-reach action; 'likes' (30 likes) and 'repost' (10 reposts) cost 300. Supports Twitter/X, Instagram, TikTok, LinkedIn, Reddit, Farcaster, and YouTube (replies + likes on YouTube; reposts only on X and Farcaster; quote posts 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. Confirm the action and its credit cost with the user before calling.

NameTypeReqDescription
action_typestringHow the community engages. Default: replies. Reposts are Twitter/Farcaster only; quote posts (repost with the member's own drafted text) are X only.
post_urlstringyesFull URL of the post to boost (any supported platform)
product_idstringOptional product UUID (from search_products or create_product). Omit for a tweet-first boost.
reply_guidelinesstringOptional guidance for the tone and content of community replies or quote posts

No output schema declared.

No examples provided.

check_balance ~68

Return 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/reposts 300; a discovery campaign 10 to create + 12/post discovered).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

create_campaign ~1,004

Create a Communiply discovery campaign: it continuously finds relevant social posts (by keyword) and drafts replies that mention the product. BEFORE calling: the keywords and search_context are YOURS to derive, and deriving them well is most of the campaign's quality — actually fetch and read the product's website (and any docs or pages the user pointed at), work out who the audience is and the phrases they use when they have the problem the product solves, and build keywords + search_context from that. Do it in this conversation, for free — it is not billed, and you can iterate with the user before anything is spent. If you cannot browse the web from this client, SAY SO to the user and build from what they tell you instead — never silently guess from the product's name alone. Credits pay only for what you cannot do here: scraping the platforms, real community members posting, and proof verification. Costs 10 credits to create; discovering posts is billed separately via generate_posts (12 credits/post). Needs a product_id (search_products / create_product). Two ways to run it, and the user picks: PRIVATE (the default here) keeps drafts in their workbench to review and post themselves — reversible, no further cost; PUBLIC puts the drafts in the ProductClank earn feed so community members post them from their own accounts — that is the reach the platform exists for, and each network-posted reply bills the user extra credits. Default to private when the user has not said, and relay the decision_offer in the result so they can choose. Pick the `platform` the product's audience actually talks on — X (default), LinkedIn, Reddit or YouTube — and for Reddit/YouTube narrow it with target_subreddits / target_youtube_channels. Topic research auto-runs in the background at create (~30s); read it with get_research before spending on generate_posts. Confirm the credit cost with the user before calling.

NameTypeReqDescription
keywordsarrayyesSearch keywords/phrases to discover posts with (3–8 focused phrases work best). Derive these from the product's actual site and audience — the words people use when they HAVE the problem ('CI is so s…
mention_accountsarrayX handles to mention naturally in replies (e.g. the product's account)
platformstringWhich network to work: twitter (default), linkedin, reddit, youtube. This is WHERE discovery looks — distinct from `sources` in update_campaign, which is HOW it looks there. Pick from where the produ…
post_visibilitystringVisibility of each discovered post, independent of the campaign. 'public' campaign + 'private' posts = HELD mode: drafts are found and written but nobody can claim them until publish_posts releases t…
product_idstringyesProduct UUID (from search_products or create_product)
reply_guidelinesstringCustom guidelines for reply drafting (defaults are built from the campaign context)
reply_lengthstring
reply_style_tagsarrayTone tags for drafted replies, e.g. ['helpful', 'builder-to-builder']
search_contextstringyesOne or two sentences on what conversations to find and why the product is relevant to them. Write it from having actually read the product's site and this conversation — who the audience is, what pai…
target_subredditsarrayReddit only, and enforced server-side: sending this on a non-Reddit campaign is REJECTED with an error, never silently ignored. Subreddits to rotate through, with or without the 'r/' prefix. Omit to…
target_youtube_channelsarrayYouTube only, and enforced server-side: sending this on a non-YouTube campaign is REJECTED with an error, never silently ignored. Channel handles, ids or URLs to pull recent videos from, alongside th…
titlestringyesCampaign title, e.g. 'Grow Acme — AI devtools conversations'
visibilitystringWho posts the drafted replies. private (default) = they wait in the user's workbench for the user to post; public = the community earn feed distributes them and network members post them, billing the…

No output schema declared.

No examples provided.

create_content_campaign ~239

Launch 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.

NameTypeReqDescription
additional_guidelinesstringExtra do's/don'ts for creators
campaign_goalsarrayCampaign goals, e.g. ["awareness", "signups"]
campaign_messagestringyesThe core brief: what you want the community to create (e.g. 'Share how you use <product> in your daily workflow').
preferred_platformstringPreferred platform, e.g. "x" or "farcaster"
product_idstringyesProduct UUID from search_products
referencesstringLinks or references to include in the campaign
target_audiencestringWho the campaign should reach

No output schema declared.

No examples provided.

create_product ~284

List 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.

NameTypeReqDescription
categoryarrayCategory tags (optional).
descriptionstringShort description of what the product does (optional).
logostringLogo image URL (optional; otherwise auto-resolved from the site).
namestringProduct name. Optional if `url` is given (extracted from the site); required otherwise.
taglinestringOne-line value proposition (optional; overrides extracted).
twitterstringX/Twitter handle or profile URL (optional).
urlstringProduct website URL — auto-fills the listing. Provide this or `name`.
websitestringCanonical website, if different from `url` (optional).

No output schema declared.

No examples provided.

credit_history ~88

The 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.

NameTypeReqDescription
limitintegerDefault 20
offsetinteger

No output schema declared.

No examples provided.

edit_reply ~121

Rewrite the text of ONE reply draft before the community posts it. Free. Use it when the user wants different wording on a specific draft from get_posts — the edit lands on the exact reply a creator will claim, so it is what gets posted. Refuses a reply a creator has already claimed (already_claimed): edit before you publish. 280 characters on X, 2000 elsewhere.

NameTypeReqDescription
campaign_idstringyes
reply_idstringyesReply id from get_posts
reply_textstringyesThe full replacement text

No output schema declared.

No examples provided.

find_open_campaigns ~115

Discover content and take-action campaigns the connected user can join and earn from: every active public campaign plus campaigns from communities the user belongs to. Each item has a kind — 'content' (create a post/thread/video about the product) or 'take_action' (do a concrete action like voting or starring, with URL/description proof). Free, read-only. Follow with get_campaign_brief before doing any work.

NameTypeReqDescription
kindstringFilter by campaign kind
limitintegerDefault 25

No output schema declared.

No examples provided.

find_opportunities ~226

Browse unclaimed drafts from active campaigns the connected user can earn from: each item is a real social post plus a pre-drafted text, with the `platform` it lives on (X, Reddit, YouTube, LinkedIn) and an `actionType` — `reply` (post it as a reply under the target post) or `quote` (X only: post it as a QUOTE of the target post, the text above the quoted post, from the user's own account). Free, read-only. Flow: pick an opportunity → the user posts it (verbatim or personalized) from their own account → call submit_participation with the URL of what they posted. The user needs that platform's handle linked on their ProductClank profile for the reward to be attributable. Likes and reposts are proved with a screenshot and stay in the web app (app.productclank.com/communiply/feed).

NameTypeReqDescription
campaign_idstringRestrict to one campaign
limitintegerDefault 25
offsetinteger

No output schema declared.

No examples provided.

generate_posts ~99

Run the campaign's discovery pipeline: scrapes social platforms for posts matching the keywords and drafts a community reply for each. Costs 12 credits PER POST discovered (a typical run finds 5–20 posts, so 60–240 credits) and can take a few minutes. Check check_balance first and confirm the spend with the user. Then use get_posts to read results and review_posts to prune irrelevant ones.

NameTypeReqDescription
campaign_idstringyes

No output schema declared.

No examples provided.

get_campaign ~66

Get one campaign's configuration (keywords, search context, reply settings) plus live stats: posts discovered, replies by status. Free. Use to check progress after generate_posts or before adjusting the campaign.

NameTypeReqDescription
campaign_idstringyesCampaign UUID (from list_campaigns or create_campaign)

No output schema declared.

No examples provided.

get_campaign_activity ~164

Catch up on a campaign since the last check: posts discovered, replies claimed by community members, LIVE links to what they actually posted, and the engagement those replies drew. Free, and it never scrapes — safe to call at the start of every session. Pass `since` (the `checked_at` from the previous call) to get only what is new; omit it for the last 24 hours. Use this to resume a standing growth operation across chats, then get_campaign_results for the cumulative picture.

NameTypeReqDescription
campaign_idstringyes
limitintegerItems per list, default 20
sincestringISO 8601 timestamp — the `checked_at` returned by the previous call. Default: 24 hours ago.

No output schema declared.

No examples provided.

get_campaign_brief ~117

The full brief for one campaign: what to create or do (action message, brief sections, content types), how submissions are judged (eligibility + selection criteria), rewards, deadline, and how many submissions the user has left. Free, read-only. If the brief links external instructions (e.g. a skill file), fetch and follow them. Then: create the content or take the action WITH the user, and call submit_campaign_work with the proof.

NameTypeReqDescription
campaign_idstringyesCampaign id from find_open_campaigns

No output schema declared.

No examples provided.

get_campaign_results ~108

The cumulative scorecard for a campaign: the funnel (posts discovered → kept → replies drafted → claimed → posted → approved), the approval rate, whether posted replies survived on-platform, the engagement they drew, total credits spent broken down by operation, and the cost per usable reply. Free, and it never scrapes — unlike the web report it costs nothing to poll. Use it to answer 'is this working and what am I paying for it?'.

NameTypeReqDescription
campaign_idstringyes

No output schema declared.

No examples provided.

get_content_campaign_results ~176

See 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.

NameTypeReqDescription
campaign_idstringyesCampaign UUID or public campaign number from create_content_campaign
limitintegerSubmissions per page (default 50)
offsetintegerPagination offset
statusstringOnly return submissions in this review state

No output schema declared.

No examples provided.

get_content_queue ~133

The space's drafts as the user sees them in 'All Content': text, platform, status, and the reviewer's score / verdict / one-line fix. FREE. Use it to present drafts for approval one by one (show the text, the score against review_threshold, and the reviewer's summary), and after write_content_candidates to read back how your drafts scored. status: active (default — pending + reviewed + staged), pending, reviewed, staged (approved by the user, awaiting publish), discarded.

NameTypeReqDescription
limitinteger
space_idstringyes
statusstring

No output schema declared.

No examples provided.

get_content_workspace ~115

The brand's voice, platforms, post types, platform playbook, review threshold, topic inventory and any per-channel style guides for one content space. FREE. Read this BEFORE writing any draft so you write in the brand's own voice, and at the start of any content conversation to know what is already set up. `enabled:false` means the space has no content engine yet — offer setup_content_space.

NameTypeReqDescription
space_idstringyesThe space (from list_content_spaces, or any Amplify space the user owns).

No output schema declared.

No examples provided.

get_earnings ~45

The connected user's participation totals: points, credit balance, and reply stats (submitted / approved / rejected / strikes) for work submitted through this connector. Free, read-only.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_my_submissions ~56

The connected user's submissions to one campaign: pending / approved / rejected, with the reviewer's notes. Free, read-only. Use to report outcomes back to the user after submit_campaign_work.

NameTypeReqDescription
campaign_idstringyes

No output schema declared.

No examples provided.

get_posts ~84

Read a campaign's discovered posts with their drafted replies. Free. Use after generate_posts to inspect what was found, then review_posts / regenerate_replies to refine.

NameTypeReqDescription
campaign_idstringyes
include_repliesbooleanDefault true
limitintegerDefault 50
offsetinteger
statusstring

No output schema declared.

No examples provided.

get_research ~76

Read the cached topic/competitor analysis for a campaign (from run_research). Free. Also reports which of its findings the campaign is actually searching: expanded keywords and exclusion terms always apply, while phrases / influencer accounts / lists / competitors stay dormant until their source is enabled via update_campaign.

NameTypeReqDescription
campaign_idstringyes

No output schema declared.

No examples provided.

list_campaigns ~81

List ALL the connected user's discovery/boost campaigns, newest first — including ones created in the ProductClank web app, not just via this connector. Free. Use to find a campaign id before get_campaign / generate_posts / get_posts.

NameTypeReqDescription
limitintegerDefault 20
offsetinteger
statusstring

No output schema declared.

No examples provided.

list_content_spaces ~68

List the ProductClank content spaces you can draft into — spaces the user owns, delegates for, or manages that have their content engine turned on. Returns { space_id, name }. Call this first to resolve the space_id for write_content_candidates, and confirm the target space with the user.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

manage_content_topics ~187

The inventory of aspects a brand talks about. FREE. action 'list' reads it; 'add' appends topics (≤12; keywords proposed when omitted); 'update' edits or pauses one (is_active:false keeps it but stops using it); 'remove' deletes one; 'suggest' brainstorms new KB-grounded ideas that differ from the existing topics — put them to the user, then 'add' the keepers.

NameTypeReqDescription
actionstringyes
is_activebooleanupdate: false pauses the topic.
keywordsarrayupdate: replacement keywords.
labelstringupdate: new label.
search_contextstringupdate: new angle.
space_idstringyes
topic_idstringupdate / remove: which topic.
topicsarrayadd: the topics to append.

No output schema declared.

No examples provided.

publish_posts ~210

Release chosen posts (and their reply drafts) to the community earn feed. Free. This is the approval step for a campaign created with post_visibility 'private' (held mode): drafts are found and written but nobody can claim them until you publish them. Pass the post_ids the user approved, or all:true. If the campaign is still private this makes it public — which turns on per-posted-reply billing (20 credits each) — so the API demands confirm:true; only pass it after the user has agreed. Unlike update_campaign's visibility flip, this touches only the posts you name and leaves future drafts held.

NameTypeReqDescription
allbooleanRelease every held post in the campaign
campaign_idstringyes
confirmbooleanRequired only when the campaign itself is still private — confirms the user agreed to community distribution and per-reply billing
post_idsarrayPost ids from get_posts to release. Omit with all:true to release every held post.

No output schema declared.

No examples provided.

regenerate_replies ~103

Redraft the replies of specific posts with an edit request (e.g. 'shorter, no emojis, lead with the user's problem'). Costs 5 credits per reply regenerated; already-claimed replies are refused. Get post ids from get_posts. Confirm the spend with the user.

NameTypeReqDescription
campaign_idstringyes
edit_requeststringyesHow the replies should change
post_idsarrayyesPost UUIDs whose replies to redraft

No output schema declared.

No examples provided.

review_posts ~161

Score every discovered post against relevancy rules and delete the irrelevant ones (kept when dry_run:true). Costs 2 credits per post reviewed — dry runs are billed too, since the AI review runs either way. Start with dry_run:true to preview the verdicts, then re-run with dry_run:false to prune. Confirm the spend with the user.

NameTypeReqDescription
campaign_idstringyes
dry_runbooleanPreview verdicts without deleting (default false; still billed)
review_rulesstringRelevancy rules, e.g. 'Keep only posts where the author has a real problem our product solves'. Falls back to rules saved on the campaign.
thresholdintegerDelete posts scoring below this (default 5)

No output schema declared.

No examples provided.

revise_content_draft ~288

Act on one draft in the user's queue. `stage` = the user approved it (mark ready to publish; publishing itself happens in the web tool). `discard` drops it. `revise` rewrites it in the brand voice per a one-click preset — shorter, longer, punchier, deeper, simpler, more_specific, less_salesy, more_casual, more_formal — and/or a typed instruction (2 credits). `fix` makes the surgical change the reviewer's notes asked for (2). `humanize` strips the AI feel and keeps everything else (2). `review` scores it against the brand voice (2). `edit` replaces the text with what the user wrote (free). Any text change clears the old score. Stage and discard are the USER's decisions — act on their say-so, never on your own judgment. If the user's reaction should apply to every future draft (not just this one), use teach_content_voice instead.

NameTypeReqDescription
actionstringyes
draft_idstringyesFrom get_content_queue or a write_content_candidates result.
instructionstringrevise / fix / humanize: the user's note in their words.
presetstringrevise: the calibration chip the user clicked.
space_idstringyes
textstringedit: the replacement text.

No output schema declared.

No examples provided.

run_research ~137

FREE pre-flight before spending credits: analyzes the campaign's keywords/topic and returns expanded keywords, high-intent phrases, influencer accounts, relevant X lists, and competitors. The EXPANDED KEYWORDS and exclusion terms are applied automatically by the next generate_posts run. Everything else is NOT: phrases, influencer accounts, lists and competitors are only searched once their source is enabled — the result reports which are dormant, and update_campaign (free) switches them on. Cached for 7 days — pass force:true to refresh.

NameTypeReqDescription
campaign_idstringyes
forcebooleanForce a fresh analysis even if a cached one exists

No output schema declared.

No examples provided.

search_products ~75

Search 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.

NameTypeReqDescription
limitintegerMax results (default 5)
querystringyesProduct name or keyword to search for

No output schema declared.

No examples provided.

set_campaign_schedule ~372

Turn standing discovery on or off for a campaign. Calling this is free, but switching it ON authorizes spend that happens LATER and unattended: an hourly job runs discovery on its own and bills the user 12 credits per post it finds, with nobody in the loop. So there are two steps and you must not skip the first. STEP 1 — call with enabled:true and NO confirmed flag: nothing is changed and you get back the projected daily and monthly cost, the balance, and how many days of runway that is. STEP 2 — show the user those numbers, get a real yes, then call again with confirmed:true. Never send confirmed:true on your own initiative, on an assumption, or because the user said something general like 'keep it going' — the user has to have seen a number. Turning it OFF (enabled:false) is always safe and needs no confirmation; do it whenever the user asks to stop. Limits on this path are deliberately lower than the website's: up to 4 runs/day, up to 20 posts/run, and never more than 600 projected credits/day. Read the current schedule with get_campaign.

NameTypeReqDescription
campaign_idstringyes
confirmedbooleanSet true ONLY after the user has seen the projected cost from a previous call and explicitly agreed to it. Omit on the first call — that is what produces the projection.
enabledbooleanyestrue starts standing discovery, false stops it
frequency_per_dayintegerDiscovery runs per day (1-4). Defaults to the campaign's current setting, else 1.
posts_per_runintegerTarget posts per run (1-20). Defaults to the campaign's current setting, else 5. Each post found bills 12 credits.

No output schema declared.

No examples provided.

setup_content_space ~470

Turn the content engine on for a brand from an onboarding conversation, or update its settings later. FREE with structured fields. Collect the answers FIRST (use the setup_content_space prompt: brand & site → audience → tone with the archetype options → platforms → post types → 3–8 topics → example posts), read them back to the user for a yes, THEN call this once. Target an existing space with space_id, or create a fresh solo space for the brand with new_space:{name}. First-time setup needs at least `voice` and `platforms`. Topics are appended (≤12 per call; keywords proposed when omitted). Pass `brand_doc` only when the user hands over a written brand template (it costs 5 credits to structure); answers you collected go in the fields for free. Nothing is published by this tool.

NameTypeReqDescription
brand_docstringA filled brand template the user pasted — costs 5 credits to structure.
brand_namestringDefaults to the space name.
new_spaceobjectCreate a solo Amplify space for this brand (idempotent on name).
platform_playbookstringPer-platform notes, e.g. "X: short and punchy. LinkedIn: longer, more reflective."
platformsarrayWhere the brand posts, e.g. ["X", "LinkedIn"]. One draft per platform is written per topic.
post_typesstringThe kinds of posts they want (how-tos, build-in-public notes, hot takes, customer wins, thesis drops…).
review_thresholdintegerReviewer pass bar (default 75).
space_idstringExisting space to enable/update (one of space_id / new_space is required).
topicsarrayThe inventory of themes to post about (3–8 to start).
trending_source_handlesarrayX accounts to pin for 'Trending on X' (news outlets, analysts, competitors).
voicestringVoice & style as a tight paragraph: tone in 3–5 words, do's and don'ts, typical length, emoji / hashtag / link policy, words to use and avoid, and the feel of any example posts the user shared.

No output schema declared.

No examples provided.

submit_campaign_work ~298

Submit the user's work for a campaign. Three ways to prove it, and any one is enough: proof_url (content they published or an action they took), media_url (a hosted image or video made for the task — the ad-hoc creative case: a demo clip, a mockup, a designed asset), and description (max 500 chars). Media must already be hosted somewhere public and reachable — this API takes links, never uploads; a direct image link is shown to the reviewer inline, anything else (a video, a Loom) is shown as a link they open. If a URL is an X post it must be published by the user's linked X handle (author-verified); other URLs are accepted as-is. Lands as PENDING — the campaign owner reviews and rewards ship on approval (community campaigns pay Stars, public ones leaderboard points). Duplicate URLs are rejected. Check status afterward with get_my_submissions.

NameTypeReqDescription
campaign_idstringyes
descriptionstringWhat was done, or context for the reviewer
media_urlstringPublic URL of an image or video produced for the task. Must already be hosted (upload it wherever the user keeps files first) — direct image links render inline for the reviewer; videos and Loom-styl…
proof_urlstringURL of the published content or action proof (X post, video, voting page, …)

No output schema declared.

No examples provided.

submit_participation ~246

Submit the URL of what the connected user posted for a claimed opportunity (reply_id from find_opportunities). Works for X, Reddit, YouTube and LinkedIn replies, and X quote posts (actionType `quote`: pass the URL of the user's own quote post, NOT the original — the backend checks it was posted by their linked X handle and that it actually quotes the target post; a plain tweet or a quote of something else is rejected). Every claim is attributed to the user's linked handle for that platform, so they must have it connected on their ProductClank profile — X replies are additionally author-verified against the live post at submit time, and the others are verified afterwards by the same checks that cover web submissions. If the platform handle is missing the call fails saying which one to add. Awards points, and credits when the campaign grants them. Rejected submissions add strikes (3 strikes = blocked), so only submit replies the user actually posted.

NameTypeReqDescription
reply_idstringyesThe reply draft's id from find_opportunities
reply_urlstringyesURL of the reply (or, for a quote opportunity, the quote post) the user posted

No output schema declared.

No examples provided.

suggest_content_campaign ~251

Preview 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.

NameTypeReqDescription
additional_guidelinesstringExtra do's/don'ts for creators
campaign_goalsarrayCampaign goals, e.g. ["awareness", "signups"]
campaign_messagestringyesThe core brief: what you want the community to create (e.g. 'Share how you use <product> in your daily workflow').
preferred_platformstringPreferred platform, e.g. "x" or "farcaster"
product_idstringyesProduct UUID from search_products
referencesstringLinks or references to include in the campaign
target_audiencestringWho the campaign should reach

No output schema declared.

No examples provided.

teach_content_voice ~200

Teach the engine. The user's reaction — 'too long', 'punchier hooks', 'never say leverage', 'more first-person on LinkedIn' — becomes a durable rule in the brand's voice KB, so every future draft and review honors it. 1 credit. Use it when feedback should STICK; use revise_content_draft when it is about one draft only. Pass draft_id when the reaction was to a specific draft so the rule is grounded in an example. The rule is applied immediately by default (the user owns the space); apply:false leaves it pending in the web Settings instead. Tell the user in one line what was learned.

NameTypeReqDescription
applybooleanDefault true. false → leave pending for the user to approve in Settings.
draft_idstringThe draft it was about, if any.
feedbackstringyesThe user's reaction, in their words.
space_idstringyes

No output schema declared.

No examples provided.

update_campaign ~734

Adjust a live campaign without recreating it. Free — nothing here spends credits, though the next generate_posts run bills as usual. Keywords MERGE (add_keywords never drops what is already there). `sources` is how research findings get applied: high-intent phrases, influencer accounts and lists that run_research found stay dormant until you enable their source. `relevance_threshold` moves the bar the relevance gate keeps posts above (new campaigns start lenient at 5; raise it when discovery is noisy). `is_active:false` pauses discovery so nothing more is found or billed. `visibility` decides who posts the drafts — flipping to 'public' also releases the already-discovered drafts to the community, so only do it when the user has said yes. `target_subreddits` / `target_youtube_channels` re-aim discovery within its platform (send an empty array to clear and search the whole platform). `platform` itself can only change while the campaign has discovered nothing — after that it is fixed, and a second campaign is the answer. Changes apply to the NEXT generate_posts run; existing posts are not re-scored.

NameTypeReqDescription
add_keywordsarrayKeywords to add — merged with the existing list, duplicates ignored
campaign_idstringyes
confirmbooleanRequired (true) when setting visibility to public — confirms the user agreed to community distribution and per-posted-reply billing. Without it the API returns confirmation_required.
is_activebooleanfalse pauses discovery, true resumes it
monitor_accountsarraySpecific handles the influencers source should watch; enables that source automatically
platformstringWhich network discovery works. Only changeable while the campaign has discovered nothing — otherwise it returns platform_locked, because switching would mix two platforms' posts and proof rules in on…
post_visibilitystringVisibility of posts discovered FROM NOW ON, without touching the campaign flag or existing posts. 'private' turns on held mode (release with publish_posts); 'public' makes new drafts claimable on arr…
relevance_thresholdintegerKeep only posts scoring at or above this on semantic relevance (new campaigns start at 5)
remove_keywordsarrayKeywords to drop (at least one must remain)
sourcesarrayWhich discovery sources run. 'keywords' is always included. Enable 'phrases'/'influencers'/'lists'/'competitors' to actually USE what run_research found — they do nothing until enabled.
target_subredditsarrayReddit only, enforced server-side — sending it on a non-Reddit campaign is REJECTED, not ignored. REPLACES the list rather than appending; [] clears it and searches all of Reddit. To add one, read th…
target_youtube_channelsarrayYouTube only, enforced server-side — sending it on a non-YouTube campaign is REJECTED, not ignored. REPLACES the list rather than appending; [] clears it and runs keyword search alone. To add one, re…
visibilitystringWho posts the drafted replies. private = the user posts them from the workbench; public = the community earn feed distributes them and members post them, billing the user per posted reply. Flipping t…

No output schema declared.

No examples provided.

write_content_candidates ~168

Draft one or more posts into a ProductClank content space. FREE. Call get_content_workspace FIRST and write in that brand's voice, post types and topics — the drafts are scored against exactly that voice by the reviewer a moment after they land, and the scores show in get_content_queue. `platform` must be one of the space's platforms (omit it to use the first). Candidates land in the user's 'All Content' queue for approval; nothing is auto-published. Up to 25 per call. This drafts into the user's OWN content pipeline — it is NOT a community content campaign (use create_content_campaign for that).

NameTypeReqDescription
candidatesarrayyes1–25 draft candidates to write.
space_idstringyesTarget content space UUID from list_content_spaces.

No output schema declared.

No examples provided.

Common questions

What is the ProductClank MCP server?

ProductClank is an MCP server listed in the public MCP registry as com.productclank/productclank. Boost posts and launch community growth campaigns from your AI assistant. OAuth, credit-billed. This page covers its hosted endpoint (https://mcp.productclank.com/mcp).

Is the ProductClank MCP server safe to use?

ProductClank scores 91 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ProductClank MCP server expose?

ProductClank exposes 39 tools: search_products, create_product, check_balance, credit_history, boost_post, and 34 more. Their descriptions and schemas cost roughly 7,846 tokens of context every time the server is loaded.

Does the ProductClank MCP server require authentication?

Yes. ProductClank asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the ProductClank MCP server still maintained?

ProductClank is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.