Skip to main content
Glama

Server Details

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

Ownership verified
Status
Healthy
Uptime
99.9% over 75 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
covariance-network/productclank-mcp-server
GitHub Stars
11
Server Listing
ProductClank MCP Server

TDQS

A3.7/5.0

Scored across 57 tools

Disambiguation2/5

Several clusters are genuinely hard to tell apart: launch_tiktok_campaign explicitly bundles boost_post + create_watch_quiz, and find_open_campaigns / find_opportunities / get_scout_deals / get_growth_suggestions all answer 'find me something to engage with'. Likewise revise_content_draft / edit_reply / regenerate_replies / teach_content_voice all rewrite text, and create_campaign vs create_content_campaign vs create_watch_quiz vs boost_post all spend credits to amplify something. The very long descriptions do disambiguate most cases once read closely, but an agent scanning names alone will misselect.

Naming Consistency4/5

Nearly everything is a clean snake_case verb_noun (get_campaign_results, submit_participation, list_content_spaces), which is highly predictable. Minor friction comes from near-duplicate nouns ('campaign' vs 'content_campaign', 'posts' vs 'content_queue' vs 'content_candidates') and from mixed verb families (create/launch/setup/write all meaning 'make one'). Nothing is chaotic; it's just not perfectly mechanical.

Tool Count2/5

57 tools is far past the 3-15 sweet spot and past even the 25+ warning line, even for a platform spanning discovery campaigns, content spaces, boosts, watch quizzes, scout deals and a personal growth assistant. Each sub-domain has a coherent little toolset, but flattened into one server the surface is heavy enough that an agent must wade through dozens of options per request. Splitting into per-product servers would make this a 5.

Completeness4/5

Coverage of the lifecycle is strong: create/update/pause campaigns, generate/review/regenerate/read posts and replies, publish to the community, submit proofs, track results, earnings, balance, credit history, and even support tickets and self-reporting of failures. Gaps are modest — no delete/archive for campaigns or products, and top-ups explicitly punted to the web app. An agent can run most workflows end to end without hitting a dead end.

Available Tools

57 tools
add_delegateHand a campaign to a humanAInspect

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

NameRequiredDescriptionDefault
user_idYesProductClank User id to grant webapp access to
campaign_idYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only clarify that the tool is not read-only, not destructive, and not open-world. The description adds that the effect is granting view/manage access, but it does not mention possible side effects like repeated calls creating duplicate delegates, account/permission prerequisites, or whether an existing delegate is replaced. That is an adequate baseline but not a rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver the action, outcome, cost, and target use case efficiently. The one-word fragment 'Free.' carries relevant economics without detracting from the overall structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given only two simple string parameters and no output schema, the description covers the required context: what the tool does, who it can add, and when it is useful. It lacks details about return values or error cases, but these are less critical for this call shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 50% schema description coverage because campaign_id lacks a schema description, the description compensates by referring to the campaign and calling it 'agent-created'. For user_id, the description adds beyond the schema by noting that the connected user's own id can be used. This meaningfully helps an agent choose parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Add a ProductClank user as a delegate on a campaign', with a clear outcome ('so they can view and manage it from the webapp's My Campaigns page'). The title reinforces the primary effect, and no sibling tool overlaps with the act of granting delegate access.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context: 'Useful to hand oversight of an agent-created campaign to its human owner', and even covers the edge case of self-delegation ('the connected user's own id works too'). It does not name alternatives, but there are no obvious sibling tools dedicated to this task, so exclusions are less necessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_urlDerive a campaign brief from a product URLAInspect

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 instead: it is free, you can iterate with the user before anything is spent, and you know what they have told you about their audience — a one-shot page read does not. Reach for this when web access is unavailable or the fetch failed, and say plainly that it costs 3 credits before calling. It returns 8-15 keywords: put them in front of the user and cut to the 3-8 that match how their buyers actually talk, because create_campaign is what the campaign then runs on.

NameRequiredDescriptionDefault
urlYesThe product's website
platformNoPlatform 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_idNoExisting product UUID (search_products / create_product) — its name and tagline sharpen the brief.
product_nameNoOverrides the listing's name
product_taglineNoOverrides the listing's tagline

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false and openWorldHint=true, and the description adds substantive behavior on top: the '3 credits, charged only when a brief comes back' cost model and the explicit no-side-effect guarantee ('Creates nothing — no campaign, no product, no discovery'). This is exactly the cost and mutation context an agent needs and that annotations do not supply. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence earns its place: purpose first, then cost, then side-effect guarantee, then when-to-use, then usage workflow. The front-loaded purpose and the clear escalation in emphasis make it well structured, with only minor redundancy around the credit note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (external web read, cost, no output schema), the description covers everything an agent needs: when to use it, what it returns (8-15 keywords, suggested title, search_context), how to process the result (cut to 3-8 keywords), and the cost condition. The absence of an exact return-structure spec is minor given the workflow guidance provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions are already rich (platform enum with vocabulary explanation, product_id with its sharpening effect). The description adds modest value by tying the output (keywords/search_context) to create_campaign and implying how platform influences output, but does not meaningfully deepen per-parameter meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Read a product's website and propose the two fields create_campaign requires.' It names the exact deliverable (keywords, search_context, plus a suggested title), which makes the tool's function unambiguous and clearly positioned relative to the create_campaign sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Exceptionally explicit: 'USE THIS ONLY WHEN YOU CANNOT FETCH THE PAGE YOURSELF' states the primary condition, and the description further differentiates from in-conversation derivation (free, iterable, audience-aware) and gives the fallback trigger ('web access is unavailable or the fetch failed'). It even instructs the agent to disclose the credit cost before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

boost_postBoost a social postAInspect

Rally 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' is 30 likes for 300 credits by default; set count (1–300) for any other size at 10 credits per like, e.g. 100 likes = 1,000 credits. 'bookmarks' (saving a post on X lifts its visibility) and 'repost' are 10 for 300 credits by default; set count (1–100) for any other size at 30 credits each, e.g. 25 reposts = 750 credits. 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.

NameRequiredDescriptionDefault
countNoReplies / quote: how many drafts to generate, 1–10 (default 10), billed 20 credits per draft — 3 replies = 60 credits. Likes: how many likes, 1–300 (default 30), billed 10 credits per like — 100 likes = 1,000 credits. Repost / bookmarks: 1–100 (default 10), billed 30 credits each.
post_urlYesFull URL of the post to boost (any supported platform)
post_textNoOptional — the post's text or caption, if you already have it. Skips the server-side fetch (useful for a TikTok you just uploaded).
product_idNoOptional product UUID (from search_products or create_product). Omit for a tweet-first boost.
watch_quizNoOptional 'Watch & answer' on a TikTok / YouTube / Instagram Reel video: a linked 24h watch quiz. Billed 100 credits per correct answer (default cap 20 = 2,000 credits), separate from credits_used. Get the questions and answers from the user, or from suggest_quiz_questions.
action_typeNoHow the community engages. Default: replies. Reposts are Twitter/Farcaster only; quote posts (repost with the member's own drafted text) and bookmarks (members save the post) are X only.
reply_guidelinesNoOptional guidance for the tone and content of community replies or quote posts
spread_over_hoursNoOptional — pace delivery over this many hours instead of releasing every slot at once. One goes out now, the rest drip out 1–2 per hour. Minimum is ceil((items − 1) / 2) + 1 hours (3 items → 2, 10 → 6). Omit for immediate delivery. Same price.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare it is non-read-only, non-destructive and open-world; the description goes far beyond that by disclosing the credit cost per action, the concrete billing math, per-platform capability limits, the TikTok caption-timing behavior and the resulting waiting_for_post_text state, and the fact that watch_quiz billing is separate from credits_used.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, which is good, but the body is a single sprawling multi-clause block of em-dash-separated facts. Nearly every detail is useful in isolation, but the packaging is dense and hard to scan, so it earns only a middling score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a credit-spending mutation with a nested watch_quiz object and no output schema, the description covers cost, platform eligibility, pacing, deferred-charge behavior and a named result state. An agent has everything it needs to call it correctly and to warn the user about spend.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description largely restates the schema's own cost tables for count and repeats the platform restrictions already in action_type's enum description; only the physical explanation of a 'quote' post being the highest-reach action adds meaning beyond the structured field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Creates a boost campaign'), names the concrete effect (spends the user's credits) and enumerates the distinct action types. It also references siblings (search_products, create_product, create_watch_quiz), letting an agent place it precisely in the toolset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives conditional guidance for choosing between action types, platform support, immediate vs paced delivery, and explicitly instructs the agent to confirm the action and cost with the user before calling. It lacks an explicit 'use this instead of create_campaign/regenerate_replies' routing statement, but the surrounding context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_balanceCheck credit balanceA
Read-only
Inspect

Free. The connected user's credit balance and plan, PLUS live pricing: every action's cost in credits with a dollar range, every growth play priced at test / standard / scale (pricing.plays), top-up packs and plans. Call it before planning or recommending any spend, and quote these prices — never guess or look them up. Pricing is pay-per-action: every tool works on any account whose balance covers the action; plans are only a cheaper rate for steady monthly spend. Typical costs: a content campaign 1000; a reply or quote-post boost 200; likes/bookmarks/reposts 300; a discovery campaign 10 to create + 12/post discovered.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered. The description adds genuinely new context: the call is free, the data is scoped to 'the connected user', and it explains the pay-per-action pricing model (every tool works if balance covers it; plans are just a cheaper rate). It does not mention auth requirements or rate limits, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with 'Free.' then the payload, then the usage directive, then the pricing-model clarification. Sentences are dense and each carries content, though the trailing 'Typical costs' list and ALL-CAPS emphasis make it feel run-on rather than crisp.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must describe return values — and it does, covering balance, plan, per-action pricing, plays, packs, and plans. The included example costs (campaign 1000, boost 200, discovery 10+12) make it self-sufficient, though hardcoded figures risk going stale and no format details (credits units vs dollars) are spelled out beyond 'dollar range'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description does not need to explain inputs, but it usefully orients the agent to the response structure (pricing.plays, top-up packs, plans) rather than overclaiming parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (returns the connected user's credit balance and plan) and additionally enumerates the concrete payload: per-action credit costs, dollar ranges, plays priced at test/standard/scale, top-up packs and plans. An agent know exactly what this returns without opening anything else, and it is distinct from siblings like credit_history or get_earnings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit invocation timing: 'Call it before planning or recommending any spend, and quote these prices — never guess or look them up.' That is clear, actionable guidance. It stops short of naming alternatives (e.g. credit_history for past transactions) or stating when-not to use it, so it lands at 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

claim_dealClaim a scout dealA
Idempotent
Inspect

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 claimed_by_another_scout = someone else holds it; pick another deal.

NameRequiredDescriptionDefault
dealIdYesThe deal id from get_scout_deals.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-destructive, non-read-only, idempotent, closed-world mutation, so the bar is lower. The description adds genuinely useful behavior beyond that: a 72-hour hold window, zero cost ('Free'), the re-claim refresh semantics, the explicit fact that the agent never posts, and the 409 conflict meaning. Minor residual tension: 'Claiming again refreshes the hold' is a repeated-call side effect on the hold expiry, which sits slightly awkwardly beside idempotentHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and its constraint (72-hour hold, no competing replies) before the price, the workflow routing, and the error case. Every sentence carries operational information; none is restatement of the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by enumerating the return payload (post link, drafted opener, scout's links) and the full downstream workflow. Combined with annotations covering safety, an agent has everything needed to call this correctly and act on the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single dealId parameter is fully documented in the schema as coming from get_scout_deals, so the baseline of 3 applies. The description adds indirect context (the deal belongs to 'this scout' and re-claiming targets the same deal) but no new syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Hold a deal for this scout for 72 hours') and immediately clarifies the effect on other scouts replying to the same founder. It is clearly distinguishable from siblings like release_deal, report_deal_progress, and get_scout_deals, which are either named in the workflow or implied by contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing ('Call it when the user decides to reply, BEFORE they post') and routes the agent to the follow-up tool with the exact argument ('report_deal_progress with stage 'sent' and the reply URL'). It also covers the failure path: '409 claimed_by_another_scout = someone else holds it; pick another deal.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_campaignCreate a discovery campaignAInspect

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 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. On X, also ask what the replies are for (reply_approach): awareness (the product and its site in the thread) or sales (flag each post to the brand/founder as a lead, tagging the accounts they choose in reply_tag_accounts). 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. When the user works in a specific brand space (an agency running several brands, or a space setup_content_space just made), pass that space as space_id so the campaign shows under it in their dashboard — omitted, it lands in their oldest space. 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.

NameRequiredDescriptionDefault
titleYesCampaign title, e.g. 'Grow Acme — AI devtools conversations'
keywordsYesSearch 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 slow', 'alternatives to X'), not the product's own marketing vocabulary or its name.
platformNoWhich 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 product's audience actually is; it is fixed once the campaign discovers its first post.
space_idNoThe 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 is still `visibility`. The user must be able to create campaigns in that space, or the call is rejected. Omit and it lands in the user's oldest space.
product_idYesProduct UUID (from search_products or create_product)
visibilityNoWho 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 user per posted reply. Reversible either way — ask the user rather than assuming.
reply_lengthNo
reply_approachNoX 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 conversation so thread readers see it — right when the goal is visibility, traffic or brand presence. 'flag' = SALES: replies tag the brand and/or founder and point them at the post's author as a lead (e.g. '@brand @founder check out what Nick is struggling with, might be something you can help with'), so the founder can step in and convert — right when the goal is signups, demos or deals. Neither style pretends the replier has used the product. With 'flag', set reply_tag_accounts.
search_contextYesOne 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 they voice, what makes the product a natural mention. This steers both discovery and the relevance gate, so a generic sentence produces generic (billed) posts.
post_visibilityNoVisibility 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 the ones the user approves. Use it whenever the user wants to review wording before real people post.
mention_accountsNoX 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_tag_accounts, not this.
reply_guidelinesNoCustom guidelines for reply drafting (defaults are built from the campaign context)
reply_style_tagsNoTone tags for drafted replies, e.g. ['helpful', 'builder-to-builder']
target_subredditsNoReddit 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 search all of Reddit. Note Reddit allows at most one posted reply per subreddit per day, so breadth beats depth here.
reply_tag_accountsNoX 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 mention_accounts, then the product's X handle. Ignored with 'mention' (the result warns).
target_youtube_channelsNoYouTube 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 keyword search. Omit for keyword search alone.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly=false/openWorld=true/destructive=false, but the description adds rich behavior: 10-credit create cost, separate 12-credit/post billing, private is reversible and free while public bills per network-posted reply, server-side REJECTION of platform-mismatched params (target_subreddits/target_youtube_channels), Reddit's one-reply-per-subreddit-per-day limit, and the ~30s background research. This is well beyond what structured fields convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very long, but front-loaded (purpose first, then BEFORE-calling prep, costs, private/public modes) and every block carries distinct information with no obvious filler. Density is high enough to justify the length, though the run-on 'BEFORE calling' sentence could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter mutation tool with no output schema, the description covers cost, defaults, prerequisites, the private/public decision, the decision_offer relay, and cross-tool dependencies (get_research, generate_posts, setup_content_space). Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 94% (baseline 3), but the description adds real semantics: keywords and search_context are the agent's to derive from the site, the mention_accounts vs reply_tag_accounts split, space_id's fallback to the oldest space, and platform being fixed after first discovery. Useful additions beyond the schema, though most field details still live in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+behavior: 'Create a Communiply discovery campaign: it continuously finds relevant social posts (by keyword) and drafts replies for them.' This clearly distinguishes it from the sibling create_content_campaign and from update_campaign/get_campaign, so an agent knows exactly what this tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use and how-to-prepare guidance: derive keywords/search_context before calling, use search_products/create_product for product_id, default to private unless the user says otherwise, ask about reply_approach on X, pick the platform the audience is on, and confirm credit cost first. It also names alternatives (generate_posts for the paid discovery step, get_research before spending), leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_content_campaignLaunch a content campaignAInspect

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.

NameRequiredDescriptionDefault
product_idYesProduct UUID from search_products
referencesNoLinks or references to include in the campaign
campaign_goalsNoCampaign goals, e.g. ["awareness", "signups"]
target_audienceNoWho the campaign should reach
campaign_messageYesThe core brief: what you want the community to create (e.g. 'Share how you use <product> in your daily workflow').
preferred_platformNoPreferred platform, e.g. "x" or "farcaster"
additional_guidelinesNoExtra do's/don'ts for creators

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the core safety profile is already clear. The description adds that the tool spends 1000 credits (a critical behavioral trait not in annotations), and auto-activates the campaign. However, it does not mention whether the action is reversible, what happens to unused credits, or if there is a confirmation step beyond user prompt. With no destructive hint, the description could more explicitly state that this is a write-only action that cannot be undone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact (4 sentences), front-loads the core purpose, and each sentence adds distinct value: what the tool does, credit cost, automation behavior, prerequisites, and usage steps. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters (2 required), no output schema, and moderate complexity, the description covers the core workflow (prerequisite, preview, cost, activation). It is complete enough for an agent to use correctly. Minor gap: it does not mention what happens after activation (e.g., how to track results), but the description 'community submissions and winner selection happen in ProductClank web app' provides sufficient closure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds that campaign_message is a 'core brief' and that the AI expands the brief, but does not explain how other parameters like references or additional_guidelines interact. It does not add syntax or domain-specific details beyond what the schema already provides. Overall, the description adds marginal value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('launch') and resource ('content campaign'), and specifies the unique scope: rallying a community to create content (posts, threads, videos). It differentiates from siblings like suggest_content_campaign (preview) and boost_post (separate action), and explicitly mentions the required product_id from search_products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends using suggest_content_campaign for preview first and confirms the 1000-credit cost before calling. It also states the need for a product_id from search_products. However, it does not explicitly state when not to use this tool or compare to other siblings like write_content_candidates, which could be an alternative for creating content.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_productList a product on ProductClankAInspect

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.

NameRequiredDescriptionDefault
urlNoProduct website URL — auto-fills the listing. Provide this or `name`.
logoNoLogo image URL (optional; otherwise auto-resolved from the site).
nameNoProduct name. Optional if `url` is given (extracted from the site); required otherwise.
taglineNoOne-line value proposition (optional; overrides extracted).
twitterNoX/Twitter handle or profile URL (optional).
websiteNoCanonical website, if different from `url` (optional).
categoryNoCategory tags (optional).
descriptionNoShort description of what the product does (optional).

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds significant behavioral context: it is free ('FREE — no credits charged'), it auto-fills fields from the URL with override behavior, it deduplicates ('reuses an existing listing... rather than duplicating'), and it returns the product id. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (few sentences), front-loaded with the core purpose, and each sentence adds unique value. No redundancy. It efficiently covers purpose, usage, behavior, and parameters without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, no output schema, but 100% schema coverage), the description covers all crucial aspects: what it does, when to use it, the auto-fill mechanism, dedup behavior, free nature, and return value (product id). It also warns about confirming with the user. No gaps remain for effective invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with 8 parameters all described. The description goes beyond by stating that 'At minimum pass a url' and that 'the server auto-fills the name, tagline, description, logo, and X handle from the site; any field you pass explicitly overrides what's extracted.' This adds semantics about parameter relationships and defaults that are not in the schema, making it highly informative.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('List a new product on ProductClank') and its key characteristic ('token-free listing'). It also distinguishes itself from the sibling tool 'search_products' by specifying the use case ('when search_products finds no existing match'). The verb 'list' combined with the resource and context makes the purpose explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: '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.' It also instructs the agent to 'Confirm the product details with the user before calling,' giving a clear prerequisite. This effectively contrasts with siblings like 'boost_post' (which requires an existing product).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_watch_quizCreate a watch quiz for a videoAInspect

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

NameRequiredDescriptionDefault
questionsYes1–20 questions with their answers. Each viewer draws one. Get them from the user — you cannot watch the video.
video_urlYesThe video viewers must watch.
product_idNoOptional product UUID (from search_products) to name the quiz after.
max_answersNoPeople who may answer before the quiz closes to new viewers (default 20). Worst case = all of them right = 2,000 credits.
duration_secNoVideo length in seconds, or "m:ss". Omit to read it from the TikTok / YouTube page; other platforms need it.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false, openWorldHint=true, destructiveHint=false. The description goes far beyond: public visibility, exactly 24-hour lifetime, retry-once behavior, the credit cost model (100 credits per correct answer, paid for 24h, capped by max_answers), a 100-credit balance prerequisite, and a compliance warning that paid watch time may count as artificial engagement. This is exactly the behavioral context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the value proposition and mechanics, then cost, then the pre-call checklist, then the sibling routing note. Dense but every clause is functional; the only mild cost is length in a single paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers cost, duration, visibility, prerequisites, retry semantics, failure/bypass guidance (suggest_quiz_questions), and a user disclosure note. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so baseline is 3. The description adds real value on top: it explains the max_answers spend arithmetic, that duration_sec can be omitted for TikTok/YouTube but is required elsewhere, and that questions must come from the user since the agent cannot watch the video.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a watch quiz') plus the exact mechanics: viewers watch full length, answer one counting question, right answer earns points, wrong first answer gets a retry. It also distinguishes itself from the sibling boost_post's embedded watch_quiz, so an agent can route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit pre-call checklist: '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.' It also names the alternative ('To add a quiz to a boost of the same video, use boost_post's watch_quiz instead'), so both when-to-use and when-not are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

credit_historyCredit transaction historyA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoDefault 20
offsetNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description accurately states read-only behavior, which matches the readOnlyhint annotation, and adds useful behavioral details beyond it: free, newest-first ordering, types of transactions included, and the fact that in-connector top-ups are unavailable. It does not contradict the annotations, but it also does not go deep into response shape or edge behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, purposeful sentences, each doing useful work: one states what the tool is, one states its intended use, and one gives the key out-of-band transaction steps. The description is front-loaded with the primary identity and does not waste words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the two self-describing optional params and the very helpful readOnlyhint annotation, the description covers the main things an agent needs: what data it affects, why to call it, and the external fallback to a purchase URL. It does not go into output shape, but because there is no output schema, listing transaction categories and order is reasonably complete for this simple history tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The two params are optional limit and offset, whose names are fairly self-descriptive. The schema documents the limit default and bounds, leaving offset semantics implicit. The description's 'newest first' adds context for reading the list but does not explain pagination, so the description adds only marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this returns the connected user's credit transactions (purchases, campaign spend, participation rewards), newest first. It is specific about the resource and ordering, and it is easy to tell apart from siblings like check_balance, though it does not explicitly name an alternative tool for the same purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says to use it to account for spent or earned credits, which gives a clear intended use case. It also tells the caller that top-ups are not available in-connector, routing users to an external purchase URL when balance runs low. It does not explicitly address when check_balance should be used instead, but the usage guidance is still reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_replyEdit a reply draftAInspect

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.

NameRequiredDescriptionDefault
reply_idYesReply id from get_posts
reply_textYesThe full replacement text
campaign_idYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses an important refusal condition (already_claimed), platform character limits, and that the edit becomes what gets posted. It does not address errors or persistence details, but the main behavioral risks are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loads the core action, and every sentence carries distinct information: what it edits, when to use it, and constraints/refusals. No filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter mutation tool with minimal annotations and no output schema, the description supplies enough context to invoke it correctly, including a key failure condition and length limits. The only minor gap is that campaign_id is not explained, but this is shared campaign context rather than tool-specific behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With two of three parameters described in the schema, the description adds meaning by tying reply_id to get_posts, framing reply_text as a full replacement, and adding X/other character limits. The campaign_id parameter remains undocumented, but the context is mostly recoverable from the campaign workflow.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Rewrite the text of ONE reply draft') and clarifies scope with 'before the community posts it' and 'exact reply a creator will claim.' This distinguishes it from generation/publishing siblings without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it when the user wants different wording on a specific draft from get_posts' states the triggering condition explicitly, and 'Refuses a reply a creator has already claimed ... edit before you publish' provides a clear when-not-to-use constraint. This gives an agent actionable routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_open_campaignsFind campaigns to participate inA
Read-only
Inspect

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). Items with participation 'human_only' are WATCH QUIZZES: the user watches a video to the end and answers one question on the quiz page (points, sometimes $PRO, for a right answer). Offer them to the user with watch_quiz.quiz_url and watch_quiz.how_to_participate — the user does them, you never submit them. Free, read-only. Follow with get_campaign_brief before doing any work.

NameRequiredDescriptionDefault
kindNoFilter by campaign kind
limitNoDefault 25

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with 'Free, read-only' plus rich behavioral detail the annotations cannot carry: the two kind categories, what 'human_only' participation means, reward availability, and the crucial constraint that the user performs watch quizzes and the agent never submits them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool discovers, then the item taxonomy, then the quiz handling, then the follow-up step. Dense but every sentence carries operational information; it is slightly long, costing it the top mark.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description bears responsibility for return-value context, and it does describe item shape (kind field, participation value, watch_quiz.quiz_url / how_to_participate). It omits pagination/limit behavior, but nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with only two params, so baseline is 3. The description goes beyond the schema's terse 'Filter by campaign kind' by defining the semantics of each enum value ('content' = create a post/thread/video, 'take_action' = concrete action with proof), adding real meaning for the filter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find/discover) and a precise resource scope: every active public campaign plus campaigns from communities the user belongs to. Distinguishes itself from creation siblings (create_campaign, create_content_campaign) and single-campaign reads (get_campaign) by describing discovery for the connected user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear workflow context ('Follow with get_campaign_brief before doing any work') and prescribes the exact handoff for watch quizzes via watch_quiz.quiz_url. However, it never names the sibling it is not (e.g. list_campaigns) or states when not to use it, so the routing guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_opportunitiesFind earning opportunitiesA
Read-only
Inspect

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: the user picks an opportunity → call hold_opportunity on it (a 10-minute hold so no one else posts the same draft; one hold at a time) → the user edits and approves the text and posts it from their own account → call submit_participation with the URL of what they posted. Drafts other members are holding are not listed; the user's own live hold carries heldUntil. 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/feed).

NameRequiredDescriptionDefault
limitNoDefault 25
offsetNo
campaign_idNoRestrict to one campaign

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover readOnlyHint and openWorldHint; the description adds substantial context beyond them: the listing excludes drafts held by other members, the user's own live hold carries `heldUntil`, holds are exclusive and single-slot, and the user must have that platform's handle linked on their profile for attribution. These are exactly the operational constraints an agent needs and none are in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph, but it is front-loaded: what the tool returns comes first, then the workflow, then the caveats. The actionType and flow sentences are long but each carries unique information; only the platform list (X, Reddit, YouTube, LinkedIn) is marginally expendable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by describing the shape of each returned item (post + draft text + platform + actionType) and the heldUntil field. Combined with the workflow and eligibility caveats, an agent has everything needed to call this and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% — `limit` and `campaign_id` are documented, `offset` is not. The description never mentions limit, offset, or campaign_id, so it adds no meaning beyond the schema. Baseline 3 applies since the schema does most of the work, but the undocumented pagination parameter is left entirely to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Browse unclaimed drafts from active campaigns the connected user can earn from') and then defines exactly what an item contains: a real social post, pre-drafted text, `platform`, and `actionType` with both enum values explained. This is clearly distinguishable from siblings like find_open_campaigns (campaigns, not drafts) and get_posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit end-to-end flow naming the sibling tools and their trigger conditions: pick an opportunity → hold_opportunity (10-minute hold, one at a time) → post → submit_participation with the URL. It also states an exclusion — likes and reposts are proved by screenshot and stay in the web app — which routes the agent away from this tool for those cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_postsDiscover posts & draft repliesAInspect

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.

NameRequiredDescriptionDefault
campaign_idYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations confirm side effects (readOnlyHint=false) and open-world interaction, but the description enriches this with concrete behavioral specifics: 12 credits per post, typical 5–20 posts, a few minutes duration, and the need to confirm the cost with the user. These are genuinely useful and not present in structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight sentences that front-load the core operation, then give the critical cost and workflow details. No sentence is wasted, and the length matches the needed complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-changing, cost-incurring tool with no output schema, the description covers the full critical path: what it does, cost, time, user confirmation, and which sibling tools to use for reading and pruning results. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema lists only campaign_id with zero description coverage. The description's phrase 'the campaign's discovery pipeline' implies campaign_id identifies which campaign to use, but it does not explain the parameter further, its expected format, or where to obtain it. Some meaning is added, but at 0% schema coverage the description could compensate more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs the campaign's discovery pipeline, scrapes social platforms for matching posts, and drafts community replies. This gives a specific resource and action that distinguishes it from later reading (get_posts) and pruning (review_posts), even though it does not explicitly name alternative discovery tools like find_opportunities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent to check_balance first, confirm the spend with the user, and then follow with get_posts and review_posts. This is clear contextual guidance on prerequisites and follow-up actions, but it does not explicitly state when not to use the tool or compare with alternate discovery/research tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_campaignGet campaign details & statsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
campaign_idYesCampaign UUID (from list_campaigns or create_campaign)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only and closed-world, so the description's added value is the cost disclosure ('Free') and the return content (posts discovered, replies by status) — real behavioral context an agent can act on. It does not mention auth requirements or pagination/limits, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what is returned and ends with the when-to-use cue, with no filler sentences. The parenthetical enumeration of reply settings is dense and slightly run-on, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-read tool with annotations covering safety and no output schema, the description adequately summarizes both config and stats payloads and the workflow position. Additional detail on stat formats or failure modes would round it out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema description coverage; the schema already states campaign_id is a UUID from list_campaigns or create_campaign. The description adds no extra syntax or sourcing detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (one campaign) and enumerates the configuration surfaces returned (keywords, search context, reply settings, reply_approach, reply_tag_accounts) plus live stats. This clearly separates it from list_campaigns, get_campaign_results, and get_campaign_activity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggering contexts: 'after generate_posts' and 'before adjusting the campaign', and labels the call as free. It stops short of naming an explicit alternative or when-not-to-use condition, so it is strong context rather than full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_campaign_activityWhat's new on a campaignA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoItems per list, default 20
sinceNoISO 8601 timestamp — the `checked_at` returned by the previous call. Default: 24 hours ago.
campaign_idYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true and openWorldHint=false, but the description adds meaningful behavior: 'Free, and it never scrapes — safe to call at the start of every session.' It also discloses the default time window (last 24 hours) and the incremental behavior via `since`. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose first, then safety/usability, then usage pattern. Every sentence earns its place with no fluff. The most critical info (incremental cursor) is front-loaded with `since`. Perfectly structured for quick agent scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param tool with no output schema, the description gives a clear overview of return content (posts, replies, links, engagement), usage scope (across chats), and a pointer to the cumulative sibling. Combined with readOnlyHint, an agent has everything needed to call it correctly and integrate it into a multi-step workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 2 of 3 parameters (67%), but the description enriches `since` significantly by tying it to the previous call's `checked_at` and explaining omit behavior. The missing campaign_id is self-evident. Since the description compensates for the gap and adds real semantic depth, it earns a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Catch up on a campaign since the last check' and enumerates the exact return content (posts, replies, LIVE links, engagement). It clearly distinguishes from siblings like get_campaign_results by naming it explicitly for cumulative data, making purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use this to resume a standing growth operation across chats, then get_campaign_results for the cumulative picture. Also advises calling at the start of every session and explains how to use `since` for incremental checks. Clear when/why and points to an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_campaign_briefRead a campaign's participation briefA
Read-only
Inspect

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. Exception — participation 'human_only' (a watch quiz): give the user watch_quiz.quiz_url and the steps; they watch and answer on that page, and there is nothing to submit. watch_quiz.my_status says if they already started or answered.

NameRequiredDescriptionDefault
campaign_idYesCampaign id from find_open_campaigns

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description corroborates with 'Free, read-only' rather than contradicting. Beyond the annotations it adds meaningful context: external instruction files that should be fetched and followed, and the human_only participation branch with its own verification status field. It does not cover error/pagination behavior, but for a read tool with annotation coverage this is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly with what the brief contains, but the back half drifts into instructions for sibling tools (submit_campaign_work, watch_quiz.my_status) that arguably belong in those definitions. The exception clause is valuable yet verbose relative to a single-parameter read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain return content, and it does so thoroughly – action message, brief sections, judging criteria, rewards, deadline, and remaining submission count. It also covers the branching participation modes, leaving no material gap for calling the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single required parameter with 100% schema description coverage ('Campaign id from find_open_campaigns'), so the schema already carries the semantics. The description implies but does not restate the id requirement or its provenance, so this sits at the baseline for a fully documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (the full participation brief for one campaign) and enumerates its contents: action message, brief sections, content types, eligibility/selection criteria, rewards, deadline, remaining submissions. An agent can distinguish this from get_campaign or list_campaigns directly from the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Prescribes the full downstream workflow: fetch and follow external instructions, create content WITH the user, then call submit_campaign_work with proof. It also names the exception path (human_only → hand the user watch_quiz.quiz_url and steps) and explicitly states nothing is submitted in that case, so the agent knows when not to use the normal flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_campaign_resultsCampaign results & cost per usable replyA
Read-only
Inspect

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?'.

NameRequiredDescriptionDefault
campaign_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the description is not required to repeat safety. It adds value by disclosing that the tool is free and never scrapes, and that it costs nothing to poll, which informs an agent about rate-limit or cost implications. This goes beyond the annotations and provides useful behavioral context without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is thorough and well-structured, front-loading the funnel details and then the cost/usability question. It is slightly verbose but every sentence adds meaningful information—the funnel stages, metrics, cost breakdown, and usage context. It does not waste words on redundancy, so it earns a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only reporting tool with a single parameter and no output schema, the description is quite complete. It enumerates all the data points the agent can expect, explains the cost model, and gives a usage scenario. The only missing piece is an explicit statement about the required campaign_id parameter and its format, but the rest is sufficient for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (the schema has no descriptions for parameters), and the description does not mention the campaign_id parameter at all. Although the parameter is self-explanatory from its name, the description fails to compensate for the lack of schema documentation. The agent would have to infer that campaign_id refers to the target campaign ID, which is a gap given the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool does: it returns a cumulative scorecard for a campaign, enumerating the full funnel and metrics (approval rate, survival, engagement, credits spent, cost per usable reply). This is a specific verb+resource and is clearly distinct from the sibling tools, despite not naming them directly. The phrase 'unlike the web report' hints at an alternative without explicit differentiation, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use case: 'Use it to answer "is this working and what am I paying for it?"' which guides when to call it. It also contrasts with the web report for cost and scraping behavior. However, it does not explicitly state when not to use it or name specific sibling alternatives, so it lacks explicit exclusions but is still helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_content_campaign_resultsContent campaign resultsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoSubmissions per page (default 50)
offsetNoPagination offset
statusNoOnly return submissions in this review state
campaign_idYesCampaign UUID or public campaign number from create_content_campaign

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, but the description adds real behavioral context: 'free' (no cost), safe to poll, and the transient 'processing' state with zero submissions immediately after launch. That post-launch state guidance is the kind of trait annotations cannot express, though return shape/pagination semantics are not covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool produces, then the safety/cost note, then the interpretive caveat about 'processing', and finally accepted identifier forms. Four sentences, each carrying distinct information with no wasted phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields (submission counts, live links, review states, winners), and it covers the 4-parameter surface via 100% schema coverage. An agent has enough to call it correctly and interpret a fresh-campaign result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, status, and campaign_id are already fully documented in the schema. The description's note that it accepts a UUID or public campaign number largely duplicates the campaign_id schema text and adds no syntax or format detail the schema lacks; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource and enumerates exactly what it returns (submission counts, live content links, approval/rejection state, winners), which is more than the name or title conveys. It also distinguishes itself from the sibling get_campaign_results by anchoring to 'content campaign' and tying to create_content_campaign.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: use it to close the loop on create_content_campaign, it is safe to poll, and the 'processing' + zero-submissions state right after launch is expected rather than a failure. It does not explicitly state when not to use it or name a competing sibling to route to, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_content_queueRead the content queue with scoresA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNo
statusNo
space_idYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds useful behavioral context beyond annotations: the tool is FREE, and it explains what each status value means including the default 'active'. It does not mention pagination or empty-queue behavior, but this is minor given the read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and return contents, then usage contexts, then status semantics. It is somewhat long but every sentence adds value; the status enumeration is informative rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no output schema, the description covers the main return fields, intended use cases, cost implication (FREE), and status semantics. Missing details like default limit, ordering, or how to interpret verdict are not critical but would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

schema_description_coverage is 0%, so the description must compensate. It does a good job explaining the 'status' parameter, including the default and each enum value's meaning. However, it does not explain the 'limit' parameter's semantics or default behavior, and 'space_id' is left entirely to its name and the schema's required marker.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: reading the space's content queue, and enumerates the returned fields (text, platform, status, reviewer score/verdict/fix). It also differentiates itself from siblings by framing this as the user-facing 'All Content' view and explicitly connecting to write_content_candidates, making its role distinct from other getters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use it: to present drafts for approval one by one and to read back scores after write_content_candidates. It does not provide when-not-to-use guidance or name alternative tools, so it stops short of the top tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_content_workspaceRead a brand's content calibrationA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
space_idYesThe space (from list_content_spaces, or any Amplify space the user owns).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses that the tool is FREE, lists the content of the workspace, and explains the meaning of enabled:false—that the space has no content engine yet. This gives the agent actionable behavioral knowledge about how to interpret the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler: it front-loads the return contents, then adds the FREE signal and usage guidance, then the key enabled:false branch. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with no output schema, the description is complete: it tells the agent what data will come back, when to retrieve it, and how to interpret the critical enabled flag. No essential behavior is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter space_id is already documented as coming from list_content_spaces or any Amplify space the user owns. The description adds context about the workspace contents but does not need to add parameter-level detail. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by naming exactly what the tool returns: the brand's voice, platforms, post types, playbook, review threshold, topic inventory, and style guides for one content space. This clearly distinguishes it from siblings like list_content_spaces (listing spaces) and setup_content_space (creating/updating a space).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to read this BEFORE writing any draft and at the start of any content conversation. It also provides a conditional follow-up: if enabled:false, offer setup_content_space, which tells the agent when not to proceed with writing and what sibling to invoke instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_earningsCheck participation earningsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint=true annotation, the description adds 'Free' and explicitly repeats 'read-only' with the phrase 'Free, read-only.' It also clarifies scope (connected user, work submitted via this connector) and the exact data categories returned. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence is front-loaded with the main deliverable ('participation totals') followed by a compact list of the exact data elements. Every phrase earns its place — no filler, no repetition of the title beyond the core verb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple 0-parameter read-only operation with no output schema. The description fully covers purpose, scope, return contents, cost, and safety. Nothing an agent needs to decide when to call it and what it will receive is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100% with no required fields, so the description carries no burden on parameter semantics. The baseline of 4 applies because no parameters need clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb-plus-resource pattern: it returns 'the connected user's participation totals' and enumerates exactly what's included (points, credit balance, reply stats with statuses). It also scopes the data to 'work submitted through this connector,' which distinguishes it from sibling tools like check_balance or credit_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: when you need the connected user's participation totals and reply stats. It doesn't explicitly name alternatives or state exclusions, but the specificity of 'participation... submitted through this connector' implies the intended use case well enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_growth_suggestionsGet today's posts to reply toA
Read-only
Inspect

The user's growth assistant: posts found in the last 3 days on their topics that still wait for a reply, each with a draft reply in their voice, plus the assistant settings. Free, read-only. Each suggestion carries engagement { likes, comments, reposts, views } and kind: busy (many comments: a bigger audience, the reply sits lower), early (few comments: the author reads you) or regular. Show each post briefly (author, likes and comments, kind, post, link, draft) and help the user edit the draft; they post it from their own account. If they want more busy threads or more early posts, set mix with setup_growth_assistant. If there are no assistants, offer setup_growth_assistant.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description's 'Free, read-only' is consistent with them. It goes beyond the annotations by explaining what each suggestion contains (engagement counts, draft reply in the user's voice) and defining the `kind` categories (busy/early/regular) with their practical implications. It stops short of covering volume or pagination behavior, so a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core identity ('the user's growth assistant: posts... that still wait for a reply') before secondary detail. The parenthetical explanations of busy vs. early add real value but make the middle dense; each sentence still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the burden of describing returns — and it does, listing the fields (author, likes, comments, kind, post, link, draft) plus the engagement object shape. Only the number of suggestions returned and any pagination limits are left unstated, a minor gap for this kind of daily-digest tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero input parameters, so there is nothing to disambiguate and the baseline is 4. The only parameter-like term mentioned, `mix`, belongs to the sibling setup_growth_assistant and is correctly attributed there rather than misrepresented as an input here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with precise scope: posts from the last 3 days on the user's topics that still lack a reply, each bundled with a draft reply and assistant settings. An agent can distinguish it from siblings like get_posts, edit_reply, or regenerate_replies without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative explicitly and the conditions that select it: if the user wants more busy threads or more early posts, use setup_growth_assistant with `mix`; if no assistants exist, offer setup_growth_assistant. It also states the follow-on action (help edit the draft; the user posts from their own account), so the agent knows what happens next.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_submissionsCheck campaign submission statusA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
campaign_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description complements the readOnlyHint annotation by adding 'read-only' and 'free', and by disclosing the returned statuses and reviewer notes. It does not exhaustively describe edge cases, but for a read-only status lookup the behavioral transparency is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first front-loads the exact resource and output content, the second adds the usage context. There is no redundant boilerplate, and the most important information appears early.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the purpose, result content, read-only nature, and the recommended call flow after submit_campaign_work. Since there is no output schema, a slightly more explicit return-shape description would help, but for a low-complexity read-only tool this is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only provides a required string parameter with no description (0% coverage). The phrase 'to one campaign' indirectly clarifies that campaign_id identifies the campaign, but the description does not explicitly map the parameter or explain where the identifier comes from, so it only partially compensates for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('connected user's submissions') and scope ('to one campaign') and enumerates exactly what the tool returns: pending / approved / rejected states plus reviewer's notes. This is enough to distinguish it from siblings like get_campaign or list_campaigns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit trigger: 'Use to report outcomes back to the user after submit_campaign_work.' This is clear and actionable, though it does not explicitly name alternatives or conditions when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_postsRead discovered posts & reply draftsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoDefault 50
offsetNo
statusNo
campaign_idYes
include_repliesNoDefault true

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers safety; description reinforces with 'Read' and adds that it is 'Free'. It does not disclose return format or pagination behavior, but these are less critical given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise two-sentence summary that front-loads the object of the operation and immediately supplies workflow context. Every sentence serves a distinct purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool, the description plus schema is mostly usable, but with no output schema and low parameter documentation, it leaves the agent to infer details about status filtering, pagination, and exactly what the response contains. It is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40%, and the description adds no parameter-level detail. It implies campaign_id ('a campaign's') and posts, but limit, offset, status, and include_replies are not explained beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states a read operation on 'a campaign's discovered posts with their drafted replies', making the resource and purpose unambiguous. It differentiates from siblings by naming generate_posts, review_posts, and regenerate_replies in a workflow, so an agent can immediately see this is the inspection step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance says to use this after generate_posts and before review_posts/regenerate_replies. This establishes a clear place in the workflow, though it does not mention alternatives like get_research or list_campaigns when campaign context is unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_researchRead cached campaign researchA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
campaign_idYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description adds meaningful behavioral details: it is free of charge, and it reports which findings are actually applied (expanded keywords/exclusion terms always active, others dormant until enabled). This provides operational nuance that annotations alone do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no filler. The main purpose is front-loaded, and additional behavioral nuances are efficiently appended. Every sentence contributes valuable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no output schema), but the description fully explains what it returns (cached analysis), how the findings are interpreted (active vs dormant), and how to influence them (via update_campaign). It also notes the free cost, covering all needed context for an agent to decide and call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the burden for the 'campaign_id' parameter. It mentions 'for a campaign' but does not elaborate on the ID's format, source, or relationship to other campaign tools. This is minimal compensation, though acceptable for a simple identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads cached research ('Read the cached topic/competitor analysis for a campaign'), specifying the resource and linking it to a specific source ('from run_research'). It distinguishes itself from sibling tools like get_campaign and run_research by narrowing the scope to cached analysis results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it should be used after run_research has been called, and explicitly mentions update_campaign as the way to enable dormant findings. However, it does not explicitly name alternatives or state when not to use this tool, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scout_dealsGet my scout dealsA
Read-only
Inspect

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 is not a scout (403 not_a_scout / scout_not_approved), relay the message: they apply at https://www.productclank.com/scouts.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint annotation: discloses the 12h exclusive-match window before a deal opens to all scouts, the exact error codes (403 not_a_scout / scout_not_approved) and the corrective action with the signup URL, and confirms the tool is free. This is unusually rich behavioral context for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with audience and payload, then trigger, then behavioral caveats, then failure handling. Every sentence carries distinct information; nothing is repeated from the schema or annotations except the harmless 'read-only' confirmation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of describing return values and does so item by item (post, why it fits, drafted opener, status, links). Audience gating and error recovery are also covered, so an agent can call and handle this tool without further information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing to disambiguate; the description instead enumerates what each returned deal contains, which is the useful semantic detail here. Baseline 4 applies for a zero-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('get scout deals') plus the exact payload: today's founder post picks with post, fit rationale, drafted opener, status and links. This is clearly distinguishable from siblings like find_open_campaigns or get_my_submissions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use it when the user asks what deals do you have for me?') and prescribes the response behavior (show each deal briefly, let the user pick). It does not name the natural follow-on tools such as claim_deal or release_deal, so the user is left to infer the next step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scout_earningsGet my scout earningsA
Read-only
Inspect

The scout's pipeline by stage, commissions earned from their deals, and their rank in this month's top-scouts pool. Free, read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; 'read-only' merely repeats the annotation. The one genuinely new trait is 'Free,' which tells the agent there is no credit cost to calling it. Otherwise the description discloses nothing about freshness, pagination, or per-scout scoping.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the returned content front-loaded and the cost/permission note last. No filler, no restatement of the name, nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns, and it enumerates the three main payload areas (pipeline by stage, commissions, monthly rank), which is enough for an agent to know what it will get. Minor gaps remain, such as the time window for commissions and whether the pipeline is stage-aggregated or itemized.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies. The description correctly implies no inputs are needed and identifies the subject as the calling scout's own data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the concrete payload — scout pipeline by stage, commissions from their deals, and monthly top-scouts rank — so an agent knows what this returns. It does not, however, distinguish itself from adjacent siblings such as get_earnings or get_scout_deals, which could cover overlapping ground. Clear resource, but no sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage-relevant statement is 'Free, read-only,' which signals a zero-cost, no-side-effect call but not when to choose this over get_earnings, get_scout_deals, or credit_history. There is no explicit when/when-not or alternative routing. This is a cost/permission note rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_support_statusCheck support ticketsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoDefault 20 (list mode).
ticket_idNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, but the description adds meaningful behavior: it explains the mode-dependent return (recent tickets vs full conversation), hints at a return field ('has_reply:true'), and states the operation is free. It does not cover rate limits or pagination behavior, but the added context is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, then mode behavior, then cost/read-only note, then usage timing. Every sentence adds distinct information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two parameters and no output schema, the description covers purpose, usage trigger, mode behavior, cost, and one return-field hint. It could say more about the full return shape, but given the schema already documents limit and no output schema exists, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, with ticket_id having no schema description. The description compensates by explaining exactly what ticket_id does: with it returns the full conversation, without it returns recent tickets. The limit parameter is already documented in the schema (default 20, list mode), so the description reasonably focuses on the undocumented parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and resource ('status of issues you reported ... and ProductClank's replies'). It explicitly names the sibling tool report_issue as the source of those issues, so an agent can distinguish this read tool from the reporting tool without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage trigger: 'Check at the start of a session if you reported something earlier.' It also distinguishes the two modes (without ticket_id vs with ticket_id) and notes the cost is free. It lacks an explicit when-not or a full list of alternatives, but the context is well-specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watch_quiz_resultsGet watch-quiz resultsA
Read-only
Inspect

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

NameRequiredDescriptionDefault
quiz_idYesThe quiz id from create_watch_quiz (or boost_post's watch_quiz.campaign_id).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with 'Free, read-only.' More valuably, it discloses data semantics beyond the annotations: what the paused state means depending on remaining credits and how to interpret a widely-missed question. It stops short of stating pagination or permission requirements, but adds genuine behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the results contain before the interpretive notes. The metric enumeration earns its place given there is no output schema, though the closing interpretation sentences are somewhat loosely appended rather than tightly organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing return content and does so thoroughly: state (live/paused/ended), started/answered/correct/out-of-tries/second-try counts, per-question performance, and credits billed. For a single-quiz read-only tool this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the sole quiz_id parameter is fully documented in the schema, including its source (create_watch_quiz / boost_post's watch_quiz.campaign_id). The description adds no additional parameter semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: 'Results of one of the user's watch quizzes,' and clarifies the quiz may originate here, in the web app, or on a boost, which routes the agent relative to create_watch_quiz and boost_post. An agent can distinguish this from get_campaign_results without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear retrieval context and interpretive guidance ('a question most viewers miss is usually ambiguous — say so'; 'paused with credits left means the user paused it; otherwise the balance ran out'). It does not explicitly contrast with the sibling results tools (get_campaign_results, get_content_campaign_results), so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hold_opportunityHold a draft while the user posts itA
Idempotent
Inspect

Hold one draft from find_opportunities for the connected user for 10 minutes, so no other member posts the same reply. Call it when the user has PICKED a draft and is about to post — not to reserve work for later. Returns the draft text and held_until. One hold at a time: if the user already holds another draft, this fails with too_many_holds — submit that one (submit_participation) or release it (release_opportunity) first. Calling it again on the same draft restarts the 10 minutes. already_reserved means another member holds it or it was just claimed: offer another draft. Free. Never post for the user: they edit, approve and post it from their own account.

NameRequiredDescriptionDefault
reply_idYesThe draft's id from find_opportunities

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic safety profile; the description adds the real behavior: 10-minute TTL, single-hold constraint, named failure modes (too_many_holds, already_reserved) with the correct agent response for each, timer restart on re-call, and the fact that posting is never done on the user's behalf. The re-call/restart nuance is consistent with idempotentHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and timing, then sequences usage rule, return values, failure modes, and the no-auto-post constraint. Dense but every sentence carries operational information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still names the return payload (draft text and held_until), and it covers the error paths an agent must handle plus the cost ('Free'). For a one-parameter reservation tool this is complete enough to call correctly without further discovery.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents 'The draft's id from find_opportunities', so the description's mention of the same source is largely duplicative. Nothing about id format or sourcing is added beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Hold one draft from find_opportunities') plus scope: 10 minutes, connected user, one hold at a time. It is clearly distinguishable from siblings release_opportunity and submit_participation, which are named as the counterpart actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when ('user has PICKED a draft and is about to post') and an explicit when-not ('not to reserve work for later'). It also routes to alternatives by name: find_opportunities to get the draft, submit_participation or release_opportunity to clear an existing hold.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_tiktok_campaignLaunch a full TikTok campaignAInspect

One call for a full TikTok push on ONE video: 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. Every size is adjustable: likes_count (1–300, default 30), replies (0–10, default 10), quiz_answers (how many people may answer, 0–1000, default 10). When the user asks for more likes or a bigger quiz, set those — do not cap them at the defaults. Price: likes 10 credits each (30 = 300, 100 = 1,000), 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, 50 = up to 5,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.

NameRequiredDescriptionDefault
likesNoInclude the likes boost. Default true. Size it with likes_count.
repliesNoCommunity replies (AI-drafted comments), 0–10. 20 credits each. Default 10. 0 = no replies boost.
confirmedNoSet true only after the user approved the plan and its credit totals. Omit to get the free plan.
post_textNoOptional — the video caption, if known. Skips the wait on a TikTok posted under a minute ago.
video_urlYesThe TikTok video URL (tiktok.com or vm.tiktok.com short link).
product_idNoOptional product UUID (from search_products) to tailor the replies and name the quiz.
likes_countNoHow many likes, 1–300. 10 credits each. Default 30 (300 credits).
quiz_answersNoWatch quiz size: how many people may answer, 0–1000. Billed 100 credits per CORRECT answer only. Default 10. 0 = no quiz.
quiz_questionsNoCounting questions with whole-number answers, confirmed by the user. Omit and the confirmed call suggests them first (40 credits).
reply_guidelinesNoOptional tone and content guidance for the replies.
quiz_duration_secNoVideo length in seconds, or "m:ss". Omit to read it from the TikTok / YouTube page; other platforms need it.
spread_over_hoursNoOptional — pace each boost over this many hours instead of all at once. Same price.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the mutation/open-world safety profile; the description adds substantial context beyond them: up-front billing, per-correct-answer quiz charging, the free-plan-then-confirmed two-step flow, the quiz-question suggestion fallback, and a partial-failure/duplicate warning. This is exactly the behavioral disclosure annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but front-loaded: purpose, then when-to-use, then sizing/pricing, then a numbered FLOW. Every sentence carries operational weight (pricing math, flow steps, failure handling) and nothing is redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 12-parameter mutating tool with no output schema, the description covers purpose, alternatives, sizing, pricing, the confirmed-call flow, and failure recovery. An agent has everything needed to call it correctly across the multi-step sequence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents ranges, defaults, and credits; baseline would be 3. The description adds actionable meaning beyond the schema, notably the instruction not to cap likes_count/quiz_answers at defaults when the user asks for more, plus pricing tie-ins.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with precise scope: 'One call for a full TikTok push on ONE video' bundling likes + replies + quiz. It explicitly distinguishes itself from boost_post and create_watch_quiz, so an agent can tell exactly what this tool does versus its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger language ('full', 'full blown', 'complete', 'combo', or likes + replies + quiz together) and names the alternative path it replaces ('instead of calling boost_post and create_watch_quiz one by one'). When-to-use is unambiguous and the substitution condition is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaignsList the user's campaignsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoDefault 20
offsetNo
statusNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only, and the description adds useful behavioral context: results are newest first, the list includes campaigns created outside this connector, and the tool is free to use. There is no contradiction with the readOnlyHint annotation. It does not mention pagination, but that is a minor gap for a read-only listing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and efficient: a single clear sentence defines scope and ordering, followed by a short workflow note and a one-word cost indicator. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with no required parameters and no output schema, the description provides enough context to use it correctly: what it lists, in what order, and why. It could clarify how limit, offset, and status combine or what the response looks like, but those are inferable and largely covered by the schema's enum and default values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, and the description does not explain limit, offset, or status. It implies unfiltered 'ALL' behavior and ordering, but leaves parameter semantics to the schema. Since coverage is low, the description needed to compensate and did not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists ALL of the connected user's discovery/boost campaigns, names the ordering (newest first), and emphasizes its comprehensive scope across both the connector and ProductClank web app. It also places the tool in a workflow by saying it is used to find a campaign id before get_campaign / generate_posts / get_posts, which distinguishes it from those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly gives a concrete use case: find a campaign id before calling get_campaign, generate_posts, or get_posts. It does not explicitly state when to avoid this tool in favor of other list-like siblings such as find_open_campaigns, but the 'ALL' scope and stated workflow make the primary usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_content_spacesList content spacesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds valuable behavioral context: it lists only spaces with content engine enabled, owned/delegated/managed by the user, and the specific return schema. This goes beyond annotations, and there is no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the purpose and provides actionable guidance in a compact format. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description covers everything needed: purpose, eligibility criteria, return fields, and usage sequencing. It tells the agent to resolve the space_id for a sibling tool and confirm with the user, which is complete for this listing operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no need for the description to add parameter meaning. The input schema is empty, and schema description coverage is 100% by default. The description does not add parameter info (not needed), but it does clarify the output structure. A score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'ProductClank content spaces you can draft into', and includes specific constraints (user ownership/delegation/management, content engine turned on). It also mentions the return fields { space_id, name }, making the purpose unambiguous and distinct from sibling tools like write_content_candidates or boost_post.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to 'Call this first to resolve the space_id for write_content_candidates, and confirm the target space with the user.' This tells the agent exactly when to use this tool (as a prerequisite for write_content_candidates) and includes a user confirmation step, providing strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_content_topicsManage the topic inventoryA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
labelNoupdate: new label.
actionYes
topicsNoadd: the topics to append.
keywordsNoupdate: replacement keywords.
space_idYes
topic_idNoupdate / remove: which topic.
is_activeNoupdate: false pauses the topic.
search_contextNoupdate: new angle.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavior beyond the annotations: add is capped at 12 topics, omitted keywords are auto-proposed, update with is_active:false keeps a topic but stops using it, remove deletes it, and suggest generates KB-grounded ideas distinct from existing topics. This aligns with destructiveHint=true and enriches the agent's understanding of mutation semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description packs all five actions and their semantics into one dense paragraph without significant fluff. The 'FREE.' tag is slightly extraneous, and the long semicolon-separated sentence could be more scannable, but the content is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and a destructiveHint, the description covers the operational modes, limits, pause-versus-delete distinction, and the suggest workflow well enough for an agent to select and invoke it correctly. It does not describe response shapes or mention space_id, but required parameters are already documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high at 75%, but the description adds the missing action-to-parameter mapping: add uses topics, update uses topic_id/keywords/search_context/is_active, and remove uses topic_id. It also reveals behavior not present in the schema, such as keywords being proposed when omitted, so it meaningfully supplements the parameter definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource being managed ('the inventory of aspects a brand talks about') and enumerates five concrete actions with distinct effects. This makes the tool's purpose unambiguous and distinguishes it from sibling tools that operate on campaigns, posts, or research.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Each action is mapped to a specific use case: list reads, add appends, update edits or pauses, remove deletes, and suggest brainstorms new ideas. It even gives workflow guidance for suggest ('put them to the user, then add the keepers'). It does not explicitly state when not to use the tool or name sibling alternatives, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_postsPublish held drafts to the communityAInspect

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.

NameRequiredDescriptionDefault
allNoRelease every held post in the campaign
confirmNoRequired only when the campaign itself is still private — confirms the user agreed to community distribution and per-reply billing
post_idsNoPost ids from get_posts to release. Omit with all:true to release every held post.
campaign_idYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the sparse annotations (readOnlyHint=false, destructiveHint=false), the description discloses significant behavioral consequences: making a private campaign public, turning on per-posted-reply billing (20 credits each), and demanding confirm:true only after user agreement. It also states that future drafts remain held, which is a partial-effect nuance not implied by the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense yet every sentence carries unique value: purpose, cost, approval-step context, parameter selection, billing warning, and scope comparison. It is front-loaded with the core action and uses clear logical flow from when to use, how to pass parameters, and what to expect. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one required, three optional parameters and no output schema, the description covers all essential aspects: preconditions, parameter selection, side effects, billing, confirmation, and scope distinction. An agent reading this description has enough information to call the tool correctly and avoid common mistakes. The absence of an output schema is not a gap here because the description's focus is on invocation and side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 75%, the schema already explains most parameters. The description adds extra value by clarifying the either/or relationship between post_ids and all:true ('Pass the post_ids the user approved, or all:true.') and by reinforcing the conditional nature of confirm. It does not duplicate campaign_id directly, but the 'campaign created with post_visibility private' context effectively hints at its role. This is a meaningful boost above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'Release chosen posts (and their reply drafts) to the community earn feed.' This clearly states the action, the object, and the exact destination. It further differentiates itself from update_campaign by explicitly contrasting scope: 'Unlike update_campaign's visibility flip, this touches only the posts you name and leaves future drafts held.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use context: 'This is the approval step for a campaign created with post_visibility 'private' (held mode).' It also explains when not to use it and names the alternative: 'Unlike update_campaign's visibility flip...' The confirm:true requirement is tied to the user agreement step, so an agent knows the exact precondition for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rate_dealRate a scout dealA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
dealIdYesThe deal id from get_scout_deals.
ratingYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-destructive, idempotent write. The description goes further, disclosing the actual effect ("tunes which posts the matcher picks for this scout"), cost ("Free"), and the user-interaction requirement, which are not covered by structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with the core action front-loaded and no filler. Slightly clipped but every sentence supplies a distinct fact (action/values, cost, effect, timing).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description covers the effect of calling it, the cost, and when to trigger it, which is sufficient for a simple two-parameter rating write. Return behavior is not described, a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: dealId is documented in the schema, and rating carries an enum. The description restates the enum values ("would_send" or "would_not"), which is redundant with the schema, and adds nothing about dealId or the rating's downstream effect beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: telling ProductClank whether a scout deal was a good pick, with the two allowed values spelled out. An agent can distinguish it from sibling get_scout_deals or claim_deal, but the description doesn't explicitly contrast with those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Ask the user when they skip or finish a deal" gives a concrete trigger condition for invoking the tool. It also labels the call as "Free," but offers no explicit alternatives among the sibling tools for adjacent actions like report_deal_progress.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regenerate_repliesRegenerate reply drafts with feedbackAInspect

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.

NameRequiredDescriptionDefault
post_idsYesPost UUIDs whose replies to redraft
campaign_idYes
edit_requestYesHow the replies should change

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses important non-obvious behaviors beyond the annotations: a cost of 5 credits per reply, refusal of already-claimed replies, and the need to confirm expenditure with the user. This exceeds what readOnlyHint and destructiveHint convey, though it could additionally clarify whether existing drafts are replaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences deliver the tool's purpose, side effects, cost, eligibility constraint, and user-confirmation requirement without padding. The main action is front-loaded, and every sentence adds operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description still covers the essential behavior, cost, and refusal condition. The missing output format or return value is a minor gap because the operation's user-visible effect is clearly stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents only 'post_ids' with a description; the description adds concrete meaning for 'edit_request' via examples and clarifies 'post_ids' come from 'get_posts'. 'campaign_id' remains implicit, but the overall semantics are sufficiently enriched.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('redraft the replies'), the target resource ('replies of specific posts'), and the mechanism ('with an edit request'). It distinguishes itself from sibling tools like generate_posts, which is about creating posts, and review_posts, which is about reviewing rather than regenerating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear procedural guidance: obtain post IDs from get_posts and confirm the credit spend with the user before proceeding. It does not explicitly contrast with alternatives or state when not to use this tool, but the context is clear enough for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

release_dealRelease a scout dealA
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
dealIdYesThe deal id from get_scout_deals.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-destructive, idempotent mutation. The description adds value beyond them: the cost is 'Free', the deal returns to the shared pool, and the effect is that another scout can claim it. It doesn't cover error cases or required permissions, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no waste. The core action and its semantics are front-loaded, and 'Free' efficiently conveys cost information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema and full annotation coverage, the description supplies the missing operational context (cost, pool destination, counterparty effect). Minor gaps like failure behavior are acceptable at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single dealId parameter is already documented including its source (get_scout_deals). The description adds nothing about parameters, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (release), resource (a claimed deal), and destination (back to the shared pool). It is clearly the inverse of the sibling claim_deal, and the parenthetical clarifies what 'release' means operationally.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use trigger: 'when the user skips a deal they claimed, so another scout can take it.' This is clear context, though it doesn't explicitly name claim_deal as the complementary action or state when NOT to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

release_opportunityRelease a held draftA
Idempotent
Inspect

Release the connected user's hold on a draft they decided not to post, so other members can take it and the user can hold another. Only ever frees the user's own hold; released: false means there was no live hold of theirs on it (it lapsed or was claimed). Free.

NameRequiredDescriptionDefault
reply_idYesThe held draft's id

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it scopes the operation to the caller's own hold, explains the `released: false` case (lapsed or claimed by someone else) even though no output schema exists, and notes the tool is 'Free'. That is genuine behavioral context an agent would otherwise have to discover by trial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a short cost note, all front-loaded with the scope restriction before the edge-case semantics. Nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, the definition supplies the scope limit, the failure semantics of the returned field, and the cost. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter's description already says 'The held draft's id'. The description confirms it must be a draft the user holds, but adds no format or syntax detail, so the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Release the connected user's hold on a draft') plus the reason and consequence, so an agent can tell it apart from hold_opportunity and release_deal without opening either schema. The title is matched by a description that actually explains the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger context ('a draft they decided not to post') and states the downstream effect, which implies when to reach for it. It does not name hold_opportunity as the counterpart tool, so the routing is inferred rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_deal_progressReport scout deal progressAInspect

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.

NameRequiredDescriptionDefault
noteNoOptional private note on this step.
stageYes
dealIdYesThe deal id from get_scout_deals.
replyUrlNoRequired for 'sent': https://x.com/<user>/status/<id> of the user's reply.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety/mutation profile (readOnly=false, destructive=false, idempotent=false), so the description's additions are valuable: reporting 'sent' awards Stars (a side effect), the operation is Free, and the replyUrl must be the user's own reply rather than the founder's post. It does not address what happens if the same stage is reported twice, which matters because idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the primary action, then the constraint on replyUrl, then stage definitions. Dense but every sentence carries information; no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description covers cost (Free), the reward side effect (Stars), and the stage vocabulary, which is enough to call the tool correctly. It leaves the repeat-reporting/non-idempotent behavior and error handling on an invalid replyUrl unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Beyond the schema's terse 'Required for 'sent'', the description adds the semantic constraint that the URL must point to the user's own reply, not the founder's post. It also assigns meaning to each enum value ('replied' = the founder answered), which the schema enum alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening 'Move a deal forward' is a clear verb+resource, and the enumerated stage transitions ('sent', 'replied', 'call_booked', 'closed_won', 'lost') make the specific function unambiguous. It is distinguishable from read-side siblings like get_scout_deals and claim_deal, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives conditional usage rules: replyUrl is required for the 'sent' stage, later stages are 'private pipeline steps', and the guardrail 'Only report what the user tells you happened' constrains when to call it. It stops short of naming a sibling tool to use instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_issueReport an issue to ProductClank supportAInspect

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 the user. Include the failing tool, its error code/status and what you tried. If the error_code is a known one, the result carries self_help — a fix you can apply right away. Tell the user in one line that you reported it. To add detail to an earlier report pass its ticket_id rather than opening a new one.

NameRequiredDescriptionDefault
toolNoThe ProductClank tool that failed, e.g. generate_posts.
contextNoArguments you passed, the error text, what you already tried. Never include secrets.
messageYesWhat you were trying to do, what happened, and what you expected.
categoryNoDefault 'other'.
severityNo'blocking' = you cannot continue the user's task. Default 'normal'.
ticket_idNoFollow up on a ticket you opened earlier.
error_codeNoThe machine error code from the failed call, if shown.
http_statusNoStatus from the failed call, if shown.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover safety hints (non-readOnly, non-idempotent), so the description carries the behavioral burden and does so well: it is free, a human is alerted and replies, the result may carry a `self_help` fix for known error codes, and the agent should tell the user in one line. This is rich context beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the loop-retry exclusion are front-loaded, and every sentence carries actionable content. It is dense and somewhat long, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema and no annotations covering behavior, the description supplies the missing return-signal (`self_help`), the reply channel, and follow-up semantics. It could say more about what a successful submission returns (e.g. ticket id), but it is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds operational meaning by specifying that the report should include the failing tool, its error code/status, and what was tried, and that ticket_id is for adding detail to an earlier report rather than opening a new one. That is a modest lift above the already-complete schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Tell the ProductClank team a tool failed...') and enumerates the exact triggering conditions (failure, nonsense result, being stuck). It is clearly distinguishable from siblings, explicitly routing the agent to get_support_status for replies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use (instead of retrying a failing call in a loop) and when-not-to-use (expected guards like insufficient credits, confirmation prompts, spend caps — relay those to the user). The follow-up path via ticket_id vs. opening a new report is also specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

review_postsAI-review posts for relevanceA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
dry_runNoPreview verdicts without deleting (default false; still billed)
thresholdNoDelete posts scoring below this (default 5)
campaign_idYes
review_rulesNoRelevancy rules, e.g. 'Keep only posts where the author has a real problem our product solves'. Falls back to rules saved on the campaign.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description clearly discloses the destructive behavior and dry-run protection, and adds important non-obvious details not visible in annotations: the 2-credit-per-post cost and the fact that dry runs are billed too. It also warns to confirm spend with the user, which is valuable behavioral context for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and dry-run behavior, followed by cost and workflow. Every sentence contributes necessary safety or sequencing information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, paid tool, the description is nearly complete: it covers dry-run, deletion, cost, billing, and safe sequencing. There is no output schema, so a slightly more explicit description of the verdict output format would make it fully complete, but this is enough for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes dry_run, threshold, and critical billing behavior, so the description adds only marginal value for parameter meaning beyond that. It reinforces the dry-run workflow but does not clarify anterior-to-schema parameter values or add meaning for campaign_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('score' and 'delete') and a clear resource ('every discovered post'). It also explains the dry_run case (kept), which makes it easy to tell apart from sibling tools like get_posts or generate_posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit safe workflow: start with dry_run:true, preview verdicts, then re-run with dry_run:false, and confirm spend with the user. It does not name alternatives for hand-off to sibling tools, so it stops short of explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revise_content_draftApprove, revise, or discard a draftA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
textNoedit: the replacement text.
actionYes
presetNorevise: the calibration chip the user clicked.
draft_idYesFrom get_content_queue or a write_content_candidates result.
space_idYes
instructionNorevise / fix / humanize: the user's note in their words.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnlyHint=false and destructiveHint=true; the description goes beyond by disclosing 'Any text change clears the old score' and the credit costs for revise/fix/humanize/review, plus that editing text is free. It clarifies that staging marks ready-to-publish but publishing happens elsewhere. No contradiction. Could be a 5, but some details like idempotency or failure effects are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: action semantics, cost, side effects, user-decision boundary, and sibling routing. It is somewhat long and list-heavy, but appropriately so given seven actions. Front-loads the core purpose and defers the sibling comparison to the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (7 actions, 6 params, no output schema), the description covers what each action does, cost/credits, side effects on scores, user decision boundary, and when to use the sibling tool. The input schema adds parameter types/enums, and the description fills the behavioral gaps. Complete enough for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 67% of parameter descriptions; the description enriches the action enum with plain-language meanings (e.g., 'revise rewrites it in the brand voice per a one-click preset', 'fix makes the surgical change the reviewer's notes asked for'). It also adds which parameters apply to which actions, bridging the 33% gap. Slightly more param-level detail would push to 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Act on one draft') and resource ('draft in the user's queue'). Distinguishes seven sub-actions, and explicitly points to sibling tool teach_content_voice for global reactions. Title adds context. Clear and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Stage and discard are the USER's decisions — act on their say-so, never on your own judgment.' Also explicitly names the alternative tool (teach_content_voice) and the condition for using it. This is model-tier usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_researchResearch the campaign's topic (free)AInspect

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.

NameRequiredDescriptionDefault
forceNoForce a fresh analysis even if a cached one exists
campaign_idYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, and the description aligns with that (no destructive claims). The description adds key behavioral details beyond annotations: caching for 7 days, the need for force:true to refresh, and the deferred side effect where expanded keywords are applied to the next generate_posts run. It also clarifies that other outputs are dormant until enabled. This is transparent about what the tool does and its downstream effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured. It front-loads the critical 'FREE pre-flight' label, then lists the outputs, then distinguishes automated vs. dormant results, and finally covers caching and force. While a bit long, every sentence contributes to correct invocation and expectation-setting. The structure effectively prioritizes the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a research tool with no output schema, the description provides a thorough inventory of what the agent will receive (expanded keywords, phrases, influencer accounts, lists, competitors) and how to act on each category. It covers the caching mechanism, the free nature, and the interaction with other tools (generate_posts, update_campaign). This is sufficient for an agent to understand when to call the tool and what to do with the results, though it could mention prerequisites like campaign existence or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers force with a description but leaves campaign_id undocumented (50% coverage). The tool description compensates by explicitly mentioning 'pass force:true to refresh' for force, and it implicitly defines campaign_id as the campaign being researched ('analyzes the campaign's keywords/topic'). While campaign_id is not explicitly described, its purpose is self-evident from the context, so the description adds meaningful semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('analyzes the campaign's keywords/topic') and lists concrete outputs (expanded keywords, high-intent phrases, influencer accounts, relevant X lists, competitors). It explicitly distinguishes itself as a 'FREE pre-flight' research step, differentiating it from get_research (which likely retrieves stored results) and generate_posts (which applies the results). The verb and resource are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong usage guidance: it tells the agent to use this tool 'before spending credits' and explains exactly which outputs are applied automatically (expanded keywords and exclusion terms via the next generate_posts run) versus which require enabling sources via update_campaign (free). It also addresses the caching scenario and how to force a refresh. This gives clear when-to-use and when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_productsSearch ProductClank productsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoMax results (default 5)
queryYesProduct name or keyword to search for

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, so the description carries a lower burden. It adds that the tool returns IDs, but does not disclose behavior like partial matching, pagination, or case sensitivity. The description is consistent with annotations and adds some workflow context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. The first sentence states the core action and output. The second sentence provides context and a workflow hint. Every sentence is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with no output schema, the description is fairly complete. It explains the purpose, output, and why the tool is needed. It could be more explicit about matching behavior, but the combination with annotations and schema makes it adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both parameters have clear descriptions. The tool description only mentions 'by name' which maps to the query parameter, adding no new meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Search the user's ProductClank products by name and return their IDs' – a specific verb+resource with clear output. It distinguishes from siblings like create_product and list_content_spaces by focusing on search/lookup for campaign resolution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly ties this tool to campaign creation/boosting workflow: 'A product_id is required to create or boost a campaign — use this to resolve it, then confirm the match with the user.' It provides clear context for when to use, though it does not explicitly mention when not to use or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_campaign_schedulePut discovery on a scheduleAInspect

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.

NameRequiredDescriptionDefault
enabledYestrue starts standing discovery, false stops it
confirmedNoSet 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.
campaign_idYes
posts_per_runNoTarget posts per run (1-20). Defaults to the campaign's current setting, else 5. Each post found bills 12 credits.
frequency_per_dayNoDiscovery runs per day (1-4). Defaults to the campaign's current setting, else 1.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description highlights critical unattended behavior: enabling is free but authorizes later hourly job spend at 12 credits per post discovered. It explicitly warns that costs happen outside the call and without user presence, explains the safety of the off path, and gives concrete operational limits (4 runs/day, 20 posts/run, 600 credits/day) — all material that annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although fairly long, every section earns its place: the warning is front-loaded, steps are numbered, and exclusions/limits are grouped logically. The text is dense with high-value guidance and avoids unrelated filler, so its length is justified by the safety-critical nature.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the invocation flow, expected first-call outputs, user-confirmation requirements, safety thresholds, cost implications, and how to read the current schedule. Given there is no output schema, the description provides enough detail for full correct invocation without leaving a necessary gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description goes far beyond the input schema by explaining the confirmed flag's intentional flow and the meaning of an omitted confirmed flag. It also connects posts_per_run and frequency_per_day to real costs and spending limits, and clarifies that enabled:false requires no confirmation, adding behavioral context the schema cannot express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise, action-oriented statement: 'Turn standing discovery on or off for a campaign.' It clearly names the resource and the two possible operations, and it is fully distinguishable from sibling tools like get_campaign by referencing the read operation at the end.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit, step-by-step usage protocol: call with enabled:true and no confirmed flag first, show the user the projected costs, get explicit agreement, then call again with confirmed:true. It also clearly states when confirmation is never allowed and when enabled:false is safe, giving the agent clear decision rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_content_bountySet the cash bounty for a content campaignA
Idempotent
Inspect

A content campaign pays its creators from a cash prize pool the user deposits (the bounty); the best submissions, ranked by the owner, win it. Free — this sets the pool, it moves no money. TWO STEPS ON PURPOSE: (1) call WITHOUT confirmed: nothing is saved; you get the exact numbers — pool, the platform fee on top, total_due, and what each rank wins. Show them to the user. (2) Only after the user says yes, call again with confirmed:true: the pool is saved and you get fund_url — give that link to the user: it opens the campaign page at the deposit step, where they pay by card or USDC (signed in as the owner). The bounty is live once they deposit; check with get_content_campaign_results. Default token USDC; default split 1st 30% · ranks 2–5 20% · ranks 6–20 50% — for a small pool, suggest fewer winners so each prize is worth winning. A funded pool cannot be changed.

NameRequiredDescriptionDefault
tiersNoPrize bands from rank 1, no gaps, summing to 100. Omit for the default split.
tokenNoToken ticker, default USDC
confirmedNoLeave unset to preview. Set true ONLY after the user agreed to the numbers from the preview.
campaign_idYesCampaign UUID from create_content_campaign
pool_amountYesPrize pool paid to winners, in whole tokens (USDC ≈ dollars). The platform fee is added on top.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds genuinely new behavior: no money moves on this call, preview returns exact numbers, the confirmed call yields fund_url and the deposit step, and funding is irreversible. It stops short of describing failure modes or what happens on repeated previews, but it goes well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the two-step contract in numbered form, which is the single most important thing for correct invocation, and every sentence carries information. The opening conceptual sentence about how a bounty campaign pays creators is helpful context but slightly long, keeping it short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description names the key return values for both steps (pool, platform fee, total_due, per-rank prizes, fund_url) and points to the tool that confirms funding. An agent has everything needed to drive the two-call workflow end to end.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds value the schema lacks: the concrete default split (1st 30% / ranks 2–5 20% / ranks 6–20 50%), the default token, and the practical advice to reduce winners for small pools. The semantics of confirmed are reinforced rather than merely repeated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (set) and resource (bounty / cash prize pool) for a content campaign, and explains the mechanism: a deposited pool paid to ranked winners. An agent can distinguish this from siblings like create_content_campaign or get_content_campaign_results without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly prescribes the two-step flow (preview without confirmed, then confirmed:true only after user says yes), and names the follow-up tool for checking liveness (get_content_campaign_results). It also states the condition that makes the tool useless afterwards: 'A funded pool cannot be changed.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_content_spaceSet up (or update) a brand's content spaceAInspect

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.

NameRequiredDescriptionDefault
voiceNoVoice & 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.
topicsNoThe inventory of themes to post about (3–8 to start).
space_idNoExisting space to enable/update (one of space_id / new_space is required).
brand_docNoA filled brand template the user pasted — costs 5 credits to structure.
new_spaceNoCreate a solo Amplify space for this brand (idempotent on name).
platformsNoWhere the brand posts, e.g. ["X", "LinkedIn"]. One draft per platform is written per topic.
brand_nameNoDefaults to the space name.
post_typesNoThe kinds of posts they want (how-tos, build-in-public notes, hot takes, customer wins, thesis drops…).
review_thresholdNoReviewer pass bar (default 75).
platform_playbookNoPer-platform notes, e.g. "X: short and punchy. LinkedIn: longer, more reflective."
trending_source_handlesNoX accounts to pin for 'Trending on X' (news outlets, analysts, competitors).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral detail beyond the annotations: structured fields are FREE, brand_doc costs 5 credits, topics are appended with a 12-per-call cap, keywords are auto-proposed when omitted, and nothing is published. These are non-obvious side effects and constraints that an agent needs to know before invoking the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence carries useful information, from billing to workflow to side effects. It is appropriately sized for an 11-parameter tool, though the long prose paragraph could be better structured with bullets or explicit sequencing. It is front-loaded with purpose and cost, which helps an agent scan it quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool of this complexity, the description covers the workflow, required inputs, billing, topic behavior, and the fact that nothing is published. With no output schema, a brief note about what the call returns or how to verify success would strengthen it, but the provided description is already sufficient for an agent to invoke it correctly in most cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema description coverage is 100%, the description adds crucial semantic guidance: first-time setup requires at least voice and platforms, space_id/new_space are mutually exclusive routes, topics are appended, and brand_doc should only be passed when the user provides a written template. This materially improves parameter understanding beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action: 'Turn the content engine on for a brand from an onboarding conversation, or update its settings later.' This clearly identifies the resource (a brand's content space) and the operation (set up or update), and it does not merely restate the tool name. The title and description together distinguish it from sibling tools like generate_posts or manage_content_topics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a concrete workflow: collect answers first via the setup prompt, read them back for confirmation, then call once. It also specifies when to use space_id vs new_space and when to pass brand_doc. However, it does not explicitly name alternatives or state when not to use this tool versus a sibling, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_growth_assistantSet up my personal growth assistantA
Idempotent
Inspect

Personal brand growth for the USER (not a product campaign): every morning it finds up to 5 posts on ONE network (X, LinkedIn, Reddit or YouTube) on the topics the user wants to be known for, each with a draft reply in their voice (no product mentions, no links). The user posts the replies themselves. Free to set up, no credits. After setup the user opens the app link for the free first run (live) and the $9/month (or $99/year) subscription that turns on the daily run + morning email (the card step happens in their browser). Before calling: agree with the user on 2-4 topics and their search phrases, one or two sentences about who they are, and a few rules for how their replies should read — draft these from what you know about them and confirm. Calling again updates the assistant in place.

NameRequiredDescriptionDefault
mixNoWhich posts the daily picks favour: relevance (default: the top-scored posts), balanced (about 2 in 5 are busy threads, the rest early posts), busy (mostly busy threads: a bigger audience, the reply sits lower), early (mostly posts with few comments: the author reads you). Each draft is also written for the kind of post it lands on. Leave unset unless the user asks for a mix.
aboutNoWho the user is and the angle they add, 1-2 sentences.
voiceNoHow their replies should read, one rule per line.
topicsYes1-4 topics the user wants to be known for.
networkYesThe ONE network where the user wants to be visible: twitter (X), linkedin, reddit or youtube.
per_dayNoPosts per day (default 5).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: the setup is free with no credits, the paid subscription ($9/mo or $99/yr) unlocks the daily run and morning email, the card step happens in the user's browser, and the user (not the tool) posts the replies. 'Calling again updates the assistant in place' corroborates idempotentHint=true rather than contradicting it. It does not confirm destructiveHint=false explicitly, but nothing implies data loss, so the addition is largely net-positive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and scope, then prerequisites, then billing/flow. The pricing and card-step detail is longer than a minimal description, but it is genuinely needed because the user must consent to a subscription; sentences are dense and none are pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema, the description covers the full picture: what gets created, what the daily run produces, who posts the replies, cost and where payment happens, required pre-call agreements, and update-on-recall semantics. An agent has everything needed to call it correctly and to brief the user.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds value by tying parameters to a drafting workflow ('draft these from what you know about them and confirm', 'one or two sentences about who they are', 'a few rules for how their replies should read'), which explains what content to put in about/voice/topics rather than just their types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (set up a personal growth assistant) and immediately scopes it as personal brand growth for the USER, explicitly 'not a product campaign', which cleanly separates it from siblings like create_campaign and create_content_campaign. The core loop (daily finds up to 5 posts on ONE network, drafts replies in the user's voice, user posts them) is spelled out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit pre-call checklist: agree with the user on 2-4 topics and their search phrases, 1-2 sentences about who they are, and reply-reading rules — and says to draft these from existing knowledge and confirm. It also states when-not (not a product campaign) and what re-calling does (updates the assistant in place), covering both invocation and re-invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_campaign_workSubmit campaign participation proofAInspect

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.

NameRequiredDescriptionDefault
media_urlNoPublic 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 links show as a link.
proof_urlNoURL of the published content or action proof (X post, video, voting page, …)
campaign_idYes
descriptionNoWhat was done, or context for the reviewer

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral detail beyond the annotations: submissions land as PENDING, review and reward occur on approval, X URLs must be author-verified, duplicate URLs are rejected, and media must already be publicly hosted. This level of transparency is strong and non-redundant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well organized. It front-loads the core action and proof options, then adds constraints and post-submission behavior. Each sentence. The detail is meaningful, not filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write operation with no output schema, this description covers the essential gaps: expected input formats, URL restrictions, verification rules, submission state, and how to check status afterward. It gives an agent enough to call the tool correctly and explain to users what happens next.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high at 75%, but the description enriches the parameters further—it explains that any one proof is enough, clarifies media URL requirements, mentions the 500-character limit for descriptions, and states author verification for X posts. This is useful beyond what the schema already captures.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb-resource pair: 'Submit the user's work for a campaign' and enumerates three acceptable proof types. It is specific and actionable, but it doesn't explicitly distinguish itself from the similarly named sibling tool 'submit_participation', so it loses one point for sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: the three proof channels, the hosting prerequisite, and the explicit routing to get_my_submissions afterward. It doesn't fully state when-not to use this tool or how it compares to submit_participation, but it gives enough usage context to select the right behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_participationSubmit a posted reply or quote post to earnAInspect

Submit the URL of what the connected user posted for an opportunity (reply_id from find_opportunities; hold it first with hold_opportunity). Submitting ends the hold. 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.

NameRequiredDescriptionDefault
reply_idYesThe reply draft's id from find_opportunities
reply_urlYesURL of the reply (or, for a quote opportunity, the quote post) the user posted

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that submitting ends the hold, that points/credits are awarded, that rejected submissions accrue strikes (3 = blocked), how verification works per platform (X author-verified live at submit; others post-hoc), and what the failure message says when a handle is missing. No contradiction with readOnlyHint=false / destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Action and prerequisite are front-loaded, and every clause carries information. The nested parenthetical about quote-post verification is dense and slightly hard to parse, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the full lifecycle an agent needs: hold → submit → hold released, award/credit outcome, and rejection consequences. Since there is no output schema, it could say more about what a successful response returns, but the decision-relevant context is essentially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: reply_id provenance (find_opportunities) and the non-obvious semantics of reply_url for quote posts, including that a plain tweet or a quote of something else is rejected. It stops short of format details beyond the schema's uri format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource (submit the URL of what the user posted) and ties it to the opportunity workflow via reply_id from find_opportunities. It also scopes supported platforms (X, Reddit, YouTube, LinkedIn) and the quote-post variant, which distinguishes it from sibling write tools like submit_campaign_work or publish_posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit prerequisites and ordering: get reply_id from find_opportunities and hold it first with hold_opportunity — submitting ends the hold. It also gives a negative rule (only submit replies the user actually posted) and a precise disambiguation for quote opportunities (pass the user's own quote post URL, not the original).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_content_campaignPreview a content campaignA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
product_idYesProduct UUID from search_products
referencesNoLinks or references to include in the campaign
campaign_goalsNoCampaign goals, e.g. ["awareness", "signups"]
target_audienceNoWho the campaign should reach
campaign_messageYesThe core brief: what you want the community to create (e.g. 'Share how you use <product> in your daily workflow').
preferred_platformNoPreferred platform, e.g. "x" or "farcaster"
additional_guidelinesNoExtra do's/don'ts for creators

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description need not re-disclose that. It adds valuable context: FREE, no credits charged, returns draft and affordability (1000 credits), and the required follow-up workflow. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a bit long but every sentence serves a purpose: scoping, cost, output, workflow, and prerequisites. It is front-loaded with the 'preview, free, nothing created' key facts. Slightly dense but well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 params, no output schema, safety-critical workflow), the description covers everything an agent needs: what it returns, the credit threshold, the explicit-consent and next-step requirement, and the prerequisite product_id. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 7 parameters at 100%, so baseline is 3. The description adds meaning beyond the schema by telling how to fill campaign_message ('from what you know about the product') and that product_id must come from search_products. This extra guidance raises it above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it previews a campaign before launch, returns a draft and affordability check, and explicitly says it does not launch. Distinguished from sibling create_content_campaign by the 'BEFORE launching' and 'never launch' emphasis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call create_content_campaign after getting an explicit yes, and never launch off the preview alone. Also specifies that product_id must come from search_products and how to write campaign_message.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_quiz_questionsSuggest watch-quiz questions from a TikTokAInspect

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

NameRequiredDescriptionDefault
video_urlYesTikTok video URL.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: 40-credit cost, charged only on success, no charge on failure, and the explicit 'Creates nothing' guarantee that aligns with destructiveHint=false. This explains the pricing/side-effect profile (which is why readOnlyHint is false) far beyond what the annotation block conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five dense sentences with no filler, and the purpose is front-loaded before cost and routing details. It is packed with distinct ideas (cost, workflow, fallback) which makes it slightly heavy, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description covers what comes back (questions plus answers plus evidence), the cost model, the downstream handoff, and the failure behavior. An agent can call this correctly and know exactly what to do with the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema already documents video_url as a TikTok URL. The description implies the input is a TikTok but adds no format, validation, or constraint detail beyond the schema — the baseline 3 for full schema coverage applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource+method: an AI watching a TikTok (frames + captions) to suggest counting questions with answers and evidence. It also explicitly delimits scope with 'high confidence only' and 'Creates nothing', which separates it cleanly from create_watch_quiz in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: show every question WITH its evidence to the user, pass only confirmed ones to create_watch_quiz or boost_post's watch_quiz. It also names the fallback path on failure ('ask the user for questions instead'), so both the happy path and the failure path are specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

teach_content_voiceTurn feedback into a standing ruleAInspect

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.

NameRequiredDescriptionDefault
applyNoDefault true. false → leave pending for the user to approve in Settings.
draft_idNoThe draft it was about, if any.
feedbackYesThe user's reaction, in their words.
space_idYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly=false and destructive=false, but the description adds substantive behavior: durable rule creation, default immediate application, pending behavior with apply:false, the 1-credit cost, and the required follow-up ('Tell the user in one line what was learned'). This goes well beyond the annotation flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by cost, usage contrast, parameter guidance, and response instruction. Every sentence contributes, though the example list could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description covers purpose, usage, parameter semantics, default behavior, and the expected user-facing response. It is complete enough for correct invocation, with only minor non-essential details (e.g., exact response shape, space_id clarification) omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% (space_id undocumented). The description adds rationale for draft_id ('so the rule is grounded in an example'), clarifies apply:false with 'pending in the web Settings', and gives concrete examples for feedback. This adds real meaning beyond the schema entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Teach') with a clear resource ('the engine', i.e., the brand's voice KB) and explicit examples of what counts as feedback. It also distinguishes itself from sibling revise_content_draft, so an agent can tell them apart immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when feedback should STICK') and when-not-to-use ('use revise_content_draft when it is about one draft only'), plus additional parameter-level guidance for draft_id and apply:false. No inference is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_campaignTune a running campaignAInspect

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. digest_enabled:true emails the owner and the campaign's delegates once a day with the new posts and their draft replies, so they can reply without opening the app; offer it when the user will post the replies themselves (a private campaign). 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. On X, reply_approach switches what the replies do (awareness 'mention' vs sales 'flag', which tags reply_tag_accounts at the lead) — confirm with the user, it changes every future draft. Changes apply to the NEXT generate_posts run; existing posts are not re-scored.

NameRequiredDescriptionDefault
confirmNoRequired (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.
sourcesNoWhich discovery sources run. 'keywords' is always included. Enable 'phrases'/'influencers'/'lists'/'competitors' to actually USE what run_research found — they do nothing until enabled.
platformNoWhich 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 campaign.
is_activeNofalse pauses discovery, true resumes it
visibilityNoWho 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 public REQUIRES confirm: true — ask the user first, then pass it.
campaign_idYes
add_keywordsNoKeywords to add — merged with the existing list, duplicates ignored
digest_enabledNotrue = once a day, email the owner and every delegate (add_delegate) the posts found since the last digest, each with its draft reply and a link to reply. Only sent on days with new posts; each recipient can unsubscribe from the email. false turns it off. Free.
reply_approachNoX 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 lead. Applies to drafts written from now on.
post_visibilityNoVisibility 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 arrival. No confirm needed.
remove_keywordsNoKeywords to drop (at least one must remain)
monitor_accountsNoSpecific handles the influencers source should watch; enables that source automatically
target_subredditsNoReddit 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 current list with get_campaign first and send the full merged list.
reply_tag_accountsNoX 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).
relevance_thresholdNoKeep only posts scoring at or above this on semantic relevance (new campaigns start at 5)
target_youtube_channelsNoYouTube 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, read the current list with get_campaign first and send the full merged list.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only tell the agent this is a non-destructive write; the description adds the cost profile ('free — nothing here spends credits'), the merge-not-replace semantics of keywords, the confirm requirement for visibility:public, the platform_locked precondition, and the crucial timing fact that changes apply to the NEXT generate_posts run without re-scoring existing posts. That is exactly the kind of behavioral context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single dense paragraph is front-loaded with the key constraint and wastes little content, but it is a long backtick-heavy run-on with no grouping or separators, which hurts scannability for a 16-parameter tool. The information is valuable; the structure is not.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter mutation tool with no output schema, the description covers cost, side effects, confirmations, server-side rejections, timing of effects, and the platform lock. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 94% schema coverage the schema already documents most parameters, so much of the description is reinforcing that. It still adds real meaning the schema lacks — that sources stay dormant until enabled, that relevance gate behavior differs between new and existing campaigns, and why platform cannot be changed later. Not fully additive, but well above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

'Adjust a live campaign without recreating it' gives a specific verb and resource plus the scope constraint that distinguishes it from create_campaign and get_campaign. An agent immediately knows this mutates an existing campaign rather than creating or reading one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It routes the agent conditionally throughout: 'offer it when the user will post the replies themselves', 'only do it when the user has said yes' for visibility, and it explicitly names the alternative for platform changes ('a second campaign is the answer') and for reading current lists (get_campaign). When-to-use, when-not-to, and sibling alternatives are all present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_content_candidatesDraft content candidatesAInspect

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

NameRequiredDescriptionDefault
space_idYesTarget content space UUID from list_content_spaces.
candidatesYes1–25 draft candidates to write.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that drafts are scored against the brand's voice, queued in 'All Content' for approval, and never auto-published. It also states the candidate limit of 25 per call. This substantially enriches the agent's understanding of what happens after invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is more expansive than the minimal ideal, but nearly every sentence earns its place: purpose, prerequisite, scoring feedback loop, platform rule, queue outcome, limit, and exclusion of community campaigns. It is front-loaded with the core purpose and keeps the most important constraints early. Slight redundancy around the queue and scoring costs a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write-oriented tool with no output schema, the description covers prerequisites, parameter constraints, side effects, approval flow, and the intended alternative. It tells the agent where results will appear (get_content_queue) and what will not happen (no auto-publishing). Nothing critical for correctly selecting and invoking the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantic detail beyond the schema, especially the platform constraint: 'platform must be one of the space's platforms (omit it to use the first).' It also reinforces the 25-candidate limit and the default template behavior, which helps correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Draft one or more posts into a ProductClank content space.' It then differentiates this tool from create_content_campaign, clarifying that this writes into the user's own content pipeline rather than a community campaign. This is a clear, non-tautological purpose statement that an agent can act on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'Call get_content_workspace FIRST', use the space's platforms, and omit platform to use the first. It also names the alternative for community campaigns: 'use create_content_campaign for that.' The conditions are concrete and leave little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Addedhold_opportunity
    • Addedrelease_opportunity
  2. 1 tool update
    • Addedset_content_bounty
  3. 1 tool update
    • Changedsetup_growth_assistant1 field changed
      • addedInput schema / properties / mix
        Added value: +{
        +  "description": "Which posts the daily picks favour: relevance (default: the top-scored posts), balanced (about 2 in 5 are busy threads, the rest early posts), busy (mostly busy threads: a bigger audience, the reply sits lower), early (mostly posts with few comments: the author reads you). Each draft is also written for the kind of post it lands on. Leave unset unless the user asks for a mix.",
        +  "enum": [
        +    "relevance",
        +    "balanced",
        +    "busy",
        +    "early"
        +  ],
        +  "type": "string"
        +}
  4. 2 tool updates
    • Changedboost_post2 fields changed
      • changedInput schema / properties / count / description
        Previous value: -"Replies / quote only: how many drafts to generate, 1–10 (default 10). Billed 20 credits per draft — 3 replies = 60 credits."New value: +"Replies / quote: how many drafts to generate, 1–10 (default 10), billed 20 credits per draft — 3 replies = 60 credits. Likes: how many likes, 1–300 (default 30), billed 10 credits per like — 100 likes = 1,000 credits. Repost / bookmarks: 1–100 (default 10), billed 30 credits each."
      • changedInput schema / properties / count / maximum
        Previous value: -10New value: +300
    • Changedlaunch_tiktok_campaign3 fields changed
      • changedInput schema / properties / likes / description
        Previous value: -"Include the likes boost (30 likes, 300 credits). Default true."New value: +"Include the likes boost. Default true. Size it with likes_count."
      • addedInput schema / properties / likes_count
        Added value: +{
        +  "description": "How many likes, 1–300. 10 credits each. Default 30 (300 credits).",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / quiz_answers / description
        Previous value: -"Watch quiz cap: how many people may answer. Billed 100 credits per CORRECT answer only. Default 10. 0 = no quiz."New value: +"Watch quiz size: how many people may answer, 0–1000. Billed 100 credits per CORRECT answer only. Default 10. 0 = no quiz."
  5. 1 tool update
    • Addedlaunch_tiktok_campaign
  6. 4 tool updates
    • Changedboost_post1 field changed
      • addedInput schema / properties / watch_quiz
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Optional 'Watch & answer' on a TikTok / YouTube / Instagram Reel video: a linked 24h watch quiz. Billed 100 credits per correct answer (default cap 20 = 2,000 credits), separate from credits_used. Get the questions and answers from the user, or from suggest_quiz_questions.",
        +  "properties": {
        +    "duration_sec": {
        +      "anyOf": [
        +        {
        +          "maximum": 3600,
        +          "minimum": 5,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ],
        +      "description": "Video length in seconds, or \"m:ss\". Omit to read it from the TikTok / YouTube page; other platforms need it."
        +    },
        +    "max_answers": {
        +      "description": "People who may answer before the quiz closes to new viewers (default 20). Worst case = all of them right = 2,000 credits.",
        +      "maximum": 1000,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "questions": {
        +      "description": "1–20 questions with their answers. Each viewer draws one. Get them from the user — you cannot watch the video.",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "answer": {
        +            "description": "The whole-number answer.",
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "question": {
        +            "description": "A counting question only someone who watched can answer, e.g. 'How many times does she say \"ship\"?'",
        +            "maxLength": 200,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "question",
        +          "answer"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 20,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "questions"
        +  ],
        +  "type": "object"
        +}
    • Addedcreate_watch_quiz
    • Addedget_watch_quiz_results
    • Addedsuggest_quiz_questions
  7. 2 tool updates
    • Addedget_growth_suggestions
    • Addedsetup_growth_assistant
  8. 1 tool update
    • Changedboost_post2 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"How the community engages. Default: replies. Reposts are Twitter/Farcaster only; quote posts (repost with the member's own drafted text) are X only."New value: +"How the community engages. Default: replies. Reposts are Twitter/Farcaster only; quote posts (repost with the member's own drafted text) and bookmarks (members save the post) are X only."
      • changedInput schema / properties / action_type / enum
        Previous value: -[
        -  "replies",
        -  "likes",
        -  "repost",
        -  "quote"
        -]New value: +[
        +  "replies",
        +  "likes",
        +  "repost",
        +  "quote",
        +  "bookmarks"
        +]
  9. 1 tool update
    • Changedboost_post3 fields changed
      • addedInput schema / properties / count
        Added value: +{
        +  "description": "Replies / quote only: how many drafts to generate, 1–10 (default 10). Billed 20 credits per draft — 3 replies = 60 credits.",
        +  "maximum": 10,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / post_text
        Added value: +{
        +  "description": "Optional — the post's text or caption, if you already have it. Skips the server-side fetch (useful for a TikTok you just uploaded).",
        +  "type": "string"
        +}
      • addedInput schema / properties / spread_over_hours
        Added value: +{
        +  "description": "Optional — pace delivery over this many hours instead of releasing every slot at once. One goes out now, the rest drip out 1–2 per hour. Minimum is ceil((items − 1) / 2) + 1 hours (3 items → 2, 10 → 6). Omit for immediate delivery. Same price.",
        +  "maximum": 72,
        +  "minimum": 2,
        +  "type": "integer"
        +}
  10. 1 tool update
    • Changedupdate_campaign1 field changed
      • addedInput schema / properties / digest_enabled
        Added value: +{
        +  "description": "true = once a day, email the owner and every delegate (add_delegate) the posts found since the last digest, each with its draft reply and a link to reply. Only sent on days with new posts; each recipient can unsubscribe from the email. false turns it off. Free.",
        +  "type": "boolean"
        +}
  11. 6 tool updates
    • Addedclaim_deal
    • Addedget_scout_deals
    • Addedget_scout_earnings
    • Addedrate_deal
    • Addedrelease_deal
    • Addedreport_deal_progress
  12. 1 tool update
    • Changedcreate_campaign1 field changed
      • addedInput schema / properties / space_id
        Added value: +{
        +  "description": "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 is still `visibility`. The user must be able to create campaigns in that space, or the call is rejected. Omit and it lands in the user's oldest space.",
        +  "type": "string"
        +}
  13. 4 tool updates
    • Changedcreate_campaign3 fields changed
      • changedInput schema / properties / mention_accounts / description
        Previous value: -"X handles to mention naturally in replies (e.g. the product's account)"New value: +"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_tag_accounts, not this."
      • addedInput schema / properties / reply_approach
        Added value: +{
        +  "description": "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 conversation so thread readers see it — right when the goal is visibility, traffic or brand presence. 'flag' = SALES: replies tag the brand and/or founder and point them at the post's author as a lead (e.g. '@brand @founder check out what Nick is struggling with, might be something you can help with'), so the founder can step in and convert — right when the goal is signups, demos or deals. Neither style pretends the replier has used the product. With 'flag', set reply_tag_accounts.",
        +  "enum": [
        +    "mention",
        +    "flag"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / reply_tag_accounts
        Added value: +{
        +  "description": "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 mention_accounts, then the product's X handle. Ignored with 'mention' (the result warns).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 2,
        +  "type": "array"
        +}
    • Addedget_support_status
    • Addedreport_issue
    • Changedupdate_campaign2 fields changed
      • addedInput schema / properties / reply_approach
        Added value: +{
        +  "description": "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 lead. Applies to drafts written from now on.",
        +  "enum": [
        +    "mention",
        +    "flag"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / reply_tag_accounts
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 2,
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "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)."
        +}
  14. 1 tool update
    • Addedanalyze_url
  15. 4 tool updates
    • Changedcreate_campaign1 field changed
      • addedInput schema / properties / post_visibility
        Added value: +{
        +  "description": "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 the ones the user approves. Use it whenever the user wants to review wording before real people post.",
        +  "enum": [
        +    "public",
        +    "private"
        +  ],
        +  "type": "string"
        +}
    • Addededit_reply
    • Addedpublish_posts
    • Changedupdate_campaign1 field changed
      • addedInput schema / properties / post_visibility
        Added value: +{
        +  "description": "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 arrival. No confirm needed.",
        +  "enum": [
        +    "public",
        +    "private"
        +  ],
        +  "type": "string"
        +}
  16. 1 tool update
    • Addedget_content_campaign_results

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to upload and schedule videos, images, carousels, and text posts across 17 social platforms, read analytics, and reply to comments through a hosted OAuth connection.
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Connects AI assistants to Meta's business platforms (Facebook, Instagram, Threads, Ads, Commerce) with 200 tools for publishing, engagement, analytics, ads, and commerce management.
    100
    963 npm
    64
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI assistants to Meta's business platform — Facebook Pages, Instagram, Threads, Ads Manager, and Commerce — so users can publish and schedule content, moderate engagement, manage ad campaigns, and pull performance insights through natural language. It also supports catalog management, live broadcasts, competitor ad research, and token/permission diagnostics.
    963 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.