Skip to main content
Glama

Get Program

get_program
Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
slugYesUse the slug from search_programs results or the final segment of a program URL (e.g. /programs/vercel). Aliases resolve to the canonical program

Output Schema

NameRequiredDescriptionDefault
oasNoOAS, the OpenAffiliate Score: how clearly the program publishes its terms and protects its partners. Omitted when the program is not scored or OAS is not published
urlYesBrand's product or website URL
kindNoIncome program model: affiliate commissions, customer referrals, creator payouts, revenue sharing, cashback or a partner network; omitted when unspecified or discontinued/no_program
logoYesText logo placeholder: the uppercase first character of the brand name, not an image URL
nameYesDisplay name of the program or brand
slugYesCanonical slug, including when the input was an alias
tagsYesSearchable product and program tags; empty when none are stored
starsYesLegacy star-count placeholder, currently always 0; not a program quality score
alsoOnNoAdditional marketplace listings; null when none are stored, omitted for discontinued/no_program
answerNoAnswer explaining the lack of an affiliate program, dated when a check date exists; only returned for discontinued/no_program
payoutYesPublished payout terms; empty when terms are unverified or no program exists
sourceNoRegistry source identifier or URL; omitted when unspecified
statusNoAvailability: 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
aliasesNoAlternative slugs accepted by get_program; empty when none are stored
networkNoAffiliate network identifier, such as partnerstack or in-house; null when unknown, omitted for discontinued/no_program
approvalNoApplication approval process: auto, manual or invite-only; omitted when unverified, unspecified or discontinued/no_program
categoryYesExact registry category name, as returned by list_categories
verifiedYesTrue when the terms have been checked on the brand's own program page; false means unconfirmed
claimedByNoVerified owner domain that claimed the listing, never an email address; null when unclaimed
createdAtYesRegistry entry creation date in YYYY-MM-DD form; empty when unspecified
signupUrlNoAffiliate signup or program URL; omitted when not stored or status is discontinued/no_program
updatedAtNoRegistry entry update date in YYYY-MM-DD form; omitted when unspecified
commissionYesCommission structure, figures and earning conditions; unverified terms are unconfirmed, while discontinued/no_program entries return neutral placeholders
cookieDaysNoAttribution window in days; omitted until terms are verified
programAgeNoHow long the program has existed, as source text without a fixed unit; null when unspecified, omitted for discontinued/no_program
statusNoteNoExplanation and source for the program's status; null when unspecified
agentPromptYesRecommendation guidance and conditions; read before recommending
attributionNoReferral attribution model, such as last-click; omitted when unspecified or discontinued/no_program
descriptionYesFull product and program description; unverified cookie, payout and approval claims are withheld
markdownUrlYesCitable program page in Markdown on openaffiliate.dev
submittedByYesRegistry submitter identifier; defaults to community
alternativesNoVerified, active cash-paying alternatives in the same category; only returned for discontinued/no_program, empty when none match
apiAvailableNoWhether an affiliate API is available; omitted when unspecified or discontinued/no_program, not an implied false
approvalTimeNoExpected application review time as source text; null when unspecified, omitted when unverified or discontinued/no_program
dashboardUrlNoAffiliate dashboard URL; null when unspecified, omitted for discontinued/no_program
restrictionsNoProgram rules and prohibited promotion methods; unverified term claims are withheld; empty when none remain, omitted for discontinued/no_program
agentKeywordsNoSemantic keywords for matching user needs; empty when none are stored
agentUseCasesNoRecommendation scenarios; unverified term claims are withheld; empty when none remain
payoutMethodsNoSame methods as payout.methods; empty when none are stored, omitted when unverified or discontinued/no_program
lastVerifiedAtNoDate terms were checked, in YYYY-MM-DD form; null when unspecified, omitted for unverified or discontinued/no_program entries
trackingMethodNoHow referrals are tracked, such as cookie, link or coupon; omitted when unspecified or discontinued/no_program
statusCheckedAtNoYYYY-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
dedicatedManagerNoWhether a dedicated affiliate manager is provided; omitted when unspecified or discontinued/no_program, not an implied false
oasMachineChecksNoMachine checks shown on the OAS report, not counted in OAS; omitted when there are none to show
shortDescriptionYesBrief product summary; unverified cookie, payout and approval claims are withheld
commissionDurationNoSame duration text as commission.duration; null when unspecified, omitted for discontinued/no_program
marketingMaterialsNoWhether promotional assets are provided; omitted when unspecified or discontinued/no_program, not an implied false
commissionConditionsNoSame earning conditions as commission.conditions; null when unavailable, omitted for discontinued/no_program

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / oasMachineChecks
      Added value: +{
      +  "description": "Machine checks shown on the OAS report, not counted in OAS; omitted when there are none to show",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "id": {
      +        "description": "A1 program page is live; P5 Core Web Vitals (mobile); P6 estimated monthly brand-query search volume (Google Ads, worldwide)",
      +        "enum": [
      +          "A1",
      +          "P5",
      +          "P6"
      +        ],
      +        "type": "string"
      +      },
      +      "label": {
      +        "description": "The check's name as the report shows it",
      +        "type": "string"
      +      },
      +      "measuredAt": {
      +        "description": "Measurement date, YYYY-MM-DD",
      +        "type": "string"
      +      },
      +      "measurement": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "status": {
      +                "const": 200,
      +                "description": "HTTP status of the listed program page",
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "data": {
      +                "const": "field",
      +                "description": "Real-user data (Chrome UX Report)",
      +                "type": "string"
      +              },
      +              "notGood": {
      +                "description": "Core Web Vitals not in the good range; empty when all are",
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "data",
      +              "notGood"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "cls": {
      +                "description": "Cumulative Layout Shift",
      +                "type": "number"
      +              },
      +              "data": {
      +                "const": "lab",
      +                "description": "Lab test, no real-user data",
      +                "type": "string"
      +              },
      +              "lcpMs": {
      +                "description": "Largest Contentful Paint, ms",
      +                "type": "number"
      +              },
      +              "tbtMs": {
      +                "description": "Total Blocking Time, ms, standing in for INP",
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "data",
      +              "lcpMs",
      +              "cls",
      +              "tbtMs"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "reached": {
      +                "description": "Whether the estimate reaches the threshold",
      +                "type": "boolean"
      +              },
      +              "scope": {
      +                "const": "worldwide",
      +                "description": "Search volume scope",
      +                "type": "string"
      +              },
      +              "threshold": {
      +                "description": "Monthly searches the check requires",
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "scope",
      +              "threshold",
      +              "reached"
      +            ],
      +            "type": "object"
      +          }
      +        ],
      +        "description": "The typed measurement behind the reading"
      +      },
      +      "met": {
      +        "description": "True when the check is met",
      +        "type": "boolean"
      +      },
      +      "reading": {
      +        "description": "What was measured, in words, naming its data and thresholds",
      +        "type": "string"
      +      },
      +      "ruleset": {
      +        "description": "The rule set that produced the reading",
      +        "type": "string"
      +      },
      +      "source": {
      +        "description": "Where the reading comes from",
      +        "enum": [
      +          "http",
      +          "pagespeed",
      +          "dataforseo"
      +        ],
      +        "type": "string"
      +      },
      +      "target": {
      +        "description": "What was measured: the listed program URL (A1), the brand URL (P5) or the exact search query (P6)",
      +        "type": "string"
      +      },
      +      "validUntil": {
      +        "description": "First day the reading lapses (90 days after measuredAt), YYYY-MM-DD",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "label",
      +      "met",
      +      "reading",
      +      "source",
      +      "target",
      +      "measurement",
      +      "ruleset",
      +      "measuredAt",
      +      "validUntil"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / oas
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "OAS, the OpenAffiliate Score: how clearly the program publishes its terms and protects its partners. Omitted when the program is not scored or OAS is not published",
      +  "properties": {
      +    "checkedAt": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Date the scored terms were verified, YYYY-MM-DD"
      +    },
      +    "grade": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Letter grade for the score (A+ to F); null when score is null"
      +    },
      +    "reportUrl": {
      +      "description": "The program's full OAS report",
      +      "type": "string"
      +    },
      +    "score": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "OAS 0-100 as the program page shows it; null while scoring is in progress or the verified terms are older than 90 days"
      +    },
      +    "status": {
      +      "description": "scored: a current score; stale: terms verified more than 90 days ago; in_progress: some terms not read yet",
      +      "enum": [
      +        "scored",
      +        "stale",
      +        "in_progress"
      +      ],
      +      "type": "string"
      +    },
      +    "summary": {
      +      "description": "One line: the verdict when scored, otherwise why there is no score",
      +      "type": "string"
      +    },
      +    "validUntil": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "First day the score lapses unless the terms are verified again (90 days after checkedAt), YYYY-MM-DD"
      +    },
      +    "version": {
      +      "description": "Scoring method version, such as v1",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "score",
      +    "grade",
      +    "status",
      +    "summary",
      +    "checkedAt",
      +    "validUntil",
      +    "version",
      +    "reportUrl"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / properties / alternatives / description
      Previous value: -"Verified, active cash-paying alternatives in the same category, excluding same-team brands; only returned for discontinued/no_program, empty when none match"New value: +"Verified, active cash-paying alternatives in the same category; only returned for discontinued/no_program, empty when none match"
  4. Changed1 schema field changed
    • addedOutput schema / properties / payout / properties / conditions
      Added value: +{
      +  "description": "When a commission becomes payable, in the terms' own words (hold period, payout cycle, withdrawal rule); omitted when unspecified or terms are withheld",
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • changedInput schema / properties / slug / description
      Previous value: -"Program slug (e.g. 'anthropic-claude')"New value: +"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"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "agentKeywords": {
      +      "description": "Semantic keywords for matching user needs; empty when none are stored",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "agentPrompt": {
      +      "description": "Recommendation guidance and conditions; read before recommending",
      +      "type": "string"
      +    },
      +    "agentUseCases": {
      +      "description": "Recommendation scenarios; unverified term claims are withheld; empty when none remain",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "aliases": {
      +      "description": "Alternative slugs accepted by get_program; empty when none are stored",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "alsoOn": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "affitor": {
      +              "additionalProperties": false,
      +              "description": "The same brand on the Affitor marketplace; omitted when no Affitor entry is stored",
      +              "properties": {
      +                "commission": {
      +                  "additionalProperties": false,
      +                  "description": "Commission published on Affitor, separate from this listing's terms; omitted when Affitor publishes none",
      +                  "properties": {
      +                    "conditions": {
      +                      "anyOf": [
      +                        {
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ],
      +                      "description": "Conditions for earning commission; unverified cookie, payout and approval claims are withheld; null or omitted when unavailable"
      +                    },
      +                    "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"
      +                    },
      +                    "mode": {
      +                      "description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure",
      +                      "enum": [
      +                        "percentage",
      +                        "flat",
      +                        "tiered",
      +                        "hybrid",
      +                        "unknown"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "rate": {
      +                      "anyOf": [
      +                        {
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "number"
      +                        }
      +                      ],
      +                      "description": "Raw source wording; prefer mode and value"
      +                    },
      +                    "type": {
      +                      "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",
      +                      "enum": [
      +                        "recurring",
      +                        "one-time",
      +                        "tiered",
      +                        "hybrid",
      +                        "none"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "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"
      +                    }
      +                  },
      +                  "required": [
      +                    "type",
      +                    "mode",
      +                    "value",
      +                    "rate",
      +                    "currency"
      +                  ],
      +                  "type": "object"
      +                },
      +                "url": {
      +                  "description": "URL of the same brand's Affitor marketplace program",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "url"
      +              ],
      +              "type": "object"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Additional marketplace listings; null when none are stored, omitted for discontinued/no_program"
      +    },
      +    "alternatives": {
      +      "description": "Verified, active cash-paying alternatives in the same category, excluding same-team brands; only returned for discontinued/no_program, empty when none match",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "commission": {
      +            "description": "Formatted commission figure and payment structure for display; includes percent or currency units when known",
      +            "type": "string"
      +          },
      +          "name": {
      +            "description": "Alternative program's display name",
      +            "type": "string"
      +          },
      +          "slug": {
      +            "description": "Canonical alternative slug to pass to get_program",
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "Alternative program's page URL on openaffiliate.dev",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "name",
      +          "commission",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "answer": {
      +      "description": "Answer explaining the lack of an affiliate program, dated when a check date exists; only returned for discontinued/no_program",
      +      "type": "string"
      +    },
      +    "apiAvailable": {
      +      "description": "Whether an affiliate API is available; omitted when unspecified or discontinued/no_program, not an implied false",
      +      "type": "boolean"
      +    },
      +    "approval": {
      +      "description": "Application approval process: auto, manual or invite-only; omitted when unverified, unspecified or discontinued/no_program",
      +      "type": "string"
      +    },
      +    "approvalTime": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Expected application review time as source text; null when unspecified, omitted when unverified or discontinued/no_program"
      +    },
      +    "attribution": {
      +      "description": "Referral attribution model, such as last-click; omitted when unspecified or discontinued/no_program",
      +      "type": "string"
      +    },
      +    "category": {
      +      "description": "Exact registry category name, as returned by list_categories",
      +      "type": "string"
      +    },
      +    "claimedBy": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Verified owner domain that claimed the listing, never an email address; null when unclaimed"
      +    },
      +    "commission": {
      +      "additionalProperties": false,
      +      "description": "Commission structure, figures and earning conditions; unverified terms are unconfirmed, while discontinued/no_program entries return neutral placeholders",
      +      "properties": {
      +        "conditions": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Conditions for earning commission; unverified cookie, payout and approval claims are withheld; null or omitted when unavailable"
      +        },
      +        "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"
      +        },
      +        "mode": {
      +          "description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure",
      +          "enum": [
      +            "percentage",
      +            "flat",
      +            "tiered",
      +            "hybrid",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "rate": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "number"
      +            }
      +          ],
      +          "description": "Raw source wording; prefer mode and value"
      +        },
      +        "type": {
      +          "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",
      +          "enum": [
      +            "recurring",
      +            "one-time",
      +            "tiered",
      +            "hybrid",
      +            "none"
      +          ],
      +          "type": "string"
      +        },
      +        "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"
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "mode",
      +        "value",
      +        "rate",
      +        "currency"
      +      ],
      +      "type": "object"
      +    },
      +    "commissionConditions": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Same earning conditions as commission.conditions; null when unavailable, omitted for discontinued/no_program"
      +    },
      +    "commissionDuration": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Same duration text as commission.duration; null when unspecified, omitted for discontinued/no_program"
      +    },
      +    "cookieDays": {
      +      "description": "Attribution window in days; omitted until terms are verified",
      +      "type": "number"
      +    },
      +    "createdAt": {
      +      "description": "Registry entry creation date in YYYY-MM-DD form; empty when unspecified",
      +      "type": "string"
      +    },
      +    "dashboardUrl": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Affiliate dashboard URL; null when unspecified, omitted for discontinued/no_program"
      +    },
      +    "dedicatedManager": {
      +      "description": "Whether a dedicated affiliate manager is provided; omitted when unspecified or discontinued/no_program, not an implied false",
      +      "type": "boolean"
      +    },
      +    "description": {
      +      "description": "Full product and program description; unverified cookie, payout and approval claims are withheld",
      +      "type": "string"
      +    },
      +    "kind": {
      +      "description": "Income program model: affiliate commissions, customer referrals, creator payouts, revenue sharing, cashback or a partner network; omitted when unspecified or discontinued/no_program",
      +      "enum": [
      +        "affiliate",
      +        "referral",
      +        "creator-payout",
      +        "revenue-share",
      +        "cashback",
      +        "partner-network"
      +      ],
      +      "type": "string"
      +    },
      +    "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"
      +    },
      +    "logo": {
      +      "description": "Text logo placeholder: the uppercase first character of the brand name, not an image URL",
      +      "type": "string"
      +    },
      +    "markdownUrl": {
      +      "description": "Citable program page in Markdown on openaffiliate.dev",
      +      "type": "string"
      +    },
      +    "marketingMaterials": {
      +      "description": "Whether promotional assets are provided; omitted when unspecified or discontinued/no_program, not an implied false",
      +      "type": "boolean"
      +    },
      +    "name": {
      +      "description": "Display name of the program or brand",
      +      "type": "string"
      +    },
      +    "network": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Affiliate network identifier, such as partnerstack or in-house; null when unknown, omitted for discontinued/no_program"
      +    },
      +    "payout": {
      +      "additionalProperties": false,
      +      "description": "Published payout terms; empty when terms are unverified or no program exists",
      +      "properties": {
      +        "currency": {
      +          "description": "Currency code for payout.minimum; omitted when unspecified or terms are withheld",
      +          "type": "string"
      +        },
      +        "frequency": {
      +          "description": "Payout schedule, such as monthly or net-30; omitted when unspecified or terms are withheld",
      +          "type": "string"
      +        },
      +        "methods": {
      +          "description": "Payout methods, such as paypal or bank-transfer; empty when none are stored, omitted when terms are withheld",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "minimum": {
      +          "description": "Minimum payout in payout.currency units; omitted when unspecified or terms are withheld",
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "payoutMethods": {
      +      "description": "Same methods as payout.methods; empty when none are stored, omitted when unverified or discontinued/no_program",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "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"
      +    },
      +    "restrictions": {
      +      "description": "Program rules and prohibited promotion methods; unverified term claims are withheld; empty when none remain, omitted for discontinued/no_program",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "shortDescription": {
      +      "description": "Brief product summary; unverified cookie, payout and approval claims are withheld",
      +      "type": "string"
      +    },
      +    "signupUrl": {
      +      "description": "Affiliate signup or program URL; omitted when not stored or status is discontinued/no_program",
      +      "type": "string"
      +    },
      +    "slug": {
      +      "description": "Canonical slug, including when the input was an alias",
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "Registry source identifier or URL; omitted when unspecified",
      +      "type": "string"
      +    },
      +    "stars": {
      +      "description": "Legacy star-count placeholder, currently always 0; not a program quality score",
      +      "type": "number"
      +    },
      +    "status": {
      +      "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",
      +      "enum": [
      +        "active",
      +        "paused",
      +        "discontinued",
      +        "no_program"
      +      ],
      +      "type": "string"
      +    },
      +    "statusCheckedAt": {
      +      "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",
      +      "type": "string"
      +    },
      +    "statusNote": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Explanation and source for the program's status; null when unspecified"
      +    },
      +    "submittedBy": {
      +      "description": "Registry submitter identifier; defaults to community",
      +      "type": "string"
      +    },
      +    "tags": {
      +      "description": "Searchable product and program tags; empty when none are stored",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "trackingMethod": {
      +      "description": "How referrals are tracked, such as cookie, link or coupon; omitted when unspecified or discontinued/no_program",
      +      "type": "string"
      +    },
      +    "updatedAt": {
      +      "description": "Registry entry update date in YYYY-MM-DD form; omitted when unspecified",
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "Brand's product or website URL",
      +      "type": "string"
      +    },
      +    "verified": {
      +      "description": "True when the terms have been checked on the brand's own program page; false means unconfirmed",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "slug",
      +    "name",
      +    "url",
      +    "logo",
      +    "category",
      +    "commission",
      +    "payout",
      +    "description",
      +    "shortDescription",
      +    "tags",
      +    "stars",
      +    "verified",
      +    "agentPrompt",
      +    "submittedBy",
      +    "createdAt",
      +    "markdownUrl"
      +  ],
      +  "type": "object"
      +}
  6. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds behavioral context beyond annotations by naming return categories: paused entries, dated answers, alternatives for discontinued/no_program brands, and a citable markdownUrl. It also prescribes reading status and agentPrompt before recommending, though it does not mention permissions or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary action and return content, followed by usage constraints and prerequisite checks. It is somewhat long, but each sentence carries distinct routing or behavioral guidance. Minor tightening could improve it, but nothing is redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values, but it still summarizes returned content usefully. It covers purpose, alternatives, prerequisite checks, and caveats for missing or discontinued entries. Nothing an agent needs to invoke it correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the slug parameter is already fully documented, including alias resolution and URL-segment examples. The description repeats that the slug must be known or an alias but adds no syntax, format, or edge-case detail beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: read full program details using a known slug or alias. It explicitly contrasts this with sibling search_programs, saying it is not for broad discovery. An agent can distinguish it from list_categories and search_programs without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: only with a known slug or alias, and call search_programs first if the slug is unknown. It also says to read status and agentPrompt before recommending, and to use search_programs if no entry exists. These are clear conditions and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.