{
  "schemaVersion": "agents.json/0.1-anchor",
  "name": "anchor",
  "origin": "https://anchor.kevinmurphywebdev.com",
  "contact": "mailto:agents@anchor.kevinmurphywebdev.com",
  "terms": "https://anchor.kevinmurphywebdev.com/terms",
  "capabilities": [
    "browse",
    "search",
    "compare",
    "purchase"
  ],
  "endpoints": {
    "catalog": {
      "url": "https://anchor.kevinmurphywebdev.com/api/agent/catalog",
      "method": "GET",
      "description": "Returns the full product catalog as a structured JSON array. Includes pricing, negotiation envelope, and stock."
    },
    "productLookup": {
      "urlTemplate": "https://anchor.kevinmurphywebdev.com/products/{slug}/agent/markdown",
      "method": "GET",
      "description": "Returns citation-shaped content for a single product. Three format-specific URLs: /agent/markdown (combined: citation opening + JSON-LD fence + prose), /agent/json (Schema.org Product/Offer JSON-LD only), /agent/plain (citation opening + prose, no JSON-LD). All three are statically prerendered per SKU and served from the edge cache. The bare /agent endpoint 308-redirects to /agent/markdown for backward compatibility."
    },
    "checkout": {
      "url": "https://anchor.kevinmurphywebdev.com/api/agent/checkout",
      "method": "POST",
      "contentType": "application/json",
      "description": "Initiates a purchase on behalf of a delegated user. Requires X-Agent-Principal header carrying a signed principal token. Supports negotiation within published per-sku floor."
    }
  },
  "auth": {
    "type": "delegated",
    "protocol": "ACP/0.1-draft",
    "principalHeader": "X-Agent-Principal",
    "description": "Agent must present a signed principal token issued by the end user. Token carries scope (purchase max-amount, ttl, idempotency salt). The /api/agent/checkout endpoint validates signature, scope, expiry, and idempotency on every call."
  },
  "pricing": {
    "currency": "USD",
    "negotiation": {
      "supported": true,
      "scope": "per-sku",
      "mechanism": "Send proposedPriceCents in the checkout payload. If at or above the SKU floor, accepted; if below, rejected with the published floor returned. Each SKU exposes negotiable: true|false and floorCents in its product-lookup response.",
      "maxDiscountPct": 15
    }
  },
  "rateLimits": {
    "perAgentPerMinute": 30,
    "perAgentPerDay": 1000
  },
  "catalog": [
    {
      "slug": "moonshot-grinder-x1",
      "name": "Moonshot Grinder X1",
      "category": "grinder",
      "url": "https://anchor.kevinmurphywebdev.com/products/moonshot-grinder-x1",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/moonshot-grinder-x1/agent/markdown",
      "listCents": 89900,
      "negotiable": true,
      "inStock": true
    },
    {
      "slug": "kestrel-pour-kettle",
      "name": "Kestrel Pour Kettle",
      "category": "kettle",
      "url": "https://anchor.kevinmurphywebdev.com/products/kestrel-pour-kettle",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/kestrel-pour-kettle/agent/markdown",
      "listCents": 18900,
      "negotiable": true,
      "inStock": true
    },
    {
      "slug": "tideline-v60",
      "name": "Tideline V60",
      "category": "brewer",
      "url": "https://anchor.kevinmurphywebdev.com/products/tideline-v60",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/tideline-v60/agent/markdown",
      "listCents": 3200,
      "negotiable": false,
      "inStock": true
    },
    {
      "slug": "ledger-coffee-scale",
      "name": "Ledger Coffee Scale",
      "category": "scale",
      "url": "https://anchor.kevinmurphywebdev.com/products/ledger-coffee-scale",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/ledger-coffee-scale/agent/markdown",
      "listCents": 14500,
      "negotiable": true,
      "inStock": true
    },
    {
      "slug": "anchor-house-blend",
      "name": "Anchor House Blend",
      "category": "beans",
      "url": "https://anchor.kevinmurphywebdev.com/products/anchor-house-blend",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/anchor-house-blend/agent/markdown",
      "listCents": 2400,
      "negotiable": false,
      "inStock": true
    },
    {
      "slug": "harbor-single-origin-ethiopia",
      "name": "Harbor Single-Origin Ethiopia",
      "category": "beans",
      "url": "https://anchor.kevinmurphywebdev.com/products/harbor-single-origin-ethiopia",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/harbor-single-origin-ethiopia/agent/markdown",
      "listCents": 2200,
      "negotiable": false,
      "inStock": true
    },
    {
      "slug": "delta-espresso-machine",
      "name": "Delta Espresso Machine",
      "category": "brewer",
      "url": "https://anchor.kevinmurphywebdev.com/products/delta-espresso-machine",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/delta-espresso-machine/agent/markdown",
      "listCents": 249900,
      "negotiable": true,
      "inStock": true
    },
    {
      "slug": "compass-hand-grinder",
      "name": "Compass Hand Grinder",
      "category": "grinder",
      "url": "https://anchor.kevinmurphywebdev.com/products/compass-hand-grinder",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/compass-hand-grinder/agent/markdown",
      "listCents": 16800,
      "negotiable": true,
      "inStock": true
    },
    {
      "slug": "tideline-chemex-six",
      "name": "Tideline Chemex Six",
      "category": "brewer",
      "url": "https://anchor.kevinmurphywebdev.com/products/tideline-chemex-six",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/tideline-chemex-six/agent/markdown",
      "listCents": 5500,
      "negotiable": false,
      "inStock": true
    },
    {
      "slug": "sextant-aeropress-kit",
      "name": "Sextant AeroPress Kit",
      "category": "brewer",
      "url": "https://anchor.kevinmurphywebdev.com/products/sextant-aeropress-kit",
      "agentUrl": "https://anchor.kevinmurphywebdev.com/products/sextant-aeropress-kit/agent/markdown",
      "listCents": 4900,
      "negotiable": true,
      "inStock": true
    }
  ]
}