{
  "openapi": "3.1.0",
  "info": {
    "title": "Kit Rx Website Security, TLS & Markdown API",
    "version": "1.0.0",
    "description": "HTTP security headers graded A+ to F with fixes, SSL/TLS certificate expiry and issuer from Certificate Transparency, clean Markdown from any web page or PDF/DOCX/XLSX document, and a website check covering redirects, metadata, AI-crawler rules, llms.txt and x402 presence. Each call is one x402 v2 payment in USDC on Base, Polygon, Arbitrum, Avalanche or Sei; no signup or API key. Requests that fail or match nothing are not charged.",
    "x-guidance": "GET endpoints under /v1 take query-string parameters and return JSON. Pay per call with x402 v2 (USDC on Base); only 2xx responses are settled. Parameter details and examples: /llms.txt and /catalog.json.",
    "contact": {
      "name": "Kit Rx Website Security, TLS & Markdown",
      "url": "https://web.kit-rx.com"
    }
  },
  "servers": [
    {
      "url": "https://web.kit-rx.com"
    }
  ],
  "x-agentcash-guidance": {
    "llmsTxtUrl": "https://web.kit-rx.com/llms.txt"
  },
  "x-agentcash-provenance": {
    "ownershipProofs": [
      "0x619d0f195f73097a1ce94d920026f78492b3b4d9b30ab5ad53cd8a81cc6b6aff18b8ee7545f4d5bca03eef12f1120fff4da220d38dd6715eea441755f78f15e91b"
    ]
  },
  "x-discovery": {
    "ownershipProofs": [
      "0x619d0f195f73097a1ce94d920026f78492b3b4d9b30ab5ad53cd8a81cc6b6aff18b8ee7545f4d5bca03eef12f1120fff4da220d38dd6715eea441755f78f15e91b"
    ]
  },
  "paths": {
    "/v1/web/check": {
      "get": {
        "operationId": "web_check",
        "summary": "Website check: redirects, headers, SEO, agent readiness",
        "description": "Facts about a URL from a live fetch, never its body: final URL, status and chain after up to 5 validated redirects, response time, content type, server, security headers present/missing (HSTS, CSP, nosniff, framing, Referrer-Policy, Permissions-Policy), title, description, canonical, lang, Open Graph, robots meta, robots.txt rules for GPTBot, ClaudeBot, Google-Extended, CCBot, PerplexityBot, *, llms.txt, agent card, OpenAPI, x402 discovery, 402 terms. DNS via Cloudflare DoH.",
        "tags": [
          "website",
          "seo",
          "security-headers",
          "robots-txt",
          "x402"
        ],
        "security": [],
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "http or https URL, or a bare domain (checked as https://). Default ports only; credentials, IP addresses, localhost and private or single-label names are rejected.",
            "schema": {
              "type": "string"
            },
            "example": "https://github.com"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.005"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "url": "https://github.com"
                  },
                  "result": {
                    "input_url": "https://github.com/",
                    "reachable": true,
                    "error": null,
                    "final_url": "https://github.com/",
                    "final_status": 200,
                    "redirect_count": 0,
                    "redirect_chain": [],
                    "redirect_not_followed": null,
                    "https": true,
                    "response_time_ms": 152,
                    "chain_time_ms": 152,
                    "content_type": "text/html",
                    "server": "github.com",
                    "x_robots_tag": null,
                    "security_headers": {
                      "hsts": {
                        "present": true,
                        "max_age": 31536000,
                        "include_subdomains": true,
                        "preload": true
                      },
                      "csp": {
                        "present": true,
                        "report_only": false,
                        "frame_ancestors": true
                      },
                      "x_content_type_options": "nosniff",
                      "frame_protection": {
                        "present": true,
                        "via": "x-frame-options",
                        "x_frame_options": "deny"
                      },
                      "referrer_policy": "origin-when-cross-origin, strict-origin-when-cross-origin",
                      "permissions_policy": false,
                      "present": [
                        "strict-transport-security",
                        "content-security-policy",
                        "x-content-type-options",
                        "frame-protection",
                        "referrer-policy"
                      ],
                      "missing": [
                        "permissions-policy"
                      ]
                    },
                    "page": {
                      "title": "GitHub · Change is constant. GitHub keeps you ahead. · GitHub · GitHub",
                      "meta_description": "Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.",
                      "canonical": "https://github.com/",
                      "lang": "en",
                      "og_title": "GitHub · Change is constant. GitHub keeps you ahead. · GitHub",
                      "og_image": "https://images.ctfassets.net/8aevphvgewt8/76epZKB2wF998m4e4bLLXn/c505f20b00ec70b88b1be5aec42c4be4/OG_image.jpg",
                      "robots_meta": null,
                      "csp_meta": false
                    },
                    "agent_readiness": {
                      "origin": "https://github.com",
                      "robots_txt": {
                        "url": "https://github.com/robots.txt",
                        "status": 200,
                        "present": true,
                        "basis": "parsed robots.txt (RFC 9309 longest-match)",
                        "truncated": false,
                        "groups": 5,
                        "sitemaps": [
                          "https://github.com/sitemap_marketing.xml"
                        ],
                        "content_signal": null,
                        "agents": [
                          {
                            "agent": "GPTBot",
                            "allowed_root": true,
                            "group": "specific",
                            "matched_rule": null
                          },
                          {
                            "agent": "ClaudeBot",
                            "allowed_root": true,
                            "group": "specific",
                            "matched_rule": null
                          },
                          {
                            "agent": "Google-Extended",
                            "allowed_root": true,
                            "group": "*",
                            "matched_rule": null
                          },
                          {
                            "agent": "CCBot",
                            "allowed_root": true,
                            "group": "*",
                            "matched_rule": null
                          },
                          {
                            "agent": "PerplexityBot",
                            "allowed_root": true,
                            "group": "specific",
                            "matched_rule": null
                          },
                          {
                            "agent": "*",
                            "allowed_root": true,
                            "group": "*",
                            "matched_rule": null
                          }
                        ]
                      },
                      "llms_txt": {
                        "url": "https://github.com/llms.txt",
                        "status": 200,
                        "present": true,
                        "reason": null,
                        "title": "GitHub",
                        "follows_format": true,
                        "sections": 12,
                        "links": 117,
                        "truncated": false
                      },
                      "x402_discovery": {
                        "url": "https://github.com/.well-known/x402",
                        "status": 404,
                        "present": false,
                        "reason": null,
                        "version": null,
                        "resources": null,
                        "ownership_proofs": null
                      },
                      "openapi": {
                        "url": "https://github.com/openapi.json",
                        "status": 410,
                        "present": false,
                        "reason": null,
                        "spec_version": null,
                        "title": null,
                        "api_version": null,
                        "paths": null,
                        "truncated": false
                      },
                      "agent_card": {
                        "url": "https://github.com/.well-known/agent.json",
                        "status": 404,
                        "present": false,
                        "reason": null,
                        "format": null,
                        "name": null,
                        "protocol_version": null,
                        "skills": null
                      },
                      "payment_required": {
                        "status_402": false,
                        "header_present": false,
                        "decoded_from": null,
                        "x402_version": null,
                        "error": null,
                        "accepts": []
                      }
                    },
                    "subrequests": 8
                  },
                  "sources": [
                    {
                      "name": "Cloudflare DNS over HTTPS (JSON API)",
                      "url": "https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/make-api-requests/dns-json/"
                    },
                    {
                      "name": "Live HTTP(S) fetch of the site",
                      "url": "https://github.com/"
                    }
                  ],
                  "notes": [
                    "Facts describe the response served to the Kit Rx fetcher (User-Agent KitRx/1.0); a site may answer browsers or other crawlers differently."
                  ],
                  "attribution": [
                    "DNS resolved via Cloudflare 1.1.1.1 DNS-over-HTTPS."
                  ],
                  "generated_at": "2026-11-14T22:04:54.031Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    },
    "/v1/web/headers": {
      "get": {
        "operationId": "web_headers",
        "summary": "HTTP Security Headers Check (A+ to F grade)",
        "description": "Grades a URL's HTTP security headers A+ to F (0-100) from one live fetch after up to 5 validated redirects. Per header: present, value, rating, points, issue, fix for HSTS, Content-Security-Policy (unsafe-inline, unsafe-eval, wildcards, frame-ancestors), X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP, COEP, CORP; Server/X-Powered-By version leaks; cookie Secure, HttpOnly, SameSite flags; missing list, summary. DNS via Cloudflare DoH.",
        "tags": [
          "security-headers",
          "csp",
          "hsts",
          "website",
          "security"
        ],
        "security": [],
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "http or https URL, or a bare domain (checked as https://). Default ports only; credentials, IP addresses, localhost and private or single-label names are rejected.",
            "schema": {
              "type": "string"
            },
            "example": "https://github.com"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.005"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xAf8E0A8a8A0A8f65831b2dD0FFe0c1B804698D70"
        },
        "responses": {
          "200": {
            "description": "Report (charged)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "object"
                    },
                    "result": {
                      "type": "object"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "attribution": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "query",
                    "result",
                    "sources",
                    "generated_at"
                  ]
                },
                "example": {
                  "query": {
                    "url": "https://github.com"
                  },
                  "result": {
                    "input_url": "https://github.com/",
                    "final_url": "https://github.com/",
                    "status": 200,
                    "https": true,
                    "redirect_count": 0,
                    "redirect_not_followed": null,
                    "grade": "B",
                    "score": 78,
                    "max_score": 100,
                    "summary": "Grade B (78/100): 5 of 9 checked headers rated good; missing permissions-policy, cross-origin-opener-policy, cross-origin-embedder-policy, cross-origin-resource-policy; 1 cookie(s) missing flags.",
                    "headers": {
                      "strict-transport-security": {
                        "present": true,
                        "value": "max-age=31536000; includeSubdomains; preload",
                        "rating": "good",
                        "points": 25,
                        "max_points": 25,
                        "issue": null,
                        "fix": null
                      },
                      "content-security-policy": {
                        "present": true,
                        "value": "default-src 'none'; base-uri 'self'; child-src github.github…",
                        "rating": "good",
                        "points": 25,
                        "max_points": 25,
                        "issue": null,
                        "fix": null
                      },
                      "permissions-policy": {
                        "present": false,
                        "value": null,
                        "rating": "missing",
                        "points": 0,
                        "max_points": 10,
                        "issue": "No Permissions-Policy: powerful browser features (camera, microphone, geolocation) are not restricted.",
                        "fix": "Add Permissions-Policy disabling unused features, e.g. camera=(), microphone=(), geolocation=()."
                      }
                    },
                    "missing": [
                      "permissions-policy",
                      "cross-origin-opener-policy",
                      "cross-origin-embedder-policy",
                      "cross-origin-resource-policy"
                    ],
                    "cookies": {
                      "count": 3,
                      "checked": [
                        {
                          "name": "_octo",
                          "secure": true,
                          "http_only": false,
                          "same_site": "lax",
                          "issues": [
                            "no HttpOnly"
                          ]
                        }
                      ],
                      "deduction": -2
                    },
                    "deductions": [
                      {
                        "reason": "cookie flags missing (1 of 3 cookies)",
                        "points": -2
                      }
                    ],
                    "subrequests": 3
                  },
                  "sources": [
                    {
                      "name": "Cloudflare DNS over HTTPS (JSON API)",
                      "url": "https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/make-api-requests/dns-json/"
                    },
                    {
                      "name": "Live HTTP(S) fetch of the site",
                      "url": "https://github.com/"
                    }
                  ],
                  "notes": [
                    "Headers describe the response served to the Kit Rx fetcher (User-Agent KitRx/1.0); a site may answer browsers or other clients differently."
                  ],
                  "attribution": [
                    "DNS resolved via Cloudflare 1.1.1.1 DNS-over-HTTPS."
                  ],
                  "generated_at": "2026-11-15T00:31:20.681Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (not charged)"
          },
          "402": {
            "description": "Payment required: x402 challenge in the PAYMENT-REQUIRED header"
          },
          "404": {
            "description": "No match (not charged)"
          },
          "502": {
            "description": "Upstream source unavailable (not charged)"
          }
        }
      }
    }
  }
}