Everhour integrationEverhour logo

Everhour integration for AI agents.

Everhour integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves Everhour tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.

What your agents can do

Real Everhour actions, managed and audited.

Your user connects Everhour once; your agent can then time tracking with built-in billing and budgeting. Set project budgets, track billable hours, and get threshold alerts—all inside Asana, ClickUp, Monday, Jira & more. Free trial — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.

  1. 1

    Your user grants Everhour access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

Supported Everhour tools.

101 tools are generated from the published Everhour catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.

Showing 101 tools. All published catalog entries are included in this page's server-rendered HTML.

Add Attachment To Expense
Attach a previously uploaded file (by its token from `POST /attachments`) to an existing expense.
Expenses
Add Time
Add a time record (in seconds) for a user on a given task and date. **Upsert:** at most one time record exists per `(user, date, task)`. Posting again with the same combination updates the existing record's duration instead of creating a duplicate. To update a specific record by ID, use `PUT /time/{time_id}`. See [Dates](/dates-and-timezones) for accepted date and duration formats.
Time Records
Approve or Reject Approval Request
Approve or reject an existing timesheet approval request. Use this endpoint to act on a request previously created with `POST /timesheets/{timesheet_id}/approval`. The response reflects the resulting approval state.
Timesheets
Approve Week/Request for Approval
Submit a timesheet week for approval. The week's owner uses this endpoint to request review; an approver acts on the request via `PUT /timesheets/{timesheet_id}/approval`. The `timesheet_id` is the concatenation of `user_id` and a 4-digit `week_id` in `YYWW` format (no separator). Example: user `14856` for week `2535` (week 35 of 2025) → `timesheet_id = 148562535`. See the Timesheets overview for the full Week ID definition.
Timesheets
Archive/Unarchive Project
Archive or unarchive a project. Archived projects are hidden from default listings but their data is preserved.
Projects
Clients Report
Aggregated client report. Same filters and units as `GET /dashboards/projects` — see [Concepts](/concepts).
Reports
Clock In
Clock a user in. Starts a new timecard segment at the current time.
Timecards
Clock Out
Clock a user out. Closes the current timecard segment.
Timecards
Create Allocation
Create a time-off allocation for a user and time-off type.
Time Off
Create Assignment
Create a schedule assignment. To create time-off use `POST /resource-planner/assignments/time-off` instead.
Schedule
Create Attachment
Upload a file and receive a one-time attachment token. The token can then be attached to an expense via `POST /expenses/{expense_id}/attachments` or included in `POST /expenses`.
Expenses
Create Category
Create a new expense category.
Expenses
Create Client
Create a new client. Names are not deduplicated — posting the same name creates another client.
Clients
Create Expense
Log a new expense. Amounts are in cents (see [Concepts](/concepts)); attach files first via `POST /attachments` and reference their IDs in the request body.
Expenses
Create Field in Project
Create a new custom field on a project.
Custom Fields
Create Invoice
Create an invoice for a client. The invoice is generated from the client's tracked time over the requested date range — see [Dates](/dates-and-timezones).
Invoices
Create Project
Create a new project. To copy from an existing template use the `template` or `publicTemplate` body field. To sync a project from a connected integration use `POST /projects/{project_id}/sync` instead.
Projects
Create Section
Create a new section in a project.
Projects
Create Task
Create a task in a project. For tasks coming from connected integrations, sync them via `POST /projects/{project_id}/sync` instead.
Tasks
Create Time Off Type
Create a new time-off type.
Time Off
Create Webhook
Register a new webhook subscription. **Handshake:** on create, Everhour sends a POST to the supplied `targetUrl` with an `X-Hook-Secret` header (HMAC-SHA512) and an empty body. The receiver must respond with a 2xx status to complete verification. Send `X-Skip-Handshake: 1` to skip verification when the receiver cannot participate. **Scope:** a webhook can listen across the whole team or be scoped to a single project. See [Webhooks](/webhooks) for event types, payload structure, and delivery semantics.
Webhooks
Delete Allocation
Delete a time-off allocation.
Time Off
Delete Assignment
Delete a schedule assignment. You can include an optional `reason` (max 1000 characters) in the request body.
Schedule
Delete Attachment
Delete an attachment and its underlying file.
Expenses
Delete Category
Delete an expense category. Expenses already assigned to it are kept but become uncategorized.
Expenses
Delete Client
Delete a client.
Clients
Delete Client Budget
Remove the budget attached to a client. The client itself is kept.
Clients
Delete Expense
Delete an expense entry. Attached files are also removed.
Expenses
Delete Field
Delete a custom field. Existing task values for that field are discarded.
Custom Fields
Delete Invoice
Delete an invoice. Time records attached to the invoice are released and become billable again.
Invoices
Delete Project
Delete a project, its tasks, and all associated time records. This is irreversible.
Projects
Delete Section
Delete a section. Tasks in the section are kept but become section-less.
Projects
Delete Task
Delete a task and all of its time records.
Tasks
Delete Task Estimate
Remove a task's estimate.
Tasks
Delete Time Off Type
Delete a time-off type. Existing time-off entries that reference it are kept.
Time Off
Delete Time Record
Remove a time record by setting its duration to zero. The history trail is preserved; the row no longer appears in time listings, which filter for `time > 0`.
Time Records
Delete Timecard
Delete a user's timecard entry for a specific date.
Timecards
Delete Webhook
Delete a webhook subscription. Stops further deliveries; no event is sent for the deletion itself.
Webhooks
Discard Your Approval Request
Retract the caller's previously submitted approval request for a week. The week returns to draft state.
Timesheets
Download Attachment
Download the binary contents of an attachment by its token. The response is the raw file, not JSON.
Expenses
Estimates Report (deprecated)
Legacy export of team estimates, returned as JSON. Requires admin access. Kept for backward compatibility; new integrations should use the dashboard reports.
Reports
Export Invoice to Xero/QB/FB
Export an invoice to a connected external accounting system. Supports Xero, QuickBooks, and FreshBooks integrations — the destination must be linked to the team beforehand. An invoice can only be exported once; subsequent calls return an error.
Invoices
Get All Allocations
List per-user time-off allocations (e.g. annual vacation balances).
Time Off
Get All Assignments
List schedule assignments across the team. Supports filtering by date range, project, and member.
Schedule
Get All Categories
List expense categories available in the team.
Expenses
Get All Clients
Search Clients by Name using the query parameter.
Clients
Get All Expenses
List expenses logged by the authenticated user.
Expenses
Get All Invoices
List invoices in the team. Supports filtering by date and client.
Invoices
Get All Projects
List projects the caller has access to. Use the `query` parameter to search by name and `limit`/`page` for pagination — see [Pagination](/pagination).
Projects
Get All Team Timers
List the timers currently running across the team — one entry per active user.
Timers
Get All Time Records
List time records across the entire team for a date range. When `from`/`to` are omitted, only the current day is returned. See [Dates](/dates-and-timezones).
Time Records
Get All Timecards
List timecards across the team. Defaults to the last two weeks when no date range is provided — see [Dates](/dates-and-timezones).
Timecards
Get All Users
List all members of the team. Supports `query` for name search and `limit` for pagination — see [Pagination](/pagination).
Users
Get All Webhooks
List all webhook subscriptions created with your API key.
Webhooks
Get Client
Retrieve a single client by ID.
Clients
Get Current User
Retrieve the user that owns the API key, including personal settings (timezone, formats, API key).
Users
Get Invoice
Retrieve a single invoice with its full line-item breakdown.
Invoices
Get Project
Retrieve a single project. See [Concepts](/concepts) for the project model.
Projects
Get Project Fields Configuration
List the custom fields configured on a project, in display order.
Custom Fields
Get Project Sections
List sections (groupings of tasks) within a project.
Projects
Get Project Tasks
List tasks in a project. By default all tasks are returned; set `exclude-closed=true` to hide closed/completed tasks. See [Pagination](/pagination) for `limit`/`page` rules.
Tasks
Get Project Time Records
List time records logged against a single project, across all users and tasks.
Time Records
Get Running Timer
Retrieve the authenticated user's currently running timer, or an empty timer payload if none is running.
Timers
Get Section
Retrieve a single section by ID.
Projects
Get Task
Retrieve a single task with its time totals, estimate, and custom fields.
Tasks
Get Task Time Records
List time records logged against a single task, across all users.
Time Records
Get Team Timesheets
List timesheet weeks across the team, grouped by user.
Timesheets
Get Time Off Types
List the time-off types defined for the team (e.g. Vacation, Sick Leave).
Time Off
Get Timecard
Retrieve a user's timecard for a specific date.
Timecards
Get User Time Records
List time records for a single user. Supports the same filters as `GET /team/time`.
Time Records
Get User Timecards
List timecards for a single user. Defaults to the last two weeks when no date range is provided.
Timecards
Get User Timesheets
List timesheet weeks for a single user. The week id is the Monday date of the week (see [Dates](/dates-and-timezones)).
Timesheets
Get Webhook
Retrieve a single webhook subscription.
Webhooks
Projects Report
Aggregated project report. Returns time, billing, and budget figures grouped by project. Filter the result with `date.gte`, `date.lte`, `projectId`, `clientId`, and `memberId` query parameters — see [Dates](/dates-and-timezones) for parameter formats. Time columns are in seconds, amounts in cents (see [Concepts](/concepts)).
Reports
Refresh Invoice Line Items
Refresh an invoice's line items from current time records. The invoice's billable items are rebuilt from the underlying time tracked against the invoice's client over its date range. Useful when time records have been added, edited, or deleted after the invoice was first generated.
Invoices
Reorder Fields
Reorder a project's custom fields. Send the full list of field IDs in the desired order.
Custom Fields
Search Project Tasks
Search tasks within a single project. Same query semantics as `GET /tasks/search`; `limit` must be between 1 and 100.
Tasks
Search Tasks
Search tasks across all projects by name. The `limit` parameter must be between 1 and 100.
Tasks
Start Timer
Start a timer for the authenticated user on a given task. Only one timer can run per user at a time. If the user already has a timer running on another task, that timer is stopped automatically before the new one starts; the stopped run is committed to a time record on its own date (the date the timer was started, which may not be today for cross-midnight runs). See [Concepts](/concepts) for timer semantics.
Timers
Stop Timer
Stop the authenticated user's currently running timer. The accumulated duration is committed to a time record on the timer's task for the current date and returned in the response.
Timers
Sync Integration Project
Sync new integration projects to Everhour. Traditionally, project sync relied on background jobs which could delay access to Everhour functionality. This endpoint allows instant synchronization of a project from a connected integration (like Trello, Asana, ClickUp, etc.) into Everhour. Useful for automation flows where you want to start working with a project immediately after creating it in your external tool. Safe to call multiple times — if the project already exists in Everhour, it simply returns it without creating duplicates. **Workflow** - Create a project in your external tool (Asana, Trello, etc.) and retrieve its ID. - Sync it to Everhour using this endpoint in Everhour API. - Proceed with other Everhour API actions — assign a budget, link a client, or set task estimates. Supported platform codes: as, b2, b3, bb, cl, gh, gl, in, li, mo, no, td, tw, tr, wr.
Projects
Time Report (deprecated)
Legacy export of team time records, returned as JSON. Kept for backward compatibility; new integrations should use `GET /team/time` or the dashboard reports.
Reports
Update Allocation
Update a time-off allocation's amount or period.
Time Off
Update Assignment
Update an existing schedule assignment.
Schedule
Update Category
Update an expense category.
Expenses
Update Client
Update an existing client. Only the fields supplied in the body are modified.
Clients
Update Client Budget
Create or replace the budget attached to a client. Send a complete budget object; partial updates are not supported.
Clients
Update Expense
Update an existing expense entry.
Expenses
Update Field
Update a custom field's name, type-specific options, or visibility.
Custom Fields
Update Invoice
Update invoice metadata (notes, dates, custom totals). To change the lifecycle state, set `manualStatus` to `draft`, `sent`, or `paid`.
Invoices
Update Project
Update project settings. To change budget or billable rate, use `PUT /projects/{project_id}/billing` instead.
Projects
Update Project Billing/Budget
Set or update the project's budget, billable rate, and billing type in a single call. Amounts are in cents (see [Concepts](/concepts)).
Projects
Update Section
Update a section's name or position.
Projects
Update Task
Update task fields (name, status, due date, section, labels).
Tasks
Update Task Billing
Set a task's billing rate or mark it non-billable. Requires admin access. The same values are returned on task responses when you pass `opts_include_billing=1`.
Tasks
Update Task Estimate
Set or replace a task's estimate (in seconds). Send a complete estimate object; partial updates are not supported.
Tasks
Update Time Off Type
Update a time-off type's name, color, or settings.
Time Off
Update Time Record
Update a specific time record by ID. To add or upsert time, use `POST /time` instead.
Time Records
Update Timecard
Update (or create, if missing) a user's timecard for a specific date. Suitable for manual edits — clock-in and clock-out have dedicated endpoints.
Timecards
Update Webhook
Update a webhook's events or scope. The `targetUrl` cannot be changed and is ignored if sent; the handshake is repeated against the existing URL to confirm it is still reachable. Send `X-Skip-Handshake: 1` to skip it.
Webhooks
Users Report
Aggregated member report. Same filters and units as `GET /dashboards/projects` — see [Concepts](/concepts).
Reports
FAQ

Everhour integration, answered

How do AI agents use Everhour through Open Connector?
Your user connects Everhour once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes Everhour tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
Is this a Everhour MCP server?
Yes. Open Connector can serve Everhour as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call Everhour actions with credentials injected server-side.
Where do Everhour credentials live?
In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.

Give your agents Everhour — keep the keys.

Open source, self-hostable, with Everhour credentials that never leave your infrastructure. Run it from source today.