Search and discover affiliate programs with agent-ready data and commission details.
One address for any MCP client. No sign-in needed on this server.

3 read
Grouped by tool name. At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
The open registry of affiliate programs. Built for developers and AI agents.

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.
[](https://openaffiliate.dev/programs/slab)npx openaffiliate with --json output for scripting and agent consumption.Visit openaffiliate.dev to browse and search programs.
# 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
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
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
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();
npm install openaffiliate-sdk
import { searchPrograms, getProgram } from "openaffiliate-sdk";
const programs = await searchPrograms("email", { commission_type: "recurring" });
const stripe = await getProgram("stripe");
GET /api/programs # List all (supports ?q=, ?category=, ?type=, ?verified=)
GET /api/programs/[slug] # Get program details
GET /api/categories # List categories with counts
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.
programs/your-product.yamlname: 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.
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.
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.
| Package | npm | Description |
|---|---|---|
| openaffiliate | CLI with --json output for agents | |
| openaffiliate-mcp | MCP server (stdio + HTTP) | |
| openaffiliate-sdk | TypeScript SDK |
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
MIT