An MCP server that lets a media buyer run affset from a chat client — pull stats, manage campaigns/zones/team, payouts, targeting, sub labels, and cut underperforming zones in plain language, no…
affset-mcp is an MCP project maintained in the affset/mcp repository. The maintainer describes its purpose as “An MCP server that lets a media buyer run affset from a chat client — pull stats, manage campaigns/zones/team, payouts, targeting, sub labels, and cut…”. Read the project documentation for the complete scope.
The documented npm package is @affset/mcp. The configuration below comes from the maintainer’s example; adapt its paths and account values to your environment.
The example declares AFFSET_BASE_URL, AFFSET_API_KEY, AFFSET_NAMESPACE. Secret-looking values have been replaced with placeholders. Required and optional labels are shown only when the documentation states them.
Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.
Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.
| Tool | What it does |
|---|---|
| whoami | Show the tenant this server is bound to: namespace, API base, derived dashboard URL, and (when readable) company / timezone / custom API domain. Read-only. |
| get_stats | Traffic stats grouped by a dimension (date, campaign, zone, country, sub1–5, advertiser, publisher, …), optionally narrowed with… |
| list_campaigns | List campaigns (status / name filter, pagination). |
| get_campaign | One campaign's full record — every field (untruncated offer URL, exact schedule, budgets/pacing, silent flag, payout goal type) plus its targeting rules and… |
| list_zones | List traffic-source zones (status / name filter, pagination, linked source). |
| list_team | List team members (email, role, manager). Never returns API tokens. |
| create_team_member | Invite a team member (owner, manager, publisher, advertiser, publisher_manager, advertiser_manager). A scoped manager key can only create its own managed role, |
| create_campaign | Create a campaign from an advertiser email, offer URL, geo, payout and name. Defaults: CPA / rate 0, paused, global payout rule, and a ready tracking link… |
| set_campaign_status | Run or pause a campaign (action: "run" \ |
| update_campaign | Partial update (name, offer URL, status, rate, budgets, dates, …). Dry-run by default; confirm: true to apply. Prefer set_campaign_status for run/pause. |
| create_zone | Create a traffic-source zone (name + optional postback/site/traffic-back URLs, optional traffic_source_id link). Always created active. Dry-run by default… |
| update_zone | Partial update (name, status, URLs, traffic_source_id). Dry-run by default; confirm: true to apply. Pass null to clear a URL or unlink the source. |
| list_traffic_sources | List traffic sources — the networks bought from, each with the tracking/postback templates its linked zones use. API token shown only as set/none. |
| create_traffic_source | Create a traffic source, optionally from a network preset (exoclick, trafficstars, propellerads, adsterra, richads) that copies verified templates into an… |
| update_traffic_source | Partial update (name, templates, api_token, status). Linked zones pick the new tracking template up immediately. Dry-run by default; confirm: true to apply. |
| list_source_bids | The network campaigns of one traffic source with their current bids, read live from the network account (ExoClick, TrafficStars, RichAds — needs the source's… |
| set_source_bid | Set one network campaign's bid in USD using its existing pricing model (for RichAds: CPM for pops, CPC for push/display). The dry run returns… |
| get_zone_url | The /serve URL to paste into a network's campaign settings — rotates across the zone's active campaigns. A zone linked to a traffic source renders that… |
| get_tracking_link | The /track/click link for an existing campaign + zone — straight to one active campaign, with no rotation or targeting checks. Renders a linked source's… |
| cut_zones | Blacklist underperforming zones on a campaign by threshold (CR / spend / ROI). Dry-run by default; confirm: true to apply. |
| list_payout_rules | List a campaign's global + per-zone payout rules and its payout_goal_type. |
| set_payout_rule | Upsert a global or zone-specific payout. Dry-run by default; confirm: true to apply. |
| delete_payout_rule | Delete a global or zone-specific payout rule. Dry-run by default; confirm: true to apply. |
| set_payout_goal | Set or clear payout_goal_type (goal-based conversions). Dry-run by default; confirm: true to apply. |
| list_targeting_types | Catalog of targeting rule types, flagging the seeded ones /serve never evaluates. |
| list_targeting_rules | List a campaign's targeting rules, flagging any that have no effect. |
| set_targeting_rule | Upsert one targeting rule (safe merge), normalised to what /serve matches. Dry-run by default; confirm: true to apply. |
| remove_targeting_rule | Remove one targeting rule by id or type+method. Dry-run by default; confirm: true to apply. |
| list_sub_labels | List tenant display names for sub1–sub5. |
| set_sub_labels | Set or clear sub labels (partial; null clears). Dry-run by default; confirm: true to apply. |
| list_conversions | List conversion audit records (payout, spend, pixel type, payload, postback). paid_only filters server-side; other optional filters are client-side on the… |
{
"mcpServers": {
"affset": {
"command": "npx",
"args": [
"-y",
"@affset/mcp"
],
"env": {
"AFFSET_BASE_URL": "https://api.affset.com",
"AFFSET_API_KEY": "YOUR_AFFSET_API_KEY",
"AFFSET_NAMESPACE": "your-namespace"
}
}
}
}From the project documentation. Replace placeholders and example paths before connecting.
| Variable | Description | Required |
|---|---|---|
| AFFSET_BASE_URL | Declared in the maintainer’s client configuration. | Check documentation |
| AFFSET_API_KEY | Declared in the maintainer’s client configuration. | Check documentation |
| AFFSET_NAMESPACE | Declared in the maintainer’s client configuration. | Check documentation |
Search built for AI, not humans — semantic web search that returns model-ready content, plus code context.
Put 6,000+ pre-built scrapers at your assistant's fingertips through one MCP endpoint.
Fetches and analyzes content from Reddit, providing access to hot threads and post details.
Enables interaction with X (formerly Twitter) for retrieving tweets, creating new posts, and replying to existing ones.
Automates LinkedIn interactions and extracts data through browser automation, respecting terms of service and rate limits.
Automates SEO tasks and provides AI-powered optimization by integrating with the Google Ads Keyword Planner API.