{"openapi":"3.1.0","info":{"title":"Harvest Reports (BYOK) API","version":"0.1.0","description":"Harvest Reports (BYOK) lets an AI assistant read your own Harvest Reports data through the Harvest Reports API with a key you supply (personal access token). Read-only: 10 tools (time_report_clients, time_report_projects, time_report_tasks, time_report_team, expense_report_clients, expense_report_projects, expense_report_categories, expense_report_team, uninvoiced_report, project_budget_report)....\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-harvest-reports.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-harvest-reports/docs"},"termsOfService":"https://connectorbay.com/byok-harvest-reports/terms"},"servers":[{"url":"https://byok-harvest-reports.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-harvest-reports/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/time_report_clients":{"post":{"operationId":"time_report_clients","summary":"Total and billable hours and billable amount per client for a date range. The period may not exceed 365 days. Managers s","description":"Total and billable hours and billable amount per client for a date range. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"How many hours did we track per client in Harvest this year\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only time entries dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only time entries dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"include_fixed_fee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include billable amounts for fixed-fee projects.","title":"Include Fixed Fee"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"time_report_clientsArguments","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/time_report_projects":{"post":{"operationId":"time_report_projects","summary":"Total and billable hours and billable amount per project (with its client) for a date range. The period may not exceed 3","description":"Total and billable hours and billable amount per project (with its client) for a date range. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"Which Harvest projects had the most hours this quarter\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only time entries dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only time entries dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"include_fixed_fee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include billable amounts for fixed-fee projects.","title":"Include Fixed Fee"},"include_forecast":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to add scheduled hours from Forecast (only if the account is connected to Forecast).","title":"Include Forecast"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"time_report_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/time_report_tasks":{"post":{"operationId":"time_report_tasks","summary":"Total and billable hours and billable amount per task type (such as Design or Meetings) for a date range. The period may","description":"Total and billable hours and billable amount per task type (such as Design or Meetings) for a date range. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"How much Harvest time went to each task type this year\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only time entries dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only time entries dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"include_fixed_fee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include billable amounts for fixed-fee projects.","title":"Include Fixed Fee"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"time_report_tasksArguments","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/time_report_team":{"post":{"operationId":"time_report_team","summary":"Total and billable hours per team member for a date range, with weekly capacity in seconds and contractor flag. The peri","description":"Total and billable hours per team member for a date range, with weekly capacity in seconds and contractor flag. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"How many hours did each person log in Harvest last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only time entries dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only time entries dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"include_fixed_fee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include billable amounts for fixed-fee projects.","title":"Include Fixed Fee"},"include_forecast":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to add scheduled hours from Forecast (only if the account is connected to Forecast).","title":"Include Forecast"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"time_report_teamArguments","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/expense_report_clients":{"post":{"operationId":"expense_report_clients","summary":"Total and billable expense amounts per client for a date range. The period may not exceed 365 days. Managers see their o","description":"Total and billable expense amounts per client for a date range. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"How much did we spend on expenses per Harvest client this year\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only expenses dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only expenses dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"expense_report_clientsArguments","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/expense_report_projects":{"post":{"operationId":"expense_report_projects","summary":"Total and billable expense amounts per project for a date range. The period may not exceed 365 days. Managers see their ","description":"Total and billable expense amounts per project for a date range. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"Which Harvest projects have the highest expenses\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only expenses dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only expenses dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"expense_report_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/expense_report_categories":{"post":{"operationId":"expense_report_categories","summary":"Total and billable expense amounts per expense category (travel, meals ...) for a date range. The period may not exceed ","description":"Total and billable expense amounts per expense category (travel, meals ...) for a date range. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"What did we spend by expense category in Harvest last quarter\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only expenses dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only expenses dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"expense_report_categoriesArguments","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/expense_report_team":{"post":{"operationId":"expense_report_team","summary":"Total and billable expense amounts per team member for a date range. The period may not exceed 365 days. Managers see th","description":"Total and billable expense amounts per team member for a date range. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"Who submitted the most expenses in Harvest this year\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only expenses dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only expenses dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"expense_report_teamArguments","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/uninvoiced_report":{"post":{"operationId":"uninvoiced_report","summary":"Per project: total hours, uninvoiced hours, uninvoiced billable expenses and uninvoiced amount for a date range. The per","description":"Per project: total hours, uninvoiced hours, uninvoiced billable expenses and uninvoiced amount for a date range. The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"What work in Harvest has not been invoiced yet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_date":{"description":"Only time entries and expenses dated on or after this day (YYYY-MM-DD).","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"Only time entries and expenses dated on or before this day (YYYY-MM-DD).","maxLength":10,"title":"To Date","type":"string"},"include_fixed_fee":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) to include fixed-fee projects.","title":"Include Fixed Fee"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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"}},"required":["from_date","to_date"],"title":"uninvoiced_reportArguments","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/project_budget_report":{"post":{"operationId":"project_budget_report","summary":"Budget, amount spent and amount remaining per project, with how it is budgeted (hours, fees, per task or per person). Th","description":"Budget, amount spent and amount remaining per project, with how it is budgeted (hours, fees, per task or per person). The period may not exceed 365 days. Managers see their own projects and teammates, members only their own; money fields need the billable-rates permission. Use for \"How much of each Harvest project's budget is left\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active projects only, false for inactive ones; leave out for both.","title":"Is Active"},"per_page":{"anyOf":[{"maximum":2000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many result rows 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":"project_budget_reportArguments","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}}}}