{"openapi":"3.1.0","info":{"title":"Files.com (BYOK) API","version":"0.1.0","description":"Files.com (BYOK) lets an AI assistant read your own Files.com data through the Files.com API with a key you supply (Files.com API key (site-wide or administrator key)). Read-only: 9 tools (get_site, get_current_usage, list_usage_snapshots, list_usage_daily_snapshots, list_automations, list_automation_runs, list_syncs, list_sync_runs, list_groups). The BYOK key travels with each request, is used...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-filescom.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-filescom/docs"},"termsOfService":"https://connectorbay.com/byok-filescom/terms"},"servers":[{"url":"https://byok-filescom.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-filescom/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_site":{"post":{"operationId":"get_site","summary":"Show the site's name, subdomain, currency, trial status, session timeout and which of FTP, SFTP and WebDAV are enabled. ","description":"Show the site's name, subdomain, currency, trial status, session timeout and which of FTP, SFTP and WebDAV are enabled. Needs an administrator or site-wide key. Use for \"What are the basic settings of my Files.com site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"get_siteArguments","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_current_usage":{"post":{"operationId":"get_current_usage","summary":"Get the most recent billing usage snapshot of the site: storage, high-water user count and transfer. Needs an administra","description":"Get the most recent billing usage snapshot of the site: storage, high-water user count and transfer. Needs an administrator or site-wide key. Use for \"How much storage and how many users is my Files.com site using\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"get_current_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/list_usage_snapshots":{"post":{"operationId":"list_usage_snapshots","summary":"List the site's billing usage snapshots (one per billing period) with storage and user counts. Needs an administrator or","description":"List the site's billing usage snapshots (one per billing period) with storage and user counts. Needs an administrator or site-wide key. Use for \"How has Files.com storage grown over past billing periods\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"per_page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Records per page (1 to 10000, 1000 or fewer recommended). Further pages need a cursor header that this connector does not expose, so keep the page large enough.","title":"Per Page"}},"required":["subdomain"],"title":"list_usage_snapshotsArguments","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_usage_daily_snapshots":{"post":{"operationId":"list_usage_daily_snapshots","summary":"List daily site usage reports: read and write API calls, billable users and storage in GB. Needs an administrator or sit","description":"List daily site usage reports: read and write API calls, billable users and storage in GB. Needs an administrator or site-wide key. Use for \"How many API calls did my Files.com site make each day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"per_page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Records per page (1 to 10000, 1000 or fewer recommended). Further pages need a cursor header that this connector does not expose, so keep the page large enough.","title":"Per Page"}},"required":["subdomain"],"title":"list_usage_daily_snapshotsArguments","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_automations":{"post":{"operationId":"list_automations","summary":"List automations (scheduled or triggered file workflows) with name, type, trigger, schedule, source and whether they are","description":"List automations (scheduled or triggered file workflows) with name, type, trigger, schedule, source and whether they are disabled. Use for \"Which automations are set up on my Files.com site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"per_page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Records per page (1 to 10000, 1000 or fewer recommended). Further pages need a cursor header that this connector does not expose, so keep the page large enough.","title":"Per Page"}},"required":["subdomain"],"title":"list_automationsArguments","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_automation_runs":{"post":{"operationId":"list_automation_runs","summary":"List the executions of one automation with status, runtime, successful and failed operation counts and times. Use for \"D","description":"List the executions of one automation with status, runtime, successful and failed operation counts and times. Use for \"Did my Files.com automation 1 run successfully recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"automation_id":{"description":"Id of the automation (a number from list_automations).","title":"Automation Id","type":"integer"},"per_page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Records per page (1 to 10000, 1000 or fewer recommended). Further pages need a cursor header that this connector does not expose, so keep the page large enough.","title":"Per Page"}},"required":["subdomain","automation_id"],"title":"list_automation_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_syncs":{"post":{"operationId":"list_syncs","summary":"List syncs (file synchronisation jobs) with source and destination paths, direction, interval and disabled flag. Use for","description":"List syncs (file synchronisation jobs) with source and destination paths, direction, interval and disabled flag. Use for \"What file syncs are configured in Files.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"per_page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Records per page (1 to 10000, 1000 or fewer recommended). Further pages need a cursor header that this connector does not expose, so keep the page large enough.","title":"Per Page"}},"required":["subdomain"],"title":"list_syncsArguments","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_sync_runs":{"post":{"operationId":"list_sync_runs","summary":"List recent sync executions with status, bytes synced, compared and errored file counts and times. Use for \"Have my File","description":"List recent sync executions with status, bytes synced, compared and errored file counts and times. Use for \"Have my Files.com syncs had errors lately\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"per_page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Records per page (1 to 10000, 1000 or fewer recommended). Further pages need a cursor header that this connector does not expose, so keep the page large enough.","title":"Per Page"}},"required":["subdomain"],"title":"list_sync_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_groups":{"post":{"operationId":"list_groups","summary":"List user groups with name, notes and which access methods (FTP, SFTP, WebDAV, REST API) they allow. Needs an administra","description":"List user groups with name, notes and which access methods (FTP, SFTP, WebDAV, REST API) they allow. Needs an administrator key. Use for \"What user groups exist on my Files.com site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Files.com site subdomain, the first part of <subdomain>.files.com (use 'app' only if your key works on app.files.com).","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"per_page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Records per page (1 to 10000, 1000 or fewer recommended). Further pages need a cursor header that this connector does not expose, so keep the page large enough.","title":"Per Page"}},"required":["subdomain"],"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}}}}