{
  "openapi": "3.1.0",
  "info": {
    "title": "SaltCrate Oracle",
    "version": "1.0.0",
    "description": "Pay-per-call web intelligence MCP: fetch pages, check links, detect changes, verify claims. $0.50/call via Stripe MPP card.",
    "x-guidance": "Pay-per-call web intelligence: use /fetch to retrieve and parse a live web page, /check-link to validate a URL, /check-change to detect content changes, /verify to fact-check a claim against live sources. Each call costs $0.50 USD via MPP/x402 — no API key or subscription required.",
    "contact": { "email": "saltcrate@gmail.com" }
  },
  "paths": {
    "/fetch": {
      "post": {
        "operationId": "fetch",
        "summary": "Fetch and parse a live web page",
        "tags": ["Web"],
        "x-payment-info": {
          "price": { "mode": "fixed", "currency": "USD", "amount": "0.500000" },
          "protocols": [
            { "mpp": { "method": "stripe", "intent": "charge", "currency": "USD" } },
            { "x402": {} }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": { "url": { "type": "string", "format": "uri", "description": "URL to fetch and parse" } },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Parsed page content (clean text + metadata)" },
          "402": { "description": "Payment Required" }
        }
      }
    },
    "/check-link": {
      "post": {
        "operationId": "check_link",
        "summary": "Check whether a URL is live",
        "tags": ["Web"],
        "x-payment-info": {
          "price": { "mode": "fixed", "currency": "USD", "amount": "0.500000" },
          "protocols": [
            { "mpp": { "method": "stripe", "intent": "charge", "currency": "USD" } },
            { "x402": {} }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": { "url": { "type": "string", "format": "uri", "description": "URL to check" } },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "HTTP status, redirect chain, final URL, latency" },
          "402": { "description": "Payment Required" }
        }
      }
    },
    "/check-change": {
      "post": {
        "operationId": "check_change",
        "summary": "Detect whether a page changed since last check",
        "tags": ["Web"],
        "x-payment-info": {
          "price": { "mode": "fixed", "currency": "USD", "amount": "0.500000" },
          "protocols": [
            { "mpp": { "method": "stripe", "intent": "charge", "currency": "USD" } },
            { "x402": {} }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": { "url": { "type": "string", "format": "uri", "description": "URL to monitor for changes" } },
                "required": ["url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "new / changed / unchanged" },
          "402": { "description": "Payment Required" }
        }
      }
    },
    "/verify": {
      "post": {
        "operationId": "verify",
        "summary": "Check whether a source URL supports a claim",
        "tags": ["Web"],
        "x-payment-info": {
          "price": { "mode": "fixed", "currency": "USD", "amount": "0.500000" },
          "protocols": [
            { "mpp": { "method": "stripe", "intent": "charge", "currency": "USD" } },
            { "x402": {} }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "claim": { "type": "string", "description": "The claim to verify" },
                  "source_url": { "type": "string", "format": "uri", "description": "Source URL to check the claim against" }
                },
                "required": ["claim", "source_url"]
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Confidence score + best supporting excerpt" },
          "402": { "description": "Payment Required" }
        }
      }
    }
  }
}
