Harvest Connector for AI Agents

Give agents tools for secure, real-time access to fetch, search, write, and sync across every system, with replication, entity mapping, and auth built-in.

20,000+
community members
6,000+
daily active companies
2PB+
synced/month
900+
contributors

About this Connector

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.

CRM

Sales Analytics

Customer Data

time tracking, invoicing, project management

Version Information

Package version

0.1.3

Connector version

1.0.2

SDK commit

b541ca65d697dad0915d1b5b8d8c756cd18299a7

Support Open Source

Check us out on Github and join the Airbyte community

Github

Installation & Usage

Get started with the Harvest connector in minutes

1

Install Package

Using uv or pip

bash

Copy
uv pip install airbyte-agent-harvest

2

Import

Initialize and use

python

Copy
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>"
    )
)

3

Tool

Add tools to your agent

python

Copy
@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 {})

Supported Entities & Actions

Access all your Harvest data through a unified API

Lorem ipsum

Lorem ipsum

| Entity | Actions |\n|--------|---------|\n| Users | [List](./REFERENCE.md#users-list), [Get](./REFERENCE.md#users-get), [Search](./REFERENCE.md#users-search) |\n| Clients | [List](./REFERENCE.md#clients-list), [Get](./REFERENCE.md#clients-get), [Search](./REFERENCE.md#clients-search) |\n| Contacts | [List](./REFERENCE.md#contacts-list), [Get](./REFERENCE.md#contacts-get), [Search](./REFERENCE.md#contacts-search) |\n| Company | [Get](./REFERENCE.md#company-get), [Search](./REFERENCE.md#company-search) |\n| Projects | [List](./REFERENCE.md#projects-list), [Get](./REFERENCE.md#projects-get), [Search](./REFERENCE.md#projects-search) |\n| Tasks | [List](./REFERENCE.md#tasks-list), [Get](./REFERENCE.md#tasks-get), [Search](./REFERENCE.md#tasks-search) |\n| Time Entries | [List](./REFERENCE.md#time-entries-list), [Get](./REFERENCE.md#time-entries-get), [Search](./REFERENCE.md#time-entries-search) |\n| Invoices | [List](./REFERENCE.md#invoices-list), [Get](./REFERENCE.md#invoices-get), [Search](./REFERENCE.md#invoices-search) |\n| Invoice Item Categories | [List](./REFERENCE.md#invoice-item-categories-list), [Get](./REFERENCE.md#invoice-item-categories-get), [Search](./REFERENCE.md#invoice-item-categories-search) |\n| Estimates | [List](./REFERENCE.md#estimates-list), [Get](./REFERENCE.md#estimates-get), [Search](./REFERENCE.md#estimates-search) |\n| Estimate Item Categories | [List](./REFERENCE.md#estimate-item-categories-list), [Get](./REFERENCE.md#estimate-item-categories-get), [Search](./REFERENCE.md#estimate-item-categories-search) |\n| Expenses | [List](./REFERENCE.md#expenses-list), [Get](./REFERENCE.md#expenses-get), [Search](./REFERENCE.md#expenses-search) |\n| Expense Categories | [List](./REFERENCE.md#expense-categories-list), [Get](./REFERENCE.md#expense-categories-get), [Search](./REFERENCE.md#expense-categories-search) |\n| Roles | [List](./REFERENCE.md#roles-list), [Get](./REFERENCE.md#roles-get), [Search](./REFERENCE.md#roles-search) |\n| User Assignments | [List](./REFERENCE.md#user-assignments-list), [Search](./REFERENCE.md#user-assignments-search) |\n| Task Assignments | [List](./REFERENCE.md#task-assignments-list), [Search](./REFERENCE.md#task-assignments-search) |\n| Time Projects | [List](./REFERENCE.md#time-projects-list), [Search](./REFERENCE.md#time-projects-search) |\n| Time Tasks | [List](./REFERENCE.md#time-tasks-list), [Search](./REFERENCE.md#time-tasks-search) |

Example Prompts

The Harvest connector is optimized to handle prompts like these

Lorem ipsum

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?

Why Airbyte for AI Agents?

Built for production AI workloads with enterprise-grade reliability

Agent-Native Design

Structured, LLM-friendly schemas optimized for AI agent consumption with natural language query support.

Secure Authentication

Built-in OAuth 2.0 handling with automatic token refresh. No hard-coded credentials.

Production Ready

Battle-tested connectors with comprehensive error handling, logging, and retry logic.

Open Source

Fully open source under the MIT license. Contribute, customize, and extend freely.

Works with your favorite frameworks

Use the Harvest connector with any AI agent framework

🦜

LangChain

🦙

LlamaIndex

🤖

CrewAI

AutoGen

🧠

OpenAI Agents SDK

🔮

Claude Agents SDK

Frequently Asked Questions

Didn't find your answer? Please don't hesitate to reach out.

How do I authenticate with Harvest?

The Harvest connector supports Personal Access Token authentication via the HarvestPersonalAccessTokenAuthConfig, requiring both a personal access token and an account ID. In hosted mode, it also supports authentication via Airbyte Cloud credentials (AirbyteAuthConfig).

Can I use this connector with any AI agent framework?

The connector is compatible with any Python-based AI agent framework including LangChain, LlamaIndex, CrewAI, Pydantic AI, and custom implementations.

Does this connector support write operations?

The Harvest connector currently supports read operations only. Write operations such as creating time entries, updating project budgets, deleting invoices, or starting timers are not currently supported.

How is this different from the Airbyte data connector?

Agent connectors are specifically designed for AI agents and LLM applications. They provide natural language interfaces, optimized response formats, and seamless integration with agent frameworks, unlike traditional ETL-focused connectors.

Will there be a platform for agent connectors?

The hosted version with secure credential storage through Airbyte Cloud is already available. See the hosted usage section in the documentation for setup instructions.

20,000+
community members
6,000+
daily active companies
2PB+
synced/month
900+
contributors