{
  "name": "Free3D.io Catalog Agent",
  "description": "Agent interface for the free3d.io archive of 100,000+ free 3D models (interior, architecture, games). Human browsing is free; automated agent access to catalog pages and model downloads requires x402 payment ($1 USDC/USDT/PYUSD per request on Base, Ethereum, Arbitrum, Solana, or TRON) or a subscription API key. Public discovery via llms.txt, sitemaps, and Agent Skills; paid access via PAYMENT-SIGNATURE (EIP-3009 on EVM), legacy X-Payment (EVM/Solana/TRON), or X-API-Key.",
  "version": "1.0.0",
  "documentationUrl": "https://free3d.io/x402/docs.html",
  "iconUrl": "https://free3d.io/images/logo.svg",
  "provider": {
    "organization": "Free3D.io",
    "url": "https://free3d.io"
  },
  "supportedInterfaces": [
    {
      "url": "https://free3d.io/",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://free3d.io/x402/verify",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false,
    "extensions": [
      {
        "uri": "https://github.com/coinbase/x402",
        "description": "x402 HTTP payment: v2 PAYMENT-SIGNATURE or v1 X-PAYMENT (base64 PaymentPayload / raw JSON); legacy X-Payment tx:network on EVM/Solana/TRON; X-API-Key subscriptions. Start at pricingUrl.",
        "required": true,
        "params": {
          "pricingUrl": "https://free3d.io/x402/pricing.json",
          "paymentSkillUrl": "https://free3d.io/.well-known/agent-skills/x402-payment.SKILL.md",
          "docsUrl": "https://free3d.io/x402/docs.html",
          "protectedResourceMetadata": "https://free3d.io/.well-known/oauth-protected-resource"
        }
      },
      {
        "uri": "https://cloudflare.pay/",
        "description": "Optional Cloudflare Wallet merchant identity (boogiemuffin.cloudflare.pay). Buyers may pay with CF Account/Virtual Wallets via the same x402 challenge — no checkout redirect.",
        "required": false,
        "params": {
          "handle": "boogiemuffin.cloudflare.pay",
          "blog": "https://blog.cloudflare.com/wallets/",
          "runbook": "https://free3d.io/x402/docs.html"
        }
      }
    ]
  },
  "defaultInputModes": [
    "text/plain",
    "text/html",
    "text/markdown",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/html",
    "text/markdown",
    "application/json",
    "application/octet-stream"
  ],
  "securitySchemes": {
    "paymentSignature": {
      "type": "apiKey",
      "in": "header",
      "name": "PAYMENT-SIGNATURE",
      "description": "x402 PaymentPayload as base64 JSON (or raw JSON). Prefer PAYMENT-SIGNATURE (v2); X-PAYMENT also accepted for v1 clients."
    },
    "xPaymentV1": {
      "type": "apiKey",
      "in": "header",
      "name": "X-PAYMENT",
      "description": "x402 v1: same base64 PaymentPayload as PAYMENT-SIGNATURE. Legacy on-chain uses X-Payment: <tx>:<network> instead."
    },
    "apiKey": {
      "type": "apiKey",
      "in": "header",
      "name": "X-API-Key",
      "description": "Subscription API key (purchase via free3dio@pm.me)"
    }
  },
  "security": [
    { "paymentSignature": [] },
    { "xPaymentV1": [] },
    { "apiKey": [] }
  ],
  "skills": [
    {
      "id": "discover-policy",
      "name": "Discover Agent Policy",
      "description": "Read the public llms.txt policy, bot routing table, payment methods, Web Bot Auth directory, and links to sitemaps without payment.",
      "tags": ["discovery", "policy", "llms", "public", "web-bot-auth"],
      "examples": [
        "Fetch https://free3d.io/llms.txt for full agent instructions",
        "Fetch https://free3d.io/.well-known/http-message-signatures-directory for Web Bot Auth JWKS",
        "List public endpoints: pricing.json, docs.html, openapi.json"
      ],
      "inputModes": ["text/plain"],
      "outputModes": ["text/plain", "text/markdown"]
    },
    {
      "id": "sign-outbound",
      "name": "Sign Outbound Requests (Web Bot Auth)",
      "description": "Attach Signature-Agent, Signature-Input, and Signature headers (tag=web-bot-auth) when free3d.io agents call other sites.",
      "tags": ["web-bot-auth", "signatures", "ed25519"],
      "examples": [
        "Signature-Agent: \"https://free3d.io\"",
        "Use WebBotAuth::outboundRequestHeaders(url) or scripts/web-bot-auth-sign-request.mjs"
      ],
      "inputModes": ["text/plain", "application/json"],
      "outputModes": ["application/json"]
    },
    {
      "id": "browse-catalog",
      "name": "Browse 3D Model Catalog",
      "description": "Discover categories, tags, and model URLs via sitemaps and semantic URLs. Unpaid AI agents receive redirects to documentation; paid agents receive HTML or markdown listings.",
      "tags": ["catalog", "3d-models", "sitemap", "interior", "architecture"],
      "examples": [
        "List categories from https://free3d.io/sitemap-cats.xml",
        "Open model page https://free3d.io/model/{slug}/{hash}"
      ],
      "inputModes": ["text/plain", "application/json"],
      "outputModes": ["text/html", "text/markdown", "application/json"]
    },
    {
      "id": "access-model",
      "name": "Access Model Page and Download",
      "description": "Retrieve a model detail page or trigger file download. Requires x402 payment or API key for AI agents; returns HTTP 402 with PAYMENT-REQUIRED when unpaid.",
      "tags": ["download", "3d-model", "x402", "paywall"],
      "examples": [
        "GET /model/Parker-Pendant-Wall-Sconce/853248af with PAYMENT-SIGNATURE after EIP-3009 authorization",
        "GET /model/{slug}/{hash}?a=download&do=get for file redirect after payment"
      ],
      "inputModes": ["application/json", "text/plain"],
      "outputModes": ["text/html", "text/markdown", "application/json", "application/octet-stream"]
    },
    {
      "id": "verify-legacy-payment",
      "name": "Verify On-Chain Payment",
      "description": "Exchange a confirmed on-chain USDC/PYUSD transfer for a one-time X-Access-Token via POST /x402/verify.",
      "tags": ["x402", "payment", "verify", "token"],
      "examples": [
        "POST /x402/verify with tx_hash, network, and resource_id"
      ],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"]
    },
    {
      "id": "get-pricing",
      "name": "Get Pricing and Payment Options",
      "description": "Return machine-readable x402 accepts, networks, tokens, and API key subscription plans from pricing.json.",
      "tags": ["pricing", "x402", "payment"],
      "examples": [
        "GET https://free3d.io/x402/pricing.json"
      ],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"]
    }
  ]
}
