Skip to main content
Glama
nicofains1

Agentic Ads

by nicofains1

Agentic Ads

Google AdSense для AI-агентов. Добавьте 3 строки кода в ваш MCP-сервер. Зарабатывайте 70% с каждого клика по рекламе.

npm version Tests License: MIT MCP Node

Живое демо · Быстрый старт · MCP-инструменты · Собственный хостинг


Быстрый старт

Шаг 1 — Зарегистрируйтесь и получите API-ключ (30 секунд):

Посетите веб-форму: https://agentic-ads-production.up.railway.app/dev/register

Или используйте API напрямую:

curl -X POST https://agentic-ads-production.up.railway.app/api/register \
  -H "Content-Type: application/json" \
  -d '{"name": "My MCP Bot", "email": "me@example.com", "project_description": "A coding assistant that recommends dev tools"}'
# Returns: { "api_key": "aa_dev_...", "mcp_url": "https://agentic-ads-production.up.railway.app/mcp" }

Шаг 2 — Добавьте в конфигурацию вашего MCP-клиента:

{
  "mcpServers": {
    "agentic-ads": {
      "url": "https://agentic-ads-production.up.railway.app/mcp",
      "transport": "http"
    }
  }
}

Шаг 3 — Вызовите search_ads в вашем агенте и зарабатывайте на каждом клике:

// In your agent logic — when context is relevant
const ads = await mcp.callTool({
  name: 'search_ads',
  arguments: { query: 'best running shoes for marathon', max_results: 1 }
});

// Report events to get paid
await mcp.callTool({
  name: 'report_event',
  arguments: { ad_id: ads[0].ad_id, event_type: 'impression' }
});
// User clicks → report 'click' → you earn $0.35 on a $0.50 CPC ad

Вот и всё. Вы начали монетизировать.


Related MCP server: superhighway-mcp

Зачем это нужно

Вы создали отличный MCP-сервер. Пользователи его обожают. Но вы не зарабатываете денег.

agentic-ads — это недостающий слой монетизации для экосистемы MCP. Это как Google AdSense, но для AI-агентов вместо веб-сайтов.

Проблема

  • Существует более 16 000 MCP-серверов. Почти ни один не монетизируется.

  • Разработчики тратят недели на создание полезных инструментов, зарабатывая $0.

  • Пользователи просят агентов порекомендовать товары → агенты скрапят веб → бренды не могут до них добраться.

Решение

Контекстная реклама, уважающая конфиденциальность, предоставляемая через MCP-инструменты. Разработчики получают 70% доли дохода (лучший показатель в отрасли). Рекламодатели достигают пользователей AI-агентов. Все в выигрыше.


Калькулятор дохода

Пример: Ваш MCP-сервер получает 10 000 запросов/месяц, где уместна реклама.

Сценарий

Показов/мес

CTR

Кликов/мес

CPC

Ваш доход

Консервативный

10 000

2%

200

$0.50

$70/мес

Реалистичный

10 000

5%

500

$0.50

$175/мес

Высокий

10 000

8%

800

$0.75

$420/мес

При 100 000 запросов/месяц с CTR 5%: $1 750/месяц пассивного дохода.

Это $21 000/год за добавление 3 строк кода в ваш MCP-сервер.


Подробное руководство по интеграции

Для разработчиков MCP (Зарабатывайте деньги)

Подключите живой сервер и начинайте вызывать инструменты — без процесса утверждения, без минимальных сумм.

// 1. When user asks about products/services
const ads = await mcp.callTool({
  name: 'search_ads',
  arguments: {
    query: 'best running shoes for marathon',
    max_results: 2
  }
});

// 2. Show relevant ad in your response (if it adds value)
// 3. Report impression
await mcp.callTool({
  name: 'report_event',
  arguments: { ad_id: 'ad_xyz', event_type: 'impression' }
});

// 4. If user clicks → report 'click' event
// You earn $0.35 on a $0.50 CPC click (70% revenue share)

Для рекламодателей (Достигайте пользователей AI)

# Create campaign + ad via MCP tools
mcp.callTool({
  name: 'create_campaign',
  arguments: {
    name: 'Q1 Running Shoes',
    total_budget: 500,
    pricing_model: 'cpc',
    bid_amount: 0.50
  }
});

mcp.callTool({
  name: 'create_ad',
  arguments: {
    campaign_id: 1,
    creative_text: 'Ultraboost 24 — 30% off! Free shipping.',
    link_url: 'https://adidas.com/ultraboost',
    keywords: ['running shoes', 'sneakers', 'marathon'],
    category: 'footwear'
  }
});

# Monitor analytics
mcp.callTool({ name: 'get_campaign_analytics', arguments: { campaign_id: 1 } });

Как это работает

┌─────────────┐                    ┌──────────────────┐                    ┌──────────────┐
│  Advertiser  │────────────────────│  Agentic Ads MCP │────────────────────│  Your MCP     │
│  (Brand/API) │  create_campaign   │     Server       │  search_ads        │  Server       │
│              │  create_ad         │                  │  report_event      │               │
│              │  get_analytics     │  - Matching      │  get_guidelines    │  Shows ads    │
└─────────────┘                    │  - Billing       │                    │  to users     │
                                   │  - Auth & Rate   │                    └──────────────┘
                                   │  - Analytics     │
                                   └──────────────────┘

Пример потока:

  1. Пользователь спрашивает вашего агента: "лучшие кроссовки для марафона"

  2. Ваш агент вызывает search_ads → получает релевантные объявления, ранжированные по ставке × релевантности

  3. Агент естественно показывает рекламу: "Ultraboost 24 — $126 (скидка 30%) на Adidas.com (Реклама)"

  4. Пользователь кликает → вы сообщаете о событии click → вы зарабатываете $0.35 (70% от $0.50 CPC)

Конфиденциальность: Никакого отслеживания пользователей, профилирования или куки. Только контекстное сопоставление ключевых слов.


Почему разработчики MCP это любят

1. Лучшая в отрасли доля дохода

70% вам, 30% платформе. Сравните:

Платформа

Доля разработчика

agentic-ads

70%

Google AdSense

68%

Amazon Associates

1-10%

Партнерские сети

5-30%

2. Никаких сложностей с настройкой

  • Никаких контрактов, минимальных сумм или задержек с утверждением

  • Регистрация за секунды через POST /api/register → получите ваш API-ключ

  • Добавьте 1 MCP-сервер в вашу конфигурацию → начните зарабатывать через 5 минут

3. С уважением к конфиденциальности

  • Никакого отслеживания или профилирования пользователей

  • Никаких куки, никакой цифровой идентификации браузера

  • Только контекстное сопоставление ключевых слов (как ранний Google AdWords)

  • Конфиденциальность ваших пользователей остается нетронутой

4. Вы контролируете, какая реклама показывается

  • Агент решает, какую рекламу (если вообще) показывать

  • Полный контекст пользователя остается локальным (никогда не отправляется на рекламный сервер)

  • Порог релевантности в ваших руках

  • Пользователи могут отказаться ("без рекламы, пожалуйста")

5. Прозрачная аналитика

  • Отслеживание дохода в реальном времени

  • Видите точно, сколько вы заработали, когда и почему

  • Никаких алгоритмов "черного ящика" или скрытых комиссий


MCP-инструменты (всего 8)

Для разработчиков (Сторона потребителя) — 3 инструмента

Инструмент

Аутентификация

Описание

search_ads

Публичный

Поиск рекламы по запросу/ключевым словам/категории/гео. Возвращает ранжированные результаты с оценками релевантности.

report_event

Ключ разработчика

Сообщение о событиях показов/кликов/конверсий. Запускает расчет дохода.

get_ad_guidelines

Публичный

Получение рекомендаций по форматированию для естественного показа рекламы пользователям.

Для рекламодателей (Сторона издателя) — 5 инструментов

Инструмент

Аутентификация

Описание

create_campaign

Ключ рекламодателя

Создание кампании с бюджетом, целью, моделью ценообразования (CPC/CPM/CPA).

create_ad

Ключ рекламодателя

Создание объявления с креативным текстом, ключевыми словами, таргетингом, ссылкой.

get_campaign_analytics

Ключ рекламодателя

Получение метрик эффективности (показы, клики, конверсии, расходы, ROI).

update_campaign

Ключ рекламодателя

Обновление кампании (пауза/возобновление, корректировка бюджета, изменение таргетинга).

list_campaigns

Ключ рекламодателя

Список всех кампаний со сводной статистикой, опциональный фильтр по статусу.


Модели ценообразования

Выберите, как вы хотите платить (рекламодатели) или зарабатывать (разработчики):

Модель

Рекламодатель платит

Разработчик зарабатывает (70%)

Когда списывается

CPC (Клик)

$0.50 за клик

$0.35

Пользователь кликает по ссылке объявления

CPM (Показ)

$5.00 за 1000 показов

$3.50

Реклама показана пользователю

CPA (Конверсия)

$10.00 за конверсию

$7.00

Пользователь совершает действие (покупка, регистрация и т.д.)

Контроль бюджета: Установите общий бюджет + дневные лимиты. Автоматическая пауза при исчерпании бюджета.


Получение вашего API-ключа

Для вызова report_event или инструментов рекламодателя вам нужен API-ключ.

Вариант A — Веб-форма (самый простой):

Посетите https://agentic-ads-production.up.railway.app/dev/register и заполните свои данные. Ваш API-ключ отобразится немедленно.

Вариант B — API:

curl -X POST https://agentic-ads-production.up.railway.app/api/register \
  -H "Content-Type: application/json" \
  -d '{"name": "My MCP Bot", "email": "me@example.com", "project_description": "A coding assistant"}'

Ответ:

{
  "developer_id": "...",
  "api_key": "aa_dev_...",
  "mcp_url": "https://agentic-ads-production.up.railway.app/mcp"
}

Поле

Обязательно

Описание

name

Да

Название вашего проекта или бота

email

Да

Контактный email

project_description

Нет

Краткое описание вашего MCP-сервера (макс. 500 символов)

Используйте api_key в заголовке Authorization: Authorization: Bearer aa_dev_...

Развернуто на Railway с постоянным хранилищем: Живой сервер на agentic-ads-production.up.railway.app работает на Railway с постоянным томом — данные сохраняются между развертываниями и перезапусками. Для самостоятельного хостинга используйте DATABASE_PATH=/data/ads.db, указывая на смонтированный том.


Установка

Вариант 1: Подключение к живому серверу (Самый простой)

Добавьте в конфигурацию вашего MCP-клиента (Claude Desktop, Cursor, Windsurf и т.д.):

{
  "mcpServers": {
    "agentic-ads": {
      "url": "https://agentic-ads-production.up.railway.app/mcp",
      "transport": "http"
    }
  }
}

Проверка работоспособности: https://agentic-ads-production.up.railway.app/health

Вариант 2: Локальный stdio (Разработка)

npm install -g agentic-ads

# Add to MCP config
{
  "mcpServers": {
    "agentic-ads": {
      "command": "npx",
      "args": ["agentic-ads", "--stdio"]
    }
  }
}

Вариант 3: Собственный хостинг (Продакшн)

git clone https://github.com/nicofains1/agentic-ads.git
cd agentic-ads
npm install && npm run build

# Start HTTP server
PORT=19877 npm run start:http

# Or stdio
npm run start:stdio

Флаги:

node dist/server.js --http --port 19877 --db ./ads.db

Флаг

По умолчанию

Описание

--http

—

Запуск HTTP-сервера (по умолчанию stdio)

--port N

3000

HTTP-порт

--db PATH

agentic-ads.db

Путь к базе данных SQLite

--api-key KEY

—

Предварительная аутентификация сессий stdio

Переменные окружения:

PORT=19877                     # HTTP server port (alternative to --port)
DATABASE_PATH=/data/ads.db     # SQLite database path (default: agentic-ads.db)
AGENTIC_ADS_API_KEY=aa_dev_... # Developer API key for stdio mode

Постоянство БД: Установите DATABASE_PATH в путь на постоянном томе. При первом запуске с пустой БД демо-кампании автоматически заполняются. См. DEPLOY.md для полного руководства по развертыванию (Railway рекомендуется для бесплатного постоянного хранилища).


Примеры интеграции

Claude Desktop

Добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "agentic-ads": {
      "command": "npx",
      "args": ["agentic-ads", "--stdio"]
    }
  }
}

Cursor / Windsurf

{
  "mcpServers": {
    "agentic-ads": {
      "url": "https://agentic-ads-production.up.railway.app/mcp",
      "transport": "http"
    }
  }
}

Пользовательский TypeScript-агент

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

const transport = new StdioClientTransport({
  command: 'npx',
  args: ['agentic-ads', '--stdio']
});

const client = new Client({ name: 'my-agent', version: '1.0.0' });
await client.connect(transport);

// Search for ads
const result = await client.callTool({
  name: 'search_ads',
  arguments: {
    query: 'best laptops for coding',
    keywords: ['laptop', 'programming'],
    category: 'electronics',
    max_results: 3
  }
});

console.log(result.content[0].text);
// Returns: { "ads": [ { "ad_id": "...", "creative_text": "...", "relevance_score": 0.87 } ] }

Управление сессиями Streamable HTTP

При вызове живого сервера через HTTP вы должны управлять MCP-сессиями вручную. Вот полный пример с использованием raw fetch:

const BASE = "https://agentic-ads-production.up.railway.app";
const API_KEY = "aa_dev_..."; // from /api/register

const headers = {
  "Content-Type": "application/json",
  "Accept": "application/json, text/event-stream",
  "Authorization": `Bearer ${API_KEY}`,
};

// 1. Initialize — get a session ID
const initRes = await fetch(`${BASE}/mcp`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    jsonrpc: "2.0", id: 1, method: "initialize",
    params: {
      protocolVersion: "2024-11-05",
      capabilities: {},
      clientInfo: { name: "my-agent", version: "1.0.0" },
    },
  }),
});
const sessionId = initRes.headers.get("mcp-session-id");

// 2. Send initialized notification (required by MCP spec)
await fetch(`${BASE}/mcp`, {
  method: "POST",
  headers: { ...headers, "mcp-session-id": sessionId },
  body: JSON.stringify({
    jsonrpc: "2.0", method: "notifications/initialized", params: {},
  }),
});

// 3. Call tools — pass session ID on every request
const res = await fetch(`${BASE}/mcp`, {
  method: "POST",
  headers: { ...headers, "mcp-session-id": sessionId },
  body: JSON.stringify({
    jsonrpc: "2.0", id: 2, method: "tools/call",
    params: { name: "search_ads", arguments: { query: "running shoes", max_results: 2 } },
  }),
});

// 4. Parse response (SSE format: "event: message\ndata: {...}")
const text = await res.text();
const dataLine = text.split("\n").find((l) => l.startsWith("data:"));
const result = JSON.parse(dataLine.slice(5));
console.log(result.result.content[0].text);

Ключевые моменты:

  • Заголовок mcp-session-id возвращается при initialize и должен отправляться во всех последующих запросах

  • Аутентификация (Authorization: Bearer ...) устанавливается для каждой сессии — все вызовы инструментов в этой сессии наследуют её

  • Сервер использует формат SSE (Server-Sent Events) — парсите строку data: из ответа

  • См. examples/demo-mcp-server для полного рабочего примера


Архитектура

┌─────────────────────────────────────────────────────────────┐
│  MCP Server (Node.js 22 + TypeScript)                       │
│  ┌───────────────┐  ┌──────────────┐  ┌─────────────────┐  │
│  │ Tool Registry │  │ Auth & Rate  │  │ Matching Engine │  │
│  │ (8 tools)     │  │ Limiting     │  │ (relevance²     │  │
│  │               │  │ (SHA-256)    │  │ × bid × quality)│  │
│  └───────────────┘  └──────────────┘  └─────────────────┘  │
│  ┌───────────────┐  ┌──────────────┐  ┌─────────────────┐  │
│  │ SQLite (WAL)  │  │ Revenue      │  │ Analytics       │  │
│  │ - Campaigns   │  │ Split Engine │  │ (real-time)     │  │
│  │ - Ads         │  │ (70/30)      │  │                 │  │
│  │ - Events      │  │              │  │                 │  │
│  └───────────────┘  └──────────────┘  └─────────────────┘  │
└─────────────────────────────────────────────────────────────┘
          │                                          │
          │                                          │
  Streamable HTTP (remote)                     stdio (local)

Ключевые особенности:

  • Конфиденциальность: Никакого отслеживания пользователей, только контекстное сопоставление

  • Релевантность: score = relevance² × bidFactor × quality_score (релевантность доминирует)

  • Атомарность: Вставка события + обновление статистики + разделение дохода в одной транзакции SQLite

  • Ограничение скорости: Скользящее окно для каждого ключа (60-120 запросов/мин в зависимости от инструмента)

  • Аутентификация: API-ключи, хэшированные SHA-256, контроль доступа на основе ролей

  • Тестирование: 270 тестов в 13 файлах, все проходят


Демо: Полный поток

# Clone repo
git clone https://github.com/nicofains1/agentic-ads.git
cd agentic-ads

# Install + build
npm install && npm run build

# Seed a local DB with demo data (generates real API keys)
tsx scripts/seed.ts --db test.db
# Note: seed.ts prints the generated dev/adv keys — use them below

# Run smoke test with real keys from seed output
tsx scripts/smoke-test.ts --db test.db --dev-key aa_dev_... --adv-key aa_adv_...

Вывод:

✅ Created advertiser: Adidas
✅ Created campaign: Q1 Running Shoes ($500 budget, CPC $0.50)
✅ Created ad: "Ultraboost 24 — 30% off!"
✅ Created developer: TestBot
✅ Searched ads for "running shoes" → 1 result (relevance 0.95)
✅ Reported impression → $0.00 charged (CPC model)
✅ Reported click → $0.50 charged, developer earned $0.35
✅ Analytics: 1 impression, 1 click, $0.50 spent, $0.35 developer revenue

Как разработчики получают оплату

Когда ваш MCP-сервер сообщает о событии клика по CPC-объявлению, 70% ставки переходит к вам — отслеживается атомарно в нашей базе данных. Как только ваш баланс достигает $10, отправьте email на payouts@agentic-ads.com с вашим developer_id и предпочтительным способом оплаты (PayPal или USDC на Polygon). Мы проверяем ваш баланс и отправляем платеж в течение 5 рабочих дней. Автоматические выплаты через Stripe запланированы на будущее, когда сеть масштабируется.


Часто задаваемые вопросы

Для разработчиков

В: Как мне получить API-ключ? О: Зарегистрируйтесь через REST-эндпоинт:

curl -X POST https://agentic-ads-production.up.railway.app/api/register \
  -H "Content-Type: application/json" \
  -d '{"name": "Your Name", "email": "you@example.com"}'
# Returns: { "developer_id": "...", "api_key": "aa_dev_...", "mcp_url": "..." }

Используйте полученный api_key как Authorization: Bearer aa_dev_... в ваших MCP-запросах.

В: ОБЯЗАН ли я показывать рекламу? О: Нет. Вы контролируете, какую рекламу показывать. Показывайте рекламу, только если она действительно добавляет ценность для пользователя. Автономия агента — это особенность.

В: Что, если мои пользователи ненавидят рекламу? О: Следуйте рекомендациям из get_ad_guidelines: максимум 1-2 объявления на ответ, всегда указывайте "спонсировано", уважайте отказ ("без рекламы, пожалуйста").

В: Готово ли это к продакшну? О: Да. 270 проходящих тестов, работает на https://agentic-ads-production.up.railway.app, лицензия MIT.

В: Какие MCP-клиенты поддерживаются? О: Любой MCP-клиент, поддерживающий stdio или Streamable HTTP. Протестировано с Claude Desktop, Cursor, Windsurf, пользовательскими агентами.

Для рекламодателей

В: Как мне создавать объявления? О: Используйте MCP-инструменты create_campaign и create_ad с API-ключом рекламодателя. См. smoke-test.ts для примеров.

В: Как защищен мой бюджет? О: Отслеживание бюджета атомарно (транзакция SQLite). Когда бюджет исчерпан → кампания автоматически ставится на паузу. Никакого перерасхода.

В: Могу ли я отслеживать конверсии? О: Да, используйте модель ценообразования CPA + report_event с event_type: 'conversion'. Добавьте UTM-метки в URL вашей ссылки для атрибуции.

В: Какие существуют опции таргетинга? О: MVP включает ключевые слова (точное + частичное совпадение), категории, гео (на уровне страны) и язык. Семантическое сопоставление появится в Фазе 2.

Общие вопросы

В: Отслеживаете ли вы пользователей? О: Нет. Мы получаем только анонимизированные запросы ключевых слов от агентов. Никаких ID пользователей, cookies или профилирования. Конфиденциальность превыше всего.

В: Как вы предотвращаете мошенничество? О: MVP использует аутентификацию по API-ключам + ограничение скорости + доверительную отчетность. Фаза 2 добавляет эвристики обнаружения аномалий (см. issue #47).

В: Это открытый исходный код? О: Да, лицензия MIT. Форкните, разместите у себя, внесите вклад.


Дорожная карта

  • MVP — 8 MCP-инструментов, сопоставление ключевых слов, биллинг, аутентификация, 270 тестов

  • Развернуто — Доступно по адресу https://agentic-ads-production.up.railway.app

  • Размещение в маркетплейсах — Подача в Anthropic Registry, Smithery, Glama, PulseMCP (1-я неделя)

  • REST API для панели управления — Веб-интерфейс для рекламодателей/разработчиков (#40)

  • Обнаружение мошенничества — Эвристики аномалий (#47)

  • Семантическое сопоставление — Релевантность на основе эмбеддингов (Фаза 2)

  • A/B-тестирование — Варианты креативов (#41)

  • Выплаты через Stripe — Автоматические платежи разработчикам (Фаза 3)


Вклад

Мы следуем рабочему процессу GitHub Issues:

  1. Проверьте, существует ли issue для вашей идеи

  2. Если нет: gh issue create --title "Ваша идея"

  3. Получите одобрение перед началом работы

  4. Ветка: feature/#N-описание

  5. Коммит: feat(#N): описание

  6. PR в main

Подробные рекомендации см. в CLAUDE.md.


Документация

  • CLAUDE.md — Рекомендации по разработке

  • bulloak.md — Поведенческая спецификация (источник истины для тестов)

  • docs/PRD.md — Полный документ с требованиями к продукту

  • scripts/smoke-test.ts — Эталонная реализация


Поддержка


Лицензия

MIT — подробности см. в LICENSE.


Почему это важно

ИИ-агенты «съедают» веб. Пользователи спрашивают агентов вместо поиска в Google. Агенты отвечают вместо веб-сайтов.

Старый интернет: Пользователи просматривают сайты → видят рекламу → рекламодатели достигают пользователей.

Новый интернет: Пользователи спрашивают агентов → агенты парсят сайты → рекламодатели не могут достичь пользователей.

agentic-ads исправляет это. Это рекламный слой для экономики агентов.

И вы — разработчик MCP — получаете 70% дохода за то, что являетесь посредником.

Возможность: 16 000+ MCP-серверов, почти ни один не монетизируется. Вы можете быть первым.


Создано с помощью Model Context Protocol (MCP) — открытого стандарта для подключения ИИ-агентов к инструментам.

Живое демо: https://agentic-ads-production.up.railway.app

Начните: Добавьте MCP-сервер в свою конфигурацию, заработайте свой первый доллар на этой неделе.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that gives Claude Desktop direct access to your Google AdSense account. Ask plain English questions about your revenue — no dashboard required.
    10
    13 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Google AdSense management. Create ad units, generate framework-specific ad code, manage earnings reports, and automate ads.txt — all from your AI assistant.
    12
    13 npm
    MIT