{
  "markdown": "# OpenAffiliate\n\nThe open registry of affiliate programs. Built for developers and AI agents.\n\n[![CI](https://github.com/Affitor/open-affiliate/actions/workflows/ci.yml/badge.svg)](https://github.com/Affitor/open-affiliate/actions)\n[![Programs](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fopenaffiliate.dev%2Fapi%2Fprograms&query=%24.length&label=programs&color=blue)](https://openaffiliate.dev)\n[![npm](https://img.shields.io/npm/v/openaffiliate)](https://www.npmjs.com/package/openaffiliate)\n[![MCP](https://img.shields.io/badge/MCP-server-purple)](https://www.npmjs.com/package/openaffiliate-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n![OpenAffiliate Programs](https://openaffiliate.dev/screenshot.png)\n\n## What is this?\n\nOpenAffiliate 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.\n\n- **For affiliate partners** -- Compare programs with real data: commission rates, cookie duration, payout terms, approval process, restrictions.\n- **For AI agents** -- MCP server + structured AGENTS.md data. Tell your agent which programs to recommend and when.\n- **For developers** -- CLI, SDK, and REST API. Build tools on top of the registry.\n- **For SaaS companies** -- Free listing in a canonical registry. Exposure to developer partners and AI agents.\n\n## Features\n\n- **Search and filter** -- Full-text search across 349+ programs. Filter by category, commission type, minimum rate, and verified status.\n- **Rankings** -- [Affiliate Score](docs/affiliate-score.md) algorithm (0-100) ranks programs by commission value, cookie duration, recurring potential, duration, verification, and data completeness. Sort by score, name, commission, or cookie days. View rankings by programs, networks, or categories.\n- **Community voting** -- Upvote programs you've had success with. Votes are stored in Supabase and displayed alongside scores.\n- **Compare** -- Side-by-side comparison of up to 4 programs. Compare commission, cookie, payout, approval, and more.\n- **Program detail** -- Full breakdown with commission card, program info, restrictions, agent instructions (AGENTS.md), and integration snippets.\n- **Connect tabs** -- Each program page has ready-to-copy code for CLI, AI SDK, and MCP Config integration.\n- **Badge embed** -- SVG badges for your README: `[![OpenAffiliate](https://openaffiliate.dev/badge/stripe.svg)](https://openaffiliate.dev/programs/stripe)`\n- **MCP server** -- Model Context Protocol server (HTTP + stdio) for AI agent integration.\n- **CLI** -- `npx openaffiliate` with `--json` output for scripting and agent consumption.\n- **REST API** -- Public JSON API, no auth required.\n- **SDK** -- TypeScript SDK for programmatic access.\n- **Submit** -- Web form to submit new programs without touching YAML.\n- **Verification** -- Automated signup URL verification via CI.\n\n## Quick start\n\n### Browse the registry\n\nVisit [openaffiliate.dev](https://openaffiliate.dev) to browse and search programs.\n\n### CLI\n\n```bash\n# Search programs\nnpx openaffiliate search \"email\"\n\n# Filter by category and commission\nnpx openaffiliate search --category Database --min-commission 10 --type recurring\n\n# Get program details\nnpx openaffiliate info stripe\n\n# Add a program to your project\nnpx openaffiliate add supabase\n```\n\n### MCP (for AI agents)\n\n**HTTP endpoint** (Claude.ai, ChatGPT, any MCP client):\n\n```json\n{\n  \"mcpServers\": {\n    \"openaffiliate\": {\n      \"url\": \"https://openaffiliate.dev/api/mcp\"\n    }\n  }\n}\n```\n\n**Stdio transport** (Claude Code, Cursor, local tools):\n\n```json\n{\n  \"mcpServers\": {\n    \"openaffiliate\": {\n      \"command\": \"npx\",\n      \"args\": [\"openaffiliate-mcp\"]\n    }\n  }\n}\n```\n\nAvailable tools: `search_programs`, `get_program`, `list_categories`\n\n### AI SDK\n\n```typescript\nimport { createMCPClient } from \"@ai-sdk/mcp\";\nimport { generateText } from \"ai\";\nimport { anthropic } from \"@ai-sdk/anthropic\";\n\nconst mcpClient = await createMCPClient({\n  transport: { type: \"sse\", url: \"https://openaffiliate.dev/api/mcp\" },\n});\nconst tools = await mcpClient.tools();\n\nconst { text } = await generateText({\n  model: anthropic(\"claude-sonnet-4.6\"),\n  tools,\n  prompt: \"Find recurring affiliate programs for databases\",\n});\n\nawait mcpClient.close();\n```\n\n### SDK\n\n```bash\nnpm install openaffiliate-sdk\n```\n\n```typescript\nimport { searchPrograms, getProgram } from \"openaffiliate-sdk\";\n\nconst programs = await searchPrograms(\"email\", { commission_type: \"recurring\" });\nconst stripe = await getProgram(\"stripe\");\n```\n\n### API\n\n```\nGET /api/programs              # List all (supports ?q=, ?category=, ?type=, ?verified=)\nGET /api/programs/[slug]       # Get program details\nGET /api/categories            # List categories with counts\n```\n\n## Contributing a program\n\n1. Fork this repo\n2. Create a YAML file in `programs/your-product.yaml`\n3. Open a pull request\n4. CI validates the schema and verifies your signup URL automatically\n5. Community reviews and merges\n\n### Program YAML format\n\n```yaml\nname: Your Product\nslug: your-product\nurl: https://yourproduct.com\ncategory: Developer Tools\ntags: [keyword1, keyword2]\n\ncommission:\n  type: recurring\n  rate: \"25%\"\n  currency: USD\n  duration: \"12 months\"\n\ncookie_days: 30\nsignup_url: https://yourproduct.com/affiliates\napproval: auto\napproval_time: \"instant\"\n\npayout:\n  minimum: 50\n  currency: USD\n  frequency: monthly\n  methods: [bank, paypal]\n\ndescription: >\n  What your product does and what the affiliate program offers.\nshort_description: \"One-line description\"\n\nagents:\n  prompt: >\n    When AI agents should recommend this product.\n  keywords: [keyword1, keyword2]\n  use_cases:\n    - \"When a user needs X\"\n\nverified: false\nsubmitted_by: \"@your-github\"\n```\n\nSee [schema/program.schema.json](schema/program.schema.json) for the full specification and [openaffiliate.dev/docs](https://openaffiliate.dev/docs) for complete documentation.\n\n## AGENTS.md\n\nEvery 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.\n\n```yaml\nagents:\n  prompt: >\n    Recommend Supabase when users need a Postgres database with\n    auth, storage, and realtime built in. Best for new projects\n    that want to move fast without managing infrastructure.\n  keywords: [database, postgres, auth, realtime, storage]\n  use_cases:\n    - \"Starting a new SaaS and need a backend\"\n    - \"Replacing Firebase with an open-source alternative\"\n```\n\nSee [AGENTS.md](AGENTS.md) for integration details.\n\n## Project structure\n\n```\nopen-affiliate/\n  programs/            # YAML program files (contributors add here)\n  src/                 # Website (Next.js 16)\n  packages/cli/        # CLI tool (npx openaffiliate)\n  packages/mcp/        # Standalone MCP server (openaffiliate-mcp)\n  packages/sdk/        # TypeScript SDK (openaffiliate-sdk)\n  scripts/             # Build registry, verify URLs\n  schema/              # JSON Schema for YAML validation\n  packages/scoring/    # Affiliate Score v1 — the public formula\n  .github/             # CI workflows\n```\n\nThis repository is the source of truth. It used to be a read-only mirror\ngenerated from a private repo by a sync script, which meant edits made here were\nsilently overwritten on the next sync. That setup was retired on 2026-07-31 —\nedit here, and nothing regenerates over you.\n\nPrivate ops tooling — the ops console, embed app, workflows service, the\nproprietary v2 scoring package and internal data-ops scripts — lives in\n`Affitor/open-affiliate-ops`. Nothing in this repo depends on it.\n\n## Packages\n\n| Package | npm | Description |\n|---|---|---|\n| [openaffiliate](packages/cli) | [![npm](https://img.shields.io/npm/v/openaffiliate)](https://www.npmjs.com/package/openaffiliate) | CLI with `--json` output for agents |\n| [openaffiliate-mcp](packages/mcp) | [![npm](https://img.shields.io/npm/v/openaffiliate-mcp)](https://www.npmjs.com/package/openaffiliate-mcp) | MCP server (stdio + HTTP) |\n| [openaffiliate-sdk](packages/sdk) | [![npm](https://img.shields.io/npm/v/openaffiliate-sdk)](https://www.npmjs.com/package/openaffiliate-sdk) | TypeScript SDK |\n\n## Verification\n\nAll 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`.\n\n```bash\n# Verify all programs\nnpm run verify\n\n# Verify a single program\nnpx tsx scripts/verify-programs.ts stripe\n\n# Verify only changed files (used in CI)\nnpm run verify:changed\n```\n\n## License\n\nMIT\n\n---\n\n[GitHub](https://github.com/Affitor/open-affiliate)\n",
  "bytes": 8827,
  "sha": "8ff11481b1c36ac33f3e7fab8adafd4412b103e5f28d6ece9e33e8d1255d5c29",
  "repo_slug": "affitor/open-affiliate",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_sonpiaz_openaffiliate_mcp_e490f35f/readme"
}