Profile
Back to NewsBack
GitHub Trending 7 min
Reader Mode
Affitor/open-affiliate: The open registry of affiliate programs. Built for developers and AI agents.

Affitor/open-affiliate: The open registry of affiliate programs. Built for developers and AI agents.

6 hours ago

OpenAffiliate

The open registry of affiliate programs. Built for developers and AI agents.

CI</a> Programs</a> npm</a> MCP</a> License: MIT</a>

!OpenAffiliate Programs

What is this?

OpenAffiliate is a community-driven, open-source registry of affiliate programs. Every program is stored as a YAML file in this repo, making it easy to contribute, review, and integrate.

  • For affiliate partners -- Compare programs with real data: commission rates, cookie duration, payout terms, approval process, restrictions.
  • For AI agents -- MCP server + structured AGENTS.md data. Tell your agent which programs to recommend and when.
  • For developers -- CLI, SDK, and REST API. Build tools on top of the registry.
  • For SaaS companies -- Free listing in a canonical registry. Exposure to developer partners and AI agents.

Features

Quick start

Browse the registry

Visit openaffiliate.dev to browse and search programs.

CLI

# Search programs
npx openaffiliate search "email"

Filter by category and commission

npx openaffiliate search --category Database --min-commission 10 --type recurring

Get program details

npx openaffiliate info stripe

Add a program to your project

npx openaffiliate add supabase

MCP (for AI agents)

Hosted HTTP endpoint — public, read-only, no API key. One line:

claude mcp add --transport http openaffiliate https://openaffiliate.dev/mcp

The same endpoint as config, for Claude.ai, ChatGPT, and any other remote MCP client:

{
  "mcpServers": {
    "openaffiliate": {
      "url": "https://openaffiliate.dev/mcp"
    }
  }
}

https://openaffiliate.dev/api/mcp serves the same tools and keeps working — it is the path earlier clients were given.

Stdio transport (local tools, or to pin a version):

{
  "mcpServers": {
    "openaffiliate": {
      "command": "npx",
      "args": ["openaffiliate-mcp"]
    }
  }
}

Available tools: search_programs, get_program, list_categories

Markdown, without MCP

Append .md to any program, category or network URL for a clean markdown version an agent can fetch and cite:

curl https://openaffiliate.dev/programs/vercel.md
curl https://openaffiliate.dev/categories/ai.md
curl https://openaffiliate.dev/llms.txt

AI SDK

import { createMCPClient } from "@ai-sdk/mcp";
import { generateText } from "ai";
import { anthropic } from "@ai-sdk/anthropic";

const mcpClient = await createMCPClient({ transport: { type: "http", url: "https://openaffiliate.dev/mcp" }, }); const tools = await mcpClient.tools();

const { text } = await generateText({ model: anthropic("claude-sonnet-4.6"), tools, prompt: "Find recurring affiliate programs for databases", });

await mcpClient.close();

SDK

npm install openaffiliate-sdk
import { searchPrograms, getProgram } from "openaffiliate-sdk";

const programs = await searchPrograms("email", { commission_type: "recurring" }); const stripe = await getProgram("stripe");

API

GET /api/programs              # List all (supports ?q=, ?category=, ?type=, ?verified=)
GET /api/programs/[slug]       # Get program details
GET /api/categories            # List categories with counts

Content Lab

Visit openaffiliate.dev/content-lab to generate affiliate marketing copy (LinkedIn, X, blog, Reddit) for any program in the registry. Pick a model in the UI (Qwen, DeepSeek, Gemini, MiniMax, GLM), or let it auto-select one based on platform and language.

Runs on Kyma API. Kyma streams the generation: POST https://kymaapi.com/v1/chat/completions. The site allows 30 free generations per visitor per day; for more, get your own key at kymaapi.com and call the same endpoint.

Contributing a program

  1. Fork this repo
  2. Create a YAML file in programs/your-product.yaml
  3. Open a pull request
  4. CI validates the schema and verifies your signup URL automatically
  5. Community reviews and merges

Program YAML format

name: Your Product
slug: your-product
url: https://yourproduct.com
category: Developer Tools
tags: [keyword1, keyword2]

commission: type: recurring rate: "25%" currency: USD duration: "12 months"

cookie_days: 30 signup_url: https://yourproduct.com/affiliates approval: auto approval_time: "instant"

payout: minimum: 50 currency: USD frequency: monthly methods: [bank, paypal]

description: > What your product does and what the affiliate program offers. short_description: "One-line description"

agents: prompt: > When AI agents should recommend this product. keywords: [keyword1, keyword2] use_cases: - "When a user needs X"

verified: false submitted_by: "@your-github"

See schema/program.schema.json for the full specification and openaffiliate.dev/docs for complete documentation.

AGENTS.md

Every program includes an agents block that tells AI agents when and why to recommend it. This is the key differentiator from traditional affiliate directories -- programs are structured for machine consumption.

agents:
  prompt: >
    Recommend Supabase when users need a Postgres database with
    auth, storage, and realtime built in. Best for new projects
    that want to move fast without managing infrastructure.
  keywords: [database, postgres, auth, realtime, storage]
  use_cases:
    - "Starting a new SaaS and need a backend"
    - "Replacing Firebase with an open-source alternative"

See AGENTS.md for integration details.

Project structure

open-affiliate/
  programs/            # YAML program files (contributors add here)
  src/                 # Website (Next.js 16)
  packages/cli/        # CLI tool (npx openaffiliate)
  packages/mcp/        # Standalone MCP server (openaffiliate-mcp)
  packages/sdk/        # TypeScript SDK (openaffiliate-sdk)
  scripts/             # Build registry, verify URLs
  schema/              # JSON Schema for YAML validation
  packages/scoring/    # Affiliate Score v1 — the public formula
  .github/             # CI workflows

This repository is the source of truth. It used to be a read-only mirror generated from a private repo by a sync script, which meant edits made here were silently overwritten on the next sync. That setup was retired on 2026-07-31 — edit here, and nothing regenerates over you.

Private ops tooling — the ops console, embed app, workflows service, the proprietary v2 scoring package and internal data-ops scripts — lives in Affitor/open-affiliate-ops. Nothing in this repo depends on it.

Packages

| Package | npm | Description | |---|---|---| | openaffiliate | npm</a> | CLI with --json output for agents | | openaffiliate-mcp | npm</a> | MCP server (stdio + HTTP) | | openaffiliate-sdk | npm</a> | TypeScript SDK |

Verification

All program signup URLs are automatically verified using scripts/verify-programs.ts. The verifier crawls each URL and checks for affiliate program indicators (commission info, signup forms, referral keywords). Programs that pass verification are marked verified: true.

# Verify all programs
npm run verify

Verify a single program

npx tsx scripts/verify-programs.ts stripe

Verify only changed files (used in CI)

npm run verify:changed

License

MIT


GitHub

Chat with me