{"openapi":"3.1.0","info":{"title":"Freshservice On-call and CAB (BYOK) API","version":"0.1.0","description":"Freshservice On-call and CAB (BYOK) lets an AI assistant read your own Freshservice On-call and CAB data through the Freshservice On-call and CAB API with a key you supply (Freshservice API key). Read-only: 5 tools (list_oncall_schedules, list_escalation_policies, list_cabs, list_pir_templates, list_custom_objects). The BYOK key travels with each request, is used for that one call only and is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-freshservice-oncall-governance.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-freshservice-oncall-governance/docs"},"termsOfService":"https://connectorbay.com/byok-freshservice-oncall-governance/terms"},"servers":[{"url":"https://byok-freshservice-oncall-governance.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-freshservice-oncall-governance/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_oncall_schedules":{"post":{"operationId":"list_oncall_schedules","summary":"List the on-call schedules of a workspace with name, description and the agent group each belongs to. Needs the View On-","description":"List the on-call schedules of a workspace with name, description and the agent group each belongs to. Needs the View On-call schedules privilege. Use for \"Which on-call schedules 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":{"description":"Workspace id; the primary workspace is usually 2.","title":"Workspace Id","type":"integer"},"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","workspace_id"],"title":"list_oncall_schedulesArguments","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_escalation_policies":{"post":{"operationId":"list_escalation_policies","summary":"List the escalation policies of one on-call schedule with name, status, repeat count, rank and shift ids. Notified peopl","description":"List the escalation policies of one on-call schedule with name, status, repeat count, rank and shift ids. Notified people are not returned. Use for \"How does the Freshservice database on-call schedule escalate\".","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":{"description":"Workspace id; the primary workspace is usually 2.","title":"Workspace Id","type":"integer"},"schedule_id":{"description":"On-call schedule id from list_oncall_schedules.","title":"Schedule Id","type":"integer"}},"required":["domain","workspace_id","schedule_id"],"title":"list_escalation_policiesArguments","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_cabs":{"post":{"operationId":"list_cabs","summary":"List change advisory boards (CABs) with name and description. Member lists are not returned. Use for \"Which change advis","description":"List change advisory boards (CABs) with name and description. Member lists are not returned. Use for \"Which change advisory boards does Freshservice 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"},"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_cabsArguments","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_pir_templates":{"post":{"operationId":"list_pir_templates","summary":"List post-incident report templates with title, state, whether primary and workspace. Use for \"Which post-incident repor","description":"List post-incident report templates with title, state, whether primary and workspace. Use for \"Which post-incident report templates 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"}},"required":["domain"],"title":"list_pir_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_custom_objects":{"post":{"operationId":"list_custom_objects","summary":"List custom object definitions (extra data tables) with title, description, last update and workspace. Records and the l","description":"List custom object definitions (extra data tables) with title, description, last update and workspace. Records and the last editor are not returned. Use for \"Which custom objects are defined 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_custom_objectsArguments","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}}}}