Newsletter Commerce Intelligence MCP

Newsletter Commerce Intelligence MCP

Extracts sponsored products, brand mentions, and affiliate signals from newsletters to generate a shoppable 'Products in this edition' section for affiliate revenue.

Category
Visit Server

README

Newsletter Commerce Intelligence MCP

npm License: MIT Stars

Turn newsletters into affiliate revenue. Extract sponsored products, brand mentions, and affiliate signals from any Substack, Ghost, or Beehiiv issue. Then auto-generate a shoppable "Products in this edition" section ready to paste into your newsletter. F1=100% on eval suite. Free tier: 200 calls/day.

⭐ If this saves you time, please star the repo — it helps other developers find it.

Live endpoint: https://newsletter-commerce-mcp.sincetoday.workers.dev/mcp · See examples

Extract product mentions, score sponsors, and track affiliate trends from newsletters. Supports Substack, Ghost, Beehiiv, and plain text. Built on x402, the open payment standard backed by Shopify, Google, Microsoft, Visa, and the Linux Foundation.

Tools

Tool Description
extract_newsletter_products Extract products, affiliate links, and sponsor mentions from a newsletter issue
analyze_newsletter_sponsors Score sponsor sections by CPM, read-through rate, and audience fit
track_product_trends Compare product mentions across multiple newsletter issues to surface trending products and brand patterns
generate_newsletter_products_section Format extracted products into a 'Products in This Edition' footer section (markdown or HTML)

Quick Start

# Install
npm install newsletter-commerce-mcp

# Configure
cp .env.example .env
# Edit .env: set OPENAI_API_KEY

# Run (stdio MCP server)
npx newsletter-commerce-mcp

MCP Client Config

{
  "mcpServers": {
    "newsletter-commerce": {
      "command": "npx",
      "args": ["newsletter-commerce-mcp"],
      "env": {
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Tool Reference

extract_newsletter_products

{
  "content": "Newsletter HTML or plain text (max 200k chars)",
  "newsletter_id": "optional-cache-key",
  "format": "html",
  "api_key": "optional-paid-key"
}

Returns:

{
  "newsletter_id": "swipe-file-issue-47",
  "products": [
    {
      "name": "Notion AI",
      "category": "saas",
      "mention_context": "running my entire writing workflow through Notion AI",
      "recommendation_strength": "strong",
      "affiliate_link": null,
      "confidence": 0.94,
      "is_sponsored": false
    }
  ],
  "sponsor_sections": [...],
  "_meta": { "processing_time_ms": 1620, "ai_cost_usd": 0.0028, "cache_hit": false }
}

analyze_newsletter_sponsors

{
  "content": "Newsletter HTML or plain text",
  "newsletter_id": "optional",
  "api_key": "optional"
}

Returns CPM estimate, read-through rate, and sponsor-reader fit score per sponsor section.

track_product_trends

{
  "newsletter_ids": ["issue-45", "issue-46", "issue-47"],
  "category_filter": ["saas", "books"]
}

Requires prior extract_newsletter_products calls for each newsletter_id. Returns trend data including top_category, avg_recommendation_strength, and brand per product trend.

generate_newsletter_products_section

{
  "newsletter_id": "swipe-file-issue-47",
  "format": "markdown",
  "style": "full",
  "api_key": "optional"
}

Formats extracted products into a ready-to-paste 'Products in This Edition' section. Pass newsletter_id (uses cached extraction) or products[] directly. format: markdown (default) or html. style: full (default, grouped by endorsement strength with context quotes) or minimal (compact list).

Example Output

Real extraction from a TLDR Tech newsletter (live eval: F1=88%, 95/100 score, $0.00051/call, 7390ms):

{
  "newsletter_id": "tldr-2024-03-07",
  "products": [
    {
      "name": "Groq",
      "category": "saas",
      "mention_context": "Groq has launched public API access — runs Llama 2 at 300 tokens/second",
      "confidence": 0.94,
      "recommendation_strength": "neutral"
    },
    {
      "name": "Devin (Cognition AI)",
      "category": "saas",
      "mention_context": "first AI software engineer — benchmarks show it can complete real GitHub issues end-to-end",
      "confidence": 0.91,
      "recommendation_strength": "strong"
    }
  ]
}

See /examples endpoint for full output with value narrative: https://newsletter-commerce-mcp.sincetoday.workers.dev/examples

Pricing

  • Free tier: 200 calls/day per agent (no API key required)
  • Paid: $0.01/call — set MCP_API_KEYS with valid keys

Environment Variables

Variable Required Default Description
OPENAI_API_KEY Yes — OpenAI API key
AGENT_ID No anonymous Agent identifier for rate limiting
MCP_API_KEYS No — Comma-separated paid API keys
CACHE_DIR No ./data/cache.db SQLite cache path
PAYMENT_ENABLED No false Set true to enforce limits

Development

npm install
npm run typecheck   # Zero type errors
npm test            # All tests pass
npm run build       # Compile to dist/

License

MIT — Since Today Studio

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured