{"openapi":"3.1.0","info":{"title":"Firecrawl (BYOK) API","version":"0.1.0","description":"Firecrawl (BYOK) lets an AI assistant read your own Firecrawl data through the Firecrawl API with a key you supply (API key). Read-only: 12 tools (get_credit_usage, get_historical_credit_usage, get_token_usage, get_queue_status, get_team_activity, list_active_crawls, get_crawl_status, get_crawl_errors, get_batch_scrape_status, get_extract_status, list_monitors, list_monitor_checks). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-firecrawl.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-firecrawl/docs"},"termsOfService":"https://connectorbay.com/byok-firecrawl/terms"},"servers":[{"url":"https://byok-firecrawl.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-firecrawl/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_credit_usage":{"post":{"operationId":"get_credit_usage","summary":"Show remaining credits, plan credits and the current billing period of the team. Use for \"How many Firecrawl credits do ","description":"Show remaining credits, plan credits and the current billing period of the team. Use for \"How many Firecrawl credits do I have left\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_credit_usageArguments","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_historical_credit_usage":{"post":{"operationId":"get_historical_credit_usage","summary":"Show credits used per billing month, optionally split by API key. Use for \"How many Firecrawl credits did I use each mon","description":"Show credits used per billing month, optionally split by API key. Use for \"How many Firecrawl credits did I use each month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"by_api_key":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to break usage down by API key.","title":"By Api Key"}},"title":"get_historical_credit_usageArguments","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_token_usage":{"post":{"operationId":"get_token_usage","summary":"Show remaining Extract tokens, plan tokens and the billing period of the team. Use for \"How many Firecrawl extract token","description":"Show remaining Extract tokens, plan tokens and the billing period of the team. Use for \"How many Firecrawl extract tokens do I have left\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_token_usageArguments","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_queue_status":{"post":{"operationId":"get_queue_status","summary":"Show the team's scrape queue: jobs waiting and active, maximum concurrency and the most recent success. Use for \"Is my F","description":"Show the team's scrape queue: jobs waiting and active, maximum concurrency and the most recent success. Use for \"Is my Firecrawl queue backed up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_queue_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/get_team_activity":{"post":{"operationId":"get_team_activity","summary":"List API jobs of the last 24 hours (scrape, crawl, batch scrape, search, extract and so on) with job id, endpoint, time ","description":"List API jobs of the last 24 hours (scrape, crawl, batch scrape, search, extract and so on) with job id, endpoint, time and target; filter by endpoint. Use for \"What Firecrawl jobs did my team run in the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"endpoint":{"anyOf":[{"enum":["scrape","crawl","batch_scrape","search","extract","llmstxt","deep_research","map","agent","browser","interact"],"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs of this endpoint.","title":"Endpoint"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many jobs to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"The cursor value of the previous answer (leave empty for the first page).","title":"Cursor"}},"title":"get_team_activityArguments","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_active_crawls":{"post":{"operationId":"list_active_crawls","summary":"List crawls that are running right now for the team, with id and start URL. Use for \"Which Firecrawl crawls are running ","description":"List crawls that are running right now for the team, with id and start URL. Use for \"Which Firecrawl crawls are running right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_active_crawlsArguments","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_crawl_status":{"post":{"operationId":"get_crawl_status","summary":"Get the status of a crawl job: state, pages total and completed, credits used and timing, plus the URL, title and HTTP s","description":"Get the status of a crawl job: state, pages total and completed, credits used and timing, plus the URL, title and HTTP status of each crawled page (page contents are not returned). Use for \"Is my Firecrawl crawl finished and how many pages did it get\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_id":{"description":"Job ID returned when the job was started, or listed by get_team_activity (id), for example '550e8400-e29b-41d4-a716-446655440000'.","maxLength":80,"title":"Job Id","type":"string"}},"required":["job_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/get_crawl_errors":{"post":{"operationId":"get_crawl_errors","summary":"List the pages a crawl job failed on (URL, time, error) and the URLs blocked by robots.txt. Use for \"Which pages failed ","description":"List the pages a crawl job failed on (URL, time, error) and the URLs blocked by robots.txt. Use for \"Which pages failed in my Firecrawl crawl\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_id":{"description":"Job ID returned when the job was started, or listed by get_team_activity (id), for example '550e8400-e29b-41d4-a716-446655440000'.","maxLength":80,"title":"Job Id","type":"string"}},"required":["job_id"],"title":"get_crawl_errorsArguments","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_batch_scrape_status":{"post":{"operationId":"get_batch_scrape_status","summary":"Get the status of a batch scrape job: state, pages total and completed, credits used and timing, plus URL, title and HTT","description":"Get the status of a batch scrape job: state, pages total and completed, credits used and timing, plus URL, title and HTTP status per page (contents not returned). Use for \"Is my Firecrawl batch scrape done\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_id":{"description":"Job ID returned when the job was started, or listed by get_team_activity (id), for example '550e8400-e29b-41d4-a716-446655440000'.","maxLength":80,"title":"Job Id","type":"string"}},"required":["job_id"],"title":"get_batch_scrape_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/get_extract_status":{"post":{"operationId":"get_extract_status","summary":"Get the status of an extract job: state, tokens used and expiry (the extracted data itself is returned as stored). Use f","description":"Get the status of an extract job: state, tokens used and expiry (the extracted data itself is returned as stored). Use for \"Did my Firecrawl extract job complete\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_id":{"description":"Job ID returned when the job was started, or listed by get_team_activity (id), for example '550e8400-e29b-41d4-a716-446655440000'.","maxLength":80,"title":"Job Id","type":"string"}},"required":["job_id"],"title":"get_extract_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_monitors":{"post":{"operationId":"list_monitors","summary":"List website change monitors with status, cron schedule, next and last run, estimated monthly credits and a summary of t","description":"List website change monitors with status, cron schedule, next and last run, estimated monthly credits and a summary of the last check. Use for \"Which Firecrawl monitors do I have and did anything change\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many monitors to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many monitors to skip.","title":"Offset"}},"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/list_monitor_checks":{"post":{"operationId":"list_monitor_checks","summary":"List the runs (checks) of one monitor with status, trigger, timing and credits used. Use for \"Show the recent checks of ","description":"List the runs (checks) of one monitor with status, trigger, timing and credits used. Use for \"Show the recent checks of my Firecrawl monitor\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monitor_id":{"description":"Monitor ID as returned by list_monitors (id).","maxLength":80,"title":"Monitor Id","type":"string"},"status":{"anyOf":[{"enum":["queued","running","completed","failed","partial","skipped_overlap","skipped_no_credits"],"type":"string"},{"type":"null"}],"default":null,"description":"Only checks in this status.","title":"Status"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many checks to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many checks to skip.","title":"Offset"}},"required":["monitor_id"],"title":"list_monitor_checksArguments","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}}}}