{"openapi":"3.1.0","info":{"title":"Freshservice Releases (BYOK) API","version":"0.1.0","description":"Freshservice Releases (BYOK) lets an AI assistant read your own Freshservice Releases data through the Freshservice Releases API with a key you supply (Freshservice API key). Read-only: 5 tools (list_releases, get_release, list_release_form_fields, list_requester_groups, list_requester_fields). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-freshservice-releases.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-freshservice-releases/docs"},"termsOfService":"https://connectorbay.com/byok-freshservice-releases/terms"},"servers":[{"url":"https://byok-freshservice-releases.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-freshservice-releases/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_releases":{"post":{"operationId":"list_releases","summary":"List releases with subject, priority and status codes, release type, planned and actual dates, category and linked chang","description":"List releases with subject, priority and status codes, release type, planned and actual dates, category and linked change ids. Agent, group and asset links are not returned. Filter by workspace. Use for \"Which Freshservice releases are planned\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Freshservice subdomain (for example 'acme' for acme.freshservice.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"workspace_id":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Workspace id; only for accounts with workspaces (1 returns global records). Default is the primary workspace.","title":"Workspace Id"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 100; the API default is 30).","title":"Per Page"},"page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["domain"],"title":"list_releasesArguments","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_release":{"post":{"operationId":"get_release","summary":"Get one release by id with subject, status, priority, dates, category and linked change ids. Use for \"Show Freshservice ","description":"Get one release by id with subject, status, priority, dates, category and linked change ids. Use for \"Show Freshservice release 12\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Freshservice subdomain (for example 'acme' for acme.freshservice.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"release_id":{"description":"Release id from list_releases.","title":"Release Id","type":"integer"}},"required":["domain","release_id"],"title":"get_releaseArguments","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_release_form_fields":{"post":{"operationId":"list_release_form_fields","summary":"List the fields of the release form (default and custom) with label, type, required flags and choices. Use for \"Which fi","description":"List the fields of the release form (default and custom) with label, type, required flags and choices. Use for \"Which fields are on the Freshservice release form\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Freshservice subdomain (for example 'acme' for acme.freshservice.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"workspace_id":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Workspace id; only for accounts with workspaces (1 returns global records). Default is the primary workspace.","title":"Workspace Id"}},"required":["domain"],"title":"list_release_form_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_requester_groups":{"post":{"operationId":"list_requester_groups","summary":"List requester (contact) groups with name, description and type (manual or rule_based). Members are not returned. Use fo","description":"List requester (contact) groups with name, description and type (manual or rule_based). Members are not returned. Use for \"Which requester groups exist in Freshservice\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Freshservice subdomain (for example 'acme' for acme.freshservice.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"},"workspace_id":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Workspace id; only for accounts with workspaces (1 returns global records). Default is the primary workspace.","title":"Workspace Id"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 100; the API default is 30).","title":"Per Page"},"page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["domain"],"title":"list_requester_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_requester_fields":{"post":{"operationId":"list_requester_fields","summary":"List the requester (contact) fields, default and custom, with label, type, position and required flags. Only definitions","description":"List the requester (contact) fields, default and custom, with label, type, position and required flags. Only definitions, no requester data. Use for \"Which fields does a Freshservice requester profile have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Your Freshservice subdomain (for example 'acme' for acme.freshservice.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Domain","type":"string"}},"required":["domain"],"title":"list_requester_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}}}}