{"openapi":"3.1.0","info":{"title":"Webclaw (BYOK) API","version":"0.1.0","description":"Webclaw (BYOK) lets an AI assistant read your own Webclaw data through the Webclaw API with a key you supply (Webclaw API key (starts with wc_)). Read-only: 8 tools (get_crawl_status, list_crawl_history, list_cached_results, get_cached_result, get_cached_result_for_run, list_webhooks, list_x_monitors, get_x_monitor). The BYOK key travels with each request, is used for that one call only and is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-webclaw.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-webclaw/docs"},"termsOfService":"https://connectorbay.com/byok-webclaw/terms"},"servers":[{"url":"https://byok-webclaw.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-webclaw/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_crawl_status":{"post":{"operationId":"get_crawl_status","summary":"Get the status and results summary of one crawl job by its id. The answer shape is passed through as the provider sends ","description":"Get the status and results summary of one crawl job by its id. The answer shape is passed through as the provider sends it, trimmed to a size limit. Use for \"Is crawl 9c1f... finished\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"crawl_id":{"description":"Crawl job id, returned when the crawl was started or listed by list_crawl_history.","maxLength":64,"title":"Crawl Id","type":"string"}},"required":["crawl_id"],"title":"get_crawl_statusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_crawl_history":{"post":{"operationId":"list_crawl_history","summary":"List the crawl jobs of the account, ordered by creation date. The answer shape is passed through as the provider sends i","description":"List the crawl jobs of the account, ordered by creation date. The answer shape is passed through as the provider sends it, trimmed to a size limit. Use for \"Which website crawls have I run recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_crawl_historyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_cached_results":{"post":{"operationId":"list_cached_results","summary":"List cached outputs of earlier extraction calls in the workspace, optionally for one endpoint, in pages. The answer shap","description":"List cached outputs of earlier extraction calls in the workspace, optionally for one endpoint, in pages. The answer shape is passed through as the provider sends it, trimmed to a size limit. Use for \"What have I scraped recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"endpoint":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only results of this endpoint, for example scrape, crawl or extract.","title":"Endpoint"},"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 50; the provider does not document a maximum, so this tool caps it).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_cached_resultsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_cached_result":{"post":{"operationId":"get_cached_result","summary":"Get one cached extraction output by its result id. Use for \"Show me cached result r1\".","description":"Get one cached extraction output by its result id. Use for \"Show me cached result r1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"result_id":{"description":"Result id from list_cached_results.","maxLength":64,"title":"Result Id","type":"string"}},"required":["result_id"],"title":"get_cached_resultArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_cached_result_for_run":{"post":{"operationId":"get_cached_result_for_run","summary":"Get the cached output of one dashboard run by its usage log id. Use for \"What was the output of run 87ac93f1\".","description":"Get the cached output of one dashboard run by its usage log id. Use for \"What was the output of run 87ac93f1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"usage_log_id":{"description":"Usage log id of the run, as shown in the dashboard.","maxLength":64,"title":"Usage Log Id","type":"string"}},"required":["usage_log_id"],"title":"get_cached_result_for_runArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_webhooks":{"post":{"operationId":"list_webhooks","summary":"List the webhook endpoints registered for crawl and batch completion notifications. The answer shape is passed through a","description":"List the webhook endpoints registered for crawl and batch completion notifications. The answer shape is passed through as the provider sends it, trimmed to a size limit. Use for \"Which Webclaw webhooks do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_webhooksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_x_monitors":{"post":{"operationId":"list_x_monitors","summary":"List X (Twitter) monitors for profiles, searches, lists and replies. Paid plans only; other accounts get a 403. The answ","description":"List X (Twitter) monitors for profiles, searches, lists and replies. Paid plans only; other accounts get a 403. The answer shape is passed through as the provider sends it, trimmed to a size limit. Use for \"Which X monitors are set up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_x_monitorsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_x_monitor":{"post":{"operationId":"get_x_monitor","summary":"Get one X monitor by its id. Paid plans only. Use for \"Show X monitor m1\".","description":"Get one X monitor by its id. Paid plans only. Use for \"Show X monitor m1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Monitor id from list_x_monitors.","maxLength":64,"title":"Monitor Id","type":"string"}},"required":["monitor_id"],"title":"get_x_monitorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}