{"openapi":"3.1.0","info":{"title":"Extend (BYOK) API","version":"0.1.0","description":"Extend (BYOK) lets an AI assistant read your own Extend data through the Extend API with a key you supply (API key (a workspace-scoped key; accounts on the US2 and EU1 instances use other hosts)). Read-only: 10 tools (list_files, get_file, list_extractors, list_extract_runs, list_classifiers, list_splitters, list_workflows, list_workflow_runs, list_parse_runs, list_evaluation_sets). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-extend.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-extend/docs"},"termsOfService":"https://connectorbay.com/byok-extend/terms"},"servers":[{"url":"https://byok-extend.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-extend/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/list_files":{"post":{"operationId":"list_files","summary":"List files uploaded to Extend with name, type, page count and dates. Cursor paginated. Use for \"Which documents have I u","description":"List files uploaded to Extend with name, type, page count and dates. Cursor paginated. Use for \"Which documents have I uploaded to Extend\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name_contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only files whose name contains this text.","title":"Name Contains"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Dir"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_filesArguments","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_file":{"post":{"operationId":"get_file","summary":"Get one Extend file by ID with name, type, parent file, page count and dates (the file content and download link are not","description":"Get one Extend file by ID with name, type, parent file, page count and dates (the file content and download link are not returned). Use for \"What is this Extend file\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"File ID starting with 'file_', as returned by list_files.","maxLength":100,"title":"Id","type":"string"}},"required":["id"],"title":"get_fileArguments","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_extractors":{"post":{"operationId":"list_extractors","summary":"List the extractors (schemas that pull structured fields out of documents) with name and dates. Use for \"Which Extend ex","description":"List the extractors (schemas that pull structured fields out of documents) with name and dates. Use for \"Which Extend extractors do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Sort field: updatedAt or createdAt.","title":"Sort By"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Dir"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_extractorsArguments","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_extract_runs":{"post":{"operationId":"list_extract_runs","summary":"List extraction runs with status, failure reason, review flags, extractor, file and dashboard link. Filter by status, ex","description":"List extraction runs with status, failure reason, review flags, extractor, file and dashboard link. Filter by status, extractor or file name. Use for \"Which Extend extraction runs failed recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["PENDING","PROCESSING","PROCESSED","FAILED","CANCELLED"],"type":"string"},{"type":"null"}],"default":null,"description":"Run status: PENDING, PROCESSING, PROCESSED, FAILED or CANCELLED.","title":"Status"},"extractor_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs of this extractor ID (starts with 'ex_').","title":"Extractor Id"},"file_name_contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs whose file name contains this text.","title":"File Name Contains"},"sort_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Sort field: updatedAt or createdAt.","title":"Sort By"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Dir"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_extract_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/list_classifiers":{"post":{"operationId":"list_classifiers","summary":"List the classifiers (document type detectors) with name and dates. Use for \"Which Extend classifiers have I set up\".","description":"List the classifiers (document type detectors) with name and dates. Use for \"Which Extend classifiers have I set up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Sort field: updatedAt or createdAt.","title":"Sort By"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Dir"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_classifiersArguments","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_splitters":{"post":{"operationId":"list_splitters","summary":"List the splitters (tools that cut a document into sub-documents) with name and dates. Use for \"Which Extend splitters d","description":"List the splitters (tools that cut a document into sub-documents) with name and dates. Use for \"Which Extend splitters do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Sort field: updatedAt or createdAt.","title":"Sort By"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Dir"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_splittersArguments","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_workflows":{"post":{"operationId":"list_workflows","summary":"List the workflows with name, creator and dates. Use for \"Which Extend workflows exist\".","description":"List the workflows with name, creator and dates. Use for \"Which Extend workflows exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Sort field: updatedAt or createdAt.","title":"Sort By"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Dir"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_workflowsArguments","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_workflow_runs":{"post":{"operationId":"list_workflow_runs","summary":"List workflow runs with status, workflow, review and timing information, rejection note and input files. Filter by statu","description":"List workflow runs with status, workflow, review and timing information, rejection note and input files. Filter by status, workflow or file name. Use for \"Which Extend workflow runs need review\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["PENDING","PROCESSING","NEEDS_REVIEW","REJECTED","PROCESSED","FAILED","CANCELLED","CANCELLING"],"type":"string"},{"type":"null"}],"default":null,"description":"Run status: PENDING, PROCESSING, NEEDS_REVIEW, REJECTED, PROCESSED, FAILED, CANCELLED or CANCELLING.","title":"Status"},"workflow_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs of this workflow ID.","title":"Workflow Id"},"file_name_contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs whose file name contains this text.","title":"File Name Contains"},"sort_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Sort field: updatedAt or createdAt.","title":"Sort By"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Dir"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_workflow_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/list_parse_runs":{"post":{"operationId":"list_parse_runs","summary":"List document parsing runs with status, failure reason, file, page count, processing time and dates. Use for \"Did my Ext","description":"List document parsing runs with status, failure reason, file, page count, processing time and dates. Use for \"Did my Extend parse runs complete\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["PENDING","PROCESSING","PROCESSED","FAILED"],"type":"string"},{"type":"null"}],"default":null,"description":"Run status: PENDING, PROCESSING, PROCESSED or FAILED.","title":"Status"},"file_name_contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs whose file name contains this text.","title":"File Name Contains"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_parse_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/list_evaluation_sets":{"post":{"operationId":"list_evaluation_sets","summary":"List evaluation sets (ground-truth documents used to measure an extractor, classifier or splitter) with name, descriptio","description":"List evaluation sets (ground-truth documents used to measure an extractor, classifier or splitter) with name, description and the entity they test. Use for \"Which Extend evaluation sets do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"entity_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only evaluation sets of this extractor, classifier or splitter ID.","title":"Entity Id"},"sort_by":{"anyOf":[{"enum":["updatedAt","createdAt"],"type":"string"},{"type":"null"}],"default":"updatedAt","description":"Sort field: updatedAt or createdAt.","title":"Sort By"},"sort_dir":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Dir"},"next_page_token":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the nextPageToken value of the previous answer. Keep the other arguments unchanged.","title":"Next Page Token"},"max_page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10; the provider documents no maximum).","title":"Max Page Size"}},"title":"list_evaluation_setsArguments","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}}}}