Skip to content

Time Tracking

Hourtick
API integration

Ship Time Tracking features without building the integration. Full Hourtick API access via Proxy and 110+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Talk to us
Hourtick

Use Cases

Why integrate with Hourtick

Common scenarios for SaaS companies building Hourtick integrations for their customers.

01

Unify human and AI labor costs in billing workflows

Accounting and invoicing platforms can pull approved timesheets alongside AI agent token costs from Hourtick to generate itemized invoices that show clients exactly what humans delivered versus what AI agents consumed on each project.

02

Log AI agent costs from external bot platforms

AI builder and orchestration platforms can register their bots as first-class Hourtick agents and push per-task token usage and compute costs into the client's project ledger, so end customers see unified P&L inside Hourtick.

03

Embed time tracking and AI delegation inside helpdesks and CRMs

Support and CRM products can let agents start timers, log work items, or delegate tickets to Hourtick AI agents directly from their ticket UI, with all time and token costs linked back to the originating CRM record.

04

Mirror tasks between external PM tools and Hourtick

Project management SaaS can push issues and tickets into Hourtick as work items so hybrid teams can track time against them, then pull time entries back to keep both systems in sync.

05

Power AI ROI and agent efficiency dashboards

BI and analytics platforms can ingest Hourtick's agent outcome and cost reconciliation reports to show leaders which models are saving money and which are driving excessive human rework.

What You Can Build

Ship these features with Truto + Hourtick

Concrete product features your team can ship faster by leveraging Truto’s Hourtick integration instead of building from scratch.

01

Hybrid human + AI invoicing

Pull approved timesheets, member cost rates, and agent cost ledgers to auto-generate invoices itemizing human hours and AI token spend per project.

02

Two-way work item sync

Create and update Hourtick work items from external tickets and use work item links to maintain bidirectional references with your source system.

03

Agent cost ingestion pipeline

Register external bots as Hourtick agents and stream per-task token usage into Hourtick's agent cost ledger as workflows complete.

04

Embedded timer controls

Use idempotent Hourtick commands to safely start, stop, and switch timers from browser extensions, desktop widgets, or in-app buttons without duplicate state.

05

Live activity and timesheet feed

Subscribe to Hourtick streams to render real-time timer status, task updates, and presence inside your product without polling.

06

Client-ready AI transparency reports

Fetch pre-built client AI reports to show end customers a breakdown of human vs. AI contribution on each engagement directly inside your dashboard.

SuperAI

Hourtick AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_hourtick_bootstraps

Retrieve the Hourtick bootstrap for the current user: who they are and what they can track on. Returns: user, workspace, profile, clients, projects, tasks, recent. Takes no parameters.

list_all_hourtick_time_entries

List your Hourtick time entries within a date range, including your currently running timer if one is active. Returns time-entry records with: id, version, notes, billable, spentDate, durationSeconds, projectId, taskId, workItemId, and userId. Required: from, to.

hourtick_time_entries_bulk_update

Update one or many time entries in Hourtick by applying one patch (notes, projectId, taskId, spentDate, durationSeconds, or userId to reassign the time) to every listed entry. Returns: updated, entries. Up to 500 entries per request; running, invoiced, submitted or approved entries and stale versions fail atomically with…. Required: entries, patch.

create_a_hourtick_command

Run a Hourtick time command: start, restart, stop, create, edit, delete, or restore a time entry. start stops any running timer; edit and delete require expectedVersion. Returns the resulting time entries with their id, projectId, taskId, notes, billable, durationSeconds, and version. Each command carries an idempotent commandId, so retrying is always safe. Required: commandId, command.

list_all_hourtick_reports

Get a Hourtick report of totals, groups and time entries for a period (team scope for managers; admins also get P&L — costs, profit and uncosted seconds — inside totals and groups). Returns: scope, totals, groups, entries, truncated. Set format to csv for CSV output instead of JSON. Required: from, to.

list_all_hourtick_streams

Server-Sent Events: live entry changes for your account and task changes in the workspace.

list_all_hourtick_timesheets

Get your timesheet status for one week in Hourtick. Returns the week object with weekStart and status (null when not submitted, otherwise submitted, approved or rejected). Required: weekStart, the Monday of the week (e.g. 2026-08-03).

create_a_hourtick_timesheet

Submit or withdraw a timesheet week in Hourtick. Returns a JSON object whose field set is not enumerated upstream — the API documents an untyped object response. A 409 is returned when the week is in the wrong state for the requested action. Required: weekStart, action.

list_all_hourtick_approvals

List the weeks waiting for approval in Hourtick (managers). Optionally filter by status, `submitted` or `approved`. Returns a JSON object; the API spec documents no specific fields for it.

create_a_hourtick_approval

Approve, send back, or reopen a team member's week in Hourtick (managers). Returns a JSON object; the API spec documents no specific fields for it. Requires userId, weekStart, and action (`approve`, `reject`, or `reopen`). Required: userId, weekStart, action.

create_a_hourtick_invoicing

Mark hourtick time entries as invoiced (or revert them) in bulk. Returns: updated. Admin-only; marked entries are locked. Required: entryIds, invoiced.

list_all_hourtick_members

List all members of a Hourtick workspace (managers). Returns each member's id and the upstream member fields (attributes). No query parameters are required.

list_all_hourtick_cost_rates

List every member's hourly cost rates in Hourtick, newest first. Returns: userId, hourlyCostMinor, validFrom. Requires admin access.

hourtick_member_cost_rates_bulk_update

Set a member's hourly cost rate in hourtick, effective from a given day — time is costed at the rate valid on its day. Returns: validFrom. Admins only; set hourlyCost to null to remove the rate that starts on validFrom. Required: user_id, hourlyCost.

list_all_hourtick_agent_costs

List the Hourtick agent cost ledger for a period. Returns cost rows with costUsd, model, inputTokens, outputTokens, agentId, and spentDate; an agent's own rows, or all for admins (agentId narrows it). Required: from, to.

create_a_hourtick_agent_cost

Report what a piece of work cost in Hourtick; it counts toward the agent's budget and the P&L, and each cost is reported once (here, MCP log_time usage, or session usage). Returns the created cost record with costUsd, model, inputTokens, outputTokens, agentId, and spentDate. Admins pass agentId to report for another agent; spentDate defaults to today.

delete_a_hourtick_agent_cost_by_id

Delete an agent cost row in hourtick by id. Use this to remove an incorrectly recorded cost. Returns an empty 204 response on success. Required: id.

list_all_hourtick_ai_providers

List the AI provider connections in Hourtick used for verified agent cost. Returns each connection's id, provider, label, and fillGaps setting; keys are never returned, only their last 4 characters.

create_a_hourtick_ai_provider

Connect an Anthropic, OpenAI, or OpenRouter key in Hourtick to read what the provider billed for agent work; the key is checked against the provider, then stored encrypted. Returns the created connection with id, provider, label, and fillGaps. Required: provider, key.

update_a_hourtick_ai_provider_by_id

Rename an AI provider connection in Hourtick, or turn gap-filling from provider bills on or off. Returns an empty 204 response on success. Required: id.

delete_a_hourtick_ai_provider_by_id

Delete an AI provider connection in Hourtick, removing the stored key, its synced bills, and the cost it filled in. Returns an empty 204 response on success. Required: id.

list_all_hourtick_ai_provider_scopes

List the AI provider scopes in hourtick: what the connected AI provider's key can see — Anthropic workspaces, OpenAI projects and API keys, OpenRouter keys — and which agent each is mapped to. Returns a single JSON object whose field structure is not documented in the upstream API reference. Required: ai_provider_id.

hourtick_ai_provider_scopes_bulk_update

Map an AI provider scope to an agent in hourtick, or clear the mapping by passing agentId as null. Returns an empty 204 response on success. For OpenAI, an agent can map to projects or API keys but not both. Required: ai_provider_id, scopeType, scopeId, agentId.

create_a_hourtick_ai_provider_sync

Trigger a manual sync of an AI provider in hourtick to read its last 30 days of bills now and reconcile them (the same sync also runs automatically every 6 hours). Returns: rows. Required: ai_provider_id.

list_all_hourtick_reports_cost_reconciliations

Get the Hourtick agent cost reconciliation report: what agents reported as their cost vs what the providers (Anthropic, OpenAI, OpenRouter) billed, per agent and UTC month, including what was filled in from the cost ledger source. Admins only. Returns the report object with report-specific fields (the upstream API does not enumerate them). Required: from, to.

list_all_hourtick_reports_agent_outcomes

List Hourtick agent outcomes for a date range: for each task with agent work done in the period, the agent's time and cost, people's time before (briefing) and after (review and rework) delivery, how often work was sent back, and who approved it. Returns: currency, from, to, totals, agents, tasks. Required: from, to.

list_all_hourtick_client_ai_reports_previews

Preview a client AI work report in Hourtick without sharing it: people's and agents' hours, agents and models used, and whether a person reviewed each piece of agent work (no rates, costs or notes). Returns the report object with report-specific fields. Required: clientId, from, to.

list_all_hourtick_client_ai_reports

List shared client AI work reports in Hourtick, newest first. Returns each report's id and report content (hours by people and agents, models used, human review); links are not included.

create_a_hourtick_client_ai_report

Freeze a client AI work report for a Hourtick client and get a share link. Returns: id. Admins only. Required: clientId, from, to.

delete_a_hourtick_client_ai_report_by_id

Revoke a shared client AI work report in Hourtick by id; its share link stops working at once. Returns an empty 204 response on success. Admins only. Required: id.

get_single_hourtick_ai_report_by_id

Get a shared client AI work report from Hourtick by id (the token from the report's share link). Returns the report content plus fingerprint, createdAt, and fingerprintMethod. Unknown or revoked tokens return 404. Required: id.

list_all_hourtick_integrations

List the vendor integrations Hourtick supports (Linear, Notion, Teamwork, Asana) and whether you are connected to each. Returns: id, label, available, asks, connection.

create_a_hourtick_integration

Start connecting a vendor integration (linear, notion, teamwork or asana) in Hourtick. Returns: url. Required: provider.

hourtick_integrations_bulk_delete

Disconnect a vendor integration (linear, notion, teamwork or asana) from Hourtick: forgets the stored tokens and asks the vendor to revoke them where it supports that. Returns an empty 204 response on success. Required: provider.

list_all_hourtick_work_item_links

List the items linked to a Hourtick work item (Linear issues, Notion pages, Teamwork or Asana tasks). Returns each link's id, provider, label, url, title, and status, with title and status refreshed when older than 5 minutes. Required: work_item_id.

create_a_hourtick_work_item_link

Link a Linear issue, Notion page, Teamwork task or Asana task to a Hourtick work item by its address (a Linear identifier such as ENG-123 also works). Returns the created link with id, provider, label, url, title, and status. One link per provider per task — a new link replaces the old, and the provider must already be connected. Required: work_item_id, url.

delete_a_hourtick_work_item_link_by_id

Remove a link from a Hourtick work item. Time already sent to Teamwork stays there. Returns an empty 204 response on success. Required: id, work_item_id.

list_all_hourtick_notes

List notes on a project or client in Hourtick, newest edit first, with titles and previews. Returns each note's id, title, preview, updatedAt, updatedBy, and createdBy. Give either projectId or clientId.

create_a_hourtick_note

Create a note on a project or client in Hourtick, sending the document as markdown or as Tiptap JSON in content. Returns the created note including id, title, version, markdown, and updatedAt.

get_single_hourtick_note_by_id

Get a single note by id in Hourtick. Returns the full note including title, Tiptap content, markdown, plain text, and version. Required: id.

update_a_hourtick_note_by_id

Save a note by id in Hourtick: replace the title and/or document (markdown or Tiptap content) against the version you started from, or append with appendMarkdown without a version. On a 409 conflict, resend with force: true to keep yours. Returns the saved note including id, title, version, and updatedAt. Required: id.

delete_a_hourtick_note_by_id

Delete a note by id in Hourtick (its creator or a manager). Returns an empty 204 response on success. Required: id.

list_all_hourtick_files

List files attached to a Hourtick project or client, newest first. Returns attachment records including id, created_at, and updated_at. Filter by projectId or clientId.

create_a_hourtick_file

Upload a file to a Hourtick project or client as multipart form data. Returns the created file record including id, created_at, and updated_at. Up to 25 MB; uploads count toward usage and pause when the limit is reached.

get_single_hourtick_file_by_id

Open a Hourtick file by id and get its short-lived signed URL — the endpoint answers with a 302 redirect, or a `{ url }` JSON body when JSON output is requested. Returns: url. Required: id.

delete_a_hourtick_file_by_id

Delete a Hourtick file by id. Only the file's uploader or a manager may delete it. Returns an empty 204 response on success. Required: id.

list_all_hourtick_records_counts

Get the number of notes and files attached to each project and client in Hourtick. Returns: projects, clients. Takes no parameters.

list_all_hourtick_clients

List Hourtick clients with their VAT numbers and active project counts. Returns each client's id, name, vatNumber, and activeProjectCount.

create_a_hourtick_client

Create a client in Hourtick (admins, or an agent an admin allows), optionally with a VAT number; the creation records who added it. Returns: id, name, vatNumber. Requires name (1–200 characters). Required: name.

update_a_hourtick_client_by_id

Update a client in Hourtick: rename it, set or clear its VAT number, or archive it. Returns the updated client object including id, name, vatNumber, and archived. Client names must be unique. Required: id.

create_a_hourtick_project

Create a project in Hourtick. Returns the created project record including its id, name, color, billingType, budgetHours, and hourlyRate. Requires name, clientId, color, and billingType. Required: name, clientId, color, billingType.

update_a_hourtick_project_by_id

Update a project in Hourtick by id — change billing, budget, hourly rate, task types, team members, or archive it. Returns the updated project record including its id, name, color, billingType, budgetHours, and hourlyRate. Required: id.

list_all_hourtick_work_items

List Hourtick tasks on the board — open ones plus those done in the last 14 days (send done=all for everything). Returns tasks with id, title, status, priority, labels, and assigneeIds; optionally filter by projectId or assigneeId.

create_a_hourtick_work_item

Create a task in Hourtick. Returns the created task with id, title, status, priority, dueDate, and labels. Required: title.

get_single_hourtick_work_item_by_id

Get a single Hourtick task by id, including its description, checklist, timeline (comments, files, events) and time per person. Returns the task with id, title, status, priority, and assigneeIds. Required: id.

update_a_hourtick_work_item_by_id

Update a Hourtick task by id. To move it between board columns send status (and position to place it — lower is higher up). Returns the updated task with id, title, status, priority, and labels. Required: id.

delete_a_hourtick_work_item_by_id

Delete a Hourtick task by id, along with its comments and files; tracked time is kept. Returns an empty 204 response on success. Required: id.

update_a_hourtick_work_item_comment_by_id

Edit your comment on a Hourtick work item. Returns an empty 204 response on success. Max body 10000 characters. Required: id, work_item_id, body.

delete_a_hourtick_work_item_comment_by_id

Delete a comment and its files from a Hourtick work item (author or managers). Returns an empty 204 response on success. Required: id, work_item_id.

create_a_hourtick_work_item_comment

Post a comment in a Hourtick work item's chat. Returns the created comment with its id. Max body 10000 characters. Required: work_item_id, body.

create_a_hourtick_work_item_checklist

Add a checklist item to a work item in Hourtick. Returns: id, title. Title must be 1-500 characters. Required: work_item_id, title.

update_a_hourtick_work_item_checklist_by_id

Tick, rename or move a checklist item on a work item in Hourtick. Returns an empty 204 response on success. Required: id, work_item_id.

delete_a_hourtick_work_item_checklist_by_id

Remove a checklist item from a work item in Hourtick. Returns an empty 204 response on success. Required: id, work_item_id.

get_single_hourtick_attachment_by_id

Get an attachment in Hourtick by id. Returns a 302 redirect to a 5-minute signed URL (no response body); images, PDFs, video, audio and text preview inline while other file types download. Required: id.

delete_a_hourtick_attachment_by_id

Delete a file in Hourtick by id (only the uploader or managers may delete). Returns an empty 204 response on success. Required: id.

list_all_hourtick_task_views

List your saved task views in Hourtick (personal). Returns each view's id, name, filters (people, projects, clients, labels, q, layout) and position.

create_a_hourtick_task_view

Create a saved task view in Hourtick with people, projects, clients and labels (any-of; `none` for unset), search and layout. Returns: id, name, filters. Required: name, filters.

update_a_hourtick_task_view_by_id

Update a saved task view in Hourtick — rename it, change its filters or move it. Returns the updated view's id, name, filters and position. All body fields are optional. Required: id.

delete_a_hourtick_task_view_by_id

Delete a saved task view in Hourtick by id. Returns an empty 204 response on success. Required: id.

list_all_hourtick_usages

Get hourtick's usage for the current month and the plan's limit in bytes (1 GB = 10^9), covering stored database and file data plus data in and out since the 1st. Returns: dbBytes, fileBytes, usedBytes, limitBytes, measuredAt.

hourtick_billing_storages_bulk_update

Set the workspace's extra storage in Hourtick (admins only): extraGb gigabytes on the Pro plan at $10 per GB per month, with added storage charged pro rata right away. Requires extraGb (0-1000); the workspace must be on the Pro plan. Returns an opaque JSON object on success (response fields are not specified upstream). Required: extraGb.

list_all_hourtick_chat_channels

List your Hourtick chat channels and direct messages with their unread and mention counts. Returns: id, name, topic, created_at, updated_at. Set browse to include public channels you haven't joined.

create_a_hourtick_chat_channel

Create a channel in Hourtick; the name is slugged and must be unique. Returns the created channel with id, name, topic, and created_at. Required: name.

update_a_hourtick_chat_channel_by_id

Update a Hourtick chat channel — rename it, set its topic, or archive it. Returns an empty 204 response on success. Required: id.

list_all_hourtick_searches

Search the Hourtick workspace (the ⌘K palette) across tasks (by number, e.g. #12, or title), your own time entries (notes, project, task type), projects, clients, people and the channels you can see. Returns: tasks, entries, projects, clients, people, channels — a few of each, best matches first. Required: q.

list_all_hourtick_gifs

List GIFs for the Hourtick chat picker (powered by GIPHY): trending when no search term is given, otherwise a rated-G search. Returns up to 24 GIFs with id, title, preview (with size) and url (with width and height). Post one in chat as ![title](url#WxH) — only GIPHY media URLs render as images.

get_single_hourtick_chat_file_by_id

Get a chat file in Hourtick by id. The endpoint responds with a redirect to a pre-signed URL that is valid for 5 minutes rather than a JSON body. Required: id.

create_a_hourtick_chat_dm

Open (or reuse) a direct message with one or more people and agents in hourtick. Accepts up to 20 userIds and 10 agentIds (UUIDs); both fields are optional and default to empty lists. Returns a JSON object whose field-level shape is not enumerated in the upstream API spec.

update_a_hourtick_chat_message_by_id

Edit the text of your own chat message in Hourtick by id. Returns an empty 204 response on success. Required: id, body.

delete_a_hourtick_chat_message_by_id

Delete a chat message and its files in Hourtick by id (allowed for the message author or managers). Returns an empty 204 response on success. Required: id.

list_all_hourtick_chat_messages

List chat messages in a Hourtick channel. Returns up to 50 top-level messages, newest last, each with id, body, parentId, refs, and created_at. Required: channel_id.

create_a_hourtick_chat_message

Post a message to a Hourtick chat channel. Returns the created message with id, body, parentId, attachmentIds, refs, and created_at. Max 20000 characters; up to 20 attachmentIds; mentioning an agent queues a session. Required: channel_id, body.

create_a_hourtick_chat_typing

Send a typing indicator in an hourtick chat channel; the indicator is shown for 5 seconds. Returns an empty 204 response on success. Required: channelId.

hourtick_chats_search

Search Hourtick chat messages with a full-text query, returning only messages visible to you. Returns an opaque JSON object of matching message results; the upstream schema does not enumerate the result fields. Required: q.

list_all_hourtick_presences

List Hourtick presence: who's online, what they're tracking (if they share it), and which agents are connected. Returns the presence snapshot as an untyped JSON object; the upstream API spec does not enumerate its fields.

list_all_hourtick_agents

List the AI agents in your Hourtick workspace. Returns each agent's provider, model, skills, access, and canUse (whether you may ask it).

create_a_hourtick_agent

Create a new AI agent in Hourtick (admins only). Returns the created agent — provider, model, skills, access, canUse — and its token, shown only once. Required: name.

update_a_hourtick_agent_by_id

Update an AI agent in Hourtick by id: rename it, set provider, model, skills, access, scope, budgets, expiry, instructions, or webhooks. Returns webhookSecret when a new webhook is set; otherwise an empty 204 response on success. Required: id.

create_a_hourtick_work_item_dependency

Create a work item dependency in hourtick: mark this work item as blocked by another (type `blocked_by`) or as blocking another (type `blocks`). Returns a JSON object whose fields are not enumerated upstream. Refuses self-references, dependency loops, and more than 50 blockers; a blocked work item can't move to in progress, review, or done until its…. Required: work_item_id, type, workItemId.

hourtick_work_item_dependencies_bulk_delete

Delete a work item dependency in hourtick by removing the `blocked_by` or `blocks` relation between two work items; a work item with no open blockers left unlocks. Returns a JSON object whose fields are not enumerated upstream. Required: work_item_id, type, workItemId.

list_all_hourtick_agent_instructions

List an agent's instructions in hourtick, including every earlier version. Returns an untyped object of the agent's instructions and version history; its field-level shape is not specified upstream. Owner or admins only. Required: agent_id.

create_a_hourtick_agent_webhook

Run a webhook action for an agent in hourtick: `test` sends a signed agent.ping to the agent's webhook and returns the status it received, while `rotate` issues a new signing secret that is shown only once. Returns an action-dependent JSON object whose fields are not documented (test reports the ping outcome, rotate returns the secret). Required: agent_id, action.

list_all_hourtick_agent_requests

List agent requests for new agents in Hourtick: admins see all requests, other users see only their own. Returns an opaque JSON object; the upstream API does not document its response fields.

create_a_hourtick_agent_request

Create an agent request in Hourtick asking the admins for a new agent. Returns the created request with id, name, provider, model, skills, and created_at. Required: name.

update_a_hourtick_agent_request_by_id

Approve or decline an agent request in Hourtick by id; approving creates the requested agent owned by you without a token. Returns an opaque JSON object; the upstream API does not document its response fields. Required: id, approve.

create_a_hourtick_agent_token

Create a new token for a specific hourtick agent, replacing the agent's existing token. Returns: token. Required: agent_id.

get_single_hourtick_agent_session_by_id

Get an agent session in hourtick by id. Returns the session object with its status, steps, answer and reported tokens and cost, plus the helpers array of sessions it delegated to. Required: id.

hourtick_agent_sessions_cancel

Cancel an agent session in hourtick, stopping the agent's work and every helper it delegated to. Returns an empty 204 response on success. Required: agent_session_id.

create_a_hourtick_delegation

Delegate work to a Hourtick agent by name, either against an existing task (workItemId), as a new task (title), or as a quick request with instructions alone. Returns the created agent session. Rejected on unknown agent, too-deep or looping delegation chains, or a full agent queue. Required: agent, instructions.

create_a_hourtick_workspace

Create a new Hourtick workspace that you own, seeded with a starter client, project and task types; you stay in your current workspace until you switch. Returns an empty 201 response on success. Requires name (1-80 characters). Maximum 20 owned workspaces. Required: name.

list_all_hourtick_connected_apps

List the apps connected to Hourtick over OAuth (ChatGPT, Claude and similar) that act as you in your default workspace. Returns the connected-apps payload including each app's clientId, the identifier to pass as id when disconnecting an app.

delete_a_hourtick_connected_app_by_id

Disconnect an app connected to Hourtick over OAuth; its access tokens stop working at once. Returns an empty 204 response on success. Required: id.

create_a_hourtick_work_item_delegate

Delegate a Hourtick work item to an agent — hands the task to the agent while the people on it stay responsible. Requires work_item_id and agentId. Returns a 201 confirmation response; the API does not enumerate the response body fields. Required: work_item_id, agentId.

list_all_hourtick_work_item_agent_sessions

List the agent sessions for a Hourtick work item, with each session's activity on the task. Returns a JSON payload whose fields the Hourtick API reference does not enumerate. Required: work_item_id.

list_all_hourtick_activities

Get your day's activity from Hourtick — tracked time entries plus what you did that day (tasks created, moved or commented on, chat messages per channel, agent requests) — for drafting a timesheet. Returns a single day-summary object (attributes) whose exact fields are activity-specific and not enumerated in the upstream spec.

list_all_hourtick_reports_agents

Get Hourtick's agent usage report for a date range: how long agents worked on requests, tokens used and reported cost in USD, broken down by agent and project. Time agents log also appears as its own rows in the normal reports. Returns the report as a JSON object; the upstream spec does not enumerate its fields. Required: from, to.

create_a_hourtick_task

Create a new task type in Hourtick (admins). Returns the created task type including id, name, and billable. Requires name (1–200 characters). Required: name.

update_a_hourtick_task_by_id

Update an existing task type in Hourtick (admins) by id. Returns the updated task type including id, name, billable, and archived. Required: id.

create_a_hourtick_chat_message_task

Turn a chat message into a task in Hourtick; a reply is posted in the thread linking back to the new task. Returns the created task (a Hourtick WorkItem) in the item field. Required: message_id.

create_a_hourtick_work_item_attachment

Upload a file attachment to a Hourtick work item. Returns the created attachment object including its id, created_at, and updated_at; link the file into the task by posting a comment with its id. Files up to 25 MB. Required: work_item_id.

create_a_hourtick_chat_message_reaction

Toggle an emoji reaction on a Hourtick chat message. Returns an empty 204 response on success. Required: message_id, emoji.

create_a_hourtick_chat_channel_member

Add people and AI agents as members of a Hourtick chat channel. Returns an empty 204 response on success. Required: channel_id.

create_a_hourtick_channel_file

Upload a file to a Hourtick chat channel as a multipart attachment. Returns the uploaded file's id, which you then pass in `attachmentIds` when posting a message to the channel. Files up to 25 MB; uploads pause once this month's usage is used up. Required: channel_id.

create_a_hourtick_channel_join

Join a public chat channel in hourtick by its UUID. Returns an empty 204 response on success. Required: channel_id.

create_a_hourtick_channel_leaf

Leave a channel in hourtick. Returns an empty 204 response on success. Required: channel_id.

create_a_hourtick_channel_read

Mark a chat channel as read in hourtick. Returns an empty 204 response on success. Required: channel_id.

hourtick_channel_preferences_bulk_update

Update your notification preferences for a chat channel in hourtick. `muteAll: true` stops `@all` from mentioning you in this channel while direct mentions still reach you. Returns an empty 204 response on success. Required: channel_id, muteAll.

list_all_hourtick_agent_events

List a Hourtick agent's activity log together with this month's usage against its budget. Returns a JSON object combining the activity log with current-month budget usage; the API spec does not enumerate the response fields. Required: agent_id.

create_a_hourtick_workspace_switch

Switch the signed-in device to another hourtick workspace you are a member of and make it the default. Returns: workspaceId, role. Applies to sign-in sessions only; API and agent tokens stay in their own workspace. Required: workspaceId.

Why Truto

Why use Truto’s MCP server for Hourtick

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Hourtick in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Hourtick account

Use Truto’s frontend SDK to connect your customer’s Hourtick account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Hourtick

Truto’s Proxy API is a 1-to-1 mapping of the Hourtick API. You call us, we call Hourtick, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Hourtick’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Hourtick on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How is authentication handled for Hourtick connections?

Truto manages the full auth lifecycle for Hourtick on your behalf, so your end users connect their Hourtick workspace through a hosted flow and your product receives a ready-to-use connection without you handling credentials or token refresh.

Can we track AI agent token costs alongside human time?

Yes. Hourtick exposes agent cost endpoints for creating and listing per-task token usage and USD cost, which can be combined with time entries and member cost rates to produce unified human + AI cost views.

How do we keep data fresh without aggressive polling?

Hourtick provides a streams endpoint that delivers live events for timers, work items, and activity, letting you maintain near real-time sync in your product instead of polling list endpoints.

Can we safely trigger timer start/stop from an external UI?

Yes. Hourtick's command endpoint is idempotent, so timer actions issued from browser extensions, desktop apps, or embedded widgets won't double-fire if a request is retried over a flaky network.

What project management operations are supported?

You can create, update, and delete work items, manage comments, checklists, attachments, dependencies, and task views, and link Hourtick work items to external records via work item links for bidirectional sync.

Can we pull approved timesheets for payroll or invoicing?

Yes. Timesheets, approvals, member cost rates, and invoicing endpoints are all available, so you can ingest only approved hours and apply the correct rates when pushing data to billing or payroll systems.

Hourtick

Get Hourtick integrated into your app

Our team understands what it takes to make a Hourtick integration successful. A short, crisp 30 minute call with folks who understand the problem.