Affiliate Networks MCP
BLOCKgrade F · trust 39/100affiliate network MCPs and skills
Overview
From the repository's own README, as read at the audited commit.
# affiliate-mcp> Integrate your affiliate networks with Claude or Codex.[](https://www.npmjs.com/package/affiliate-networks-mcp)   [](./docs/networks)> **Network operators:** most adapters are community-built and `experimental`. Adoption gives your team ownership and a verification path; promotion to `partial` or `production` still requires current evidence and maintainer review. Find your network's issue under the [`adopt-this-network`](https://github.com/bobberrisford/affiliatemcp/issues?q=is%3Aissue+is%3Aopen+label%3Aadopt-this-network) label.Affiliate networks have two sides — and neither has a first-class AI workspace integration.**Publishers** earn commissions from the programmes they join.**Brands** (and the agencies who manage them) run those programmesand pay the commissions out. I wanted to chat to my own affiliatedata in the AI workspace I already use; none of the networks had shipped anintegration for either side, so I built a broad beta set that covers bothpublisher and advertiser-side work.If you're a **publisher**, you can ask:> *"What did I earn across all networks last month?"*>> *"Which programmes have transactions still pending after 90 days?"*>> *"Compare my earnings month on month."*If you're on the **brand side** — running a programme, or an agencymanaging several — you can ask:> *"How is Acme's programme doing this quarter?"*>> *"Show me revenue across all my clients this week."*>> *"Any anomalies in the affiliate data?"*Your AI workspace figures out which networks to call, fetches the data live fromtheir APIs, and gives you the answer. You can use Claude or Codex to turn itinto a sheet, an artifact, an email to your boss, whatever you want.Free and open s
Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add affiliate-networks-mcp -- npx -y [email protected]
Exposed tools (57) 51 read · 6 write · 0 destructive
| Tool | Risk | Description |
|---|---|---|
advertiserId | read | Awin advertiser/programme ID. |
affiliate-earnings-report | read | |
affiliate-network-status | read | |
affiliate_build_brand_snapshot | read | Pull one brand\ |
affiliate_get_brand_action_bundle | read | Assemble the input bundle for the brand AI deliverables (a quarterly business review or a weekly report): the latest persisted snapshot, the brand\ |
affiliate_get_brand_rows | read | Return the persisted 30-day, transaction-grain rows for a brand: as structured rows, as inline CSV, or (format |
affiliate_get_client_strategy | read | Read the advisory strategy and KPI context an operator has recorded for one brand (the brand slug from brands.json). |
affiliate_list_actions | write | List the doing-surface actions (advisement, write, and known gaps) the configured adapters declare, with channel, effect, default authority tier, and local readiness. |
affiliate_list_client_strategies | read | List which brands have advisory strategy recorded, covering both brands bound in brands.json and any client directory on disk. |
affiliate_list_networks | read | List the affiliate networks this server has adapters registered for, along with their adapter version, claim_status, and whether the user has configured credentials for each. |
affiliate_query_brand_data | write | Run a read-only analytical query (filters, group-bys, sums, top-N) over the persisted 30-day brand dataset and return a small, exact result. |
affiliate_resolve_brand | read | List the logical brands the operator has bound in brands.json, optionally filtered by network slug. |
affiliate_run_diagnostic | write | Run a capabilities diagnostic across one or all registered affiliate networks. |
affiliate_set_client_strategy | write | Write the advisory Strategy.md and/or KPI.md for one brand (the brand slug from brands.json) to the local config directory. |
agency-portfolio-deepdive | read | |
agency-portfolio-rollup | read | |
audit-affiliate-links | read | |
awin_daily_performance_brief | read | Build a concise Awin publisher performance brief from advertiser reports and transactions. |
awin_link_builder_workflow | read | Guide link generation for an Awin advertiser with membership and quota checks. |
awin_offer_finder | read | Find Awin promotions or vouchers that fit a publisher campaign or content brief. |
awin_programme_opportunity_scan | read | Assess Awin programmes before a publisher decides what to promote next. |
awin_transaction_investigation | read | Investigate pending, reversed, unpaid, or specific Awin transactions. |
campaign | read | Optional Awin campaign parameter. |
destinationUrl | read | Destination URL to deeplink to. |
echo_tool | read | Echoes. |
exclusiveOnly | read | true to show exclusive offers only. |
from | write | Start date, for example 2026-05-01. |
header_tool | read | Carries an x-mcp-header parameter. |
json_schema_2020_12_tool | read | Tool with JSON Schema 2020-12 features |
membership | read | joined, notJoined, or all. |
needs_sampling | read | Requires the sampling client capability. |
progress_tool | read | Reports progress. |
qbr-prep-pack | read | |
region | read | Awin region code, default GB. |
relationship | read | joined, pending, notjoined, or any. |
search | read | Optional merchant/category search term. |
status | read | pending, approved, reversed, paid, or other. |
test_audio_content | read | Conformance fixture: returns an audio content block. |
test_custom_headers | read | Conformance fixture: echoes a parameter that rides in the Mcp-Param-custom-data header. |
test_embedded_resource | read | Conformance fixture: returns an embedded resource content block. |
test_error_handling | read | Conformance fixture: always returns a tool-level error result. |
test_image_content | read | Conformance fixture: returns an image content block. |
test_logging_tool | read | Conformance fixture: performs work without emitting log notifications. |
test_missing_capability | read | Conformance fixture: requires the sampling client capability. |
test_multiple_content_types | read | Conformance fixture: returns text and image content together. |
test_prompt_with_arguments | read | Conformance fixture: substitutes arg1 and arg2 into the message. |
test_prompt_with_embedded_resource | read | Conformance fixture: embeds the resource named by resourceUri. |
test_prompt_with_image | read | Conformance fixture: a prompt carrying an image content block. |
test_simple_prompt | read | Conformance fixture: a one-message prompt. |
test_simple_text | read | Conformance fixture: returns a plain text result. |
test_streaming_elicitation | read | Conformance fixture: completes in one round trip without server-initiated requests. |
test_tool_with_progress | read | Conformance fixture: reports progress 0/50/100 when a progressToken is provided. |
test_trigger_tool_change | write | Conformance fixture: acknowledges a tool-change trigger (no-op). |
to | read | End date, for example 2026-05-22. |
transactionIds | read | Comma-separated transaction IDs. |
type | read | promotion, voucher, or all. |
vertical-benchmark-pack | read |
Details
- Source
- bobberrisford/affiliatemcp
- npm
affiliate-mcp-waitlist@0.1.0- Transports
- stdio · streamable-http
- Credentials it reads
HOSTED_AUTH_URL- License
- MIT
- Stars
- 6 · pushed 32d ago
Trust audit
Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (8 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
Credentials are read via `requireCredential` from `src/shared/config.ts`. Never
read `process.env` directly inside an adapter — missing values must surface as
icon.icns
.agents/skills/delivery-steward
.agents/skills/prepare-for-review
.agents/skills/review-pr
authUrl: `http://127.0.0.1:${worker.port}`,vaultUrl: `http://127.0.0.1:${worker.port}`,const baseArgs = ['server', '--url', `http://127.0.0.1:${proxy.port}/mcp`, '--spec-version', '2026-07-28'];const secret = 'AWIN-TOKEN-2f9c-do-not-leak';
formPost('/authorize/consent', { auth_req: reqId, token: 'amcps_not_a_real_token', decision: 'approve' }),await putCredentials(kv, provider, 'hosted_usr_a', 'awin', { apiKey: 'sekret-plaintext-marker' });* secret = "ATj7vd8b7CCjeq9yQUo8cc2w3OThqe2e"
const token = 'amcps_digest.token.e2e';
.eslintrc.cjs
const MARK = '../../design-system/assets/mark.svg';
import { isValidBrandSlug, registerBrand, suggestSlug } from '../../shared/brands.js';import { assertMultiBrandAdapter } from '../../shared/brand-resolver.js';import { NotImplementedError } from '../../shared/errors.js';import type { DiscoveredBrand, NetworkAdapter } from '../../shared/types.js';# The beacon ships as a placeholder so the repo never carries an
# set, substitute it; if it is not, strip the beacon entirely rather than
- name: Inject or strip the analytics beacon
`cloudflared tunnel --url http://127.0.0.1:<port>`, captures the
const res = await worker.fetch(jsonPost('/register', { redirect_uris: ['http://127.0.0.1:8976/callback'] }), env);Gates applied: no_behavioural_pass.
Audited 2026-09-13 · audit v0.4.0 · source sha b3a1a386917b · full audit: observations/trust-audit/mcp-server/bobberrisford__affiliate-networks-mcp.json · Report an issue or request a re-scan
Audit history
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-13 | b3a1a386917b | BLOCK | F | 39 | first audit |
Also audited
Servers with a similar trust profile.
Questions
What is the Affiliate Networks MCP MCP server?
affiliate network MCPs and skills
What tools does Affiliate Networks MCP expose?
57 in total: 51 read-only, 6 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is Affiliate Networks MCP safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (39/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does Affiliate Networks MCP need?
It reads HOSTED_AUTH_URL from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Affiliate Networks MCP run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as affiliate-mcp-waitlist at 0.1.0.
How current is this page?
The grade is for one exact copy of the source (b3a1a386917b), read on 2026-09-13. The repository is watched and re-audited when it changes.
Provenance: OBSERVED · read 2026-09-13 · job trust-audit-2026-09-13