{
  "id": "web.render",
  "object": "tool",
  "name": "Render a page",
  "summary": "JavaScript-heavy pages, fully rendered.",
  "description": "Loads a page in headless Chrome, runs its JavaScript, and returns the rendered HTML plus clean Markdown. Use it for single-page apps that plain fetching can't read.",
  "category": "web",
  "hosted_by": "Opentools",
  "runtime": "browser",
  "side_effects": false,
  "status": "live",
  "credits": 2,
  "price": "$0.0020",
  "providers": [
    {
      "id": "opentools",
      "name": "Opentools",
      "price": "$0.0020"
    }
  ],
  "mcp_name": "web_render",
  "input_schema": {
    "type": "object",
    "properties": {
      "url": {
        "type": "string",
        "format": "uri",
        "description": "Public http(s) URL of the page"
      },
      "include_links": {
        "default": true,
        "description": "Keep hyperlinks in the Markdown",
        "type": "boolean"
      },
      "main_only": {
        "default": true,
        "description": "Drop navigation, headers and footers from the Markdown",
        "type": "boolean"
      },
      "device": {
        "default": "desktop",
        "description": "Device to emulate: viewport, pixel ratio, touch and user agent",
        "type": "string",
        "enum": [
          "desktop",
          "laptop",
          "iphone-15",
          "pixel-8",
          "ipad"
        ]
      },
      "width": {
        "description": "Viewport width in CSS pixels. Overrides the device.",
        "type": "integer",
        "minimum": 240,
        "maximum": 3840
      },
      "height": {
        "description": "Viewport height in CSS pixels. Overrides the device.",
        "type": "integer",
        "minimum": 240,
        "maximum": 4320
      },
      "dark_mode": {
        "description": "Emulate prefers-color-scheme: dark (true) or light (false)",
        "type": "boolean"
      },
      "user_agent": {
        "description": "Custom User-Agent header",
        "type": "string",
        "maxLength": 500
      },
      "headers": {
        "description": "Extra HTTP headers sent with every request",
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {
          "type": "string"
        }
      },
      "cookies": {
        "description": "Cookies to set before loading, e.g. a consent or session cookie",
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "Cookie name"
            },
            "value": {
              "type": "string",
              "description": "Cookie value"
            },
            "domain": {
              "description": "Cookie domain. The page's domain if omitted.",
              "type": "string"
            },
            "path": {
              "description": "Cookie path. / if omitted.",
              "type": "string"
            }
          },
          "required": [
            "name",
            "value"
          ]
        }
      },
      "block": {
        "description": "Resource types to skip loading, for speed",
        "type": "array",
        "items": {
          "type": "string",
          "enum": [
            "fonts",
            "media",
            "images",
            "stylesheets"
          ]
        }
      },
      "wait_until": {
        "default": "networkidle",
        "description": "When the page counts as loaded. networkidle waits until the network is quiet.",
        "type": "string",
        "enum": [
          "load",
          "domcontentloaded",
          "networkidle"
        ]
      },
      "wait_for_selector": {
        "description": "Also wait until this CSS selector appears",
        "type": "string",
        "maxLength": 500
      },
      "delay_ms": {
        "default": 0,
        "description": "Extra wait after loading, in milliseconds",
        "type": "integer",
        "minimum": 0,
        "maximum": 15000
      },
      "timeout_ms": {
        "default": 30000,
        "description": "Give up loading after this long",
        "type": "integer",
        "minimum": 1000,
        "maximum": 60000
      }
    },
    "required": [
      "url"
    ]
  },
  "kind": "tool"
}