Newsletter Sponsor Tracker MCP Server
In brand mode, searches Google results (through the Apify proxy) to find candidate newsletters that may carry a given brand's sponsorship, then confirms placements in those newsletters' own issues.
Uses newsletter RSS feeds as an archive source so recent issues can be scanned for sponsor placements, in addition to Substack archives and beehiiv/other sitemaps.
Reads a newsletter's Substack archive JSON to pull recent issues and identify the sponsors placed in them, returning per-sponsor rows with name, domain, placements, share of issues, and issue links.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Newsletter Sponsor Tracker MCP ServerWho sponsored Not Boring and Superhuman AI in their last 20 issues?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Newsletter Sponsor Tracker MCP Server
An MCP server for the Mamba Labs Newsletter Sponsor Tracker actor on Apify. Give it newsletter links to see who sponsors them, or a brand to see which newsletters it sponsors.
What's Inside
Related MCP server: Sponsorable MCP server
What it does
Two modes:
newsletter: give
newsletter_urls. You get one row per sponsor found in the newest issues: sponsor name, domain, link without tracking, placements, share of issues, first and last issue seen, and issue links, plus one free summary row per newsletter.brand: give
brand_nameandbrand_domain. You get the newsletters whose recent issues carry a sponsor placement for the brand, found through Google results and confirmed in each newsletter's own issues.
Archives are read from Substack archive JSON, beehiiv and other sitemaps, or RSS. A placement is a short block with a sponsor label and the first outside link beside it.
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-newsletter-sponsor-tracker": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-newsletter-sponsor-tracker"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Restart the client. The track_newsletter_sponsors tool appears.
Prerequisites
Node.js 18 or newer.
An Apify API token from console.apify.com/account/integrations, set as
APIFY_TOKEN. The server lists its tool without a token; a call needs one.
Example prompts
"Who sponsored Not Boring and Superhuman AI in the last 20 issues?"
"Which newsletters has Attio sponsored recently?"
"List the sponsors of these five AI newsletters with how often each appeared."
Tool
track_newsletter_sponsors. One tool. Example arguments:
{
"mode": "newsletter",
"newsletter_urls": [
"https://www.notboring.co"
],
"issues_to_scan": "20"
}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 |
| string | newsletter (default) or brand |
| array | Newsletter mode. Home page links or domains, up to 100 |
| string | Brand mode. The sponsor name |
| string | Brand mode. The sponsor domain |
| string | Brand mode. 1 to 10. Default 10 |
| string | 1 to 200; at most 20 in brand mode. Default 20 |
| string | Date window in days. Default 365 |
| string | Optional cost cap for the run |
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
Event | Free plan | Bronze | Silver | Gold |
| $0.004 | $0.0038 | $0.0036 | $0.0034 |
| $0.065 | $0.06175 | $0.0585 | $0.05525 |
| $0.0005 | $0.0005 | $0.0005 | $0.0005 |
Newsletter summary rows, no results rows, and error rows are free. The brand search event is charged when at least one candidate newsletter was read.
Your keys
The actor needs no key. It reads public newsletter archives, sitemaps, and feeds, and in brand mode Google result pages through the Apify proxy, and holds no key of any kind. Mamba Labs pays the platform and proxy costs of the run.
Full actor documentation
apify.com/mambalabs/newsletter-sponsor-tracker
License
MIT. See LICENSE.
Available Tools
1 tooltrack_newsletter_sponsorsTrack newsletter sponsorsARead-only
Find who sponsors a newsletter, or which newsletters a brand sponsors, from public newsletter archives (Substack archive JSON, beehiiv and other sitemaps, RSS). mode newsletter: give newsletter_urls (for example notboring.co) and get one row per sponsor found in the newest issues, with sponsor name, domain, link without tracking, placements, share of issues, first and last issue seen, and issue links, plus one free summary row per newsletter. mode brand: give brand_name and brand_domain (for example Attio, attio.com) and get the newsletters whose recent issues carry a sponsor placement for the brand, found through Google results and confirmed in each newsletter's own issues. A placement is a short block with a sponsor label (presented by, brought to you by, sponsored by, together with) and the first outside link beside it. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per sponsor row and, in brand mode, one brand search event.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | newsletter (default): newsletter links in, sponsors out. brand: a brand in, the newsletters that ran its placements out. | |
| brand_name | No | Brand mode. The sponsor name as newsletters print it, for example Attio. | |
| since_days | No | Stop at issues older than this many days. 0: no limit. Default 365. | |
| brand_domain | No | Brand mode. The sponsor domain, for example attio.com. | |
| issues_to_scan | No | Newest issues read per newsletter, 1 to 200; at most 20 in brand mode. Default 20. | |
| max_charge_usd | No | Optional. The run stops before any row that would take its charges over this amount. | |
| newsletter_urls | No | Newsletter mode. Home page links or domains, up to 100, for example notboring.co. | |
| newsletters_to_check | No | Brand mode. Candidate newsletters to confirm, 1 to 10. Default 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/no-destroy, but the description adds value beyond them: APIFY_TOKEN requirement, Apify's per-sponsor-row and per-brand-search-event charge model, max_charge_usd behavior, and error-with-run-ID semantics. It also discloses sourcing ('public newsletter archives ... Google results and confirmed in each newsletter's own issues'), which explains why results may be incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then mode-specific usage, then mechanics/cost. Sentences are long and dense but nearly every clause is doing work; the definition of 'placement' is justified because it explains how matching is decided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 optional parameters and no output schema, the description still tells the agent what rows come back (sponsor name, domain, placements, share of issues, first/last issue, issue links, plus a free summary row), what a placement is, and what failure looks like. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does tie parameters to modes (newsletter_urls for newsletter mode, brand_name/brand_domain for brand mode) and restates the 20-issue cap in brand mode, but it adds little syntax or constraint detail the schema doesn't already carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and a two-sided resource ('Find who sponsors a newsletter, or which newsletters a brand sponsors') and enumerates the concrete output rows for each direction. An agent immediately knows this is sponsor/newsletter attribution mining, not generic crawling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is spelled out per mode: 'mode newsletter: give newsletter_urls ... and get one row per sponsor found', 'mode brand: give brand_name and brand_domain ... and get the newsletters whose recent issues carry a sponsor placement'. There are no siblings and no exclusions to state, and the input you must supply per mode is explicit, though it doesn't state when to prefer one mode over the other beyond the obvious input shape.
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 tool update
v1.0.0- First observed
track_newsletter_sponsors
TDQS
Scored across 1 tool
With only one tool there is no cross-tool misselection risk, but that single tool bundles two distinct operations (newsletter→sponsors and brand→newsletters) behind a 'mode' switch, so the agent must parse the description to pick the right mode and inputs.
track_newsletter_sponsors is a clean snake_case verb_noun name, though 'track' is a bit loose for a read-only lookup and there is no second tool to establish a real naming pattern.
A single tool for a narrow sponsor-tracking domain is defensible, but it is thin — the two lookup directions would be clearer as separate tools, and there is no companion tool for retrieving results of a failed run.
The core read-only lookup is covered for both directions, but the surface has dead ends: failed runs return a run ID with no tool to check status or retrieve results, and there is no way to fetch a stored/previous report.
Maintenance
Related MCP Connectors
Find brands that already sponsor newsletters like yours, with sponsorship rates.
Public index of YouTube sponsorships: which brands sponsor which creators, from sampled videos.
Every ad a brand runs on Google Search, YouTube and Display, from Google's Ads Transparency Center: format, first and last shown, days running, ad text, images and links. Find advertisers by name or domain. Runs on Apify.
Jobs, visa sponsors, tenders, SEC filings, KYB checks, company and domain intel via Apify.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceExtracts sponsored products, brand mentions, and affiliate signals from newsletters to generate a shoppable 'Products in this edition' section for affiliate revenue.326 npmMIT
- AlicenseNot gradedqualityCmaintenanceConnects 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

Sponsorbook MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables 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 npmMIT- AlicenseAqualityAmaintenanceEnables matching influencers to their talent agencies and agencies to their public creator rosters through an Apify actor.1238 npmMIT