Koskamo

RottenAds MCP

An official MCP server for RottenAds that allows AI agents to search the affiliate offer catalog, retrieve offer details, list verticals, get network information, and submit applications for publishers or advertisers. It facilitates access to CPL/CPA offers in verticals like telehealth, finance, and insurance.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

RottenAds MCP logo, by Rotten Marketing LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Rotten Marketing LLC
MCP endpoint (Streamable HTTP)
https://rottenads.com/mcp
Vendor documentation

What you can do with it

  • Search for affiliate offers by vertical, traffic type, and geo
  • Retrieve detailed information for a specific offer
  • Submit a publisher application with traffic types and expected volume
  • Submit an advertiser application to post an offer

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
rottenads 1.0.0
MCP protocol
2025-06-18
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

RottenAds is a performance affiliate network (Rotten Marketing LLC, Miami FL). Use search_offers to find CPL/CPA/RevShare offers by vertical, traffic type and geo; payouts are what RottenAds pays the publisher. Tracking links are issued only after a publisher account is approved. To join, use apply_as_publisher or apply_as_advertiser with the applicant's own details and consent; a person reviews every application and answers by email.

Tools

6 advertised

search_offers — Search offers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the RottenAds offer catalog. Every filter is optional; results are ranked with offers converting now first. Payout is what RottenAds pays the publisher per conversion (or the RevShare %).

search_offers input schema
{
  "type": "object",
  "properties": {
    "geo": {
      "type": "string",
      "description": "Two-letter country code the offer must accept, e.g. US, UK, CA, DE"
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Max results (default 20)"
    },
    "model": {
      "type": "string",
      "description": "Payout model: CPL, CPA, CPS or RevShare"
    },
    "query": {
      "type": "string",
      "description": "Words to match in the offer name, vertical or restrictions, e.g. 'glp-1', 'auto insurance', 'roofing'"
    },
    "traffic": {
      "type": "string",
      "description": "Traffic type the offer must accept: Email, SMS, Meta, TikTok, Social, Native, Display, Search, Push"
    },
    "vertical": {
      "type": "string",
      "description": "Vertical name or part of it, e.g. Telehealth, Insurance, Finance, Home Services (see list_verticals)"
    },
    "min_payout": {
      "type": "number",
      "description": "Minimum fixed payout in the offer currency"
    }
  }
}
search_offers annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_offer — Get one offer
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full details of one offer by its id (from search_offers).

get_offer input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "Offer id"
    }
  }
}
get_offer annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_verticals — List verticals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verticals in the catalog with the number of offers in each, and the traffic types offers accept.

list_verticals input schema
{
  "type": "object",
  "properties": {}
}
list_verticals annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_network_info — Network information
Advertised by the server during the last successful anonymous check.
Advertised read-only

How RottenAds works: payments, tracking, compliance rules, contact.

get_network_info input schema
{
  "type": "object",
  "properties": {}
}
get_network_info annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
apply_as_publisher — Apply as a publisher
Advertised by the server during the last successful anonymous check.
Open-world

Send a publisher (affiliate) application to RottenAds. Use the applicant's real details and only with their consent. A person reviews it; if approved, the dashboard login is emailed to the applicant. Returns a reference.

apply_as_publisher input schema
{
  "type": "object",
  "required": [
    "name",
    "email",
    "traffic_types"
  ],
  "properties": {
    "geos": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Countries you send traffic from, as two-letter codes"
    },
    "name": {
      "type": "string",
      "description": "Full name of the person applying"
    },
    "email": {
      "type": "string",
      "description": "Email where we send the answer (and the login, for publishers)"
    },
    "company": {
      "type": "string",
      "description": "Company or brand name"
    },
    "country": {
      "type": "string",
      "description": "Country of the company"
    },
    "message": {
      "type": "string",
      "description": "Anything else we should know"
    },
    "website": {
      "type": "string",
      "description": "Website or LinkedIn"
    },
    "telegram": {
      "type": "string",
      "description": "Telegram handle, if any (our account managers work on Telegram)"
    },
    "offer_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ids of offers from search_offers you want to run"
    },
    "verticals": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Verticals you want to run, e.g. Telehealth, Insurance, Finance"
    },
    "agent_name": {
      "type": "string",
      "description": "If you are an AI agent applying on someone's behalf: your name/product, e.g. 'Claude for Acme Media'"
    },
    "traffic_types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Traffic you send: Email, SMS, Meta, TikTok, Native, Display, Search, Push, Path, ..."
    },
    "monthly_volume": {
      "type": "string",
      "description": "Estimated monthly volume (clicks, leads or list size)"
    },
    "list_and_consent": {
      "type": "string",
      "description": "For email/SMS: how the list was built and how consent was collected"
    }
  }
}
apply_as_publisher annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
apply_as_advertiser — Apply as an advertiser
Advertised by the server during the last successful anonymous check.
Open-world

Send an advertiser application: an offer you want publishers to promote on a CPL/CPA/CPS/RevShare basis. Use the applicant's real details and only with their consent. Our team answers by email. Returns a reference.

apply_as_advertiser input schema
{
  "type": "object",
  "required": [
    "name",
    "email",
    "offer"
  ],
  "properties": {
    "caps": {
      "type": "string",
      "description": "Daily or monthly caps"
    },
    "geos": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Countries the offer accepts"
    },
    "name": {
      "type": "string",
      "description": "Full name of the person applying"
    },
    "email": {
      "type": "string",
      "description": "Email where we send the answer (and the login, for publishers)"
    },
    "offer": {
      "type": "string",
      "description": "What you want to promote: product/brand and offer type"
    },
    "payout": {
      "type": "string",
      "description": "Payout and model, e.g. '$25 CPL' or '40% RevShare'"
    },
    "company": {
      "type": "string",
      "description": "Company or brand name"
    },
    "country": {
      "type": "string",
      "description": "Country of the company"
    },
    "message": {
      "type": "string",
      "description": "Anything else we should know"
    },
    "tracker": {
      "type": "string",
      "description": "Your tracking platform: Everflow, Hitpath, Cake, other"
    },
    "website": {
      "type": "string",
      "description": "Website or LinkedIn"
    },
    "telegram": {
      "type": "string",
      "description": "Telegram handle, if any (our account managers work on Telegram)"
    },
    "offer_url": {
      "type": "string",
      "description": "Offer or landing page URL"
    },
    "verticals": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Vertical(s) of the offer"
    },
    "agent_name": {
      "type": "string",
      "description": "If you are an AI agent applying on someone's behalf: your name/product, e.g. 'Claude for Acme Media'"
    },
    "allowed_traffic": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Traffic types you allow"
    }
  }
}
apply_as_advertiser annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
459 ms
95th percentile latency
459 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 459 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http rottenads-mcp https://rottenads.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add rottenads-mcp --url https://rottenads.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable rottenads-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "rottenads-mcp": {
      "url": "https://rottenads.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "rottenads-mcp": {
      "type": "streamableHttp",
      "url": "https://rottenads.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start rottenads-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "rottenads-mcp": {
      "type": "http",
      "url": "https://rottenads.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http rottenads-mcp https://rottenads.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "rottenads-mcp": {
      "url": "https://rottenads.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "rottenads-mcp": {
      "serverUrl": "https://rottenads.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like RottenAds MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run RottenAds MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing