Skip to main content
Glama
mambalabsdev

Brand Sponsor Finder MCP Server

Brand Sponsor Finder MCP Server

Smithery Glama score MCP Registry npm version npm downloads license mcpservers.org

Find the brands that paid creators in a niche in the last 90 days, with the public evidence for each placement. One row per brand with a recency score, and one row per sighting with its evidence link, date, and promo code.

What's Inside

Related MCP server: @aryaminus/socials-mcp

What it does

  • Reads public YouTube video descriptions (channel feeds, or your own YouTube Data API key), podcast show notes, newsletter issues, and event sponsor pages for sponsor lines, promo codes, and sponsor slots.

  • Follows shortlinks and affiliate redirects to the brand's own domain, and merges every sighting into one row per brand domain.

  • Checks the brands it found for open partnership job posts (Greenhouse, Lever, Ashby) and creator or affiliate program pages, which become the brand's public contact.

  • Returns only sightings inside your date window, each with an evidence link. Instagram, TikTok, and the Meta Ad Library are not read.

All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.

Quick start

You need Node.js 18 or newer and an Apify account with an API token.

Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:

{
  "mcpServers": {
    "mamba-brand-sponsor-finder": {
      "command": "npx",
      "args": [
        "-y",
        "@mambalabsdev/mcp-brand-sponsor-finder"
      ],
      "env": {
        "APIFY_TOKEN": "your-apify-token"
      }
    }
  }
}

Restart the client. The find_brand_sponsors tool appears.

Prerequisites

Example prompts

  • "Find brands sponsoring health and fitness creators in the last 90 days."

  • "Which brands paid beauty YouTubers this month? Brand rows only."

  • "List coffee brands sponsoring podcasts and newsletters, with promo codes."

Tool

find_brand_sponsors. One tool. Example arguments:

{
  "niche": "health and fitness",
  "window_days": "90"
}

Inputs

Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults. Numbers and booleans are sent as strings.

Input

Type

Description

niche

string

The audience niche, for example "health and fitness", "beauty and skincare", or "food and beverage". Searches for channels, shows, and newsletters use it, and every row carries it. These three niches also start from a list of sources Mamba Labs has read before (turn off with use_niche_presets)

audience_keywords

string

Optional. More search terms for the audience, one per line or separated by commas, for example "strength training". Each one widens the podcast, newsletter, and (with your key) YouTube channel search. Up to 20. A text field, so a Clay column maps straight in

window_days

string

Only sightings from the last N days. Whole number, default 90, at most 365. Sent as text so Clay works Default 90

sources

string

Optional. Which sources to run, separated by commas, any of: youtube, podcast, event, newsletter, job_post, program. Empty runs all of them. job_post and program check the brands the other sources found

seed_sources

string

Optional. YouTube channel URLs or @handles, podcast RSS feed URLs, or newsletter URLs to read first, one per line or separated by commas. Each is read even beyond the per source limits

event_calendar

string

Optional. Events whose sponsor or partner page to read, as a JSON list of objects: [{"name": "...", "url": "sponsor page URL", "date": "YYYY-MM-DD", "city": "...", "audience": "...", "size": "..."}], or one sponsor page URL per line. url is needed; the rest is optional. A dated event inside the window gives dated rows; an undated or upcoming event gives undated rows

use_niche_presets

string

true or false, default true. For health and fitness, beauty and skincare, and food and beverage, also read the channels, shows, newsletters, and event pages Mamba Labs has read before Default true

include_brands

string

true or false, default true. One row per brand domain with sighting count, last seen date, sources, creators or events, contact, and recency score Default true

include_sightings

string

true or false, default true. One row per sighting with its evidence link, date, promo code, placement type, and pitch angle Default true

max_channels

string

YouTube channels read per run. Whole number, default 20, at most 100. Sent as text so Clay works Default 20

max_videos_per_channel

string

Newest uploads read per channel (the public feed holds 15). Whole number, default 15, at most 50. Sent as text so Clay works Default 15

max_podcasts

string

Podcast shows read per run. Whole number, default 15, at most 100. Sent as text so Clay works Default 15

max_episodes_per_podcast

string

Newest episodes read per show. Whole number, default 8, at most 30. Sent as text so Clay works Default 8

max_newsletters

string

Newsletters read per run. Whole number, default 8, at most 50. Sent as text so Clay works Default 8

max_issues_per_newsletter

string

Newest issues read per newsletter. Whole number, default 8, at most 30. Sent as text so Clay works Default 8

max_brands_to_check

string

Brands, most sighted first, whose job boards and program pages are checked. Whole number, default 25, at most 200. Sent as text so Clay works Default 25

max_charge_usd

string

Optional. The run stops before it would charge more than this

Pricing

Pay per event on Apify, billed to your Apify account. Prices in USD.

Event

Free plan

Bronze

Silver

Gold

brand-row, one brand returned as a row: domain, sighting count, last seen date, sources, creators or events it paid, public contact, and recency score

$0.02

$0.019

$0.018

$0.017

sighting-row, one public placement returned as a row: brand, source, creator or event, date, evidence link, promo code, placement type, and pitch angle

$0.005

$0.00475

$0.0045

$0.00425

apify-actor-start, per run start

$0.002

$0.002

$0.002

$0.002

Free rows: a run with no result writes one free row that says why, and a refused input writes one free row whose error_reason starts with input_invalid:.

Your keys

No key is needed. Your own YouTube Data API key is optional: set YOUTUBE_API_KEY in this server's environment and it is passed to the actor as youtube_api_key, so the key never goes through the conversation. With it the actor searches YouTube for channels in the niche and reads up to 50 uploads per channel.

Full actor documentation

apify.com/mambalabs/brand-sponsor-finder

License

MIT. See LICENSE.

Available Tools

1 tool
find_brand_sponsorsFind brands paying creators in a niche, with evidenceA
Read-only

Find brands with recent public proof of paid placement in a niche. Give a niche (for example health and fitness, beauty and skincare, food and beverage) and optionally audience keywords, seed YouTube channels, podcast feeds, or newsletters, and event sponsor pages. The actor reads public YouTube descriptions, podcast show notes, newsletter issues, event sponsor pages, partnership job posts, and brand creator program pages, and returns one row per brand domain (sighting count, last seen date, sources, creators or events sponsored, public contact, recency score) and one row per sighting (brand, domain, source, creator or event, date, evidence link, promo code, placement type, pitch angle). Instagram, TikTok, and the Meta Ad Library are not read. Input with nothing to run returns one free row whose error_reason starts with input_invalid:. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per brand row, per sighting row, and per run start.

NameRequiredDescriptionDefault
nicheNoThe audience niche, for example "health and fitness", "beauty and skincare", or "food and beverage". Searches for channels, shows, and newsletters use it, and every row carries it. These three niches also start from a list of sources Mamba Labs has read before (turn off with use_niche_presets).
sourcesNoOptional. Which sources to run, separated by commas, any of: youtube, podcast, event, newsletter, job_post, program. Empty runs all of them. job_post and program check the brands the other sources found.
window_daysNoOnly sightings from the last N days. Whole number, default 90, at most 365. Sent as text so Clay works. Default 90.
max_channelsNoYouTube channels read per run. Whole number, default 20, at most 100. Sent as text so Clay works. Default 20.
max_podcastsNoPodcast shows read per run. Whole number, default 15, at most 100. Sent as text so Clay works. Default 15.
seed_sourcesNoOptional. YouTube channel URLs or @handles, podcast RSS feed URLs, or newsletter URLs to read first, one per line or separated by commas. Each is read even beyond the per source limits.
event_calendarNoOptional. Events whose sponsor or partner page to read, as a JSON list of objects: [{"name": "...", "url": "sponsor page URL", "date": "YYYY-MM-DD", "city": "...", "audience": "...", "size": "..."}], or one sponsor page URL per line. url is needed; the rest is optional. A dated event inside the window gives dated rows; an undated or upcoming event gives undated rows.
include_brandsNotrue or false, default true. One row per brand domain with sighting count, last seen date, sources, creators or events, contact, and recency score. Default true.
max_charge_usdNoOptional. The run stops before it would charge more than this.
max_newslettersNoNewsletters read per run. Whole number, default 8, at most 50. Sent as text so Clay works. Default 8.
audience_keywordsNoOptional. More search terms for the audience, one per line or separated by commas, for example "strength training". Each one widens the podcast, newsletter, and (with your key) YouTube channel search. Up to 20. A text field, so a Clay column maps straight in.
include_sightingsNotrue or false, default true. One row per sighting with its evidence link, date, promo code, placement type, and pitch angle. Default true.
use_niche_presetsNotrue or false, default true. For health and fitness, beauty and skincare, and food and beverage, also read the channels, shows, newsletters, and event pages Mamba Labs has read before. Default true.
max_brands_to_checkNoBrands, most sighted first, whose job boards and program pages are checked. Whole number, default 25, at most 200. Sent as text so Clay works. Default 25.
max_videos_per_channelNoNewest uploads read per channel (the public feed holds 15). Whole number, default 15, at most 50. Sent as text so Clay works. Default 15.
max_episodes_per_podcastNoNewest episodes read per show. Whole number, default 8, at most 30. Sent as text so Clay works. Default 8.
max_issues_per_newsletterNoNewest issues read per newsletter. Whole number, default 8, at most 30. Sent as text so Clay works. Default 8.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the billing units (per brand row, per sighting row, per run start), the APIFY_TOKEN requirement, the free single-row response for invalid input, and that failures return an error with a run ID. The read-only annotation is consistent and the description adds operational context the 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?

Despite its length, every sentence carries a distinct payload: purpose, inputs, return shape, exclusions, error behavior, and cost, roughly in that front-loaded order. It is one dense paragraph rather than a structured list, which slightly hurts scanability for a tool with this much surface area.

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 17 parameters and no output schema, the description must carry the return-shape burden, and it does: it enumerates the fields of both the brand row and the sighting row. Combined with the coverage of exclusions, auth, and billing, an agent has everything needed to call this 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?

Schema description coverage is 100%, so the schema already documents all 17 parameters thoroughly, including defaults and limits. The description only restates the categories of optional input and adds no syntax or interaction 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 and resource (find brands with recent public proof of paid placement in a niche) and names the exact evidence sources it reads. An agent knows precisely what the tool returns and on what basis, with no sibling tools to confuse it.

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 niche examples, notes what the optional inputs unlock (seed channels, feeds, event pages), and explicitly excludes Instagram, TikTok, and the Meta Ad Library. It also flags the APIFY_TOKEN prerequisite and the cost model. No alternatives exist to route against, so this is strong but 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.0
    • First observedfind_brand_sponsors

TDQS

A4.4/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no risk of selecting between overlapping operations. Its purpose is clearly stated as brand sponsor discovery.

Naming Consistency5/5

The single tool uses a clear snake_case verb_noun pattern: find_brand_sponsors. There are no conflicting naming conventions within the set.

Tool Count3/5

The single tool fits the narrow discovery purpose, but a one-tool surface is inherently thin and limits the server to one operation. It is not a trivial tool, but the set is at the low end for an MCP server.

Completeness4/5

For a read-only brand sponsor discovery server, the tool covers the core search use case with rich inputs and outputs. Minor gaps remain around follow-up operations such as retrieving or managing individual brand records, but they are not required for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects a podcast-sponsorship database to AI assistants, allowing users to search for brands that sponsor podcasts and reveal buyer contacts by name and email.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables social media creators to pull TikTok, Instagram, Facebook, and YouTube analytics into a persistent vault, receive weekly digests, review scripts, build media kits, and draft brand outreach using official APIs only.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to research YouTube sponsors, inspect brands and their video evidence, explore overlapping creators and similar brands, manage research lists, and work with verified contacts.
    8 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables agents to analyze X creators' niches, audiences and engagement, estimate sponsored-post prices with a transparent formula, rank creators against a brand brief, and run deals from offer through post verification to a recorded payout ledger. Every write is previewed and confirmed by a human, and the server never posts to X or moves money.
    16
    1
    MIT