{
  "name": "Slap - A - Buck",
  "description": "Slap a brand sticker onto a public 3D figure. Humans pay Stripe. Agents pay USDC on Base via HTTP 402.",
  "url": "https://www.slap-a-buck.com/agents",
  "catalog": "https://www.slap-a-buck.com/api/x402",
  "playbook": "https://www.slap-a-buck.com/llms-full.txt",
  "pricing": "https://www.slap-a-buck.com/pricing.md",
  "tools": [
    {
      "name": "get_catalog",
      "description": "Discover live x402 pay-to, network, facilitator, and slap tiers.",
      "method": "GET",
      "path": "/api/x402",
      "url": "https://www.slap-a-buck.com/api/x402"
    },
    {
      "name": "upload_sticker",
      "description": "Upload a PNG, WebP, or JPEG sticker (max 2MB). Returns { path } for slap_brand.",
      "method": "POST",
      "path": "/api/upload",
      "url": "https://www.slap-a-buck.com/api/upload",
      "contentType": "multipart/form-data",
      "field": "file",
      "maxBytes": 2000000,
      "types": [
        "image/png",
        "image/webp",
        "image/jpeg"
      ]
    },
    {
      "name": "slap_brand",
      "description": "Place the sticker. First POST returns HTTP 402. Pay exact USDC, retry with PAYMENT-SIGNATURE. $50+ unlocks /s/[slug].",
      "method": "POST",
      "path": "/api/x402/slap",
      "url": "https://www.slap-a-buck.com/api/x402/slap",
      "contentType": "application/json",
      "payment": "x402",
      "parameters": {
        "brandName": {
          "type": "string",
          "description": "Brand shown on the sticker card and landing page."
        },
        "websiteUrl": {
          "type": "string",
          "description": "https URL the sticker and /s/[slug] page should promote."
        },
        "stickerPath": {
          "type": "string",
          "description": "Path returned by POST /api/upload, e.g. /uploads/….png"
        },
        "amountCents": {
          "type": "integer",
          "enum": [
            100,
            1000,
            5000,
            10000
          ],
          "description": "$1 / $10 / $50 / $100. Cheeks need at least 1000."
        },
        "cheek": {
          "type": "string",
          "enum": [
            "left",
            "right"
          ]
        },
        "offsetX": {
          "type": "number"
        },
        "offsetY": {
          "type": "number"
        },
        "wrapX": {
          "type": "number"
        },
        "wrapY": {
          "type": "number"
        },
        "wrapZ": {
          "type": "number"
        }
      },
      "required": [
        "brandName",
        "websiteUrl",
        "stickerPath",
        "amountCents"
      ]
    }
  ],
  "openai": {
    "type": "function",
    "function": {
      "name": "slap_brand",
      "description": "Advertise a brand on Slap - A - Buck. Upload a sticker first, then call this. Expect HTTP 402 and pay USDC.",
      "parameters": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "brandName",
          "websiteUrl",
          "stickerPath",
          "amountCents"
        ],
        "properties": {
          "brandName": {
            "type": "string",
            "description": "Brand shown on the sticker card and landing page."
          },
          "websiteUrl": {
            "type": "string",
            "description": "https URL the sticker and /s/[slug] page should promote."
          },
          "stickerPath": {
            "type": "string",
            "description": "Path returned by POST /api/upload, e.g. /uploads/….png"
          },
          "amountCents": {
            "type": "integer",
            "enum": [
              100,
              1000,
              5000,
              10000
            ],
            "description": "$1 / $10 / $50 / $100. Cheeks need at least 1000."
          },
          "cheek": {
            "type": "string",
            "enum": [
              "left",
              "right"
            ]
          },
          "offsetX": {
            "type": "number"
          },
          "offsetY": {
            "type": "number"
          },
          "wrapX": {
            "type": "number"
          },
          "wrapY": {
            "type": "number"
          },
          "wrapZ": {
            "type": "number"
          }
        }
      }
    }
  }
}