Google Search Console integration for Model Context Protocol (MCP)
ProductClank is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Boost posts and launch community growth campaigns from your AI assistant. OAuth, credit-billed.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http productclank-mcp https://mcp.productclank.com/mcp
# 2 — ask your agent for something these tools do
# search_products, create_product, check_balance and 45 more
ProductClank costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http productclank-mcp https://mcp.productclank.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
48 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Product name or keyword to search for |
| limit | integer | no | Max results (default 5) |
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 tha
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | no | Product website URL — auto-fills the listing. Provide this or name. |
| name | string | no | Product name. Optional if url is given (extracted from the site); required otherwise. |
| tagline | string | no | One-line value proposition (optional; overrides extracted). |
| description | string | no | Short description of what the product does (optional). |
| website | string | no | Canonical website, if different from url (optional). |
| string | no | X/Twitter handle or profile URL (optional). | |
| logo | string | no | Logo image URL (optional; otherwise auto-resolved from the site). |
| category | array | no | Category tags (optional). |
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).
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Default 20 |
| offset | integer | no | — |
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 rep
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_url | string | yes | Full URL of the post to boost (any supported platform) |
| product_id | string | no | Optional product UUID (from search_products or create_product). Omit for a tweet-first boost. |
| action_type | string | no | How the community engages. Default: replies. Reposts are Twitter/Farcaster only; quote posts (repost with the member's own drafted text) are X only. |
| reply_guidelines | string | no | Optional guidance for the tone and content of community replies or quote posts |
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. Requ
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | Product UUID from search_products |
| campaign_message | string | yes | The core brief: what you want the community to create (e.g. 'Share how you use <product> in your daily workflow'). |
| campaign_goals | array | no | Campaign goals, e.g. ["awareness", "signups"] |
| target_audience | string | no | Who the campaign should reach |
| preferred_platform | string | no | Preferred platform, e.g. "x" or "farcaster" |
| additional_guidelines | string | no | Extra do's/don'ts for creators |
| references | string | no | Links or references to include in the campaign |
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 100
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | Product UUID from search_products |
| campaign_message | string | yes | The core brief: what you want the community to create (e.g. 'Share how you use <product> in your daily workflow'). |
| campaign_goals | array | no | Campaign goals, e.g. ["awareness", "signups"] |
| target_audience | string | no | Who the campaign should reach |
| preferred_platform | string | no | Preferred platform, e.g. "x" or "farcaster" |
| additional_guidelines | string | no | Extra do's/don'ts for creators |
| references | string | no | Links or references to include in the campaign |
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'
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign UUID or public campaign number from create_content_campaign |
| status | string | no | Only return submissions in this review state |
| limit | integer | no | Submissions per page (default 50) |
| offset | integer | no | Pagination offset |
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.
No parameter schema on file.
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 C
| Parameter | Type | Required | Notes |
|---|---|---|---|
| space_id | string | yes | Target content space UUID from list_content_spaces. |
| candidates | array | yes | 1–25 draft candidates to write. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| space_id | string | yes | The space (from list_content_spaces, or any Amplify space the user owns). |
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 spa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| space_id | string | no | Existing space to enable/update (one of space_id / new_space is required). |
| new_space | object | no | Create a solo Amplify space for this brand (idempotent on name). |
| brand_name | string | no | Defaults to the space name. |
| platforms | array | no | Where the brand posts, e.g. ["X", "LinkedIn"]. One draft per platform is written per topic. |
| voice | string | no | Voice & 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. |
| post_types | string | no | The kinds of posts they want (how-tos, build-in-public notes, hot takes, customer wins, thesis drops…). |
| platform_playbook | string | no | Per-platform notes, e.g. "X: short and punchy. LinkedIn: longer, more reflective." |
| topics | array | no | The inventory of themes to post about (3–8 to start). |
| review_threshold | integer | no | Reviewer pass bar (default 75). |
| trending_source_handles | array | no | X accounts to pin for 'Trending on X' (news outlets, analysts, competitors). |
| brand_doc | string | no | A filled brand template the user pasted — costs 5 credits to structure. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| space_id | string | yes | — |
| action | string | yes | — |
| topics | array | no | add: the topics to append. |
| topic_id | string | no | update / remove: which topic. |
| label | string | no | update: new label. |
| keywords | array | no | update: replacement keywords. |
| search_context | string | no | update: new angle. |
| is_active | boolean | no | update: false pauses the topic. |
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), pe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| space_id | string | yes | — |
| status | string | no | — |
| limit | integer | no | — |
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 rev
| Parameter | Type | Required | Notes |
|---|---|---|---|
| space_id | string | yes | — |
| draft_id | string | yes | From get_content_queue or a write_content_candidates result. |
| action | string | yes | — |
| preset | string | no | revise: the calibration chip the user clicked. |
| instruction | string | no | revise / fix / humanize: the user's note in their words. |
| text | string | no | edit: the replacement text. |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| space_id | string | yes | — |
| feedback | string | yes | The user's reaction, in their words. |
| draft_id | string | no | The draft it was about, if any. |
| apply | boolean | no | Default true. false → leave pending for the user to approve in Settings. |
Read a product's website and propose the two fields create_campaign requires: keywords and search_context (plus a suggested title). 3 credits, charged only when a brief comes back. Creates nothing — no campaign, no product, no discovery, and no commitment to create one. USE THIS ONLY WHEN YOU CANNOT FETCH THE PAGE YOURSELF. If you can browse from this client, do the derivation in the conversation
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | The product's website |
| platform | string | no | Platform the brief is written for — the vocabulary adapts (videos on YouTube, threads on Reddit). Pass the same value you will pass to create_campaign. Defaults to twitter. |
| product_id | string | no | Existing product UUID (search_products / create_product) — its name and tagline sharpen the brief. |
| product_name | string | no | Overrides the listing's name |
| product_tagline | string | no | Overrides the listing's tagline |
Create a Communiply discovery campaign: it continuously finds relevant social posts (by keyword) and drafts replies for them. 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 w
| Parameter | Type | Required | Notes |
|---|---|---|---|
| product_id | string | yes | Product UUID (from search_products or create_product) |
| title | string | yes | Campaign title, e.g. 'Grow Acme — AI devtools conversations' |
| keywords | array | yes | Search 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 sl |
| search_context | string | yes | One 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 pain |
| mention_accounts | array | no | X handles to name-drop in 'mention'-approach replies (e.g. the product's account). Also a discovery input: posts that mention these accounts are surfaced too — so to choose who 'flag' replies tag, use |
| reply_style_tags | array | no | Tone tags for drafted replies, e.g. ['helpful', 'builder-to-builder'] |
| reply_length | string | no | — |
| reply_guidelines | string | no | Custom guidelines for reply drafting (defaults are built from the campaign context) |
| reply_approach | string | no | X campaigns only (the API rejects it elsewhere). What the replies are FOR — ask the user, it changes every reply: 'mention' (default) = AWARENESS: replies put the product and its site in the conversat |
| reply_tag_accounts | array | no | X only, used with reply_approach 'flag': up to 2 handles to tag, brand first then the founder (e.g. ['acme', 'jane_founder']) — so the user can choose brand, personal or both. Omit to fall back to men |
| platform | string | no | Which 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 produc |
| target_subreddits | array | no | Reddit 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 s |
| target_youtube_channels | array | no | YouTube 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 the |
| visibility | string | no | Who 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 |
| post_visibility | string | no | Visibility 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 th |
| space_id | string | no | The brand space to file this campaign under (from list_content_spaces, or the space_id setup_content_space returned) — the space the user's dashboard shows it in. Not an audience: who sees the drafts |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Default 20 |
| offset | integer | no | — |
| status | string | no | — |
Get one campaign's configuration (keywords, search context, reply settings incl. reply_approach — 'mention' awareness vs 'flag' leads to the founder — and reply_tag_accounts) plus live stats: posts discovered, replies by status. Free. Use to check progress after generate_posts or before adjusting the campaign.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign UUID (from list_campaigns or create_campaign) |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| force | boolean | no | Force a fresh analysis even if a cached one exists |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| limit | integer | no | Default 50 |
| offset | integer | no | — |
| status | string | no | — |
| include_replies | boolean | no | Default true |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| review_rules | string | no | Relevancy rules, e.g. 'Keep only posts where the author has a real problem our product solves'. Falls back to rules saved on the campaign. |
| threshold | integer | no | Delete posts scoring below this (default 5) |
| dry_run | boolean | no | Preview verdicts without deleting (default false; still billed) |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| post_ids | array | yes | Post UUIDs whose replies to redraft |
| edit_request | string | yes | How the replies should change |
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 growt
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| since | string | no | ISO 8601 timestamp — the checked_at returned by the previous call. Default: 24 hours ago. |
| limit | integer | no | Items per list, default 20 |
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 wor
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| add_keywords | array | no | Keywords to add — merged with the existing list, duplicates ignored |
| remove_keywords | array | no | Keywords to drop (at least one must remain) |
| sources | array | no | Which discovery sources run. 'keywords' is always included. Enable 'phrases'/'influencers'/'lists'/'competitors' to actually USE what run_research found — they do nothing until enabled. |
| monitor_accounts | array | no | Specific handles the influencers source should watch; enables that source automatically |
| relevance_threshold | integer | no | Keep only posts scoring at or above this on semantic relevance (new campaigns start at 5) |
| is_active | boolean | no | false pauses discovery, true resumes it |
| visibility | string | no | Who 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 to |
| post_visibility | string | no | Visibility 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 arri |
| confirm | boolean | no | Required (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. |
| platform | string | no | Which 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 one |
| target_subreddits | array | no | Reddit 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 the |
| target_youtube_channels | array | no | YouTube 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, rea |
| reply_approach | string | no | X campaigns only (REJECTED elsewhere). 'mention' = awareness: replies put the product and its site in the conversation. 'flag' = sales: replies tag the brand and/or founder at the post's author as a l |
| reply_tag_accounts | no | X only, for 'flag': up to 2 handles to tag, brand first then founder (brand, personal or both). REPLACES the list; null or [] clears it (falls back to mention_accounts, then the product's X handle). |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| enabled | boolean | yes | true starts standing discovery, false stops it |
| frequency_per_day | integer | no | Discovery runs per day (1-4). Defaults to the campaign's current setting, else 1. |
| posts_per_run | integer | no | Target posts per run (1-20). Defaults to the campaign's current setting, else 5. Each post found bills 12 credits. |
| confirmed | boolean | no | Set 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. |
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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| user_id | string | yes | ProductClank User id to grant webapp access to |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| reply_id | string | yes | Reply id from get_posts |
| reply_text | string | yes | The full replacement text |
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 (2
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| post_ids | array | no | Post ids from get_posts to release. Omit with all:true to release every held post. |
| all | boolean | no | Release every held post in the campaign |
| confirm | boolean | no | Required only when the campaign itself is still private — confirms the user agreed to community distribution and per-reply billing |
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,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Default 25 |
| offset | integer | no | — |
| campaign_id | string | no | Restrict to one campaign |
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 someth
| Parameter | Type | Required | Notes |
|---|---|---|---|
| reply_id | string | yes | The reply draft's id from find_opportunities |
| reply_url | string | yes | URL of the reply (or, for a quote opportunity, the quote post) the user posted |
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 doin
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Default 25 |
| kind | string | no | Filter by campaign kind |
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 s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | Campaign id from find_open_campaigns |
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;
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
| proof_url | string | no | URL of the published content or action proof (X post, video, voting page, …) |
| media_url | string | no | Public 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-style |
| description | string | no | What was done, or context for the reviewer |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign_id | string | yes | — |
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.
No parameter schema on file.
For approved ProductClank scouts: the founder posts picked for you today, each with the post, why it fits, a drafted opener, its status and your signup/call links. Free, read-only. Use it when the user asks 'what deals do you have for me?'. Show each deal briefly (founder, post, the opener) and let the user pick. A deal matched to them is theirs alone for 12h, then open to every scout. If the user
No parameter schema on file.
Hold a deal for this scout for 72 hours so no other scout replies to the same founder. Free. Call it when the user decides to reply, BEFORE they post. Returns the post link, the drafted opener and the scout's links. The user posts the reply from their OWN X account (you never post), then you call report_deal_progress with stage 'sent' and the reply URL. Claiming again refreshes the hold. 409 claim
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dealId | string | yes | The deal id from get_scout_deals. |
Give a claimed deal back to the shared pool (the user will not reply to it). Free. Use it when the user skips a deal they claimed, so another scout can take it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dealId | string | yes | The deal id from get_scout_deals. |
Move a deal forward. stage 'sent' + replyUrl (the URL of the reply the user posted on X) records the reply and awards Stars; it must be the user's own reply, not the founder's post. Later stages are private pipeline steps: 'replied' (the founder answered), 'call_booked', 'closed_won', 'lost'. Free. Only report what the user tells you happened.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dealId | string | yes | The deal id from get_scout_deals. |
| stage | string | yes | — |
| replyUrl | string | no | Required for 'sent': https://x.com/<user>/status/<id> of the user's reply. |
| note | string | no | Optional private note on this step. |
Tell ProductClank whether this deal was a good pick: 'would_send' or 'would_not'. Free. It tunes which posts the matcher picks for this scout. Ask the user when they skip or finish a deal.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dealId | string | yes | The deal id from get_scout_deals. |
| rating | string | yes | — |
The scout's pipeline by stage, commissions earned from their deals, and their rank in this month's top-scouts pool. Free, read-only.
No parameter schema on file.
Tell the ProductClank team a tool failed, returned something that doesn't make sense, or that you're stuck and can't finish the user's task. Free. A human is alerted and replies (read it with get_support_status). Use this INSTEAD of retrying a failing call in a loop — but not for expected guards the error already explains (insufficient credits, a confirmation prompt, a spend cap): relay those to t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| message | string | yes | What you were trying to do, what happened, and what you expected. |
| category | string | no | Default 'other'. |
| severity | string | no | 'blocking' = you cannot continue the user's task. Default 'normal'. |
| ticket_id | string | no | Follow up on a ticket you opened earlier. |
| tool | string | no | The ProductClank tool that failed, e.g. generate_posts. |
| http_status | integer | no | Status from the failed call, if shown. |
| error_code | string | no | The machine error code from the failed call, if shown. |
| context | object | no | Arguments you passed, the error text, what you already tried. Never include secrets. |
Read the status of issues you reported with report_issue, and ProductClank's replies. Without ticket_id: your recent tickets (look for has_reply:true). With ticket_id: the full conversation. Free, read-only. Check at the start of a session if you reported something earlier.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticket_id | string | no | — |
| limit | integer | no | Default 20 (list mode). |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install ProductClank or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.5.1.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish ProductClank can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.