{"openapi":"3.1.0","info":{"title":"Harvest Time Off Setup (BYOK) API","version":"0.1.0","description":"Harvest Time Off Setup (BYOK) lets an AI assistant read your own Harvest Time Off Setup data through the Harvest Time Off Setup API with a key you supply (personal access token). Read-only: 6 tools (list_time_off_policies, get_time_off_policy, list_holiday_calendars, get_holiday_calendar, list_work_schedules, get_work_schedule). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-harvest-time-off-setup.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-harvest-time-off-setup/docs"},"termsOfService":"https://connectorbay.com/byok-harvest-time-off-setup/terms"},"servers":[{"url":"https://byok-harvest-time-off-setup.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-harvest-time-off-setup/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_time_off_policies":{"post":{"operationId":"list_time_off_policies","summary":"List time-off policies (such as Vacation or Sick Leave) with accrual type and schedule, default days per year, carry-ove","description":"List time-off policies (such as Vacation or Sick Leave) with accrual type and schedule, default days per year, carry-over limit and approval rule. The Harvest PTO API is rolled out gradually (other accounts get 403) and needs an Administrator. Use for \"What time-off policies does our Harvest account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) for active records, false for deactivated ones.","title":"Is Active"},"updated_since":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only policies updated since this ISO 8601 time.","title":"Updated Since"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (1 to 2000).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer includes total_pages and next_page.","title":"Page"}},"title":"list_time_off_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/get_time_off_policy":{"post":{"operationId":"get_time_off_policy","summary":"Get one time-off policy with accrual rules, carry-over limit, approval and visibility settings. The Harvest PTO API is r","description":"Get one time-off policy with accrual rules, carry-over limit, approval and visibility settings. The Harvest PTO API is rolled out gradually (other accounts get 403) and needs an Administrator. Use for \"Show Harvest time-off policy 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"policy_id":{"description":"Numeric id from the matching list tool.","minimum":1,"title":"Policy Id","type":"integer"}},"required":["policy_id"],"title":"get_time_off_policyArguments","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_holiday_calendars":{"post":{"operationId":"list_holiday_calendars","summary":"List holiday calendars with the holidays (name and date) in each. The Harvest PTO API is rolled out gradually (other acc","description":"List holiday calendars with the holidays (name and date) in each. The Harvest PTO API is rolled out gradually (other accounts get 403) and needs an Administrator. Use for \"Which holidays are on our Harvest holiday calendars\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (1 to 2000).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer includes total_pages and next_page.","title":"Page"}},"title":"list_holiday_calendarsArguments","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_holiday_calendar":{"post":{"operationId":"get_holiday_calendar","summary":"Get one holiday calendar with its holiday entries. The Harvest PTO API is rolled out gradually (other accounts get 403) ","description":"Get one holiday calendar with its holiday entries. The Harvest PTO API is rolled out gradually (other accounts get 403) and needs an Administrator. Use for \"Show Harvest holiday calendar 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"calendar_id":{"description":"Numeric id from the matching list tool.","minimum":1,"title":"Calendar Id","type":"integer"}},"required":["calendar_id"],"title":"get_holiday_calendarArguments","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_work_schedules":{"post":{"operationId":"list_work_schedules","summary":"List work schedules with working hours for each weekday and the weekly total. The Harvest PTO API is rolled out graduall","description":"List work schedules with working hours for each weekday and the weekly total. The Harvest PTO API is rolled out gradually (other accounts get 403) and needs an Administrator. Use for \"What work schedules are set up in Harvest\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) for active records, false for deactivated ones.","title":"Is Active"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (1 to 2000).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer includes total_pages and next_page.","title":"Page"}},"title":"list_work_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/get_work_schedule":{"post":{"operationId":"get_work_schedule","summary":"Get one work schedule with hours per weekday. The Harvest PTO API is rolled out gradually (other accounts get 403) and n","description":"Get one work schedule with hours per weekday. The Harvest PTO API is rolled out gradually (other accounts get 403) and needs an Administrator. Use for \"Show Harvest work schedule 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"schedule_id":{"description":"Numeric id from the matching list tool.","minimum":1,"title":"Schedule Id","type":"integer"}},"required":["schedule_id"],"title":"get_work_scheduleArguments","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}}}}