io.usefulapi/harvest

Harvest MCP by usefulapi

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

1.11.1
Version
remote
Transport
20
Tools
This server was flagged by the review. Read the findings below before connecting an agent to it.

Security review

Flagged

Reviewed 28m ago.

  • tools: 20 tools scanned
  • metadata: scanned
  • highReviewRemote tools ask for credentials on a server that looks like a data-collection sensor

    Whatever an agent passes to a remote tool leaves the machine. Never send connection strings, tokens or passwords to a third-party MCP server unless it is the service those credentials belong to.

    harvest_get_current_user
  • mediumReviewRemote host names itself a sensor/observatory (harvest.usefulapi.io)

    Research or telemetry sensors record what agents send them; treat every input as collected.

    harvest.usefulapi.io

Tools (20)

  • 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 find valid project_id + task_id. Harvest REST: POST /time_entries. WRITE — creates data.

  • 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.