harvest — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited harvest (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.

Manage time tracking, projects, and invoicing from chat -- log time entries, create invoices and estimates, manage clients and projects, record expenses, and administer team members. Powered by ClawLink for hosted OAuth.
| Step 1: Install | Step 2: Pair Account | Step 3: Connect Harvest |
|---|---|---|
![]() | ![]() | App-specific connection GIF coming soon |
| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Harvest |
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ Harvest API │
│ (User Chat) │ │ (OAuth) │ │ │
└─────────────────┘ └──────────────┘ └──────────────────┘openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart// 1. List your time entries
clawlink_call_tool({ tool: "harvest_list_time_entries", parameters: {} })
// 2. Log a new time entry
clawlink_call_tool({ tool: "harvest_create_time_entry", parameters: { project_id: "123", task_id: "456", hours: 2.5 } })
// 3. List projects
clawlink_call_tool({ tool: "harvest_list_projects", parameters: {} })ClawLink handles OAuth with Harvest. No API keys needed. Connect at claw-link.dev/dashboard?add=harvest.
// List connections
clawlink_list_integrations()
// Verify by getting company info
clawlink_call_tool({ tool: "harvest_get_company_info", parameters: {} })| Tool | Description | Mode |
|---|---|---|
harvest_list_time_entries | List time entries with date and project filtering | Read |
harvest_get_time_entry | Get a specific time entry by ID | Read |
harvest_create_time_entry | Log a new time entry (hours or start/end times) | Write |
harvest_update_time_entry | Update an existing time entry | Write |
harvest_delete_time_entry | Delete a time entry | Write |
| Tool | Description | Mode |
|---|---|---|
harvest_list_projects | List projects with pagination | Read |
harvest_get_project | Get project details by ID | Read |
harvest_create_project | Create a new project (T&M, Fixed Fee, or Internal) | Write |
harvest_update_project | Update project fields | Write |
harvest_delete_project | Delete a project and its time/expenses | Write |
| Tool | Description | Mode |
|---|---|---|
harvest_list_clients | List clients with pagination | Read |
harvest_get_client | Get client details by ID | Read |
harvest_create_client | Create a new client | Write |
harvest_update_client | Update client properties | Write |
harvest_delete_client | Delete a client with no dependent resources | Write |
harvest_list_client_contacts | List contacts with filtering | Read |
harvest_create_client_contact | Add a contact to an existing client | Write |
harvest_update_client_contact | Update contact details | Write |
harvest_delete_client_contact | Delete a client contact | Write |
| Tool | Description | Mode |
|---|---|---|
harvest_list_invoices | List invoices by client, project, date, or state | Read |
harvest_get_invoice | Get full invoice details by ID | Read |
harvest_create_invoice | Create a new invoice | Write |
harvest_update_invoice | Update an existing invoice | Write |
harvest_delete_invoice | Delete an invoice permanently | Write |
harvest_create_invoice_payment | Record a payment against an invoice | Write |
harvest_delete_invoice_payment | Delete an invoice payment | Write |
harvest_list_invoice_payments | List payments for an invoice | Read |
harvest_create_invoice_message | Send, close, or reopen an invoice | Write |
harvest_list_invoice_messages | List messages for an invoice | Read |
harvest_delete_invoice_message | Delete an invoice message | Write |
harvest_list_invoice_item_categories | List invoice item categories | Read |
harvest_create_invoice_item_category | Create an invoice item category | Write |
harvest_delete_invoice_item_category | Delete an invoice item category | Write |
| Tool | Description | Mode |
|---|---|---|
harvest_create_estimate | Create a new estimate | Write |
harvest_get_estimate | Get estimate details by ID | Read |
harvest_update_estimate | Update estimate fields | Write |
harvest_delete_estimate | Delete an estimate | Write |
harvest_create_estimate_message | Send, accept, decline, or re-open estimate | Write |
harvest_list_estimate_messages | List messages for an estimate | Read |
harvest_delete_estimate_message | Delete an estimate message | Write |
harvest_create_estimate_item_category | Create estimate item category | Write |
harvest_update_estimate_item_category | Update estimate item category name | Write |
| Tool | Description | Mode |
|---|---|---|
harvest_create_expense | Record a new expense against a project | Write |
harvest_update_expense | Update an existing expense | Write |
harvest_list_expense_categories | List expense categories | Read |
| Tool | Description | Mode |
|---|---|---|
harvest_list_tasks | List all tasks (reusable activity types) | Read |
harvest_get_task | Get task details by ID | Read |
harvest_create_task | Create a new task (e.g., Development, Design) | Write |
harvest_update_task | Update task attributes | Write |
harvest_delete_task | Delete a task with no time entries | Write |
| Tool | Description | Mode |
|---|---|---|
harvest_list_users | List all users | Read |
harvest_get_user | Get user details by ID | Read |
harvest_create_user | Create user and send invitation | Write |
harvest_update_user | Update user profile and settings | Write |
harvest_delete_user | Delete a user with no time entries | Write |
harvest_get_company_info | Get company settings and feature flags | Read |
harvest_update_company_info | Update time tracking and weekly capacity settings | Write |
// Log time to a project
await clawlink_call_tool({
tool: "harvest_create_time_entry",
parameters: {
project_id: "123456",
task_id: "789012",
date: "2026-06-08",
hours: 3.5,
notes: "API integration work"
}
});
// List today's time entries
const entries = await clawlink_call_tool({
tool: "harvest_list_time_entries",
parameters: { from: "2026-06-08", to: "2026-06-08" }
});// Create an invoice
const invoice = await clawlink_call_tool({
tool: "harvest_create_invoice",
parameters: {
client_id: "5735776",
line_items: [{
project_id: "123456",
kind: "hours",
quantity: 10,
unit_price: 150
}]
}
});
// Send the invoice
await clawlink_call_tool({
tool: "harvest_create_invoice_message",
parameters: {
invoice_id: invoice.id,
event_type: "send"
}
});// Create a project
const project = await clawlink_call_tool({
tool: "harvest_create_project",
parameters: {
client_id: "5735776",
name: "Website Redesign",
is_billable: true,
bill_by: "Project",
budget_by: "project",
budget: 100
}
});
// Record an expense
await clawlink_call_tool({
tool: "harvest_create_expense",
parameters: {
project_id: project.id,
expense_category_id: "456",
date: "2026-06-08",
total_cost: 250.00,
notes: "Software license"
}
});clawlink_list_integrations to confirm harvest is connected.clawlink_list_tools --integration harvest to see the live catalog.clawlink_search_tools({ query: "invoice", integration: "harvest" }) to find specific tools.READ (safe): list_time_entries → list_projects → list_invoices → get_company_info
WRITE (confirm): create_time_entry → create_invoice → create_project → update_client
DELETE (high): delete_project → delete_invoice → delete_time_entry → delete_userclient_id -- use list_clients first| Status / Error | Meaning |
|---|---|
| 401 Unauthorized | OAuth token expired -- reconnect at dashboard |
| 403 Forbidden | Requires Admin or Manager permissions |
| 404 Not Found | Project, client, or invoice ID does not exist |
| 422 Unprocessable | Missing required fields or invalid data |
| 429 Rate Limited | Too many requests -- apply exponential backoff |
clawlink_list_integrations to confirm pairingclient_id exists by calling list_clientsbill_by, budget_by)Powered by [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=harvest) -- an integration hub for OpenClaw

~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.