{"openapi":"3.1.0","info":{"title":"Oneflow (BYOK) API","version":"0.1.0","description":"Oneflow (BYOK) lets an AI assistant read your own Oneflow data through the Oneflow API with a key you supply (Oneflow API token). Read-only: 12 tools (get_account, list_contracts, get_contract, list_contract_data_fields, list_contract_files, list_contract_comments, list_templates, list_workspaces, list_tags, list_folders, list_users, list_playbooks). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-oneflow.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-oneflow/docs"},"termsOfService":"https://connectorbay.com/byok-oneflow/terms"},"servers":[{"url":"https://byok-oneflow.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-oneflow/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_account":{"post":{"operationId":"get_account","summary":"Show the Oneflow account the token belongs to: name, registration number, country, date format and creation date. Use fo","description":"Show the Oneflow account the token belongs to: name, registration number, country, date format and creation date. Use for \"Which Oneflow account is my API token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_accountArguments","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_contracts":{"post":{"operationId":"list_contracts","summary":"List contracts in the account with state, name, value, lifecycle state and dates; filter by state, text, workspace or ta","description":"List contracts in the account with state, name, value, lifecycle state and dates; filter by state, text, workspace or tag. Use for \"Which Oneflow contracts are still waiting to be signed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"states":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated contract states to keep: draft, pending, overdue, signed, declined.","title":"States"},"lifecycle_states":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated lifecycle states to keep, as listed in the Oneflow contract docs.","title":"Lifecycle States"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free text matched against participant names and emails, party numbers, data field values, tag names and contract names.","title":"Query"},"workspace_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated workspace ids to restrict to.","title":"Workspace Ids"},"tag_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag ids to restrict to.","title":"Tag Ids"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated sort columns: name, state, state_updated_time, published_time. Prefix a column with - for descending.","title":"Sort"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"title":"list_contractsArguments","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_contract":{"post":{"operationId":"get_contract","summary":"Get one contract: name, value, state, publish and update times, lifecycle dates and tags. Use for \"Show the details of O","description":"Get one contract: name, value, state, publish and update times, lifecycle dates and tags. Use for \"Show the details of Oneflow contract 10015\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contract_id":{"description":"Numeric Oneflow contract id, for example 10015.","title":"Contract Id","type":"integer"}},"required":["contract_id"],"title":"get_contractArguments","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_contract_data_fields":{"post":{"operationId":"list_contract_data_fields","summary":"List the data fields of one contract (name, description, value). Use for \"What data field values does Oneflow contract 1","description":"List the data fields of one contract (name, description, value). Use for \"What data field values does Oneflow contract 10015 hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contract_id":{"description":"Numeric Oneflow contract id, for example 10015.","title":"Contract Id","type":"integer"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"required":["contract_id"],"title":"list_contract_data_fieldsArguments","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_contract_files":{"post":{"operationId":"list_contract_files","summary":"List the files attached to one contract (name, type, extension). Returns file metadata only. Use for \"Which files are at","description":"List the files attached to one contract (name, type, extension). Returns file metadata only. Use for \"Which files are attached to Oneflow contract 10015\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contract_id":{"description":"Numeric Oneflow contract id, for example 10015.","title":"Contract Id","type":"integer"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"required":["contract_id"],"title":"list_contract_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/list_contract_comments":{"post":{"operationId":"list_contract_comments","summary":"List the comments on one contract with body, privacy flag and times. Use for \"What comments were left on Oneflow contrac","description":"List the comments on one contract with body, privacy flag and times. Use for \"What comments were left on Oneflow contract 10015\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contract_id":{"description":"Numeric Oneflow contract id, for example 10015.","title":"Contract Id","type":"integer"}},"required":["contract_id"],"title":"list_contract_commentsArguments","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_templates":{"post":{"operationId":"list_templates","summary":"List contract templates with name, active flag, type, playbook and workspaces. Use for \"Which active contract templates ","description":"List contract templates with name, active flag, type, playbook and workspaces. Use for \"Which active contract templates do we have in Oneflow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"active":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":"true","description":"Whether to list active (true, the default) or inactive (false) templates.","title":"Active"},"workspace_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated workspace ids to restrict to.","title":"Workspace Ids"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated sort columns, for example name or -name.","title":"Sort"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"title":"list_templatesArguments","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_workspaces":{"post":{"operationId":"list_workspaces","summary":"List workspaces with name, company, registration number, country and type. Use for \"What Oneflow workspaces exist in the","description":"List workspaces with name, company, registration number, country and type. Use for \"What Oneflow workspaces exist in the account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only workspaces with this name.","title":"Name"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"title":"list_workspacesArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List contract tags with name, whether they are global or system tags, and dates. Use for \"Which tags can I put on Oneflo","description":"List contract tags with name, whether they are global or system tags, and dates. Use for \"Which tags can I put on Oneflow contracts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only tags with this name.","title":"Name"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"title":"list_tagsArguments","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_folders":{"post":{"operationId":"list_folders","summary":"List contract folders with name, parent folder, workspace and path of folder ids. Use for \"How are my Oneflow contract f","description":"List contract folders with name, parent folder, workspace and path of folder ids. Use for \"How are my Oneflow contract folders organised\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated workspace ids to restrict to.","title":"Workspace Ids"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"title":"list_foldersArguments","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_users":{"post":{"operationId":"list_users","summary":"List the account's users with name, email, title, admin flag and active flag. Use for \"Who are the active users in our O","description":"List the account's users with name, email, title, admin flag and active flag. Use for \"Who are the active users in our Oneflow account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"active":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":null,"description":"True for active users only, false for inactive ones.","title":"Active"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only users whose name matches this text.","title":"Name"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"title":"list_usersArguments","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_playbooks":{"post":{"operationId":"list_playbooks","summary":"List contract playbooks with name, description and enabled flag. Use for \"Which playbooks are enabled in Oneflow\".","description":"List contract playbooks with name, description and enabled flag. Use for \"Which playbooks are enabled in Oneflow\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"enabled":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":null,"description":"True for enabled playbooks only, false for disabled ones.","title":"Enabled"},"offset":{"anyOf":[{"maximum":19900,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip, 0 to 19900 (pair with limit to page).","title":"Offset"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return, 1 to 100.","title":"Limit"}},"title":"list_playbooksArguments","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}}}}