affset
Run affset from chat: stats, campaigns, zones, payouts, targeting, and team.
Connector by affset · GitHub account verified by the MCP Registry
Install
Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/affset-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://mcp.affset.com/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 15 read · 4 write · 12 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 31
Read from the source code; the running server may list different tools.
Read 15 · Look things up without changing anything.
get_campaignget_statsget_tracking_linkget_zone_urllist_campaignslist_conversionslist_payout_ruleslist_source_bidslist_sub_labelslist_targeting_ruleslist_targeting_typeslist_team
Show 3 more tools
list_traffic_sourceslist_zoneswhoami
Write 4 · Create, change, send or run things.
create_campaigncreate_team_membercreate_traffic_sourcecreate_zone
Delete 12 · Delete, drop, revoke or wipe things.
cut_zonesdelete_payout_ruleremove_targeting_ruleset_campaign_statusset_payout_goalset_payout_ruleset_source_bidset_sub_labelsset_targeting_ruleupdate_campaignupdate_traffic_sourceupdate_zone
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
AFFSET_API_KEY
Other settings (environment variables or headers).
AFFSET_BASE_URLAFFSET_NAMESPACEAFFSET_READ_ONLYAFFSET_REQUEST_TIMEOUT_MS
Network hosts it talks to 1
mcp.affset.com· found in remote endpoint, install command
Tools (31)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
create_campaignCreate a campaignCreate a campaign (offer) in the current namespace from a compact spec: advertiser email, offer URL, geo whitelist, payout, name. The advertiser (user_email) is required — it must already exist as a team member (same as the Advertiser dropdown in the dashboard); create one first with create_team_member if needed. Everything else gets media-buying defaults: CPA model, rate 0 (no internal advertiser billing), created paused, a global payout rule when payout is given, and a ready-to-use tracking link. A zone linked to a traffic source uses that source's tracking template; otherwise the link is pr…
create_team_memberInvite a team memberInvite a team member: create a user API key with an email in the current namespace — the same operation as the dashboard's "Add Team Member". Requires owner/manager, or a scoped manager role (publisher_manager / advertiser_manager), which can only create its own managed role (publisher / advertiser respectively) assigned to itself — the API enforces this, not this tool, so a scoped manager's role/manager_email args may be overridden. Returns the new member's plaintext API key ONCE, in the confirmed response — it is not shown again by list_team, which deliberately never echoes tokens, so copy i…
create_traffic_sourceCreate a traffic sourceCreate a traffic source — an ad network account bought from. Creating from a preset (exoclick, trafficstars, propellerads, adsterra, richads) copies the network's verified tracking + postback templates into an editable row; [BRACKETED] pieces in a postback template are account-specific values to fill in. Link zones to the source via create_zone/update_zone traffic_source_id, and get_zone_url renders its template. The api_token is stored write-only for upcoming cost sync. DRY-RUN by default; pass confirm=true to apply.
create_zoneCreate a zoneCreate a traffic-source zone in the current namespace. Requires a name; optional postback_url (where conversions are reported back — include {source_click_id}), site_url, traffic_back_url, user_email (publisher owner), and traffic_source_id (get_zone_url then renders that source's tracking template). Status is always active on create. Counts against the plan's zone limit (402 if exceeded). DRY-RUN by default; pass confirm=true to apply.
cut_zonesCut underperforming zonescan change or delete dataBlacklist underperforming zones on a campaign based on thresholds (CR, spend, ROI). Evaluates zone stats over the given window and adds matching zones to the campaign's zone blacklist. DRY-RUN by default: it shows which zones would be cut and how the blacklist changes. Pass confirm=true to actually apply. `spend` means media_cost (your traffic cost). A zone is cut only if it matches ALL provided thresholds.
delete_payout_ruleDelete a payout rulecan change or delete dataDelete a campaign payout rule (global or per-zone). Omit zone_id to delete the global rule; pass a zone UUID to delete that zone's override. DRY-RUN by default; pass confirm=true to apply. Without a global rule, conversions resolve to $0.
get_campaignGet a campaign's full recordread-onlyGet one campaign's full record: every field (including the untruncated offer URL, exact schedule, budgets/pacing, silent-conversions flag, payout goal type) plus its targeting rules and payout rules in one call. `list_campaigns` renders a summary table (offer URL truncated, no dates/pacing/silent) meant for scanning many campaigns; use this when you need one campaign's complete data — e.g. before recreating it as a new campaign, or before editing it with `update_campaign`.
get_statsGet affset statsread-onlyPull affset traffic stats grouped by a single dimension. Returns impressions, clicks, conversions, CR, payout, media cost and ROI as a table. Drill down by calling repeatedly: first group_by=date or campaign_id, then narrow with filters (campaign_ids, zone_ids, sub1..sub5, conversion_type, advertiser_email, publisher_email, paid_only) and change group_by (zone_id, sub1, ...). Sub columns are titled with the tenant's configured labels (e.g. "Zone (sub1)") when set; group_by/filters always take the raw subN key. conversion_type only matches conversion rows, so filtering by it zeroes impressions,…
get_tracking_linkGet a campaign's tracking linkread-onlyGet the tracking link for an existing campaign + zone — the /track/click link that goes straight to that one campaign with no rotation or targeting checks. Both the campaign and zone must be active for the public link to work. Same link create_campaign echoes on create; this re-derives it later, for any campaign, with whatever sub values you want. A zone linked to a traffic source renders that source's tracking template instead. Uses the tenant's custom API domain when one is set. Read-only: builds the URL, changes nothing.
get_zone_urlGet the zone URL for a traffic sourceread-onlyGet the zone URL to paste into a traffic source's campaign settings — the /serve link that rotates across the zone's active campaigns. A zone linked to a traffic source renders that source's tracking template; otherwise the URL is prefilled with the sub convention (source_click_id + sub1..sub5) and optionally the network's cost macro. Uses the tenant's custom API domain when one is set. Read-only: builds the URL, changes nothing. For a link straight to one active campaign without targeting checks, use get_tracking_link instead.
list_campaignsList campaignsread-onlyList campaigns in the current namespace. Filter by status and optionally by name (client-side contains match — the API has no search). Returns id, name, status, offer URL, model/rate, advertiser, budgets. Paginated (default 20, max 100).
list_conversionsList conversionsread-onlyList recent conversion records (audit trail) for debugging payouts and pixel params. Shows payout, spend, pixel `type`, source_click_id, click_id, subs, postback outcome, and the raw payload. `paid_only: true` drops informative conversions server-side — rows recorded with postback_skipped=non_goal_type because the pixel type missed the campaign's payout_goal_type. Silent conversions and other skip reasons still come back (not a payout>0 filter). Default false, all rows. Beyond pagination/sort/paid_only, the optional click_id / source_click_id / type / payload_contains / zero_payout filters run…
list_payout_rulesList payout rulesread-onlyList a campaign's payout rules (global + per-zone) and its payout_goal_type. Global rule applies to all zones; a zone-specific rule overrides it for that zone. When payout_goal_type is set, spend/payout apply only on conversions whose pixel `type=` exactly matches (others still record, but with $0).
list_source_bidsList a traffic source's network campaign bidsread-onlyList the network campaigns of one traffic source with their CURRENT bids, read live from the network account (ExoClick, TrafficStars or RichAds preset with an API token). Shows status, pricing model (CPC/CPM/…), the bid in USD, and the last bid change that entered Affset's mutation stage. Use before set_source_bid to see what a campaign bids today. Read-only.
list_sub_labelsList sub labelsread-onlyList the tenant's display names for sub1–sub5 (traffic-source breakdown slots). Unlabeled slots show as the raw key. Used by get_stats column titles and tracking-link / zone-URL query params.
Show 16 more tools
list_targeting_rulesList campaign targeting rulesread-onlyList a campaign's targeting rules (type, method whitelist/blacklist, rule values). Rules gate /serve rotation; the direct tracking link does not enforce them. Call `list_targeting_types` for type ids/names.
list_targeting_typesList targeting rule typesread-onlyList targeting rule types available in this tenant (id, name, description), flagging the seeded types the /serve path does not actually evaluate. Use the id (or name) when setting campaign targeting rules. Enforced types: geo, device_type, zone_id, os, browser, unique_users.
list_teamList team membersread-onlyList team members (user API keys) in the current namespace: email, role, manager, created/expiry. Never returns API tokens. Requires owner/manager (or a scoped manager role).
list_traffic_sourcesList traffic sourcesread-onlyList the tenant's traffic sources — the ad networks bought from, each with the tracking template its linked zones render in get_zone_url/get_tracking_link and an optional postback template. The stored network API token is write-only and shown only as set/none. Read-only.
list_zonesList zonesread-onlyList traffic-source zones in the current namespace. Filter by status and optionally by name (client-side contains match). Returns id, name, linked traffic source, status, postback_url, site_url, publisher. Paginated (default 20, max 100).
remove_targeting_ruleRemove a targeting rulecan change or delete dataRemove one targeting rule from a campaign (safe merge — other rules are kept). Identify by rule_id, or by type + method. DRY-RUN by default; pass confirm=true to apply.
set_campaign_statusRun or pause a campaigncan change or delete dataRun (activate) or pause a campaign. 'run' enters /serve zone rotation and counts against the plan's active-campaign limit (402 if exceeded). 'pause' removes the campaign from active serving, so both /serve selection and direct tracking links stop. DRY-RUN by default; pass confirm=true to apply. For name/offer/budget edits use update_campaign.
set_payout_goalSet payout goal typecan change or delete dataSet or clear a campaign's payout_goal_type (goal-based conversions). When set, spend and payout apply only when the conversion pixel's `type=` exactly matches; other types are still recorded with $0. Pass null (or empty string) to clear. DRY-RUN by default; pass confirm=true to apply.
set_payout_ruleSet a payout rulecan change or delete dataSet a campaign payout rule (global or per-zone). Upserts: if a rule already exists for that scope it is replaced (delete + create, with the old payout restored if the create fails). Omit zone_id for the global rule; pass a zone UUID for a zone override. DRY-RUN by default; pass confirm=true to apply.
set_source_bidSet a network campaign's bidcan change or delete dataDescription is built at runtime.
set_sub_labelsSet sub labelscan change or delete dataSet or clear tenant display names for sub1–sub5. Partial update — only provided keys change; pass null or "" to clear a label. Max 40 chars each. DRY-RUN by default; pass confirm=true to apply. Affects stats column titles and link helpers.
set_targeting_ruleSet a targeting rulecan change or delete dataUpsert one targeting rule on a campaign (safe merge — other rules are kept). Identify the type by id or name (e.g. geo, zone_id, device_type, os, browser, unique_users). If a rule with the same type + method already exists it is updated; otherwise a new one is added. `rule` is comma-separated values (geo: BR,MX; unique_users: visits/hours). Values are normalised to what /serve matches — an unmatched whitelist stops delivery. DRY-RUN by default; pass confirm=true to apply.
update_campaignUpdate a campaigncan change or delete dataUpdate a campaign (partial): name, offer URL (redirect_url), status, rate, payment_model, start/end dates, daily/total budget, pacing. DRY-RUN by default; pass confirm=true to apply. For run/pause prefer set_campaign_status. Activating a paused campaign can hit the plan's active-campaign limit (402). Targeting rules and payout rules are separate tools.
update_traffic_sourceUpdate a traffic sourcecan change or delete dataUpdate a traffic source (name, tracking_template, postback_template, api_token, status). Partial update — only provided fields change; pass null (or "") to clear a template or the stored api_token. Zones linked to the source pick the new tracking template up immediately in get_zone_url/get_tracking_link. DRY-RUN by default; pass confirm=true to apply.
update_zoneUpdate a zonecan change or delete dataUpdate a traffic-source zone (name, status, postback_url, site_url, traffic_back_url, traffic_source_id). Partial update — only provided fields change. Pass null for a URL field or traffic_source_id to clear it. Linking a traffic source makes get_zone_url/get_tracking_link render its tracking template. DRY-RUN by default; pass confirm=true to apply.
whoamiShow the tenant this MCP is bound toread-onlyReturn the tenant this MCP server is bound to: namespace, API base URL, and the derived dashboard URL (https://{namespace}.affset.com) — everything you need to hand the operator a working deep link, or to pick the right host for a URL you were about to guess. Also reports the tenant's company name, timezone and custom API domain when the /api/tenant read succeeds. Read-only, no side effects. Call this once at the start of a session instead of guessing the namespace from the owner's email — one MCP instance = exactly one tenant, and that binding is already fixed at startup.
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 31
- Last commit
- Sep 13, 2026 (1 month ago)
- Last release
- Sep 13, 2026 (1 month ago)
- Last package publish
- Sep 13, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.affset/mcp- Version
- 0.4.0
- Auth
- Auth not stated, API key
- Packages
- npm @affset/mcp
- License
- MIT
- Repository
- github.com/affset/mcp
- Website
- affset.com/integrations
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Cite this page
affset MCP server. Agent Mart. https://agentmart.dev/connectors/affset-mcp (last updated 2026-10-25)