{
  "name": "webclaw",
  "description": "Web extraction agent for turning public web pages into markdown, JSON, structured data, summaries, diffs, brand signals, and research context for AI agents.",
  "supportedInterfaces": [
    {
      "url": "https://api.webclaw.io",
      "protocolBinding": "https://webclaw.io/protocol-bindings/cloud-rest/v1",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "webclaw",
    "url": "https://webclaw.io"
  },
  "version": "0.6.1",
  "documentationUrl": "https://webclaw.io/docs/api",
  "iconUrl": "https://webclaw.io/favicon-32.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false,
    "extensions": [
      {
        "uri": "https://webclaw.io/openapi.json",
        "description": "OpenAPI description for the callable webclaw Cloud REST API.",
        "required": false
      },
      {
        "uri": "https://webclaw.io/.well-known/mcp/server-card.json",
        "description": "MCP server discovery card for local stdio use with agent clients.",
        "required": false
      }
    ]
  },
  "securitySchemes": {
    "webclawBearer": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "webclaw scoped API key or OAuth device-flow token",
      "description": "Use a dashboard API key or an OAuth device-flow token in the Authorization header."
    },
    "webclawDeviceFlow": {
      "type": "oauth2",
      "flows": {
        "deviceCode": {
          "deviceAuthorizationUrl": "https://api.webclaw.io/oauth/device_authorization",
          "tokenUrl": "https://api.webclaw.io/oauth/token",
          "scopes": {
            "scrape": "Access the webclaw scrape endpoint family.",
            "crawl": "Access the webclaw crawl endpoint family.",
            "map": "Access the webclaw map endpoint family.",
            "batch": "Access the webclaw batch endpoint family.",
            "search": "Access the webclaw search endpoint family.",
            "extract": "Access the webclaw extract endpoint family.",
            "summarize": "Access the webclaw summarize endpoint family.",
            "diff": "Access the webclaw diff endpoint family.",
            "brand": "Access the webclaw brand endpoint family.",
            "research": "Access the webclaw research endpoint family.",
            "endpoints": "Access the webclaw endpoints endpoint family.",
            "vertical": "Access the webclaw vertical endpoint family.",
            "watch": "Access the webclaw watch endpoint family."
          }
        }
      }
    }
  },
  "security": [
    {
      "webclawBearer": []
    },
    {
      "webclawDeviceFlow": [
        "scrape",
        "crawl",
        "map",
        "batch",
        "search",
        "extract",
        "summarize",
        "diff",
        "brand",
        "research",
        "endpoints",
        "vertical",
        "watch"
      ]
    }
  ],
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/markdown",
    "text/plain"
  ],
  "skills": [
    {
      "id": "scrape",
      "name": "Scrape a web page",
      "description": "Fetch a public URL and return LLM-ready markdown, HTML, links, images, metadata, or JSON.",
      "tags": [
        "web-scraping",
        "markdown",
        "html",
        "llm-input"
      ],
      "examples": [
        "Extract clean markdown from https://example.com"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/markdown",
        "text/plain"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "scrape"
          ]
        }
      ]
    },
    {
      "id": "crawl",
      "name": "Crawl a site",
      "description": "Start and inspect crawl jobs for multiple pages on the same website, with paginated page results for large crawls.",
      "tags": [
        "crawl",
        "site-map",
        "multi-page-extraction"
      ],
      "examples": [
        "Crawl the first 25 pages under a documentation site"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/markdown"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "crawl"
          ]
        }
      ]
    },
    {
      "id": "map",
      "name": "Map URLs",
      "description": "Discover public URLs from sitemaps, robots.txt, and same-domain page links.",
      "tags": [
        "sitemap",
        "url-discovery",
        "site-map"
      ],
      "examples": [
        "Find URLs under https://example.com/docs"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "map"
          ]
        }
      ]
    },
    {
      "id": "batch",
      "name": "Batch scrape URLs",
      "description": "Scrape multiple URLs in one request and return per-URL results for agent pipelines.",
      "tags": [
        "batch",
        "parallel-extraction",
        "web-scraping"
      ],
      "examples": [
        "Scrape five documentation URLs and return markdown for each"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/markdown"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "batch"
          ]
        }
      ]
    },
    {
      "id": "search",
      "name": "Search the web",
      "description": "Run web search and optionally inspect result pages as structured agent context.",
      "tags": [
        "search",
        "research",
        "web-context"
      ],
      "examples": [
        "Search for official documentation about a package"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "search"
          ]
        }
      ]
    },
    {
      "id": "extract",
      "name": "Structured extraction",
      "description": "Extract schema-shaped JSON from a page for agents that need typed fields instead of raw markdown.",
      "tags": [
        "structured-data",
        "json",
        "schema",
        "llm-extraction"
      ],
      "examples": [
        "Extract product name, price, and availability from a product page"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "extract"
          ]
        }
      ]
    },
    {
      "id": "summarize",
      "name": "Summarize a page",
      "description": "Summarize a URL into concise text suitable for agent memory, reports, and briefings.",
      "tags": [
        "summary",
        "llm",
        "web-context"
      ],
      "examples": [
        "Summarize a long policy page in five bullets"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/plain",
        "text/markdown"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "summarize"
          ]
        }
      ]
    },
    {
      "id": "brand",
      "name": "Extract brand signals",
      "description": "Extract public brand identity signals such as colors, fonts, logos, icons, and social preview images.",
      "tags": [
        "brand",
        "colors",
        "logos",
        "design"
      ],
      "examples": [
        "Find the public brand colors and logos for a company website"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "brand"
          ]
        }
      ]
    },
    {
      "id": "diff",
      "name": "Detect page changes",
      "description": "Compare a page with a previous snapshot and return useful change information.",
      "tags": [
        "diff",
        "monitoring",
        "change-detection"
      ],
      "examples": [
        "Check if a pricing page changed since the last snapshot"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/markdown"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "diff"
          ]
        }
      ]
    },
    {
      "id": "research",
      "name": "Run web research",
      "description": "Run a deeper web research job and retrieve synthesized findings from public sources.",
      "tags": [
        "research",
        "sources",
        "synthesis"
      ],
      "examples": [
        "Research current SDK options for a developer tool"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/markdown"
      ],
      "security": [
        {
          "webclawBearer": []
        },
        {
          "webclawDeviceFlow": [
            "research"
          ]
        }
      ]
    }
  ],
  "x-webclaw": {
    "auth": "https://webclaw.io/auth.md",
    "apiCatalog": "https://webclaw.io/.well-known/api-catalog",
    "openapi": "https://webclaw.io/openapi.json",
    "mcpServerCard": "https://webclaw.io/.well-known/mcp/server-card.json",
    "note": "This public card advertises the live webclaw Cloud REST interface for agent discovery. It does not claim a JSON-RPC A2A task endpoint."
  }
}