{"openapi":"3.1.0","info":{"title":"Freshservice Projects (BYOK) API","version":"0.1.0","description":"Freshservice Projects (BYOK) lets an AI assistant read your own Freshservice Projects data through the Freshservice Projects API with a key you supply (Freshservice API key). Read-only: 8 tools (list_projects, list_project_templates, list_project_fields, list_project_task_statuses, list_project_task_priorities, list_project_task_types, list_project_sprints, list_project_versions). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-freshservice-projects.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-freshservice-projects/docs"},"termsOfService":"https://connectorbay.com/byok-freshservice-projects/terms"},"servers":[{"url":"https://byok-freshservice-projects.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-freshservice-projects/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_projects":{"post":{"operationId":"list_projects","summary":"List projects you can access with name, key, status and priority ids, type, start and end dates, archived flag and visib","description":"List projects you can access with name, key, status and priority ids, type, start and end dates, archived flag and visibility. Manager ids are not returned. Use for \"Which projects are in progress 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"},"filter":{"anyOf":[{"enum":["completed","incomplete","archived","open","in_progress"],"type":"string"},{"type":"null"}],"default":null,"description":"Which projects: completed, incomplete (open and in progress), archived, open or in_progress. Default open and completed.","title":"Filter"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Projects per page (1 to 100, default 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_projectsArguments","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_project_templates":{"post":{"operationId":"list_project_templates","summary":"List custom project templates with name, description, type (0 software, 1 business) and visibility. Use for \"Which proje","description":"List custom project templates with name, description, type (0 software, 1 business) and visibility. Use for \"Which project templates 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"}},"required":["domain"],"title":"list_project_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_project_fields":{"post":{"operationId":"list_project_fields","summary":"List the fields of the project form (default and custom) with label, type, mandatory flag and choices. Use for \"Which fi","description":"List the fields of the project form (default and custom) with label, type, mandatory flag and choices. Use for \"Which fields do Freshservice projects 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_project_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_project_task_statuses":{"post":{"operationId":"list_project_task_statuses","summary":"List a project's task statuses with name, description and category (1 yet to start, 2 work in progress, 3 completed). Us","description":"List a project's task statuses with name, description and category (1 yet to start, 2 work in progress, 3 completed). Use for \"Which task statuses does Freshservice project 1 use\".","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"},"project_id":{"description":"Project id from list_projects.","title":"Project Id","type":"integer"}},"required":["domain","project_id"],"title":"list_project_task_statusesArguments","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_project_task_priorities":{"post":{"operationId":"list_project_task_priorities","summary":"List a project's task priority levels with name and description. Use for \"Which task priorities does Freshservice projec","description":"List a project's task priority levels with name and description. Use for \"Which task priorities does Freshservice project 1 use\".","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"},"project_id":{"description":"Project id from list_projects.","title":"Project Id","type":"integer"}},"required":["domain","project_id"],"title":"list_project_task_prioritiesArguments","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_project_task_types":{"post":{"operationId":"list_project_task_types","summary":"List a project's task types (for example epic, story, bug) with name and description. Use for \"Which task types does Fre","description":"List a project's task types (for example epic, story, bug) with name and description. Use for \"Which task types does Freshservice project 1 use\".","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"},"project_id":{"description":"Project id from list_projects.","title":"Project Id","type":"integer"}},"required":["domain","project_id"],"title":"list_project_task_typesArguments","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_project_sprints":{"post":{"operationId":"list_project_sprints","summary":"List a project's sprints with title, goal, state (1 planned, 2 active, 3 completed) and planned dates. Use for \"What spr","description":"List a project's sprints with title, goal, state (1 planned, 2 active, 3 completed) and planned dates. Use for \"What sprints does Freshservice project 1 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"},"project_id":{"description":"Project id from list_projects.","title":"Project Id","type":"integer"}},"required":["domain","project_id"],"title":"list_project_sprintsArguments","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_project_versions":{"post":{"operationId":"list_project_versions","summary":"List a project's versions with name, description, dates and status (1 unreleased, 2 released). Owner ids are not returne","description":"List a project's versions with name, description, dates and status (1 unreleased, 2 released). Owner ids are not returned. Use for \"What versions does Freshservice project 1 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"},"project_id":{"description":"Project id from list_projects.","title":"Project Id","type":"integer"}},"required":["domain","project_id"],"title":"list_project_versionsArguments","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}}}}