{"openapi":"3.1.0","info":{"title":"Egnyte (BYOK) API","version":"0.1.0","description":"Egnyte (BYOK) lets an AI assistant read your own Egnyte data through the Egnyte API with a key you supply (Egnyte access token (valid 30 days)). Read-only: 11 tools (whoami, list_shared_root, get_folder_by_id, get_folder_stats, get_file_by_id, search_files, list_groups, list_metadata_namespaces, get_metadata_namespace, get_event_cursor, list_events). 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-egnyte.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-egnyte/docs"},"termsOfService":"https://connectorbay.com/byok-egnyte/terms"},"servers":[{"url":"https://byok-egnyte.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-egnyte/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/whoami":{"post":{"operationId":"whoami","summary":"Show which Egnyte app, user and domain the token belongs to and the scopes it was granted. Good first call to check the ","description":"Show which Egnyte app, user and domain the token belongs to and the scopes it was granted. Good first call to check the token works. Use for \"Which Egnyte account and scopes does my token have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"}},"required":["domain"],"title":"whoamiArguments","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_shared_root":{"post":{"operationId":"list_shared_root","summary":"List the top level of the company-wide Shared folder: its sub folders and files with names, paths, IDs, sizes and modifi","description":"List the top level of the company-wide Shared folder: its sub folders and files with names, paths, IDs, sizes and modification times. Use the folder_id values with get_folder_by_id to go deeper. Use for \"What is in our Egnyte Shared folder\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"list_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include the files and sub folders inside the folder; false returns only the folder itself.","title":"List Content"},"count":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of items to return (pagination).","title":"Count"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based index of the first item to return.","title":"Offset"},"sort_by":{"anyOf":[{"enum":["name","last_modified","uploaded_by"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: name, last_modified or uploaded_by.","title":"Sort By"},"sort_direction":{"anyOf":[{"enum":["ascending","descending"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: ascending or descending.","title":"Sort Direction"}},"required":["domain"],"title":"list_shared_rootArguments","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_folder_by_id":{"post":{"operationId":"get_folder_by_id","summary":"List one folder by its folder ID: sub folders and files with names, paths, IDs, sizes and times, plus link and move/dele","description":"List one folder by its folder ID: sub folders and files with names, paths, IDs, sizes and times, plus link and move/delete settings. Use for \"Show the contents of Egnyte folder d7d56ebc-ce31-4ba8-a6b3-292ffb43f215\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"folder_id":{"description":"Unique ID of the folder (the folder_id value from a folder listing).","maxLength":200,"title":"Folder Id","type":"string"},"list_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include the files and sub folders inside the folder; false returns only the folder itself.","title":"List Content"},"count":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of items to return (pagination).","title":"Count"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based index of the first item to return.","title":"Offset"},"sort_by":{"anyOf":[{"enum":["name","last_modified","uploaded_by"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field: name, last_modified or uploaded_by.","title":"Sort By"},"sort_direction":{"anyOf":[{"enum":["ascending","descending"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: ascending or descending.","title":"Sort Direction"}},"required":["domain","folder_id"],"title":"get_folder_by_idArguments","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_folder_stats":{"post":{"operationId":"get_folder_stats","summary":"Get size and counts for a folder including everything below it: file count, folder count, version count and total bytes.","description":"Get size and counts for a folder including everything below it: file count, folder count, version count and total bytes. Use for \"How big is Egnyte folder d7d56ebc-ce31-4ba8-a6b3-292ffb43f215 and how many files does it hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"folder_id":{"description":"Unique ID of the folder (the folder_id value from a folder listing).","maxLength":200,"title":"Folder Id","type":"string"}},"required":["domain","folder_id"],"title":"get_folder_statsArguments","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_by_id":{"post":{"operationId":"get_file_by_id","summary":"Get metadata of one file by its group ID (file ID): name, path, size, lock state, version count, uploader and last modif","description":"Get metadata of one file by its group ID (file ID): name, path, size, lock state, version count, uploader and last modified time. Does not download content. Use for \"Show the details of Egnyte file 765f70fd-122f-47ed-b50d-b5e80662596b\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"group_id":{"description":"Unique ID of the file across versions (the group_id value from a folder listing).","maxLength":200,"title":"Group Id","type":"string"}},"required":["domain","group_id"],"title":"get_file_by_idArguments","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/search_files":{"post":{"operationId":"search_files","summary":"Search files and folders by name, comments or content. Returns names, paths, sizes, times and uploader but no text snipp","description":"Search files and folders by name, comments or content. Returns names, paths, sizes, times and uploader but no text snippets. Query must be 3 to 100 characters; at most 20 results per page. Use for \"Find Egnyte files about the 2026 budget\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"query":{"description":"Search text, 3 to 100 characters.","maxLength":100,"title":"Query","type":"string"},"count":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 20).","title":"Count"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based index of the first result.","title":"Offset"},"type":{"anyOf":[{"enum":["FILE","FOLDER"],"type":"string"},{"type":"null"}],"default":null,"description":"Only files or only folders.","title":"Type"},"snippet_requested":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"False (default here) to leave out text snippets; true includes content excerpts.","title":"Snippet Requested"}},"required":["domain","query"],"title":"search_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_groups":{"post":{"operationId":"list_groups","summary":"List the custom user groups in the domain (names and IDs only, no members), SCIM style with 1-based paging. Use for \"Whi","description":"List the custom user groups in the domain (names and IDs only, no members), SCIM style with 1-based paging. Use for \"Which user groups exist in Egnyte\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"start_index":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"1-based index of the first group to return.","title":"Start Index"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Groups per page (1 to 100).","title":"Count"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Optional SCIM filter on group name, for example 'displayName co \"sales\"'.","title":"Filter"}},"required":["domain"],"title":"list_groupsArguments","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_metadata_namespaces":{"post":{"operationId":"list_metadata_namespaces","summary":"List the custom metadata namespaces (schemas) defined in the domain with their keys, types and allowed values. Use for \"","description":"List the custom metadata namespaces (schemas) defined in the domain with their keys, types and allowed values. Use for \"What custom metadata fields are defined in Egnyte\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"include_folder_associations":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include which folders each namespace is attached to.","title":"Include Folder Associations"}},"required":["domain"],"title":"list_metadata_namespacesArguments","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_metadata_namespace":{"post":{"operationId":"get_metadata_namespace","summary":"Get one custom metadata namespace with its keys, types and allowed values. Use for \"Show the keys of the Egnyte metadata","description":"Get one custom metadata namespace with its keys, types and allowed values. Use for \"Show the keys of the Egnyte metadata namespace contracts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"namespace_name":{"description":"Namespace name as returned by list_metadata_namespaces.","maxLength":200,"title":"Namespace Name","type":"string"}},"required":["domain","namespace_name"],"title":"get_metadata_namespaceArguments","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_event_cursor":{"post":{"operationId":"get_event_cursor","summary":"Get the current position of the domain's activity event stream: latest and oldest event IDs still available (events are ","description":"Get the current position of the domain's activity event stream: latest and oldest event IDs still available (events are kept up to 30 days). Use for \"What is the latest Egnyte event ID\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"}},"required":["domain"],"title":"get_event_cursorArguments","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_events":{"post":{"operationId":"list_events","summary":"List file and note activity events after a cursor ID: action (create, delete, move, copy, restore), paths and time. Poll","description":"List file and note activity events after a cursor ID: action (create, delete, move, copy, restore), paths and time. Poll no more than every 5 minutes. Use for \"What changed in our Egnyte files since event 16341\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Egnyte domain: the part before .egnyte.com, for example 'acme' for acme.egnyte.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"id":{"description":"Cursor event ID; events after it are returned (use get_event_cursor).","minimum":0,"title":"Id","type":"integer"},"folder":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Only events under this folder path.","title":"Folder"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Events per page (1 to 100).","title":"Count"}},"required":["domain","id"],"title":"list_eventsArguments","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}}}}