Harvest CLI Setup Harvest can be configured headlessly with `kosmokrator integrations:configure harvest`.
# Install KosmoKrator first if it is not available on PATH.
curl -fsSL https://raw.githubusercontent.com/OpenCompanyApp/kosmokrator/main/install.sh | bash
# Configure and verify this integration.
kosmokrator integrations:configure harvest --set access_token=" $HARVEST_ACCESS_TOKEN " --set account_id=" $HARVEST_ACCOUNT_ID " --enable --read allow --write ask --json
kosmokrator integrations:doctor harvest --json
kosmokrator integrations:status --json Credentials
Authentication type: Manual OAuth token oauth2_manual_token. Configure credentials once, then use the same stored profile from
scripts, coding CLIs, Lua code mode, and the MCP gateway.
Call Harvest Headlessly Use the generic call form when another coding CLI or script needs a stable universal interface.
kosmo integrations:call harvest.harvest_list_time_entries '{
"user_id": 1,
"client_id": 1,
"project_id": 1,
"is_billed": true,
"is_running": true,
"from": "example_from",
"to": "example_to",
"page": 1
}' --json Use the provider shortcut form for shorter human-facing commands.
kosmo integrations:harvest harvest_list_time_entries '{
"user_id": 1,
"client_id": 1,
"project_id": 1,
"is_billed": true,
"is_running": true,
"from": "example_from",
"to": "example_to",
"page": 1
}' --json Agent Discovery Commands
These commands return structured output for coding agents that need to inspect capabilities before choosing a function.
kosmo integrations:docs harvest --json
kosmo integrations:docs harvest.harvest_list_time_entries --json
kosmo integrations:schema harvest.harvest_list_time_entries --json
kosmo integrations:search "Harvest" --json
kosmo integrations:list --json All CLI Functions
Every function below can be called headlessly. The generic form is stable across all integrations;
the provider shortcut is shorter but specific to Harvest.
harvest.harvest_list_time_entries Read read List Harvest time entries with optional filters for user, client, project, and date range.
user_id, client_id, project_id, is_billed, is_running, from, to, page, per_page kosmo integrations:call harvest.harvest_list_time_entries '{"user_id":1,"client_id":1,"project_id":1,"is_billed":true,"is_running":true,"from":"example_from","to":"example_to","page":1}' --json copy kosmo integrations:harvest harvest_list_time_entries '{"user_id":1,"client_id":1,"project_id":1,"is_billed":true,"is_running":true,"from":"example_from","to":"example_to","page":1}' --json copy
harvest.harvest_create_time_entry Write write Create a new Harvest time entry for a project and task.
project_id, task_id, spent_date, hours, notes, timer_started_at kosmo integrations:call harvest.harvest_create_time_entry '{"project_id":1,"task_id":1,"spent_date":"example_spent_date","hours":1,"notes":"example_notes","timer_started_at":"example_timer_started_at"}' --json copy kosmo integrations:harvest harvest_create_time_entry '{"project_id":1,"task_id":1,"spent_date":"example_spent_date","hours":1,"notes":"example_notes","timer_started_at":"example_timer_started_at"}' --json copy
harvest.harvest_get_time_entry Read read Get a single Harvest time entry by its ID.
id kosmo integrations:call harvest.harvest_get_time_entry '{"id":1}' --json copy kosmo integrations:harvest harvest_get_time_entry '{"id":1}' --json copy
harvest.harvest_update_time_entry Write write Update an existing Harvest time entry (hours, notes, or spent_date).
id, hours, notes, spent_date kosmo integrations:call harvest.harvest_update_time_entry '{"id":1,"hours":1,"notes":"example_notes","spent_date":"example_spent_date"}' --json copy kosmo integrations:harvest harvest_update_time_entry '{"id":1,"hours":1,"notes":"example_notes","spent_date":"example_spent_date"}' --json copy
harvest.harvest_delete_time_entry Write write Delete a Harvest time entry by its ID.
id kosmo integrations:call harvest.harvest_delete_time_entry '{"id":1}' --json copy kosmo integrations:harvest harvest_delete_time_entry '{"id":1}' --json copy
harvest.harvest_list_projects Read read List Harvest projects with optional filters for client and active status.
client_id, is_active, page, per_page kosmo integrations:call harvest.harvest_list_projects '{"client_id":1,"is_active":true,"page":1,"per_page":1}' --json copy kosmo integrations:harvest harvest_list_projects '{"client_id":1,"is_active":true,"page":1,"per_page":1}' --json copy
harvest.harvest_get_project Read read Get a single Harvest project by its ID.
id kosmo integrations:call harvest.harvest_get_project '{"id":1}' --json copy kosmo integrations:harvest harvest_get_project '{"id":1}' --json copy
harvest.harvest_list_clients Read read List Harvest clients with optional active status filter.
is_active, page kosmo integrations:call harvest.harvest_list_clients '{"is_active":true,"page":1}' --json copy kosmo integrations:harvest harvest_list_clients '{"is_active":true,"page":1}' --json copy
harvest.harvest_list_tasks Read read List Harvest tasks with optional active status filter.
is_active, page kosmo integrations:call harvest.harvest_list_tasks '{"is_active":true,"page":1}' --json copy kosmo integrations:harvest harvest_list_tasks '{"is_active":true,"page":1}' --json copy
harvest.harvest_list_users Read read List Harvest users with optional active status filter.
is_active, page, per_page kosmo integrations:call harvest.harvest_list_users '{"is_active":true,"page":1,"per_page":1}' --json copy kosmo integrations:harvest harvest_list_users '{"is_active":true,"page":1,"per_page":1}' --json copy
harvest.harvest_get_user Read read Get a single Harvest user by their ID.
id kosmo integrations:call harvest.harvest_get_user '{"id":1}' --json copy kosmo integrations:harvest harvest_get_user '{"id":1}' --json copy
harvest.harvest_get_current_user Read read Get the currently authenticated Harvest user profile.
none kosmo integrations:call harvest.harvest_get_current_user '{}' --json copy kosmo integrations:harvest harvest_get_current_user '{}' --json copy Function Schemas Use these parameter tables when building CLI payloads without calling integrations:schema first.
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_list_time_entries --json
Operation Write write
Schema command kosmo integrations:schema harvest.harvest_create_time_entry --json
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_get_time_entry --json
Operation Write write
Schema command kosmo integrations:schema harvest.harvest_update_time_entry --json
Operation Write write
Schema command kosmo integrations:schema harvest.harvest_delete_time_entry --json
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_list_projects --json
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_get_project --json
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_list_clients --json
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_list_tasks --json
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_list_users --json
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_get_user --json
Operation Read read
Schema command kosmo integrations:schema harvest.harvest_get_current_user --json Permissions
Headless calls still follow the integration read/write permission policy. Configure read/write defaults
with integrations:configure. Add --force only for trusted automation that should bypass that policy.