{
  "info": {
    "name": "Harvest — mcp.ai",
    "description": "REST API for the Harvest MCP. Set {{apiKey}} to a workspace key (sk_live_…) created at https://mcp.ai/settings/api-keys.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.mcp.ai/api/harvest",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "sk_live_...",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "harvest_create_client",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/client",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "client"
          ]
        },
        "description": "Tool to create a new client. use after gathering client details to register a new client in harvest.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"address\": \"\",\n  \"currency\": \"\",\n  \"is_active\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_client_contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/client/contact",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "client",
            "contact"
          ]
        },
        "description": "Tool to create a new client contact. use when you need to add a contact under an existing client. call after you've retrieved or confirmed the client id.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"fax\": \"\",\n  \"email\": \"\",\n  \"title\": \"\",\n  \"client_id\": 0,\n  \"last_name\": \"\",\n  \"first_name\": \"\",\n  \"phone_mobile\": \"\",\n  \"phone_office\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_estimate",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/estimate",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "estimate"
          ]
        },
        "description": "Tool to create a new estimate. use after gathering client and line item details.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"tax\": 0,\n  \"tax2\": 0,\n  \"notes\": \"\",\n  \"number\": \"\",\n  \"subject\": \"\",\n  \"currency\": \"\",\n  \"discount\": 0,\n  \"client_id\": 0,\n  \"issue_date\": \"\",\n  \"line_items\": \"\",\n  \"purchase_order\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_estimate_item_category",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/estimate/item/category",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "estimate",
            "item",
            "category"
          ]
        },
        "description": "Tool to create a new estimate item category in harvest. use after deciding to categorize line items within an estimate.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_estimate_message",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/estimate/message",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "estimate",
            "message"
          ]
        },
        "description": "Tool to create a new message for an estimate. use when you have an estimate id and want to send a message or run an event (send, accept, decline, re-open) on the estimate.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"body\": \"\",\n  \"subject\": \"\",\n  \"event_type\": \"\",\n  \"recipients\": \"\",\n  \"estimate_id\": 0,\n  \"send_me_a_copy\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_expense",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/expense",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "expense"
          ]
        },
        "description": "Tool to create a new expense entry. use when recording costs against projects. ensure either units or total cost is provided.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"notes\": \"\",\n  \"units\": 0,\n  \"receipt\": \"\",\n  \"user_id\": 0,\n  \"billable\": false,\n  \"project_id\": 0,\n  \"spent_date\": \"\",\n  \"total_cost\": 0,\n  \"expense_category_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_invoice",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/invoice",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "invoice"
          ]
        },
        "description": "Tool to create a new invoice. use when you have gathered all invoice details and need to bill a client in harvest.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"tax\": 0,\n  \"tax2\": 0,\n  \"notes\": \"\",\n  \"state\": \"\",\n  \"number\": \"\",\n  \"subject\": \"\",\n  \"currency\": \"\",\n  \"discount\": 0,\n  \"due_date\": \"\",\n  \"client_id\": 0,\n  \"issue_date\": \"\",\n  \"line_items\": \"\",\n  \"purchase_order\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_invoice_item_category",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/invoice/item/category",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "invoice",
            "item",
            "category"
          ]
        },
        "description": "Tool to create a new invoice item category. use after you have decided on the category name to register it in harvest.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_invoice_message",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/invoice/message",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "invoice",
            "message"
          ]
        },
        "description": "Tool to create a new message for an invoice. use after confirming the invoice id when you need to notify a client with invoice details.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"body\": \"\",\n  \"subject\": \"\",\n  \"thank_you\": false,\n  \"attach_pdf\": false,\n  \"event_type\": \"\",\n  \"invoice_id\": 0,\n  \"recipients\": \"\",\n  \"send_me_a_copy\": false,\n  \"include_link_to_client_invoice\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_invoice_payment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/invoice/payment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "invoice",
            "payment"
          ]
        },
        "description": "Tool to create a new payment on an invoice. use when recording a payment against an existing invoice.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"notes\": \"\",\n  \"amount\": 0,\n  \"paid_at\": \"\",\n  \"paid_date\": \"\",\n  \"invoice_id\": 0,\n  \"send_thank_you\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_project",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/project",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "project"
          ]
        },
        "description": "Tool to create a new project. use after confirming the client exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"fee\": 0,\n  \"code\": \"\",\n  \"name\": \"\",\n  \"notes\": \"\",\n  \"budget\": 0,\n  \"bill_by\": \"\",\n  \"ends_on\": \"\",\n  \"budget_by\": \"\",\n  \"client_id\": 0,\n  \"is_active\": false,\n  \"starts_on\": \"\",\n  \"cost_budget\": 0,\n  \"hourly_rate\": 0,\n  \"is_billable\": false,\n  \"is_fixed_fee\": false,\n  \"budget_is_monthly\": false,\n  \"show_budget_to_all\": false,\n  \"notify_when_over_budget\": false,\n  \"cost_budget_include_expenses\": false,\n  \"over_budget_notification_percentage\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_task",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/task",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "task"
          ]
        },
        "description": "Tool to create a new task. use after identifying task details to register it in harvest.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"is_active\": false,\n  \"is_default\": false,\n  \"billable_by_default\": false,\n  \"default_hourly_rate\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_time_entry",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/time/entry",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "time",
            "entry"
          ]
        },
        "description": "Tool to create a new time entry. use when logging hours for a project by specifying start/end times or duration.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"hours\": 0,\n  \"notes\": \"\",\n  \"task_id\": 0,\n  \"user_id\": 0,\n  \"ended_time\": \"\",\n  \"project_id\": 0,\n  \"spent_date\": \"\",\n  \"started_time\": \"\",\n  \"external_reference\": {}\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_create_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "user"
          ]
        },
        "description": "Tool to create a new user. use after gathering user details to invite them to harvest.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"\",\n  \"roles\": \"\",\n  \"timezone\": \"\",\n  \"cost_rate\": 0,\n  \"is_active\": false,\n  \"last_name\": \"\",\n  \"first_name\": \"\",\n  \"access_roles\": \"\",\n  \"is_contractor\": false,\n  \"weekly_capacity\": 0,\n  \"default_hourly_rate\": 0,\n  \"has_access_to_all_future_projects\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_client",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/client",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "client"
          ]
        },
        "description": "Tool to delete a client. use when you need to remove a client that has no associated projects, invoices, or estimates. call after confirming the client id exists and has no dependent resources.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"client_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_client_contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/client/contact",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "client",
            "contact"
          ]
        },
        "description": "Tool to delete a client contact. use when you need to remove a contact that is no longer relevant. call after confirming the contact id exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"contact_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_estimate",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/estimate",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "estimate"
          ]
        },
        "description": "Tool to delete an estimate. use when you need to remove an estimate that is no longer needed. call after confirming the estimate id exists and has no dependent resources.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"estimate_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_estimate_message",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/estimate/message",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "estimate",
            "message"
          ]
        },
        "description": "Tool to delete an estimate message. use when you need to remove a message from an estimate. call after confirming estimate id and message id are correct.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"message_id\": 0,\n  \"estimate_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_invoice",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/invoice",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "invoice"
          ]
        },
        "description": "Tool to delete an invoice. use when you need to remove an invoice that has no associated payments. call after confirming the invoice id exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"invoice_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_invoice_item_category",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/invoice/item/category",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "invoice",
            "item",
            "category"
          ]
        },
        "description": "Tool to delete an invoice item category. use when you need to remove an obsolete or incorrect invoice item category. call after confirming the invoice item category id exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"invoice_item_category_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_invoice_message",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/invoice/message",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "invoice",
            "message"
          ]
        },
        "description": "Tool to delete a message from an invoice. use when you need to remove a specific message that is no longer relevant. call after confirming the invoice id and message id.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"invoice_id\": 0,\n  \"message_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_invoice_payment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/invoice/payment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "invoice",
            "payment"
          ]
        },
        "description": "Tool to delete an invoice payment. use when you need to remove a payment from an invoice after confirming payment details.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"invoice_id\": 0,\n  \"payment_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_project",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/project",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "project"
          ]
        },
        "description": "Tool to delete a project. use when you need to remove a project and all its associated time entries and expenses; invoices remain intact. call after confirming the project id exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"project_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_task",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/task",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "task"
          ]
        },
        "description": "Tool to delete a task. use when you need to remove a task that has no associated time entries. call after confirming the task id exists and has no dependent time entries.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"task_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_time_entry",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/time/entry",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "time",
            "entry"
          ]
        },
        "description": "Tool to delete a time entry. use when removing an existing time entry that is deletable (not closed or on archived projects/tasks). call after confirming the time entry id exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"time_entry_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_delete_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "user"
          ]
        },
        "description": "Tool to delete a user. use when you need to remove a user that has no associated time entries or expenses. call after confirming the user id exists and has no dependent time entries or expenses.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"user_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_client",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/client",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "client"
          ]
        },
        "description": "Tool to retrieve a specific client by id. use when you need details of a client before invoicing or reporting.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"client_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_client_contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/client/contact",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "client",
            "contact"
          ]
        },
        "description": "Tool to retrieve a specific client contact. use when you have client id and contact id to fetch and verify contact details.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"client_id\": 0,\n  \"contact_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_company_info",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/company/info",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "company",
            "info"
          ]
        },
        "description": "Tool to retrieve information about the authenticated user's company. use after authentication to fetch company settings for display or configuration.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_estimate",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/estimate",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "estimate"
          ]
        },
        "description": "Tool to retrieve a specific estimate by id. use after confirming the estimate id. example: \"get estimate with id 123456\".",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"estimate_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_invoice",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/invoice",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "invoice"
          ]
        },
        "description": "Tool to retrieve a specific invoice by id. use when you need the full details of an invoice after selecting or creating it. example: 'get invoice with id 13150378.'",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"invoice_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_project",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/project",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "project"
          ]
        },
        "description": "Tool to retrieve a specific harvest project by id. use when you have a project id and need its details.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"project_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_task",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/task",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "task"
          ]
        },
        "description": "Tool to retrieve a specific task by id. use when you have a task id and need its detailed information.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"task_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_time_entry",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/time/entry",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "time",
            "entry"
          ]
        },
        "description": "Tool to retrieve a single time entry by id. use when you have a specific time entry id and need its full details.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"time_entry_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_get_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get",
            "user"
          ]
        },
        "description": "Tool to retrieve a specific user by id. use after obtaining a valid user id (for example via list users). example: \"get details of user 3230547\".",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"user_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_client_contacts",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/client/contacts",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "client",
            "contacts"
          ]
        },
        "description": "Tool to list client contacts. use when you need to retrieve contacts with optional filtering and pagination.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"client_id\": 0,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_clients",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/clients",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "clients"
          ]
        },
        "description": "Tool to list clients. use when you need to retrieve a paginated list of clients from harvest. ensure you have a valid access token in metadata before calling.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"is_active\": false,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_estimate_messages",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/estimate/messages",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "estimate",
            "messages"
          ]
        },
        "description": "Tool to list messages for an estimate. use after obtaining an estimate id to retrieve associated messages, supports pagination and filtering by update time.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"estimate_id\": 0,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_expense_categories",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/expense/categories",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "expense",
            "categories"
          ]
        },
        "description": "Tool to list expense categories. use when you need to retrieve a paginated list of expense categories, optionally filtering by active status or last update timestamp.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"is_active\": false,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_invoice_item_categories",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/invoice/item/categories",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "invoice",
            "item",
            "categories"
          ]
        },
        "description": "Tool to retrieve invoice item categories. use when you need to fetch a paginated list of invoice item categories in harvest.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_invoice_messages",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/invoice/messages",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "invoice",
            "messages"
          ]
        },
        "description": "Tool to list messages associated with a given invoice. use when you need to retrieve invoice messages with optional filtering by update time and pagination.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"invoice_id\": 0,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_invoice_payments",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/invoice/payments",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "invoice",
            "payments"
          ]
        },
        "description": "Tool to retrieve payments for a specific invoice. use when you need to list all payments applied to an invoice after confirming the invoice exists.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"invoice_id\": 0,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_invoices",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/invoices",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "invoices"
          ]
        },
        "description": "Tool to list invoices. use when you need to retrieve invoices filtered by client, project, date range, or state. example: 'list invoices for client 5735776 from 2023-01-01 to 2023-01-31.'",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"state\": \"\",\n  \"to_date\": \"\",\n  \"per_page\": 0,\n  \"client_id\": 0,\n  \"from_date\": \"\",\n  \"project_id\": 0,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_projects",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/projects",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "projects"
          ]
        },
        "description": "Tool to list projects. use when you need to retrieve a paginated list of projects from harvest. ensure a valid access token is present in metadata before calling.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"client\": 0,\n  \"per_page\": 0,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_tasks",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/tasks",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "tasks"
          ]
        },
        "description": "Tool to list tasks. use when you need to retrieve a paginated list of tasks from harvest. ensure you have a valid access token in metadata before calling.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"is_active\": false,\n  \"is_default\": false,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_time_entries",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/time/entries",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "time",
            "entries"
          ]
        },
        "description": "Tool to retrieve a list of time entries. use when you need to fetch tracked hours with filters or date ranges for reporting or invoicing. example: \"list time entries for project 123 between 2023-01-01",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"to\": \"\",\n  \"page\": 0,\n  \"task_id\": 0,\n  \"user_id\": 0,\n  \"per_page\": 0,\n  \"client_id\": 0,\n  \"from_date\": \"\",\n  \"is_billed\": false,\n  \"is_running\": false,\n  \"project_id\": 0,\n  \"updated_since\": \"\",\n  \"external_reference_id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_list_users",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/users",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "users"
          ]
        },
        "description": "Tool to list users. use when you need to retrieve a paginated list of users from harvest.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"page\": 0,\n  \"per_page\": 0,\n  \"is_active\": false,\n  \"updated_since\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_client",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/client",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "client"
          ]
        },
        "description": "Tool to update an existing client. use after retrieving client details to modify its properties. supports partial updates; omit fields to leave them unchanged.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"address\": \"\",\n  \"currency\": \"\",\n  \"client_id\": 0,\n  \"is_active\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_client_contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/client/contact",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "client",
            "contact"
          ]
        },
        "description": "Tool to update a client contact. use when you have a contact id and need to modify its details.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"\",\n  \"title\": \"\",\n  \"last_name\": \"\",\n  \"contact_id\": 0,\n  \"first_name\": \"\",\n  \"phone_mobile\": \"\",\n  \"phone_office\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_company_info",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/company/info",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "company",
            "info"
          ]
        },
        "description": "Tool to update information about the company. use to modify company settings such as name, timezone, or formatting options. use after obtaining current settings to apply changes.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"currency\": \"\",\n  \"timezone\": \"\",\n  \"color_scheme\": \"\",\n  \"decimal_symbol\": \"\",\n  \"week_start_day\": \"\",\n  \"thousands_separator\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_estimate",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/estimate",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "estimate"
          ]
        },
        "description": "Tool to update an existing estimate. use when you need to modify specific fields of an estimate; omit parameters to leave other fields unchanged.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"tax\": 0,\n  \"tax2\": 0,\n  \"notes\": \"\",\n  \"number\": \"\",\n  \"subject\": \"\",\n  \"currency\": \"\",\n  \"discount\": 0,\n  \"client_id\": 0,\n  \"issue_date\": \"\",\n  \"line_items\": \"\",\n  \"estimate_id\": 0,\n  \"purchase_order\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_estimate_item_category",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/estimate/item/category",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "estimate",
            "item",
            "category"
          ]
        },
        "description": "Tool to update an estimate item category. use after retrieving the category to change its name.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"estimate_item_category_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_expense",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/expense",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "expense"
          ]
        },
        "description": "Tool to update an existing expense. use after retrieving an expense to modify project, category, date, cost, or delete a receipt; omit fields to leave unchanged.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"notes\": \"\",\n  \"units\": 0,\n  \"billable\": false,\n  \"expense_id\": 0,\n  \"project_id\": 0,\n  \"spent_date\": \"\",\n  \"total_cost\": 0,\n  \"delete_receipt\": false,\n  \"expense_category_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_invoice",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/invoice",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "invoice"
          ]
        },
        "description": "Tool to update an existing invoice. use after retrieving invoice details to modify its fields. supports partial updates; omit fields to leave unchanged.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"tax\": 0,\n  \"tax2\": 0,\n  \"notes\": \"\",\n  \"number\": \"\",\n  \"subject\": \"\",\n  \"currency\": \"\",\n  \"discount\": 0,\n  \"due_date\": \"\",\n  \"client_id\": 0,\n  \"invoice_id\": 0,\n  \"issue_date\": \"\",\n  \"line_items\": \"\",\n  \"estimate_id\": 0,\n  \"retainer_id\": 0,\n  \"payment_term\": \"\",\n  \"purchase_order\": \"\",\n  \"payment_options\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_project",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/project",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "project"
          ]
        },
        "description": "Tool to update an existing project. use when you need to modify one or more fields of a project by its id. invoke after confirming the project id and desired changes.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"fee\": 0,\n  \"code\": \"\",\n  \"name\": \"\",\n  \"notes\": \"\",\n  \"budget\": 0,\n  \"bill_by\": \"\",\n  \"ends_on\": \"\",\n  \"budget_by\": \"\",\n  \"client_id\": 0,\n  \"is_active\": false,\n  \"starts_on\": \"\",\n  \"project_id\": 0,\n  \"cost_budget\": 0,\n  \"hourly_rate\": 0,\n  \"is_billable\": false,\n  \"is_fixed_fee\": false,\n  \"budget_is_monthly\": false,\n  \"show_budget_to_all\": false,\n  \"notify_when_over_budget\": false,\n  \"cost_budget_include_expenses\": false,\n  \"over_budget_notification_percentage\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_task",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/task",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "task"
          ]
        },
        "description": "Tool to update an existing task. use after retrieving task details to modify its attributes such as name, billing defaults, or status. supports partial updates; omit fields to leave them unchanged.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"task_id\": 0,\n  \"is_active\": false,\n  \"is_default\": false,\n  \"billable_by_default\": false,\n  \"default_hourly_rate\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_time_entry",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/time/entry",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "time",
            "entry"
          ]
        },
        "description": "Tool to update an existing time entry. use after retrieving the entry to adjust hours, notes, project, or task details. supports partial updates; omit fields to leave unchanged.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"hours\": 0,\n  \"notes\": \"\",\n  \"task_id\": 0,\n  \"ended_time\": \"\",\n  \"project_id\": 0,\n  \"spent_date\": \"\",\n  \"started_time\": \"\",\n  \"time_entry_id\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "harvest_update_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "user"
          ]
        },
        "description": "Tool to update an existing user. use when you need to modify a user's profile or settings after confirming the user id.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"\",\n  \"roles\": \"\",\n  \"user_id\": 0,\n  \"timezone\": \"\",\n  \"is_active\": false,\n  \"last_name\": \"\",\n  \"first_name\": \"\",\n  \"access_roles\": \"\",\n  \"is_contractor\": false,\n  \"weekly_capacity\": 0,\n  \"has_access_to_all_future_projects\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    }
  ]
}