{"openapi":"3.1.0","info":{"title":"Browse AI (BYOK) API","version":"0.1.0","description":"Browse AI (BYOK) lets an AI assistant read your own Browse AI data through the Browse AI API with a key you supply (API key). Read-only: 10 tools (get_status, list_teams, list_robots, get_robot, list_robot_tasks, get_task, list_monitors, get_monitor, list_bulk_runs, get_bulk_run). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-browse-ai.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-browse-ai/docs"},"termsOfService":"https://connectorbay.com/byok-browse-ai/terms"},"servers":[{"url":"https://byok-browse-ai.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-browse-ai/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_status":{"post":{"operationId":"get_status","summary":"Check whether the Browse AI task queue is healthy or under maintenance. Use for \"Is Browse AI up and running its task qu","description":"Check whether the Browse AI task queue is healthy or under maintenance. Use for \"Is Browse AI up and running its task queue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_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_teams":{"post":{"operationId":"list_teams","summary":"List the teams of the Browse AI account with ID, name, API access flag and creation time. Use for \"Which Browse AI teams","description":"List the teams of the Browse AI account with ID, name, API access flag and creation time. Use for \"Which Browse AI teams am I in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_teamsArguments","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_robots":{"post":{"operationId":"list_robots","summary":"List the Browse AI robots (trained scrapers and monitors) of the account with ID, name, creation time and input paramete","description":"List the Browse AI robots (trained scrapers and monitors) of the account with ID, name, creation time and input parameters. Use for \"Which Browse AI robots do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_robotsArguments","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_robot":{"post":{"operationId":"get_robot","summary":"Get one Browse AI robot by ID with its name, creation time and the input parameters it accepts. Use for \"What inputs doe","description":"Get one Browse AI robot by ID with its name, creation time and the input parameters it accepts. Use for \"What inputs does my Browse AI robot take\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"robot_id":{"description":"Browse AI robot ID, as returned by list_robots.","maxLength":64,"title":"Robot Id","type":"string"}},"required":["robot_id"],"title":"get_robotArguments","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_robot_tasks":{"post":{"operationId":"list_robot_tasks","summary":"List the runs (tasks) of a robot, newest first, with status, start and finish times and any error. At most 10 per page. ","description":"List the runs (tasks) of a robot, newest first, with status, start and finish times and any error. At most 10 per page. Use for \"Did my Browse AI robot's latest runs succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"robot_id":{"description":"Browse AI robot ID, as returned by list_robots.","maxLength":64,"title":"Robot Id","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":10,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Tasks per page (1 to 10, default 10).","title":"Page Size"},"status":{"anyOf":[{"enum":["failed","successful","in-progress"],"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks with this status: failed, successful or in-progress.","title":"Status"},"robot_bulk_run_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks that belong to this bulk run ID.","title":"Robot Bulk Run Id"},"from_date":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only tasks created after this time, in epoch milliseconds.","title":"From Date"},"to_date":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only tasks created before this time, in epoch milliseconds.","title":"To Date"}},"required":["robot_id"],"title":"list_robot_tasksArguments","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_task":{"post":{"operationId":"get_task","summary":"Get one robot run (task) by ID with status, timing, error text and the captured texts, lists and screenshot links. Use f","description":"Get one robot run (task) by ID with status, timing, error text and the captured texts, lists and screenshot links. Use for \"What data did this Browse AI run capture\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"robot_id":{"description":"Browse AI robot ID, as returned by list_robots.","maxLength":64,"title":"Robot Id","type":"string"},"task_id":{"description":"Task ID, as returned by list_robot_tasks.","maxLength":64,"title":"Task Id","type":"string"}},"required":["robot_id","task_id"],"title":"get_taskArguments","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_monitors":{"post":{"operationId":"list_monitors","summary":"List the monitors (scheduled runs with change alerts) of a robot with status, schedule and notification settings. Use fo","description":"List the monitors (scheduled runs with change alerts) of a robot with status, schedule and notification settings. Use for \"Which monitors are set up on my Browse AI robot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"robot_id":{"description":"Browse AI robot ID, as returned by list_robots.","maxLength":64,"title":"Robot Id","type":"string"}},"required":["robot_id"],"title":"list_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_monitor":{"post":{"operationId":"get_monitor","summary":"Get one monitor of a robot by ID: status, pause reason, schedule, change-notification settings and dates. Use for \"Is th","description":"Get one monitor of a robot by ID: status, pause reason, schedule, change-notification settings and dates. Use for \"Is this Browse AI monitor active or paused\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"robot_id":{"description":"Browse AI robot ID, as returned by list_robots.","maxLength":64,"title":"Robot Id","type":"string"},"monitor_id":{"description":"Monitor ID, as returned by list_monitors.","maxLength":64,"title":"Monitor Id","type":"string"}},"required":["robot_id","monitor_id"],"title":"get_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}},"/v1/tools/list_bulk_runs":{"post":{"operationId":"list_bulk_runs","summary":"List the bulk runs of a robot with title, status, number of tasks and how many succeeded or failed. Use for \"How did my ","description":"List the bulk runs of a robot with title, status, number of tasks and how many succeeded or failed. Use for \"How did my Browse AI bulk runs go\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"robot_id":{"description":"Browse AI robot ID, as returned by list_robots.","maxLength":64,"title":"Robot Id","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["robot_id"],"title":"list_bulk_runsArguments","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_bulk_run":{"post":{"operationId":"get_bulk_run","summary":"Get one bulk run of a robot by ID with its counters and the list of its tasks. Use for \"Show the tasks of this Browse AI","description":"Get one bulk run of a robot by ID with its counters and the list of its tasks. Use for \"Show the tasks of this Browse AI bulk run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"robot_id":{"description":"Browse AI robot ID, as returned by list_robots.","maxLength":64,"title":"Robot Id","type":"string"},"bulk_run_id":{"description":"Bulk run ID, as returned by list_bulk_runs.","maxLength":64,"title":"Bulk Run Id","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["robot_id","bulk_run_id"],"title":"get_bulk_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}}}}