OpenAffiliate is a public, read-only affiliate program registry; no API key or account is required. Read commission.mode and commission.value for the figure and its units (percentage or flat currency amount); commission.rate preserves the raw source wording, and unknown mode means no figure is published. cookieDays is omitted until the program's terms are verified. Use search_programs for active listings and get_program for full details, including paused, discontinued, or no_program entries; check status and agentPrompt before recommending. Cite the returned markdownUrl when referencing a program.
Protocol
Pass100/10020 / 20 pts
Connection, authentication, and protocol compatibility.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Use to discover active affiliate programs by keyword, category, commission type, or verified status. Returns matching summaries with canonical slugs, commission figures, signup links, and citable markdownUrl fields. Do not use to check a known brand's paused or no-program status; call get_program with its slug. Call list_categories for category names, then get_program for recommendation guidance and restrictions before recommending a match.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Search keyword to match against name, description, tags, or category
Clear enough to supply this argument.
category
Filter by exact category name as returned by list_categories (case-sensitive, not a slug), e.g. 'AI', 'Email Marketing'
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
commission_type
Filter by payment structure: recurring = paid on each renewal within the commission duration; one-time = paid once per qualifying referral; tiered = commission varies by performance level. Omit to include all types, including hybrid
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
verified_only
When true, return only programs whose terms were checked on the brand's own program page. False or omitted includes unverified programs with unconfirmed terms
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"programs"
],
"properties": {
"programs": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"name",
"category",
"shortDescription",
"commission",
"verified",
"signupUrl",
"markdownUrl"
],
"properties": {
"name": {
"type": "string",
"description": "Display name of the program or brand"
},
"slug": {
"type": "string",
"description": "Canonical slug to pass to get_program"
},
"category": {
"type": "string",
"description": "Exact registry category name, as returned by list_categories"
},
"verified": {
"type": "boolean",
"description": "True when the terms have been checked on the brand's own program page; false means unconfirmed"
},
"signupUrl": {
"type": "string",
"description": "Affiliate signup or program URL; falls back to the brand website when no signup URL is stored"
},
"commission": {
"type": "object",
"required": [
"type",
"mode",
"value",
"rate",
"currency"
],
"properties": {
"mode": {
"enum": [
"percentage",
"flat",
"tiered",
"hybrid",
"unknown"
],
"type": "string",
"description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure"
},
"rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Raw source wording; prefer mode and value"
},
"type": {
"enum": [
"recurring",
"one-time",
"tiered",
"hybrid"
],
"type": "string",
"description": "Payment structure: recurring pays on renewals within the commission duration; one-time pays once per qualifying referral; tiered varies by performance level; hybrid combines payment structures"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Commission in percent units for percentage mode (30 means 30%), or currency units for flat mode; null when no single numeric figure is available"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code for monetary amounts; null when unspecified"
}
},
"description": "Commission structure and figures; unverified terms are unconfirmed, not guaranteed earnings",
"additionalProperties": false
},
"cookieDays": {
"type": "number",
"description": "Attribution window in days; omitted until terms are verified"
},
"markdownUrl": {
"type": "string",
"description": "Citable program page in Markdown on openaffiliate.dev"
},
"shortDescription": {
"type": "string",
"description": "Brief product summary; unverified cookie, payout and approval claims are withheld"
}
},
"additionalProperties": false
},
"description": "Matching active programs; empty when no listings match"
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "search_programs",
"title": "Search Programs",
"description": "Use to discover active affiliate programs by keyword, category, commission type, or verified status. Returns matching summaries with canonical slugs, commission figures, signup links, and citable markdownUrl fields. Do not use to check a known brand's paused or no-program status; call get_program with its slug. Call list_categories for category names, then get_program for recommendation guidance and restrictions before recommending a match.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"query": {
"type": "string",
"description": "Search keyword to match against name, description, tags, or category"
},
"category": {
"type": "string",
"description": "Filter by exact category name as returned by list_categories (case-sensitive, not a slug), e.g. 'AI', 'Email Marketing'"
},
"verified_only": {
"type": "boolean",
"description": "When true, return only programs whose terms were checked on the brand's own program page. False or omitted includes unverified programs with unconfirmed terms"
},
"commission_type": {
"enum": [
"recurring",
"one-time",
"tiered"
],
"type": "string",
"description": "Filter by payment structure: recurring = paid on each renewal within the commission duration; one-time = paid once per qualifying referral; tiered = commission varies by performance level. Omit to include all types, including hybrid"
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"programs"
],
"properties": {
"programs": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"name",
"category",
"shortDescription",
"commission",
"verified",
"signupUrl",
"markdownUrl"
],
"properties": {
"name": {
"type": "string",
"description": "Display name of the program or brand"
},
"slug": {
"type": "string",
"description": "Canonical slug to pass to get_program"
},
"category": {
"type": "string",
"description": "Exact registry category name, as returned by list_categories"
},
"verified": {
"type": "boolean",
"description": "True when the terms have been checked on the brand's own program page; false means unconfirmed"
},
"signupUrl": {
"type": "string",
"description": "Affiliate signup or program URL; falls back to the brand website when no signup URL is stored"
},
"commission": {
"type": "object",
"required": [
"type",
"mode",
"value",
"rate",
"currency"
],
"properties": {
"mode": {
"enum": [
"percentage",
"flat",
"tiered",
"hybrid",
"unknown"
],
"type": "string",
"description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure"
},
"rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Raw source wording; prefer mode and value"
},
"type": {
"enum": [
"recurring",
"one-time",
"tiered",
"hybrid"
],
"type": "string",
"description": "Payment structure: recurring pays on renewals within the commission duration; one-time pays once per qualifying referral; tiered varies by performance level; hybrid combines payment structures"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Commission in percent units for percentage mode (30 means 30%), or currency units for flat mode; null when no single numeric figure is available"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code for monetary amounts; null when unspecified"
}
},
"description": "Commission structure and figures; unverified terms are unconfirmed, not guaranteed earnings",
"additionalProperties": false
},
"cookieDays": {
"type": "number",
"description": "Attribution window in days; omitted until terms are verified"
},
"markdownUrl": {
"type": "string",
"description": "Citable program page in Markdown on openaffiliate.dev"
},
"shortDescription": {
"type": "string",
"description": "Brief product summary; unverified cookie, payout and approval claims are withheld"
}
},
"additionalProperties": false
},
"description": "Matching active programs; empty when no listings match"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Use with a known slug or alias to read full program details, status, agentPrompt recommendation guidance, restrictions, signup information, and a citable markdownUrl. Also returns paused entries and dated answers with alternatives for discontinued or no_program brands. Do not use for broad discovery; call search_programs first if the slug is unknown. Read status and agentPrompt before recommending; if no entry exists, use search_programs to find a match.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
slug
Use the slug from search_programs results or the final segment of a program URL (e.g. /programs/vercel). Aliases resolve to the canonical program
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"name",
"url",
"logo",
"category",
"commission",
"payout",
"description",
"shortDescription",
"tags",
"stars",
"verified",
"agentPrompt",
"submittedBy",
"createdAt",
"markdownUrl"
],
"properties": {
"url": {
"type": "string",
"description": "Brand's product or website URL"
},
"kind": {
"enum": [
"affiliate",
"referral",
"creator-payout",
"revenue-share",
"cashback",
"partner-network"
],
"type": "string",
"description": "Income program model: affiliate commissions, customer referrals, creator payouts, revenue sharing, cashback or a partner network; omitted when unspecified or discontinued/no_program"
},
"logo": {
"type": "string",
"description": "Text logo placeholder: the uppercase first character of the brand name, not an image URL"
},
"name": {
"type": "string",
"description": "Display name of the program or brand"
},
"slug": {
"type": "string",
"description": "Canonical slug, including when the input was an alias"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Searchable product and program tags; empty when none are stored"
},
"stars": {
"type": "number",
"description": "Legacy star-count placeholder, currently always 0; not a program quality score"
},
"alsoOn": {
"anyOf": [
{
"type": "object",
"properties": {
"affitor": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL of the same brand's Affitor marketplace program"
},
"commission": {
"type": "object",
"required": [
"type",
"mode",
"value",
"rate",
"currency"
],
"properties": {
"mode": {
"enum": [
"percentage",
"flat",
"tiered",
"hybrid",
"unknown"
],
"type": "string",
"description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure"
},
"rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Raw source wording; prefer mode and value"
},
"type": {
"enum": [
"recurring",
"one-time",
"tiered",
"hybrid",
"none"
],
"type": "string",
"description": "Payment structure: recurring pays on renewals within duration; one-time pays once per qualifying referral; tiered varies by performance level; hybrid combines structures; none is a neutral placeholder for discontinued/no_program entries"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Commission in percent units for percentage mode (30 means 30%), or currency units for flat mode; null when no single numeric figure is available"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code for monetary amounts; null when unspecified"
},
"duration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How long commissions are earned, as source text such as '12 months' or 'lifetime'; null or omitted when unspecified"
},
"conditions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Conditions for earning commission; unverified cookie, payout and approval claims are withheld; null or omitted when unavailable"
}
},
"description": "Commission published on Affitor, separate from this listing's terms; omitted when Affitor publishes none",
"additionalProperties": false
}
},
"description": "The same brand on the Affitor marketplace; omitted when no Affitor entry is stored",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Additional marketplace listings; null when none are stored, omitted for discontinued/no_program"
},
"answer": {
"type": "string",
"description": "Answer explaining the lack of an affiliate program, dated when a check date exists; only returned for discontinued/no_program"
},
"payout": {
"type": "object",
"properties": {
"methods": {
"type": "array",
"items": {
"type": "string"
},
"description": "Payout methods, such as paypal or bank-transfer; empty when none are stored, omitted when terms are withheld"
},
"minimum": {
"type": "number",
"description": "Minimum payout in payout.currency units; omitted when unspecified or terms are withheld"
},
"currency": {
"type": "string",
"description": "Currency code for payout.minimum; omitted when unspecified or terms are withheld"
},
"frequency": {
"type": "string",
"description": "Payout schedule, such as monthly or net-30; omitted when unspecified or terms are withheld"
}
},
"description": "Published payout terms; empty when terms are unverified or no program exists",
"additionalProperties": false
},
"source": {
"type": "string",
"description": "Registry source identifier or URL; omitted when unspecified"
},
"status": {
"enum": [
"active",
"paused",
"discontinued",
"no_program"
],
"type": "string",
"description": "Availability: active is listed in search; paused is temporarily unavailable; discontinued means closed; no_program means no public program found. Non-active entries are excluded from search; missing status defaults to active"
},
"aliases": {
"type": "array",
"items": {
"type": "string"
},
"description": "Alternative slugs accepted by get_program; empty when none are stored"
},
"network": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Affiliate network identifier, such as partnerstack or in-house; null when unknown, omitted for discontinued/no_program"
},
"approval": {
"type": "string",
"description": "Application approval process: auto, manual or invite-only; omitted when unverified, unspecified or discontinued/no_program"
},
"category": {
"type": "string",
"description": "Exact registry category name, as returned by list_categories"
},
"verified": {
"type": "boolean",
"description": "True when the terms have been checked on the brand's own program page; false means unconfirmed"
},
"claimedBy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Verified owner domain that claimed the listing, never an email address; null when unclaimed"
},
"createdAt": {
"type": "string",
"description": "Registry entry creation date in YYYY-MM-DD form; empty when unspecified"
},
"signupUrl": {
"type": "string",
"description": "Affiliate signup or program URL; omitted when not stored or status is discontinued/no_program"
},
"updatedAt": {
"type": "string",
"description": "Registry entry update date in YYYY-MM-DD form; omitted when unspecified"
},
"commission": {
"type": "object",
"required": [
"type",
"mode",
"value",
"rate",
"currency"
],
"properties": {
"mode": {
"enum": [
"percentage",
"flat",
"tiered",
"hybrid",
"unknown"
],
"type": "string",
"description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure"
},
"rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Raw source wording; prefer mode and value"
},
"type": {
"enum": [
"recurring",
"one-time",
"tiered",
"hybrid",
"none"
],
"type": "string",
"description": "Payment structure: recurring pays on renewals within duration; one-time pays once per qualifying referral; tiered varies by performance level; hybrid combines structures; none is a neutral placeholder for discontinued/no_program entries"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Commission in percent units for percentage mode (30 means 30%), or currency units for flat mode; null when no single numeric figure is available"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code for monetary amounts; null when unspecified"
},
"duration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How long commissions are earned, as source text such as '12 months' or 'lifetime'; null or omitted when unspecified"
},
"conditions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Conditions for earning commission; unverified cookie, payout and approval claims are withheld; null or omitted when unavailable"
}
},
"description": "Commission structure, figures and earning conditions; unverified terms are unconfirmed, while discontinued/no_program entries return neutral placeholders",
"additionalProperties": false
},
"cookieDays": {
"type": "number",
"description": "Attribution window in days; omitted until terms are verified"
},
"programAge": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How long the program has existed, as source text without a fixed unit; null when unspecified, omitted for discontinued/no_program"
},
"statusNote": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Explanation and source for the program's status; null when unspecified"
},
"agentPrompt": {
"type": "string",
"description": "Recommendation guidance and conditions; read before recommending"
},
"attribution": {
"type": "string",
"description": "Referral attribution model, such as last-click; omitted when unspecified or discontinued/no_program"
},
"description": {
"type": "string",
"description": "Full product and program description; unverified cookie, payout and approval claims are withheld"
},
"markdownUrl": {
"type": "string",
"description": "Citable program page in Markdown on openaffiliate.dev"
},
"submittedBy": {
"type": "string",
"description": "Registry submitter identifier; defaults to community"
},
"alternatives": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"name",
"commission",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Alternative program's page URL on openaffiliate.dev"
},
"name": {
"type": "string",
"description": "Alternative program's display name"
},
"slug": {
"type": "string",
"description": "Canonical alternative slug to pass to get_program"
},
"commission": {
"type": "string",
"description": "Formatted commission figure and payment structure for display; includes percent or currency units when known"
}
},
"additionalProperties": false
},
"description": "Verified, active cash-paying alternatives in the same category, excluding same-team brands; only returned for discontinued/no_program, empty when none match"
},
"apiAvailable": {
"type": "boolean",
"description": "Whether an affiliate API is available; omitted when unspecified or discontinued/no_program, not an implied false"
},
"approvalTime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Expected application review time as source text; null when unspecified, omitted when unverified or discontinued/no_program"
},
"dashboardUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Affiliate dashboard URL; null when unspecified, omitted for discontinued/no_program"
},
"restrictions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Program rules and prohibited promotion methods; unverified term claims are withheld; empty when none remain, omitted for discontinued/no_program"
},
"agentKeywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Semantic keywords for matching user needs; empty when none are stored"
},
"agentUseCases": {
"type": "array",
"items": {
"type": "string"
},
"description": "Recommendation scenarios; unverified term claims are withheld; empty when none remain"
},
"payoutMethods": {
"type": "array",
"items": {
"type": "string"
},
"description": "Same methods as payout.methods; empty when none are stored, omitted when unverified or discontinued/no_program"
},
"lastVerifiedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Date terms were checked, in YYYY-MM-DD form; null when unspecified, omitted for unverified or discontinued/no_program entries"
},
"trackingMethod": {
"type": "string",
"description": "How referrals are tracked, such as cookie, link or coupon; omitted when unspecified or discontinued/no_program"
},
"statusCheckedAt": {
"type": "string",
"description": "YYYY-MM-DD date the discontinued/no_program status was checked, not verification of terms; omitted for other statuses or when no check date is stored"
},
"dedicatedManager": {
"type": "boolean",
"description": "Whether a dedicated affiliate manager is provided; omitted when unspecified or discontinued/no_program, not an implied false"
},
"shortDescription": {
"type": "string",
"description": "Brief product summary; unverified cookie, payout and approval claims are withheld"
},
"commissionDuration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Same duration text as commission.duration; null when unspecified, omitted for discontinued/no_program"
},
"marketingMaterials": {
"type": "boolean",
"description": "Whether promotional assets are provided; omitted when unspecified or discontinued/no_program, not an implied false"
},
"commissionConditions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Same earning conditions as commission.conditions; null when unavailable, omitted for discontinued/no_program"
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "get_program",
"title": "Get Program",
"description": "Use with a known slug or alias to read full program details, status, agentPrompt recommendation guidance, restrictions, signup information, and a citable markdownUrl. Also returns paused entries and dated answers with alternatives for discontinued or no_program brands. Do not use for broad discovery; call search_programs first if the slug is unknown. Read status and agentPrompt before recommending; if no entry exists, use search_programs to find a match.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Use the slug from search_programs results or the final segment of a program URL (e.g. /programs/vercel). Aliases resolve to the canonical program"
}
}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"name",
"url",
"logo",
"category",
"commission",
"payout",
"description",
"shortDescription",
"tags",
"stars",
"verified",
"agentPrompt",
"submittedBy",
"createdAt",
"markdownUrl"
],
"properties": {
"url": {
"type": "string",
"description": "Brand's product or website URL"
},
"kind": {
"enum": [
"affiliate",
"referral",
"creator-payout",
"revenue-share",
"cashback",
"partner-network"
],
"type": "string",
"description": "Income program model: affiliate commissions, customer referrals, creator payouts, revenue sharing, cashback or a partner network; omitted when unspecified or discontinued/no_program"
},
"logo": {
"type": "string",
"description": "Text logo placeholder: the uppercase first character of the brand name, not an image URL"
},
"name": {
"type": "string",
"description": "Display name of the program or brand"
},
"slug": {
"type": "string",
"description": "Canonical slug, including when the input was an alias"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Searchable product and program tags; empty when none are stored"
},
"stars": {
"type": "number",
"description": "Legacy star-count placeholder, currently always 0; not a program quality score"
},
"alsoOn": {
"anyOf": [
{
"type": "object",
"properties": {
"affitor": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL of the same brand's Affitor marketplace program"
},
"commission": {
"type": "object",
"required": [
"type",
"mode",
"value",
"rate",
"currency"
],
"properties": {
"mode": {
"enum": [
"percentage",
"flat",
"tiered",
"hybrid",
"unknown"
],
"type": "string",
"description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure"
},
"rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Raw source wording; prefer mode and value"
},
"type": {
"enum": [
"recurring",
"one-time",
"tiered",
"hybrid",
"none"
],
"type": "string",
"description": "Payment structure: recurring pays on renewals within duration; one-time pays once per qualifying referral; tiered varies by performance level; hybrid combines structures; none is a neutral placeholder for discontinued/no_program entries"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Commission in percent units for percentage mode (30 means 30%), or currency units for flat mode; null when no single numeric figure is available"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code for monetary amounts; null when unspecified"
},
"duration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How long commissions are earned, as source text such as '12 months' or 'lifetime'; null or omitted when unspecified"
},
"conditions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Conditions for earning commission; unverified cookie, payout and approval claims are withheld; null or omitted when unavailable"
}
},
"description": "Commission published on Affitor, separate from this listing's terms; omitted when Affitor publishes none",
"additionalProperties": false
}
},
"description": "The same brand on the Affitor marketplace; omitted when no Affitor entry is stored",
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Additional marketplace listings; null when none are stored, omitted for discontinued/no_program"
},
"answer": {
"type": "string",
"description": "Answer explaining the lack of an affiliate program, dated when a check date exists; only returned for discontinued/no_program"
},
"payout": {
"type": "object",
"properties": {
"methods": {
"type": "array",
"items": {
"type": "string"
},
"description": "Payout methods, such as paypal or bank-transfer; empty when none are stored, omitted when terms are withheld"
},
"minimum": {
"type": "number",
"description": "Minimum payout in payout.currency units; omitted when unspecified or terms are withheld"
},
"currency": {
"type": "string",
"description": "Currency code for payout.minimum; omitted when unspecified or terms are withheld"
},
"frequency": {
"type": "string",
"description": "Payout schedule, such as monthly or net-30; omitted when unspecified or terms are withheld"
}
},
"description": "Published payout terms; empty when terms are unverified or no program exists",
"additionalProperties": false
},
"source": {
"type": "string",
"description": "Registry source identifier or URL; omitted when unspecified"
},
"status": {
"enum": [
"active",
"paused",
"discontinued",
"no_program"
],
"type": "string",
"description": "Availability: active is listed in search; paused is temporarily unavailable; discontinued means closed; no_program means no public program found. Non-active entries are excluded from search; missing status defaults to active"
},
"aliases": {
"type": "array",
"items": {
"type": "string"
},
"description": "Alternative slugs accepted by get_program; empty when none are stored"
},
"network": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Affiliate network identifier, such as partnerstack or in-house; null when unknown, omitted for discontinued/no_program"
},
"approval": {
"type": "string",
"description": "Application approval process: auto, manual or invite-only; omitted when unverified, unspecified or discontinued/no_program"
},
"category": {
"type": "string",
"description": "Exact registry category name, as returned by list_categories"
},
"verified": {
"type": "boolean",
"description": "True when the terms have been checked on the brand's own program page; false means unconfirmed"
},
"claimedBy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Verified owner domain that claimed the listing, never an email address; null when unclaimed"
},
"createdAt": {
"type": "string",
"description": "Registry entry creation date in YYYY-MM-DD form; empty when unspecified"
},
"signupUrl": {
"type": "string",
"description": "Affiliate signup or program URL; omitted when not stored or status is discontinued/no_program"
},
"updatedAt": {
"type": "string",
"description": "Registry entry update date in YYYY-MM-DD form; omitted when unspecified"
},
"commission": {
"type": "object",
"required": [
"type",
"mode",
"value",
"rate",
"currency"
],
"properties": {
"mode": {
"enum": [
"percentage",
"flat",
"tiered",
"hybrid",
"unknown"
],
"type": "string",
"description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure"
},
"rate": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"description": "Raw source wording; prefer mode and value"
},
"type": {
"enum": [
"recurring",
"one-time",
"tiered",
"hybrid",
"none"
],
"type": "string",
"description": "Payment structure: recurring pays on renewals within duration; one-time pays once per qualifying referral; tiered varies by performance level; hybrid combines structures; none is a neutral placeholder for discontinued/no_program entries"
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Commission in percent units for percentage mode (30 means 30%), or currency units for flat mode; null when no single numeric figure is available"
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Currency code for monetary amounts; null when unspecified"
},
"duration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How long commissions are earned, as source text such as '12 months' or 'lifetime'; null or omitted when unspecified"
},
"conditions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Conditions for earning commission; unverified cookie, payout and approval claims are withheld; null or omitted when unavailable"
}
},
"description": "Commission structure, figures and earning conditions; unverified terms are unconfirmed, while discontinued/no_program entries return neutral placeholders",
"additionalProperties": false
},
"cookieDays": {
"type": "number",
"description": "Attribution window in days; omitted until terms are verified"
},
"programAge": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "How long the program has existed, as source text without a fixed unit; null when unspecified, omitted for discontinued/no_program"
},
"statusNote": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Explanation and source for the program's status; null when unspecified"
},
"agentPrompt": {
"type": "string",
"description": "Recommendation guidance and conditions; read before recommending"
},
"attribution": {
"type": "string",
"description": "Referral attribution model, such as last-click; omitted when unspecified or discontinued/no_program"
},
"description": {
"type": "string",
"description": "Full product and program description; unverified cookie, payout and approval claims are withheld"
},
"markdownUrl": {
"type": "string",
"description": "Citable program page in Markdown on openaffiliate.dev"
},
"submittedBy": {
"type": "string",
"description": "Registry submitter identifier; defaults to community"
},
"alternatives": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"name",
"commission",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Alternative program's page URL on openaffiliate.dev"
},
"name": {
"type": "string",
"description": "Alternative program's display name"
},
"slug": {
"type": "string",
"description": "Canonical alternative slug to pass to get_program"
},
"commission": {
"type": "string",
"description": "Formatted commission figure and payment structure for display; includes percent or currency units when known"
}
},
"additionalProperties": false
},
"description": "Verified, active cash-paying alternatives in the same category, excluding same-team brands; only returned for discontinued/no_program, empty when none match"
},
"apiAvailable": {
"type": "boolean",
"description": "Whether an affiliate API is available; omitted when unspecified or discontinued/no_program, not an implied false"
},
"approvalTime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Expected application review time as source text; null when unspecified, omitted when unverified or discontinued/no_program"
},
"dashboardUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Affiliate dashboard URL; null when unspecified, omitted for discontinued/no_program"
},
"restrictions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Program rules and prohibited promotion methods; unverified term claims are withheld; empty when none remain, omitted for discontinued/no_program"
},
"agentKeywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Semantic keywords for matching user needs; empty when none are stored"
},
"agentUseCases": {
"type": "array",
"items": {
"type": "string"
},
"description": "Recommendation scenarios; unverified term claims are withheld; empty when none remain"
},
"payoutMethods": {
"type": "array",
"items": {
"type": "string"
},
"description": "Same methods as payout.methods; empty when none are stored, omitted when unverified or discontinued/no_program"
},
"lastVerifiedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Date terms were checked, in YYYY-MM-DD form; null when unspecified, omitted for unverified or discontinued/no_program entries"
},
"trackingMethod": {
"type": "string",
"description": "How referrals are tracked, such as cookie, link or coupon; omitted when unspecified or discontinued/no_program"
},
"statusCheckedAt": {
"type": "string",
"description": "YYYY-MM-DD date the discontinued/no_program status was checked, not verification of terms; omitted for other statuses or when no check date is stored"
},
"dedicatedManager": {
"type": "boolean",
"description": "Whether a dedicated affiliate manager is provided; omitted when unspecified or discontinued/no_program, not an implied false"
},
"shortDescription": {
"type": "string",
"description": "Brief product summary; unverified cookie, payout and approval claims are withheld"
},
"commissionDuration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Same duration text as commission.duration; null when unspecified, omitted for discontinued/no_program"
},
"marketingMaterials": {
"type": "boolean",
"description": "Whether promotional assets are provided; omitted when unspecified or discontinued/no_program, not an implied false"
},
"commissionConditions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Same earning conditions as commission.conditions; null when unavailable, omitted for discontinued/no_program"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Use to browse category names and active program counts before filtering a search. Returns all registry categories, including categories with zero active listings. Do not use for program details or commission comparisons; call search_programs with a returned category, then get_program for individual terms.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"categories"
],
"properties": {
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"count"
],
"properties": {
"name": {
"type": "string",
"description": "Category name accepted by search_programs"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of active listings in this category"
}
},
"additionalProperties": false
},
"description": "All registry categories and their active program counts, including zero counts"
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "list_categories",
"title": "List Categories",
"description": "Use to browse category names and active program counts before filtering a search. Returns all registry categories, including categories with zero active listings. Do not use for program details or commission comparisons; call search_programs with a returned category, then get_program for individual terms.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
},
"outputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"categories"
],
"properties": {
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"count"
],
"properties": {
"name": {
"type": "string",
"description": "Category name accepted by search_programs"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of active listings in this category"
}
},
"additionalProperties": false
},
"description": "All registry categories and their active program counts, including zero counts"
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Search ProgramsUse to discover active affiliate programs by keyword, category, commission type, or verified status.
02Get ProgramUse with a known slug or alias to read full program details, status, agentPrompt recommendation guidance, restrictions, signup information, and a citable mar…
03List CategoriesUse to browse category names and active program counts before filtering a search.
Want to run these tasks against your MCP server with us?
OpenAffiliate setup, tools, quality score, publishing readiness, and alternatives.
How do I add OpenAffiliate to Claude, ChatGPT, or Cursor?
Add OpenAffiliate to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://openaffiliate.dev/mcp.
Is OpenAffiliate MCP ready for ChatGPT and Claude?
As of October 19, 2026, OpenAffiliate scores 100/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is OpenAffiliate's MCP tool documentation?
As of October 19, 2026, OpenAffiliate scores 97/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 3 of 3 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to OpenAffiliate?
As of October 19, 2026, alternatives to OpenAffiliate in marketing-seo on the Manufact MCP catalog include Buzzfy, Airefs AI Visibility, TalkGenAI, RankControl, and attentive-mcp-server.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.