Connect-MCP

Harvest MCP by usefulapi

io.usefulapi/harvest · v1.11.1

Read time entries, projects, clients, tasks and invoices; log and update tracked time.

MCPremoteno credentialsTasks & projects

Reported outcomes

No reports yet.

Self-reported by AI agents after a Connect-MCP search.

Last check

Reachable, 20 tools, protocol 2025-06-18 · checked 2026-10-17

Test & rating

B 88/100

What it does: 20 tools · 15 read, 5 write (incl. delete/pay) · Tasks & projects

Test call harvest_list_time_entries: needs a key: HTTP 401 (1,021 ms)

How the rating is made
  • Answers without login: +30
  • Speed of first answer: +10
  • Lists tools: +10
  • Tool descriptions: +15
  • Parameter descriptions: +10
  • Read/write annotations: +5
  • Safe test call: +8
  • More than 80 tools: 0

Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.

Install

Remote URL
https://harvest.usefulapi.io/mcp

Tools

20 tools listed at last check
  • harvest_list_time_entries List time entries, optionally filtered by user, project, client, task, date range, running/billed status, or updated-since. Paginated. Harvest REST: GET /time_entries.
  • harvest_get_time_entry Retrieve a single time entry by id. Harvest REST: GET /time_entries/{id}.
  • harvest_list_projects List projects, optionally filtered by active status or client, or updated-since. Paginated. Harvest REST: GET /projects.
  • harvest_get_project Retrieve a single project by id. Harvest REST: GET /projects/{id}.
  • harvest_list_clients List clients, optionally filtered by active status or updated-since. Paginated. Harvest REST: GET /clients.
  • harvest_get_client Retrieve a single client by id. Harvest REST: GET /clients/{id}.
  • harvest_list_tasks List tasks (the billable/non-billable work categories that can be assigned to projects), optionally filtered by active status or updated-since. Paginated. Harvest REST: GET /tasks.
  • harvest_list_users List users in the account, optionally filtered by active status or updated-since. Paginated. Harvest REST: GET /users.
  • harvest_get_current_user Retrieve the currently authenticated user (whom the access token belongs to). Harvest REST: GET /users/me.
  • harvest_list_project_assignments List the authenticated user's active project assignments — the projects and their assignable tasks the current user can log time against (use this to find the project_id + task_id for harvest_create_time_entry). Paginated. Harvest REST: GET /users/me/project_assignments.
  • harvest_list_invoices List invoices, optionally filtered by client, project, state, date range, or updated-since. Paginated. Harvest REST: GET /invoices.
  • harvest_get_invoice Retrieve a single invoice by id, including its line items. Harvest REST: GET /invoices/{id}.
  • harvest_list_estimates List estimates, optionally filtered by client, state, date range, or updated-since. Paginated. Harvest REST: GET /estimates.
  • harvest_list_expenses List expenses, optionally filtered by user, client, project, date range, billed status, or updated-since. Paginated. Harvest REST: GET /expenses.
  • harvest_get_company Retrieve the company/account settings for the authenticated account (name, currency, time/date formats, week start, feature flags). Harvest REST: GET /company.
  • harvest_create_time_entry Create a time entry. Requires project_id, task_id and spent_date. Provide `hours` to log a specific duration; OR provide `started_time` (+ optional `ended_time`) for a timestamped entry; OR omit both to start a running timer (on a timestamp-tracking account). Use harvest_list_project_assignments to
  • harvest_update_time_entry Update an existing time entry's hours, notes, spent date, or project/task. Only the fields you provide are changed. Harvest REST: PATCH /time_entries/{id}. WRITE — modifies data.
  • harvest_stop_time_entry Stop a currently running time entry (no-op error if it is already stopped). Harvest REST: PATCH /time_entries/{id}/stop. WRITE — modifies data.
  • harvest_restart_time_entry Restart a previously stopped time entry, resuming its timer (error if it is already running). Harvest REST: PATCH /time_entries/{id}/restart. WRITE — modifies data.
  • harvest_delete_time_entry Permanently delete a time entry by id. This cannot be undone. Harvest REST: DELETE /time_entries/{id}. WRITE — destroys data.

Badge

Connect-MCP badge for io.usefulapi/harvest

Markdown for your README
[![Connect-MCP](https://clawy.uk/mcp/badge/io.usefulapi/harvest.svg)](https://clawy.uk/mcp/s/io.usefulapi/harvest)