Harvest
The Harvest agent connector is a Python package that equips AI agents to interact with Harvest through strongly typed, well-documented tools. It's ready to use directly in your Python app, in an agent framework, or exposed through an MCP.
Connector for the Harvest time-tracking and invoicing API (v2). Provides read access to time tracking data including users, clients, projects, tasks, time entries, invoices, estimates, expenses, and more. Harvest is a cloud-based time tracking and invoicing solution that helps teams track time, manage projects, and streamline invoicing.
Example questions
The Harvest connector is optimized to handle prompts like these.
- List all users in Harvest
- Show me all active projects
- List all clients
- Show me recent time entries
- List all invoices
- Show me all tasks
- List all expense categories
- Get company information
- How many hours were logged last week?
- Which projects have the most time entries?
- Show me all unbilled time entries
- What are the active projects for a specific client?
- List all overdue invoices
- Which users logged the most hours this month?
Unsupported questions
The Harvest connector isn't currently able to handle prompts like these.
- Create a new time entry in Harvest
- Update a project budget
- Delete an invoice
- Start a timer for a task
Installation
uv pip install airbyte-agent-harvest
Usage
Connectors can run in open source or hosted mode.
Open source
In open source mode, you provide API credentials directly to the connector.
from airbyte_agent_harvest import HarvestConnector
from airbyte_agent_harvest.models import HarvestPersonalAccessTokenAuthConfig
connector = HarvestConnector(
auth_config=HarvestPersonalAccessTokenAuthConfig(
token="<Your Harvest personal access token>",
account_id="<Your Harvest account ID>"
)
)
@agent.tool_plain # assumes you're using Pydantic AI
@HarvestConnector.tool_utils
async def harvest_execute(entity: str, action: str, params: dict | None = None):
return await connector.execute(entity, action, params or {})
Hosted
In hosted mode, API credentials are stored securely in Airbyte Cloud. You provide your Airbyte credentials instead.
If your Airbyte client can access multiple organizations, also set organization_id.
This example assumes you've already authenticated your connector with Airbyte. See Authentication to learn more about authenticating. If you need a step-by-step guide, see the hosted execution tutorial.
from airbyte_agent_harvest import HarvestConnector, AirbyteAuthConfig
connector = HarvestConnector(
auth_config=AirbyteAuthConfig(
customer_name="<your_customer_name>",
organization_id="<your_organization_id>", # Optional for multi-org clients
airbyte_client_id="<your-client-id>",
airbyte_client_secret="<your-client-secret>"
)
)
@agent.tool_plain # assumes you're using Pydantic AI
@HarvestConnector.tool_utils
async def harvest_execute(entity: str, action: str, params: dict | None = None):
return await connector.execute(entity, action, params or {})
Full documentation
Entities and actions
This connector supports the following entities and actions. For more details, see this connector's full reference documentation.
| Entity | Actions |
|---|---|
| Users | List, Get, Search |
| Clients | List, Get, Search |
| Contacts | List, Get, Search |
| Company | Get, Search |
| Projects | List, Get, Search |
| Tasks | List, Get, Search |
| Time Entries | List, Get, Search |
| Invoices | List, Get, Search |
| Invoice Item Categories | List, Get, Search |
| Estimates | List, Get, Search |
| Estimate Item Categories | List, Get, Search |
| Expenses | List, Get, Search |
| Expense Categories | List, Get, Search |
| Roles | List, Get, Search |
| User Assignments | List, Search |
| Task Assignments | List, Search |
| Time Projects | List, Search |
| Time Tasks | List, Search |
Authentication
For all authentication options, see the connector's authentication documentation.
Harvest API docs
See the official Harvest API reference.
Version information
- Package version: 0.1.1
- Connector version: 1.0.2
- Generated with Connector SDK commit SHA: fa799851ff5cfa0791f3b7367a2ff2f803ccc4c2
- Changelog: View changelog