/.well-known/agent-offers.json

Open spec, draft 2026-11-01

One small file where a store states whether it pays agents (or their builders) for sales, on what terms, and whether agents must tell the shopper. It is a declaration, not a contract.

Rules

  • JSON over HTTPS at /.well-known/agent-offers.json. No auth and no bot wall.
  • Versioned by date (YYYY-MM-DD). This draft is 2026-11-01. Readers ignore unknown fields.
  • No publisher IDs, tracking parameters, secrets or per-agent deals. A store with private per-agent rates says pays_agents: true with no rate.
  • pays_agents: false is a useful statement in itself. A missing file means unknown, never “does not pay”.

Example

{
  "$schema": "https://www.arcreport.ai/schemas/agent-offers/2026-11-01.json",
  "version": "2026-11-01",
  "updated": "2026-11-01",
  "pays_agents": true,
  "offers": [
    {
      "type": "affiliate",
      "networks": [
        "awin",
        "impact"
      ],
      "rate": {
        "kind": "percent",
        "min": 3,
        "max": 8,
        "currency": null
      },
      "eligible": {
        "scope": "all",
        "exclude": [
          "gift-cards"
        ],
        "markets": [
          "US",
          "GB"
        ]
      },
      "attribution": {
        "method": "network_link",
        "window_days": 30
      },
      "agent_eligible": "yes",
      "terms_url": "https://shop.example/affiliates"
    }
  ],
  "disclosure": {
    "required": true,
    "text_url": "https://shop.example/affiliates#disclosure"
  },
  "contact": "https://shop.example/contact"
}

JSON Schema (draft-07): https://www.arcreport.ai/schemas/agent-offers/2026-11-01.json

Fields

FieldRequiredMeaning
versionMUSTSpec version date (YYYY-MM-DD). Readers ignore unknown fields.
updatedMUSTDate the store last changed its declaration.
pays_agentsMUSTtrue, false or "unknown". false is a useful statement: "we pay no agent commission".
offers[]if pays_agents is trueOne entry per program.
offers[].typeMUSTaffiliate (paid through a network), direct_offer (store pays agent builders directly), platform_fee (store pays the platform; informational).
offers[].networks[]SHOULDLower-case network ids: awin, impact, cj, rakuten, partnerize, skimlinks, sovrn, crossmint, other.
offers[].rateSHOULDkind: percent or flat. min/max give a range; an exact rate is min = max. currency applies to flat. A store MAY omit the rate and still say pays_agents: true.
offers[].eligibleMAYscope: all or some. include/exclude take category slugs. markets take ISO 3166 codes.
offers[].attributionMAYmethod: network_link, coupon, api_param or ucp_extension. window_days.
offers[].agent_eligibleSHOULDyes, no or unspecified: whether agent-initiated purchases qualify. Many programs exclude automated traffic, so this field matters most.
disclosure.requiredMUST if pays_agents is trueWhether the store requires agents to tell the shopper. ARC recommends true.
disclosure.text_urlMAYThe store's suggested disclosure wording.
contactMAYA URL for questions about the declaration.

Inside a UCP profile

A store with a UCP profile at /.well-known/ucp can carry the same declaration as a third-party extension. Same JSON body, two homes. The ai.arcreport.* name is a placeholder: if the UCP maintainers want it under dev.ucp.*, ARC hands it over.

{
  "ai.arcreport.shopping.agent_offers": [
    {
      "version": "2026-11-01",
      "spec": "https://www.arcreport.ai/incentives/spec",
      "schema": "https://www.arcreport.ai/schemas/agent-offers/2026-11-01.json",
      "extends": "dev.ucp.shopping.checkout"
    }
  ]
}

Status and neutrality

  • Draft. ARC does not read these files yet and has no validator endpoint yet.
  • Published under CC-BY-4.0. ARC runs no registry of rates, sells no placement and does not rank stores by rate.
  • A declaration is labelled “declared by store” and never changes a measured score.
  • ARC never earns commissions. ARC holds no affiliate accounts, publisher IDs or network logins, and the links ARC publishes carry no tracking parameters.

← Back to ARC Incentives