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

1.0.3

Connector version

1.0.3

SDK commit

unknown

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-sdk

2

Import

Initialize and use

python

Copy
from airbyte_agent_sdk.connectors.harvest import HarvestConnector
from airbyte_agent_sdk.connectors.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), [Context Store Search](./REFERENCE.md#users-context-store-search) |\n| Clients | [List](./REFERENCE.md#clients-list), [Get](./REFERENCE.md#clients-get), [Context Store Search](./REFERENCE.md#clients-context-store-search) |\n| Contacts | [List](./REFERENCE.md#contacts-list), [Get](./REFERENCE.md#contacts-get), [Context Store Search](./REFERENCE.md#contacts-context-store-search) |\n| Company | [Get](./REFERENCE.md#company-get), [Context Store Search](./REFERENCE.md#company-context-store-search) |\n| Projects | [List](./REFERENCE.md#projects-list), [Get](./REFERENCE.md#projects-get), [Context Store Search](./REFERENCE.md#projects-context-store-search) |\n| Tasks | [List](./REFERENCE.md#tasks-list), [Get](./REFERENCE.md#tasks-get), [Context Store Search](./REFERENCE.md#tasks-context-store-search) |\n| Time Entries | [List](./REFERENCE.md#time-entries-list), [Get](./REFERENCE.md#time-entries-get), [Context Store Search](./REFERENCE.md#time-entries-context-store-search) |\n| Invoices | [List](./REFERENCE.md#invoices-list), [Get](./REFERENCE.md#invoices-get), [Context Store Search](./REFERENCE.md#invoices-context-store-search) |\n| Invoice Item Categories | [List](./REFERENCE.md#invoice-item-categories-list), [Get](./REFERENCE.md#invoice-item-categories-get), [Context Store Search](./REFERENCE.md#invoice-item-categories-context-store-search) |\n| Estimates | [List](./REFERENCE.md#estimates-list), [Get](./REFERENCE.md#estimates-get), [Context Store Search](./REFERENCE.md#estimates-context-store-search) |\n| Estimate Item Categories | [List](./REFERENCE.md#estimate-item-categories-list), [Get](./REFERENCE.md#estimate-item-categories-get), [Context Store Search](./REFERENCE.md#estimate-item-categories-context-store-search) |\n| Expenses | [List](./REFERENCE.md#expenses-list), [Get](./REFERENCE.md#expenses-get), [Context Store Search](./REFERENCE.md#expenses-context-store-search) |\n| Expense Categories | [List](./REFERENCE.md#expense-categories-list), [Get](./REFERENCE.md#expense-categories-get), [Context Store Search](./REFERENCE.md#expense-categories-context-store-search) |\n| Roles | [List](./REFERENCE.md#roles-list), [Get](./REFERENCE.md#roles-get), [Context Store Search](./REFERENCE.md#roles-context-store-search) |\n| User Assignments | [List](./REFERENCE.md#user-assignments-list), [Context Store Search](./REFERENCE.md#user-assignments-context-store-search) |\n| Task Assignments | [List](./REFERENCE.md#task-assignments-list), [Context Store Search](./REFERENCE.md#task-assignments-context-store-search) |\n| Time Projects | [List](./REFERENCE.md#time-projects-list), [Context Store Search](./REFERENCE.md#time-projects-context-store-search) |\n| Time Tasks | [List](./REFERENCE.md#time-tasks-list), [Context Store Search](./REFERENCE.md#time-tasks-context-store-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 in open source mode, requiring both a personal access token and an account ID. In hosted mode, credentials are stored securely in Airbyte Cloud using Airbyte OAuth credentials (client ID and client secret).

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?

Currently, the Harvest connector focuses on read operations only. Write operations such as creating time entries, updating project budgets, deleting invoices, or starting timers are not supported at this time.

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