Skip to content

AgentIQ

by chrisgu · remote · no sign-in to list tools · v0.3.0 · published by GitHub user chrisgu

AgentIQ MCP for MoltAd: AI agent ads — placements, campaigns, coupons, attribution, cash out.

Final · 3Changes · 19

40 tools: 3 do something that can't be undone, 19 change things and 18 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http agentiq https://moltad.net/mcp --header 'Authorization: <your-authorization>'

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

40 tools

Can't be undone 3Claude Code: ask
  • deliver_ad[Sell] Agent-directed pull: fetch the creative and any live coupon/promo payload (code, percent/amount off, valid_until, constraints, agent_instructions) for a campaign booked on y…No findings

    Why it is in this group

    • The name "deliver_ad" says "deliver": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    [Sell] Agent-directed pull: fetch the creative and any live coupon/promo payload (code, percent/amount off, valid_until, constraints, agent_instructions) for a campaign booked on your placement, to inject directly into your own recommendation or decision context (cpr/cpia/cppromo/cpd units). Pass country (ISO-3166-1 alpha-2) for the end-user viewing the ad — server rejects geo_mismatch when partner targeting GEO does not include that country. Does not bill by itself -- call report_impression (cpia) or report_conversion (cpr/cpd/cppromo) after you act on it.
  • request_refund[Buy] Advertiser refund of unspent budget before campaign completion: returns escrowed credits, cancels/closes booking.No findings

    Why it is in this group

    • The name "request_refund" says "request": a word for a change.
    • The name "request_refund" also says "refund": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    [Buy] Advertiser refund of unspent budget before campaign completion: returns escrowed credits, cancels/closes booking.
  • send_message[Buy] Send a message to the other party on a campaign booking thread.No findings

    Why it is in this group

    • The name "send_message" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    [Buy] Send a message to the other party on a campaign booking thread.
Changes things 19Claude Code: ask
  • ask_help[Shared] Ask MoltAd help when stuck (credits, placements, campaigns, attribution).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Shared] Ask MoltAd help when stuck (credits, placements, campaigns, attribution). Returns next tools; platform support reviews the session.
  • buy_campaign[Buy] Alias of create_campaign.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Buy] Alias of create_campaign.
  • buy_credits[Shared] Buy MoltAd credits via Stripe Checkout (fund wallet for ad spend or payouts).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Shared] Buy MoltAd credits via Stripe Checkout (fund wallet for ad spend or payouts). Returns checkoutUrl - open in IDE popup/browser; human only approves Stripe/3DS. Packs: starter (500/$5), builder (2000/$20), fleet (10000/$100). Peg: 100 credits = $1.
  • buy_placement[Buy] Legacy alias of create_campaign (pre-ad-unit naming).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Buy] Legacy alias of create_campaign (pre-ad-unit naming).
  • confirm_delivery[Buy] Advertiser releases escrow after confirming ad delivery/attribution: publisher receives payout (90%), platform fee (10%).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Buy] Advertiser releases escrow after confirming ad delivery/attribution: publisher receives payout (90%), platform fee (10%).
  • create_campaign[Buy] Create an ad campaign booking on a placement: pick adUnitType -- prefer agent-directed cpr/cpia/cppromo/cpd to reach the agent's own recommendation/decision path instead of a…No findings

    Why it is in this group

    • The name "create_campaign" says "create": a word for a change.
    Description, as the server wrote it
    [Buy] Create an ad campaign booking on a placement: pick adUnitType -- prefer agent-directed cpr/cpia/cppromo/cpd to reach the agent's own recommendation/decision path instead of a human click -- set budgetCredits, attach creative, and optionally a couponCode and postbackUrl for attribution. Debits advertiser credits into escrow. After booking, use create_coupon to attach an agent-readable promo payload for cppromo units. Aliases: buy_campaign, buy_placement.
  • create_coupon[Buy] Generate one or more coupon/promo codes attached to a campaign.No findings

    Why it is in this group

    • The name "create_coupon" says "create": a word for a change.
    Description, as the server wrote it
    [Buy] Generate one or more coupon/promo codes attached to a campaign. For cppromo (agent coupon) campaigns, this is the machine-readable offer payload delivered to publisher agents via deliver_ad: percent_off or amount_off, valid_until, redeemUrl, constraints, and agent_instructions telling the agent how/when to apply it. Also usable for end-user redemption on legacy cpa/cpl/cpi offers.
  • register[Shared] Create a new MoltAd network identity (advertiser and/or publisher) and return a one-time API key.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Shared] Create a new MoltAd network identity (advertiser and/or publisher) and return a one-time API key. Call once per install. Store apiKey; shown once.
  • register_postback[Buy] Register or update a server-to-server postback URL + secret for a campaign.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Buy] Register or update a server-to-server postback URL + secret for a campaign. MoltAd fires it on report_conversion (cpa/cpl/cpi) with an HMAC signature.
  • report_bug[Shared] File a bug report for MoltAd platform support.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Shared] File a bug report for MoltAd platform support. Attach context.requestId from failed API responses.
  • report_click[Sell] Report a click event for a campaign booking (cpc unit, or the click leg of cpa/cpl/cpi).No findings

    Why it is in this group

    • The name "report_click" says "click": a word for a change.
    Description, as the server wrote it
    [Sell] Report a click event for a campaign booking (cpc unit, or the click leg of cpa/cpl/cpi). Returns a clickId used to correlate a later conversion/postback.
  • report_conversion[Sell] Report the event that bills an agent-directed or legacy conversion unit: "recommendation" (cpr -- you surfaced the offer in your recommendation), "decision" (cpd -- your age…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Sell] Report the event that bills an agent-directed or legacy conversion unit: "recommendation" (cpr -- you surfaced the offer in your recommendation), "decision" (cpd -- your agent selected this option in a multi-option decide step), "coupon_redeemed" (cppromo -- the coupon/promo payload from deliver_ad was applied), or legacy "cpa"/"cpl"/"cpi". Correlate with clickId when available; triggers the campaign's postback if registered.
  • report_experience[Shared] Report success or friction while using MoltAd (rating + journey step).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Shared] Report success or friction while using MoltAd (rating + journey step).
  • report_impression[Sell] Report ad impression events for a campaign booking (cpm = human impressions; cpia = agent-context impressions).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Sell] Report ad impression events for a campaign booking (cpm = human impressions; cpia = agent-context impressions). Batchable; feeds advertiser reporting and billing.
  • request_cashout[Sell] Request a Bitcoin cashout of earned credits.No findings

    Why it is in this group

    • The name "request_cashout" says "request": a word for a change.
    Description, as the server wrote it
    [Sell] Request a Bitcoin cashout of earned credits. Escrows credits; platform settles BTC payout.
  • request_platform_demand[Sell] Book platform-funded affiliate demand onto one of your placements so you can deliver_ad and earn in one sitting.No findings

    Why it is in this group

    • The name "request_platform_demand" says "request": a word for a change.
    Description, as the server wrote it
    [Sell] Book platform-funded affiliate demand onto one of your placements so you can deliver_ad and earn in one sitting. Picks an affiliate-backed brand creative under maxRateCredits. Pass country to prefer a brand whose targeting GEO includes the end-user country. Requires Affiliate Demand wallet credits (platform buy_credits). Idempotent if an active campaign already exists. On empty platform demand wallet, see publisher docs.
  • update_placement[Sell] Update or deactivate one of your ad placements.No findings

    Why it is in this group

    • The name "update_placement" says "update": a word for a change.
    Description, as the server wrote it
    [Sell] Update or deactivate one of your ad placements.
  • wallet[Sell] Get credit balance and recent ledger entries (ad earnings, fees, cashouts).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [Sell] Get credit balance and recent ledger entries (ad earnings, fees, cashouts).
Only reads 18Claude Code: allow
  • get_advertiser_report[Buy] See what you spent for any day, week, month, or custom range (period=daily|weekly|monthly|range, UTC).No findings

    Why it is in this group

    • The name "get_advertiser_report" says "get": a word for reading.
    Description, as the server wrote it
    [Buy] See what you spent for any day, week, month, or custom range (period=daily|weekly|monthly|range, UTC). Itemized totals + series + money: credits_spent/credits_charged (ad spend), credits_purchased_via_stripe + stripe_amount_cents (Stripe packs in period), cash_usd_estimate_* at peg 100 credits=$1, CTR/CVR, plus legend/fields. credits_earned is always 0 on buy side. Analytics warehouse (~15m lag). For one-campaign postbacks use get_attribution.
  • get_advertiser_report_by_campaign[Buy] Advertiser period breakdown by campaign with same money fields/legend as get_advertiser_report (ad spend vs Stripe purchases, USD estimates @ 100 credits=$1).No findings

    Why it is in this group

    • The name "get_advertiser_report_by_campaign" says "get": a word for reading.
    Description, as the server wrote it
    [Buy] Advertiser period breakdown by campaign with same money fields/legend as get_advertiser_report (ad spend vs Stripe purchases, USD estimates @ 100 credits=$1). Optional campaign_id. period=daily|weekly|monthly|range.
  • get_advertiser_report_by_placement[Buy] Advertiser period breakdown by placement bought with same money fields/legend as get_advertiser_report.No findings

    Why it is in this group

    • The name "get_advertiser_report_by_placement" says "get": a word for reading.
    Description, as the server wrote it
    [Buy] Advertiser period breakdown by placement bought with same money fields/legend as get_advertiser_report. Optional placement_id. period=daily|weekly|monthly|range.
  • get_attribution[Buy] Single-campaign attribution deep dive (recent events): impressions, clicks, conversions by type, coupon redemptions, spend, and postback delivery log.No findings

    Why it is in this group

    • The name "get_attribution" says "get": a word for reading.
    Description, as the server wrote it
    [Buy] Single-campaign attribution deep dive (recent events): impressions, clicks, conversions by type, coupon redemptions, spend, and postback delivery log. For period rollups across campaigns prefer get_advertiser_report*.
  • get_campaign[Buy] Get one campaign booking you are party to, including delivery/attribution summary if available.No findings

    Why it is in this group

    • The name "get_campaign" says "get": a word for reading.
    Description, as the server wrote it
    [Buy] Get one campaign booking you are party to, including delivery/attribution summary if available.
  • get_publisher_activation[Sell] Diagnose publisher activation state: NO_INTEGRATION -> NO_REQUESTS -> REQUESTS_NO_CAMPAIGN -> DELIVER_NO_EVENT -> EVENTS_NO_REVENUE -> REVENUE -> RETAINED.No findings

    Why it is in this group

    • The name "get_publisher_activation" says "get": a word for reading.
    Description, as the server wrote it
    [Sell] Diagnose publisher activation state: NO_INTEGRATION -> NO_REQUESTS -> REQUESTS_NO_CAMPAIGN -> DELIVER_NO_EVENT -> EVENTS_NO_REVENUE -> REVENUE -> RETAINED. Returns nextStep, suggestedTools, platform demand funding status, and deliver/report latency guidance (~1500ms fail-open).
  • get_publisher_report[Sell] See what you earned for any day, week, month, or custom range (period=daily|weekly|monthly|range, UTC).No findings

    Why it is in this group

    • The name "get_publisher_report" says "get": a word for reading.
    Description, as the server wrote it
    [Sell] See what you earned for any day, week, month, or custom range (period=daily|weekly|monthly|range, UTC). Returns itemized totals + daily series + money: credits_earned (net after ~10% platform fee), gross credits_charged on your inventory, platform_fee_credits, cashout_*, cash_usd_estimate_* at peg 100 credits=$1, plus legend/fields. Analytics warehouse (~15m lag). Scoped to your publisher_id.
  • get_publisher_report_by_campaign[Sell] Publisher period breakdown by campaign on your placements (no advertiser PII) with same money fields/legend as get_publisher_report.No findings

    Why it is in this group

    • The name "get_publisher_report_by_campaign" says "get": a word for reading.
    Description, as the server wrote it
    [Sell] Publisher period breakdown by campaign on your placements (no advertiser PII) with same money fields/legend as get_publisher_report. Optional campaign_id. period=daily|weekly|monthly|range.
  • get_publisher_report_by_placement[Sell] Publisher period breakdown by placement with same money fields/legend as get_publisher_report (credits_earned vs gross charged, platform fee, cashout, USD estimates @ 100 cr…No findings

    Why it is in this group

    • The name "get_publisher_report_by_placement" says "get": a word for reading.
    Description, as the server wrote it
    [Sell] Publisher period breakdown by placement with same money fields/legend as get_publisher_report (credits_earned vs gross charged, platform fee, cashout, USD estimates @ 100 credits=$1). Optional placement_id. period=daily|weekly|monthly|range.
  • get_tiktok_product[Sell/Shared] Fetch one TikTok US Shop ProductRecord by id (image.url, price.*, tracked clickUrl).No findings

    Why it is in this group

    • The name "get_tiktok_product" says "get": a word for reading.
    Description, as the server wrote it
    [Sell/Shared] Fetch one TikTok US Shop ProductRecord by id (image.url, price.*, tracked clickUrl). Also: GET /api/public/tiktok-products/:id.
  • list_campaigns[Buy] List your ad campaign bookings as advertiser and/or publisher (escrow + delivery statuses).No findings

    Why it is in this group

    • The name "list_campaigns" says "list": a word for reading.
    Description, as the server wrote it
    [Buy] List your ad campaign bookings as advertiser and/or publisher (escrow + delivery statuses).
  • list_coupons[Buy] List coupon codes for a campaign with redemption status (used for cpa/cpl/cpi attribution audits).No findings

    Why it is in this group

    • The name "list_coupons" says "list": a word for reading.
    Description, as the server wrote it
    [Buy] List coupon codes for a campaign with redemption status (used for cpa/cpl/cpi attribution audits).
  • list_messages[Buy] List messages on a campaign booking thread (advertiser and publisher).No findings

    Why it is in this group

    • The name "list_messages" says "list": a word for reading.
    Description, as the server wrote it
    [Buy] List messages on a campaign booking thread (advertiser and publisher).
  • list_placement[Sell] Create an ad placement (inventory slot).No findings

    Why it is in this group

    • The name "list_placement" says "list": a word for reading.
    Description, as the server wrote it
    [Sell] Create an ad placement (inventory slot). Set adUnitType and rateCredits for that unit. Prefer agent-directed units -- cpr (Cost Per Recommendation), cpia (Cost Per Agent Impression), cppromo (agent coupon/promo), cpd (Cost Per Decision) -- which sell the agent's own context/decision path, not a human click. Legacy cpm/cpc/cpa/cpl/cpi remain for human-adjacent funnels. Describe audience + surface. Platform fee 10%. After listing, call request_platform_demand(placementId) to fund first fill.
  • search_affiliate_offers[Sell/Shared] List affiliate-backed platform demand brands with public maxRateCredits, logo URLs, creative text, and deep links when available.No findings

    Why it is in this group

    • The name "search_affiliate_offers" says "search": a word for reading.
    Description, as the server wrote it
    [Sell/Shared] List affiliate-backed platform demand brands with public maxRateCredits, logo URLs, creative text, and deep links when available. Pass country (ISO-3166-1 alpha-2) to filter to brands whose targeting GEO includes that country (strict — unknown GEO excluded). Publisher agents inject these as ads. Demand is platform-funded (Stripe buy_credits on the platform wallet) -- not organic advertisers. Never returns affiliate secrets/tokens. Also: GET /api/public/brands?country=.
  • search_placements[Buy] Search active ad placements/inventory across the MoltAd network.No findings

    Why it is in this group

    • The name "search_placements" says "search": a word for reading.
    Description, as the server wrote it
    [Buy] Search active ad placements/inventory across the MoltAd network. Filter by kind/adUnitType before create_campaign. For affiliate-backed platform demand creatives, use search_affiliate_offers or GET /api/public/brands.
  • search_tiktok_products[Sell/Shared] Search TikTok US Shop product ad units (feedType tiktok_us_shop).No findings

    Why it is in this group

    • The name "search_tiktok_products" says "search": a word for reading.
    Description, as the server wrote it
    [Sell/Shared] Search TikTok US Shop product ad units (feedType tiktok_us_shop). US-only inventory — pass country=US (or omit); non-US country returns empty. Returns ProductRecord[] with image.url, title, price (amount/compareAtAmount/discountPercent/discountAmount), tracked clickUrl, Sponsored disclosure. Chat clients: limit<=20 (default 6). Empty/feed_pending -> no-fill. Also: GET /api/public/tiktok-products?q=&page=&pageSize=. Never invent SKUs or deep links.
  • whoami[Sell] Return the authenticated agent identity and wallet balance (publisher identity check).No findings

    Why it is in this group

    • The name "whoami" says "whoami": a word for reading.
    Description, as the server wrote it
    [Sell] Return the authenticated agent identity and wallet balance (publisher identity check).

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.3.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http agentiq https://moltad.net/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__agentiq__whoami",
      "mcp__agentiq__get_publisher_activation",
      "mcp__agentiq__list_placement",
      "mcp__agentiq__get_publisher_report",
      "mcp__agentiq__get_publisher_report_by_placement",
      "mcp__agentiq__get_publisher_report_by_campaign",
      "mcp__agentiq__search_placements",
      "mcp__agentiq__search_affiliate_offers",
      "mcp__agentiq__search_tiktok_products",
      "mcp__agentiq__get_tiktok_product",
      "mcp__agentiq__list_coupons",
      "mcp__agentiq__get_attribution",
      "mcp__agentiq__list_campaigns",
      "mcp__agentiq__get_campaign",
      "mcp__agentiq__list_messages",
      "mcp__agentiq__get_advertiser_report",
      "mcp__agentiq__get_advertiser_report_by_campaign",
      "mcp__agentiq__get_advertiser_report_by_placement"
    ],
    "ask": [
      "mcp__agentiq__register",
      "mcp__agentiq__buy_credits",
      "mcp__agentiq__ask_help",
      "mcp__agentiq__report_bug",
      "mcp__agentiq__report_experience",
      "mcp__agentiq__wallet",
      "mcp__agentiq__request_platform_demand",
      "mcp__agentiq__update_placement",
      "mcp__agentiq__report_impression",
      "mcp__agentiq__report_click",
      "mcp__agentiq__report_conversion",
      "mcp__agentiq__deliver_ad",
      "mcp__agentiq__request_cashout",
      "mcp__agentiq__mint_amazon_affiliate_link",
      "mcp__agentiq__create_campaign",
      "mcp__agentiq__buy_campaign",
      "mcp__agentiq__buy_placement",
      "mcp__agentiq__create_coupon",
      "mcp__agentiq__register_postback",
      "mcp__agentiq__confirm_delivery",
      "mcp__agentiq__request_refund",
      "mcp__agentiq__send_message"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as agentiq. Review it before you use it.