{
  "openapi": "3.1.0",
  "info": {
    "title": "Product Resolver",
    "version": "0.1.0",
    "description": "Agent-callable replacement product resolver. Resolves ink, toner, drum units, ink bottles, HVAC air filters, refrigerator water filters, shipping label supplies, business consumables, and automotive consumables from messy purchase intent."
  },
  "servers": [
    {
      "url": "https://productresolver.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "ProductResolverApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "Use Authorization: Bearer <Product Resolver API key> for every /resolve and /resolve/batch mode."
      }
    }
  },
  "paths": {
    "/resolve": {
      "get": {
        "summary": "Resolve replacement product intent",
        "security": [
          {
            "ProductResolverApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "intent",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": ["affiliate_supported", "neutral_paid"],
              "default": "affiliate_supported"
            }
          },
          {
            "name": "region",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "US"
            }
          },
          {
            "name": "quantity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved product intent"
          },
          "400": {
            "description": "The intent could not be resolved"
          },
          "401": {
            "description": "Every /resolve mode requires a valid Product Resolver API key"
          },
          "402": {
            "description": "The Product Resolver API key has no Product Resolver credits remaining"
          },
          "429": {
            "description": "Reserved for future API rate limits"
          }
        }
      },
      "post": {
        "summary": "Resolve replacement product intent",
        "security": [
          {
            "ProductResolverApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["intent"],
                "properties": {
                  "intent": {
                    "type": "string"
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["affiliate_supported", "neutral_paid"],
                    "default": "affiliate_supported"
                  },
                  "region": {
                    "type": "string",
                    "default": "US"
                  },
                  "quantity": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "preference": {
                    "type": "string",
                    "enum": ["lowest_risk", "lowest_cost", "high_yield", "oem", "compatible", "bulk"]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resolved product intent"
          },
          "400": {
            "description": "The intent could not be resolved"
          },
          "401": {
            "description": "Every /resolve mode requires a valid Product Resolver API key"
          },
          "402": {
            "description": "The Product Resolver API key has no Product Resolver credits remaining"
          },
          "429": {
            "description": "Reserved for future API rate limits"
          }
        }
      }
    },
    "/can-resolve": {
      "get": {
        "summary": "Free preflight check before paid resolution",
        "description": "Checks whether a natural-language replacement-product intent is likely supported without returning SKUs, compatibility families, buying options, or the resolved answer.",
        "parameters": [
          {
            "name": "intent",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": ["affiliate_supported", "neutral_paid"],
              "default": "affiliate_supported"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Preflight support signal. Product answer is withheld."
          },
          "400": {
            "description": "Missing or invalid intent"
          }
        }
      },
      "post": {
        "summary": "Free batch preflight check before paid resolution",
        "description": "Checks up to 50 intents for likely resolver support without returning product matches.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "intent": {
                    "type": "string"
                  },
                  "intents": {
                    "type": "array",
                    "maxItems": 50,
                    "items": {
                      "type": "string"
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["affiliate_supported", "neutral_paid"],
                    "default": "affiliate_supported"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Preflight support signals. Product answers are withheld."
          },
          "400": {
            "description": "Missing or invalid intents"
          }
        }
      }
    },
    "/resolve/batch": {
      "post": {
        "summary": "Resolve a batch of replacement product intents",
        "description": "Resolves up to 25 replacement-product intents in one request. Each successful resolved item costs one Product Resolver credit.",
        "security": [
          {
            "ProductResolverApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["intents"],
                "properties": {
                  "intents": {
                    "type": "array",
                    "maxItems": 25,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "object",
                          "required": ["intent"],
                          "properties": {
                            "intent": {
                              "type": "string"
                            },
                            "mode": {
                              "type": "string",
                              "enum": ["affiliate_supported", "neutral_paid"],
                              "default": "affiliate_supported"
                            },
                            "region": {
                              "type": "string",
                              "default": "US"
                            },
                            "quantity": {
                              "type": "integer",
                              "minimum": 1
                            },
                            "preference": {
                              "type": "string",
                              "enum": ["lowest_risk", "lowest_cost", "high_yield", "oem", "compatible", "bulk"]
                            }
                          }
                        }
                      ]
                    }
                  },
                  "mode": {
                    "type": "string",
                    "enum": ["affiliate_supported", "neutral_paid"],
                    "default": "affiliate_supported"
                  },
                  "region": {
                    "type": "string",
                    "default": "US"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Batch processed with per-item resolved, unresolved, or not_processed results"
          },
          "400": {
            "description": "Missing or invalid batch payload"
          },
          "401": {
            "description": "A valid Product Resolver API key is required"
          },
          "402": {
            "description": "The Product Resolver API key has no Product Resolver credits remaining"
          }
        }
      }
    },
    "/go": {
      "get": {
        "summary": "Validated outbound click redirect",
        "description": "Redirects to a merchant or configured affiliate-network URL only after validating the merchant and destination. Intended for first-party click tracking and disclosure workflows.",
        "parameters": [
          {
            "name": "merchant",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": ["amazon_business", "staples_business", "walmart_business"]
            }
          },
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "302": {
            "description": "Redirect to the validated outbound destination"
          },
          "400": {
            "description": "The redirect was blocked"
          }
        }
      }
    },
    "/billing/checkout": {
      "post": {
        "summary": "Create a Stripe checkout session for resolver credits",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["pack_id"],
                "properties": {
                  "pack_id": {
                    "type": "string",
                    "enum": ["agent_trial_100", "starter_500", "builder_2000", "operator_10000"]
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                }
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "required": ["pack_id"],
                "properties": {
                  "pack_id": {
                    "type": "string",
                    "enum": ["agent_trial_100", "starter_500", "builder_2000", "operator_10000"]
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "303": {
            "description": "Redirect to Stripe Checkout"
          },
          "400": {
            "description": "Unknown credit pack"
          },
          "503": {
            "description": "Stripe checkout is not configured"
          }
        }
      }
    },
    "/billing/checkout-session": {
      "post": {
        "summary": "Create a JSON Stripe checkout session for resolver credits",
        "description": "Returns a Stripe Checkout URL for prepaid Product Resolver credits. This endpoint is intended for agents and backend clients that need a machine-readable payment handoff.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["pack_id"],
                "properties": {
                  "pack_id": {
                    "type": "string",
                    "enum": ["agent_trial_100", "starter_500", "builder_2000", "operator_10000"]
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "Optional. If omitted, Stripe Checkout collects the buyer email."
                  }
                }
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "required": ["pack_id"],
                "properties": {
                  "pack_id": {
                    "type": "string",
                    "enum": ["agent_trial_100", "starter_500", "builder_2000", "operator_10000"]
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "Optional. If omitted, Stripe Checkout collects the buyer email."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON response containing checkout_url and stripe_session_id"
          },
          "400": {
            "description": "Unknown credit pack or invalid checkout request"
          },
          "503": {
            "description": "Stripe checkout is not configured"
          }
        }
      }
    },
    "/billing/balance": {
      "get": {
        "summary": "Check resolver credit balance",
        "security": [
          {
            "ProductResolverApiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Remaining Product Resolver credits for the supplied API key"
          },
          "401": {
            "description": "Missing or invalid API key"
          }
        }
      }
    },
    "/api/stripe/webhook": {
      "post": {
        "summary": "Stripe webhook receiver",
        "description": "Handles checkout.session.completed and credits the customer's Product Resolver API key.",
        "responses": {
          "200": {
            "description": "Webhook received"
          },
          "400": {
            "description": "Webhook verification or payload failed"
          },
          "503": {
            "description": "Webhook secret is not configured"
          }
        }
      }
    },
    "/status": {
      "get": {
        "summary": "Get safe runtime status",
        "description": "Returns catalog, monetization, pricing, and live-data readiness flags without exposing secret environment values.",
        "responses": {
          "200": {
            "description": "Runtime status summary"
          }
        }
      }
    },
    "/billing": {
      "get": {
        "summary": "Billing and credit pack page",
        "responses": {
          "200": {
            "description": "Human-readable credit purchase page"
          }
        }
      }
    },
    "/shopping-intents.json": {
      "get": {
        "summary": "List machine-readable shopping intents",
        "description": "Returns high-intent replacement-product guide URLs, disclosed affiliate-supported click URLs, and resolver URLs where available.",
        "responses": {
          "200": {
            "description": "Machine-readable replacement-product shopping intents"
          }
        }
      }
    },
    "/procurement-packs.json": {
      "get": {
        "summary": "List scored recurring procurement packs",
        "description": "Returns high-intent recurring procurement pack templates for paid /resolve/batch calls without returning free product answers.",
        "responses": {
          "200": {
            "description": "Scored recurring procurement pack registry"
          }
        }
      }
    },
    "/agent-catalog.json": {
      "get": {
        "summary": "Get compact agent-readable catalog index",
        "description": "Returns supported categories, counts, resolver URLs, preflight URLs, billing URLs, discovery aliases, and paid catalog items.",
        "responses": {
          "200": {
            "description": "Agent-readable Product Resolver catalog index"
          }
        }
      }
    },
    "/catalog.json": {
      "get": {
        "summary": "Get catalog JSON alias",
        "description": "Alias for /agent-catalog.json for agents and crawlers that look for generic catalog JSON.",
        "responses": {
          "200": {
            "description": "Agent-readable Product Resolver catalog index"
          }
        }
      }
    },
    "/catalog.md": {
      "get": {
        "summary": "Get Markdown agent catalog",
        "description": "Markdown catalog for text-first agent retrieval with categories, example intents, preflight URLs, and paid resolver URLs.",
        "responses": {
          "200": {
            "description": "Markdown Product Resolver catalog"
          }
        }
      }
    },
    "/product-feed.csv": {
      "get": {
        "summary": "Get product feed CSV",
        "description": "CSV catalog feed for paid Product Resolver API credit packs with billing links, images, availability, and prices.",
        "responses": {
          "200": {
            "description": "CSV product feed for paid API credit packs"
          }
        }
      }
    },
    "/commerce-feed.csv": {
      "get": {
        "summary": "Get commerce feed CSV alias",
        "description": "Alias for /product-feed.csv for commerce crawlers that look for generic feed names.",
        "responses": {
          "200": {
            "description": "CSV product feed for paid API credit packs"
          }
        }
      }
    },
    "/product-feed.jsonl": {
      "get": {
        "summary": "Get product feed JSONL",
        "description": "JSONL catalog feed for paid Product Resolver API credit packs with billing links, images, availability, and prices.",
        "responses": {
          "200": {
            "description": "JSONL product feed for paid API credit packs"
          }
        }
      }
    },
    "/payments.json": {
      "get": {
        "summary": "Get payment method manifest",
        "description": "Machine-readable manifest for Stripe Checkout credit funding, dashboard-controlled wallet methods, and planned direct wallet pay-per-call support.",
        "responses": {
          "200": {
            "description": "Payment method manifest"
          }
        }
      }
    },
    "/machine-payments.json": {
      "get": {
        "summary": "Get machine-payment manifest",
        "description": "Machine-readable payment sequence for prepaid Product Resolver credits, Stripe Checkout, eligible crypto-wallet funding, and paid resolver access.",
        "responses": {
          "200": {
            "description": "Machine-payment manifest"
          }
        }
      }
    },
    "/agent-actions.json": {
      "get": {
        "summary": "Get paid agent action feed",
        "description": "Short machine-readable feed for checkout, balance, and high-score paid batch resolver actions without returning free product answers.",
        "responses": {
          "200": {
            "description": "Paid agent action feed"
          }
        }
      }
    },
    "/wrappers.json": {
      "get": {
        "summary": "Get agent wrapper registry",
        "description": "Machine-readable registry for OpenAI-style function tools, MCP metadata, SDK clients, paid-call policy, and billing links.",
        "responses": {
          "200": {
            "description": "Agent wrapper registry"
          }
        }
      }
    },
    "/openai-tools.json": {
      "get": {
        "summary": "Get OpenAI-compatible tool schema",
        "description": "Function tool definitions using JSON Schema for Product Resolver preflight, paid resolve, paid batch resolve, balance checks, and checkout-session creation.",
        "responses": {
          "200": {
            "description": "OpenAI-compatible function tool manifest"
          }
        }
      }
    },
    "/sdk/product-resolver.mjs": {
      "get": {
        "summary": "Get JavaScript Product Resolver client",
        "description": "Hosted ESM client for preflight, paid resolve, paid batch resolve, checkout-session creation, and balance checks.",
        "responses": {
          "200": {
            "description": "JavaScript ESM client"
          }
        }
      }
    },
    "/sdk/product-resolver.py": {
      "get": {
        "summary": "Get Python Product Resolver client",
        "description": "Hosted Python client for preflight, paid resolve, paid batch resolve, checkout-session creation, and balance checks.",
        "responses": {
          "200": {
            "description": "Python client"
          }
        }
      }
    },
    "/catalog": {
      "get": {
        "summary": "List seeded supported resolver targets",
        "responses": {
          "200": {
            "description": "Catalog summary"
          }
        }
      }
    },
    "/agent.json": {
      "get": {
        "summary": "Get agent discovery manifest",
        "responses": {
          "200": {
            "description": "Agent discovery metadata"
          }
        }
      }
    },
    "/agent-directory.json": {
      "get": {
        "summary": "Get agent directory profile",
        "responses": {
          "200": {
            "description": "Directory-ready metadata, example calls, monetization modes, and discovery URLs"
          }
        }
      }
    },
    "/health": {
      "get": {
        "summary": "Health check",
        "responses": {
          "200": {
            "description": "Safe health summary"
          }
        }
      }
    },
    "/about": {
      "get": {
        "summary": "About Product Resolver",
        "responses": {
          "200": {
            "description": "Human-readable product overview"
          }
        }
      }
    },
    "/developers": {
      "get": {
        "summary": "Developer documentation and paid API entry point",
        "responses": {
          "200": {
            "description": "Human-readable developer page with API examples, billing link, and discovery endpoints"
          }
        }
      }
    },
    "/.well-known/agent.json": {
      "get": {
        "summary": "Standard agent discovery manifest",
        "responses": {
          "200": {
            "description": "Agent discovery metadata"
          }
        }
      }
    },
    "/.well-known/ai-plugin.json": {
      "get": {
        "summary": "Plugin-style discovery manifest",
        "responses": {
          "200": {
            "description": "Plugin discovery metadata"
          }
        }
      }
    },
    "/.well-known/mcp": {
      "get": {
        "summary": "Well-known MCP tool metadata",
        "responses": {
          "200": {
            "description": "Agent-readable tool metadata"
          }
        }
      },
      "post": {
        "summary": "Well-known MCP-style JSON-RPC tool endpoint",
        "description": "Alias for POST /mcp.",
        "responses": {
          "200": {
            "description": "JSON-RPC response"
          },
          "400": {
            "description": "Invalid JSON-RPC request"
          }
        }
      }
    },
    "/.well-known/mcp.json": {
      "get": {
        "summary": "Well-known MCP tool metadata JSON",
        "responses": {
          "200": {
            "description": "Agent-readable tool metadata"
          }
        }
      }
    },
    "/.well-known/product-resolver.json": {
      "get": {
        "summary": "Well-known Product Resolver directory profile",
        "responses": {
          "200": {
            "description": "Directory-ready Product Resolver metadata"
          }
        }
      }
    },
    "/.well-known/agent-catalog.json": {
      "get": {
        "summary": "Well-known agent catalog index",
        "responses": {
          "200": {
            "description": "Agent-readable Product Resolver catalog index"
          }
        }
      }
    },
    "/.well-known/product-catalog.json": {
      "get": {
        "summary": "Well-known product catalog index",
        "responses": {
          "200": {
            "description": "Agent-readable Product Resolver catalog index"
          }
        }
      }
    },
    "/.well-known/catalog.md": {
      "get": {
        "summary": "Well-known Markdown agent catalog",
        "responses": {
          "200": {
            "description": "Markdown Product Resolver catalog"
          }
        }
      }
    },
    "/.well-known/product-feed.csv": {
      "get": {
        "summary": "Well-known product feed CSV",
        "responses": {
          "200": {
            "description": "CSV product feed for paid API credit packs"
          }
        }
      }
    },
    "/.well-known/commerce-feed.csv": {
      "get": {
        "summary": "Well-known commerce feed CSV",
        "responses": {
          "200": {
            "description": "CSV product feed for paid API credit packs"
          }
        }
      }
    },
    "/.well-known/product-feed.jsonl": {
      "get": {
        "summary": "Well-known product feed JSONL",
        "responses": {
          "200": {
            "description": "JSONL product feed for paid API credit packs"
          }
        }
      }
    },
    "/.well-known/payments.json": {
      "get": {
        "summary": "Well-known payment method manifest",
        "responses": {
          "200": {
            "description": "Payment method manifest"
          }
        }
      }
    },
    "/.well-known/machine-payments.json": {
      "get": {
        "summary": "Well-known machine-payment manifest",
        "responses": {
          "200": {
            "description": "Machine-payment manifest"
          }
        }
      }
    },
    "/.well-known/agent-actions.json": {
      "get": {
        "summary": "Well-known paid agent action feed",
        "responses": {
          "200": {
            "description": "Paid agent action feed"
          }
        }
      }
    },
    "/.well-known/procurement-packs.json": {
      "get": {
        "summary": "Well-known recurring procurement pack registry",
        "responses": {
          "200": {
            "description": "Scored recurring procurement pack registry"
          }
        }
      }
    },
    "/.well-known/wrappers.json": {
      "get": {
        "summary": "Well-known agent wrapper registry",
        "responses": {
          "200": {
            "description": "Agent wrapper registry"
          }
        }
      }
    },
    "/.well-known/openai-tools.json": {
      "get": {
        "summary": "Well-known OpenAI-compatible tool schema",
        "responses": {
          "200": {
            "description": "OpenAI-compatible function tool manifest"
          }
        }
      }
    },
    "/methodology": {
      "get": {
        "summary": "Resolver ranking methodology",
        "responses": {
          "200": {
            "description": "Human-readable ranking and disclosure methodology"
          }
        }
      }
    },
    "/guides": {
      "get": {
        "summary": "Replacement product buying guides",
        "responses": {
          "200": {
            "description": "Human-readable guide index"
          }
        }
      }
    },
    "/guides/amazon-printer-supplies": {
      "get": {
        "summary": "Amazon printer supplies guide index",
        "responses": {
          "200": {
            "description": "Human-readable Amazon printer supplies guide index"
          }
        }
      }
    },
    "/guides/amazon-printer-supplies/hp-148a-148x": {
      "get": {
        "summary": "HP 148A and 148X Amazon buying guide",
        "responses": {
          "200": {
            "description": "Human-readable Amazon buying guide for HP 148A and 148X toner"
          }
        }
      }
    },
    "/guides/printer-models": {
      "get": {
        "summary": "Printer model ink and toner guide index",
        "responses": {
          "200": {
            "description": "Human-readable printer model guide index"
          }
        }
      }
    },
    "/guides/printer-models/hp-laserjet-pro-4001dn": {
      "get": {
        "summary": "HP LaserJet Pro 4001dn ink and toner guide",
        "responses": {
          "200": {
            "description": "Human-readable printer model guide with compatible families, consumables, resolver links, and Amazon-supported search paths"
          }
        }
      }
    },
    "/guides/hvac-filters": {
      "get": {
        "summary": "HVAC air filter guide index",
        "responses": {
          "200": {
            "description": "Human-readable HVAC air filter guide index with common sizes, MERV notes, and Amazon-supported search paths"
          }
        }
      }
    },
    "/guides/hvac-filters/20x25x1": {
      "get": {
        "summary": "20x25x1 HVAC air filter buying guide",
        "responses": {
          "200": {
            "description": "Human-readable HVAC filter page with size, thickness, MERV, and recurring replacement checks"
          }
        }
      }
    },
    "/guides/refrigerator-water-filters": {
      "get": {
        "summary": "Refrigerator water filter guide index",
        "responses": {
          "200": {
            "description": "Human-readable refrigerator water filter guide index with common replacement families and Amazon-supported search paths"
          }
        }
      }
    },
    "/guides/refrigerator-water-filters/everydrop-filter-1-edr1rxd1": {
      "get": {
        "summary": "EveryDrop Filter 1 EDR1RXD1 buying guide",
        "responses": {
          "200": {
            "description": "Human-readable refrigerator water filter page with family matching and replacement checks"
          }
        }
      }
    },
    "/guides/shipping-label-supplies": {
      "get": {
        "summary": "Shipping and label supply guide index",
        "responses": {
          "200": {
            "description": "Human-readable shipping and label supply guide index with size, format, printer-family, and Amazon-supported search paths"
          }
        }
      }
    },
    "/guides/shipping-label-supplies/4x6-direct-thermal-shipping-labels": {
      "get": {
        "summary": "4x6 direct thermal shipping labels buying guide",
        "responses": {
          "200": {
            "description": "Human-readable shipping label page with size, format, feed-style, and recurring replacement checks"
          }
        }
      }
    },
    "/guides/business-supplies": {
      "get": {
        "summary": "Business consumable supply guide index",
        "responses": {
          "200": {
            "description": "Human-readable business consumable guide index with size, material, pack-profile, and Amazon-supported search paths"
          }
        }
      }
    },
    "/guides/business-supplies/thermal-receipt-paper-3-1-8-x-230": {
      "get": {
        "summary": "3-1/8 x 230 thermal receipt paper buying guide",
        "responses": {
          "200": {
            "description": "Human-readable business supply page with size, material, pack-profile, and recurring reorder checks"
          }
        }
      }
    },
    "/guides/automotive-consumables": {
      "get": {
        "summary": "Automotive consumable guide index",
        "responses": {
          "200": {
            "description": "Human-readable automotive consumable guide index with vehicle year, model, part type, blade-size, cabin-filter, engine-filter, and oil-filter checks"
          }
        }
      }
    },
    "/guides/automotive-consumables/toyota-camry-2018-2024-front-wiper-blades": {
      "get": {
        "summary": "2018-2024 Toyota Camry front wiper blade buying guide",
        "responses": {
          "200": {
            "description": "Human-readable automotive consumable page with vehicle year, front blade-size, fit notes, and recurring replacement checks"
          }
        }
      }
    },
    "/guides/printer-toner-compatibility": {
      "get": {
        "summary": "Printer toner compatibility guide",
        "responses": {
          "200": {
            "description": "Human-readable toner compatibility guide"
          }
        }
      }
    },
    "/guides/high-yield-toner": {
      "get": {
        "summary": "High-yield toner buying guide",
        "responses": {
          "200": {
            "description": "Human-readable high-yield toner guide"
          }
        }
      }
    },
    "/use-cases": {
      "get": {
        "summary": "Replacement product revenue use cases",
        "responses": {
          "200": {
            "description": "Human-readable use-case index for paid affiliate-supported and paid neutral workflows"
          }
        }
      }
    },
    "/use-cases/ai-agent-procurement-api": {
      "get": {
        "summary": "AI agent procurement API use case",
        "responses": {
          "200": {
            "description": "Human-readable paid resolver API workflow for procurement agents"
          }
        }
      }
    },
    "/use-cases/autonomous-procurement-reorder-api": {
      "get": {
        "summary": "Autonomous procurement reorder API use case",
        "responses": {
          "200": {
            "description": "Human-readable workflow for routine AI procurement replenishment"
          }
        }
      }
    },
    "/use-cases/agentic-commerce-replacement-resolver": {
      "get": {
        "summary": "Agentic commerce replacement resolver use case",
        "responses": {
          "200": {
            "description": "Human-readable workflow for shopping agents resolving replacement-product fit"
          }
        }
      }
    },
    "/use-cases/vehicle-maintenance-consumable-resolver": {
      "get": {
        "summary": "Vehicle maintenance consumable resolver use case",
        "responses": {
          "200": {
            "description": "Human-readable workflow for automotive consumable fit checks and recurring vehicle maintenance buying paths"
          }
        }
      }
    },
    "/use-cases/recurring-filter-replacement": {
      "get": {
        "summary": "Recurring filter replacement use case",
        "responses": {
          "200": {
            "description": "Human-readable workflow for HVAC and refrigerator filter replacement buying paths"
          }
        }
      }
    },
    "/use-cases/shipping-label-reorder": {
      "get": {
        "summary": "Shipping label reorder use case",
        "responses": {
          "200": {
            "description": "Human-readable workflow for recurring shipping labels, DYMO rolls, Brother tape, Brother QL rolls, and Avery sheet labels"
          }
        }
      }
    },
    "/use-cases/business-consumable-reorder": {
      "get": {
        "summary": "Business consumable reorder use case",
        "responses": {
          "200": {
            "description": "Human-readable workflow for recurring office, shipping, janitorial, restroom, and facility consumable buying paths"
          }
        }
      }
    },
    "/privacy": {
      "get": {
        "summary": "Privacy page",
        "responses": {
          "200": {
            "description": "Human-readable privacy policy"
          }
        }
      }
    },
    "/terms": {
      "get": {
        "summary": "Terms page",
        "responses": {
          "200": {
            "description": "Human-readable terms"
          }
        }
      }
    },
    "/disclosure": {
      "get": {
        "summary": "Affiliate disclosure page",
        "responses": {
          "200": {
            "description": "Human-readable affiliate disclosure"
          }
        }
      }
    },
    "/mcp": {
      "get": {
        "summary": "Agent-readable tool metadata",
        "responses": {
          "200": {
            "description": "Tool metadata"
          }
        }
      },
      "post": {
        "summary": "MCP-style JSON-RPC tool endpoint",
        "description": "Accepts JSON-RPC 2.0 initialize, tools/list, ping, and tools/call requests. Paid resolver tool calls require a Product Resolver API key and deduct credits through the same billing path as /resolve and /resolve/batch. The checkout tool creates a Stripe Checkout URL for prepaid credits.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["jsonrpc", "id", "method"],
                "properties": {
                  "jsonrpc": {
                    "type": "string",
                    "const": "2.0"
                  },
                  "id": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "method": {
                    "type": "string",
                    "enum": ["initialize", "tools/list", "tools/call", "ping"]
                  },
                  "params": {
                    "type": "object"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response"
          },
          "400": {
            "description": "Invalid JSON-RPC request"
          }
        }
      }
    }
  }
}
