Integration

Timesheet integration

Timesheet (timesheet.io) is a time-tracking app for freelancers and teams. An agent can run the timer (start, pause, resume, stop), record and edit tasks (time entries) with their breaks, expenses, notes, tags and billing rates, read per-day and total statistics, manage projects, to-dos, teams, organizations and their members, create invoices, timesheets and work records and print them as PDF, manage invoice numbering series and webhooks, and handle absence requests, absence types and leave balances (Business plan). Updates change only the fields sent. Left out: API key management, sign-in and account security (MFA, password, email change), file uploads and attachment removal, public project pages, HR configuration (contracts, employment models, holiday calendars, overtime and rest-period balances, audit logs), exports and report images (served by a separate Reports host), AI reminders, creating or editing automations (their action codes are undocumented), screenshot activity tracking and MCP event subscriptions. API access needs a Pro plan or above. Authentication is an API key generated in the web app at my.timesheet.io under Development, API Keys, sent in the Authorization header with the ApiKey scheme.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in Timesheet.Built from the 141 Timesheet tools below, on the connection you add once.

What you can do with Timesheet

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Each badge shows the default agent permission of an endpoint (allowed: an agent calls it without asking; ask first: you are asked before an agent calls it, when the agent or chat asks permission for sensitive actions; never: no agent may call it), which every user can change endpoint by endpoint in their credential settings.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Search, 15 operations

  • search_absencesSearch absencesPOSTAgents: ask firstSearches an organization's absences by user, contract, type, status, team, year or date range, with paging. Personal data; reasons may concern health.
  • search_automationsSearch automationsPOSTAgents: ask firstSearches automations by projects, type (0 geofence, 1 WLAN, 2 beacon) or status, with paging (page, limit).
  • search_documentsSearch documentsPOSTAgents: ask firstSearches documents by text (name, customer, description, invoice number, customer number), organization, category, status, template flag or date range. Paginated.
  • search_expensesSearch expensesPOSTAgents: ask firstSearches expenses by text, tasks, projects, document, organization, status or date range (startDate, endDate), with paging (page, limit).
  • search_invoice_seriesSearch invoice seriesPOSTAgents: ask firstSearches invoice series by text, organization or status, with paging (page, limit).
  • search_notesSearch notesPOSTAgents: ask firstSearches notes by text, tasks, document, organization or date range (startDate, endDate), with paging (page, limit).
  • search_organizationsSearch organizationsPOSTAgents: ask firstSearches the user's organizations by text or permission, with paging (page, limit).
  • search_pausesSearch pausesPOSTAgents: ask firstSearches breaks, optionally of one task (taskId), with paging (page, limit).
  • search_projectsSearch projectsPOSTAgents: ask firstSearches projects: by text, team, status, ids, or by the tasks they contain (task dates, rate, type, billing status, users). Paginated (page, limit).
  • search_ratesSearch ratesPOSTAgents: ask firstSearches billing rates by text, team, project or status, with paging (page, limit).
  • search_tagsSearch tagsPOSTAgents: ask firstSearches tags by team, project, status or ids, with paging (page, limit). Tags have no free-text search.
  • search_tasksSearch tasksPOSTAgents: ask firstSearches tasks with filters: date range (startDate, endDate), projects, teams, tags, users, rate, to-do, document, entry type and billing status. Paginated (page, limit), totals in taskStatistic. Personal data (who worked when).
  • search_teamsSearch teamsPOSTAgents: ask firstSearches the user's teams by name or organization, with paging (page, limit).
  • search_todosSearch todosPOSTAgents: ask firstSearches to-dos by text, projects, status, assigned users or project status, with paging (page, limit), plus open and closed counts.
  • search_webhooksSearch webhooksPOSTAgents: ask firstSearches the user's webhooks by event type, with paging (page, limit).

Member, 9 operations

  • add_organization_memberAdd organization memberPOSTAgents: ask firstAdds a person to an organization by email with admin, invoicing or billing permission and teams; someone new gets an invitation. Organization admins only.
  • add_project_memberAdd project memberPOSTAgents: ask firstGives a team member access to a project with a role (member, manager or owner); pass email or userId. The person must already be in the project's team.
  • add_team_memberAdd team memberPOSTAgents: ask firstAdds a person to a team by email with a role; someone without an account receives an email invitation. Only team owners and managers can.
  • get_organization_memberGet organization memberGETAgents: ask firstReturns one organization member: permissions, teams, contract and license flags, name and email (personal data).
  • get_project_memberGet project memberGETAgents: ask firstReturns one project member with role, name and email (personal data).
  • get_team_memberGet team memberGETAgents: ask firstReturns one team member: role, employee id, shared projects, name and email (personal data).
  • remove_organization_memberRemove organization memberDELETEAgents: ask firstRemoves a person from an organization, revoking their access to it. Admins only; the last admin cannot be removed.
  • remove_project_memberRemove project memberDELETEAgents: ask firstRemoves a person from a project, revoking their access to it. The project owner cannot be removed.
  • remove_team_memberRemove team memberDELETEAgents: ask firstRemoves a person from a team, revoking their access to its projects.

Absence, 6 operations

  • create_absenceCreate absencePOSTAgents: ask firstRequests an absence (vacation, sick leave...) under a contract: contractId, absenceTypeId, startDateTime and endDateTime are required. Types needing approval go to a manager. Business plan.
  • delete_absenceDelete absenceDELETEAgents: ask firstDeletes an absence; the optional reason is recorded in the audit log.
  • get_absenceGet absenceGETAgents: ask firstReturns one absence: type, dates, days and hours, status, reason and approval history (personal data, reasons may concern health).
  • list_absencesList absencesGETAgents: ask firstLists the absences of an organization (Business plan), optionally under one contract, 50 per page. Absences of people are personal data, and reasons may concern health.
  • list_my_absencesList my absencesGETAgents: ask firstLists the current user's own absences (personal data), optionally in a date range (startDate, endDate, YYYY-MM-DD) or under one contract, 50 per page.
  • update_absenceUpdate absencePUTAgents: ask firstChanges an absence's dates, full-day flag, reason or documentation. Send only the fields to change. Returns the absence.

Absence type, 5 operations

  • create_absence_typeCreate absence typePOSTAgents: ask firstCreates an absence type for an organization; code and name are required. Sets whether it is paid, needs approval or documentation and counts against leave. Returns it.
  • delete_absence_typeDelete absence typeDELETEAgents: ask firstDeletes an absence type of an organization.
  • get_absence_typeGet absence typeGETAgents: ask firstReturns one absence type with its rules (paid, approval, documentation, quota, notice and maximum length).
  • list_absence_typesList absence typesGETAgents: ask firstLists an organization's absence types (vacation, sick leave...) with approval, documentation and quota rules. includeInactive works for organization admins only.
  • update_absence_typeUpdate absence typePUTAgents: ask firstChanges an absence type's name, code or rules. Send only the fields to change. Returns it.

Document, 5 operations

  • create_documentCreate documentPOSTAgents: ask firstCreates an invoice, timesheet or work record (category 0, 1, 2) with a name, from tasks, expenses and notes (taskIds, expenseIds, noteIds). Returns it; print_document makes the PDF.
  • delete_documentDelete documentDELETEAgents: ask firstPermanently deletes a document and its links to tasks, expenses and notes (the tasks themselves stay).
  • get_documentGet documentGETAgents: ask firstReturns one document: header, issuer and customer details, totals, taxes, payment status and the tasks, expenses and notes it includes.
  • list_documentsList documentsGETAgents: ask firstLists documents of one type (type 0 invoices by default, 1 timesheets, 2 work records), optionally by status, organization, template flag or date. 20 per page.
  • update_documentUpdate documentPUTAgents: ask firstChanges a document: content, customer, totals, items (taskIds, expenseIds, noteIds) or status flags such as paid and approved. Send only the fields to change.

Pause, 5 operations

  • create_pauseCreate pausePOSTAgents: ask firstRecords a past break on a task: taskId, startDateTime and endDateTime are required. Break time is not counted as worked time.
  • delete_pauseDelete pauseDELETEAgents: ask firstDeletes a break from its task.
  • get_pauseGet pauseGETAgents: ask firstReturns one break with its times, description and task.
  • list_pausesList pausesGETAgents: ask firstLists breaks (pauses inside tasks), optionally of one task (taskId), 20 per page (limit up to 100).
  • pause_timerPause timerPOSTAgents: ask firstPauses the running timer by starting a break on its task at startDateTime (the current time to pause now). Returns the timer with the break.

Expense, 4 operations

  • create_expenseCreate expensePOSTAgents: ask firstRecords an expense on a task: taskId and dateTime are required; amount is a decimal string. Returns the expense.
  • delete_expenseDelete expenseDELETEAgents: ask firstDeletes an expense; its attachment is no longer accessible.
  • get_expenseGet expenseGETAgents: ask firstReturns one expense with its amount, date, refunded flag, receipt reference, task and author (personal data).
  • list_expensesList expensesGETAgents: ask firstLists expenses, optionally of one task or by status (filter all, paid, unpaid), 20 per page. With organizationId and admin or invoicing permission, expenses of all its teams.

Invoice series, 4 operations

  • create_invoice_seriesCreate invoice seriesPOSTAgents: ask firstCreates an invoice numbering series; pattern needs a counter placeholder such as {NNNN} and can use {YYYY}, {YY}, {MM}, {DD}, {PREFIX}. Returns the series.
  • delete_invoice_seriesDelete invoice seriesDELETEAgents: ask firstDeletes an invoice series; it can no longer number invoices.
  • get_invoice_seriesGet invoice seriesGETAgents: ask firstReturns one invoice series: pattern, prefix, counter, reset settings and last number generated.
  • list_invoice_seriesList invoice seriesGETAgents: ask firstLists invoice numbering series (active by default): the user's own and those of organizations where the user has admin or invoicing permission.

List, 4 operations

  • list_organization_membersList organization membersPOSTAgents: ask firstLists the members of an organization with their permissions and teams (names and emails: personal data). deleted true lists removed members.
  • list_organization_teamsList organization teamsPOSTAgents: ask firstLists every team of an organization, including teams the user is not in (organization admins only). limit -1 returns all teams. Pass the id as organizationId and organizationId_body.
  • list_project_membersList project membersPOSTAgents: ask firstLists the members of a project with their role (names and emails: personal data). Pass the project id as projectId and projectId_body.
  • list_team_membersList team membersPOSTAgents: ask firstLists the members of a team with role and employee id (names and emails: personal data). Pass the team id as teamId and teamId_body.

Note, 4 operations

  • create_noteCreate notePOSTAgents: ask firstAdds a note to a task: taskId, text and dateTime are required. Returns the note.
  • delete_noteDelete noteDELETEAgents: ask firstDeletes a note and its attachment.
  • get_noteGet noteGETAgents: ask firstReturns one note with its text, date, attachment reference, task and author (personal data).
  • list_notesList notesGETAgents: ask firstLists notes, optionally of one task (taskId), 20 per page (limit up to 100). With organizationId and admin or invoicing permission, notes of all the organization's teams.

Project, 4 operations

  • create_projectCreate projectPOSTAgents: ask firstCreates a project; title is required. The user becomes its owner. A teamId puts it in that team, for good (a project cannot move to another team). Returns the project.
  • delete_projectDelete projectDELETEAgents: ask firstDeletes a project with its tasks, to-dos, expenses, breaks, notes and members. The user docs call it permanent: treat it as irreversible.
  • get_projectGet projectGETAgents: ask firstReturns one project: title, client, hourly rate, team, the user's role, tracked time, earnings, expenses and to-do progress.
  • list_projectsList projectsGETAgents: ask firstLists projects (active ones by default; status all or inactive for archived) with tracked time and earnings, optionally of one team. 20 per page, limit up to 100.

Rate, 4 operations

  • create_rateCreate ratePOSTAgents: ask firstCreates a billing rate; title and factor are required, teamId makes it a team rate (personal otherwise). Earnings with a rate: hours x (base rate x factor) + hours x extra.
  • delete_rateDelete rateDELETEAgents: ask firstDeletes a billing rate; tasks using it lose their rate reference.
  • get_rateGet rateGETAgents: ask firstReturns one billing rate: title, factor, extra per hour, enabled and archived flags, team.
  • list_ratesList ratesGETAgents: ask firstLists billing rates (active by default), optionally of one team or project, with factor and extra per hour. 20 per page, limit up to 100.

Tag, 4 operations

  • create_tagCreate tagPOSTAgents: ask firstCreates a tag to categorize tasks across projects; name is required, teamId makes it a team tag. Returns the tag.
  • delete_tagDelete tagDELETEAgents: ask firstDeletes a tag and removes it from every task using it; the tasks and their time stay.
  • get_tagGet tagGETAgents: ask firstReturns one tag with its color, team and total tracked time.
  • list_tagsList tagsGETAgents: ask firstLists tags (active by default), optionally of one team or project, with the total time tracked on each. 20 per page, limit up to 100.

Task, 4 operations

  • create_taskCreate taskPOSTAgents: ask firstRecords a task (a time entry) on a project: projectId and startDateTime are required; with endDateTime the entry is complete. Returns the task with its id.
  • delete_taskDelete taskDELETEAgents: ask firstPermanently deletes a task with its breaks, expenses, notes and tag links. Cannot be undone.
  • get_taskGet taskGETAgents: ask firstReturns one task with its project, to-do, rate, tags, breaks, expenses, notes, duration and earnings. Includes the member's name and email (personal data).
  • list_tasksList tasksGETAgents: ask firstLists the user's tasks (time entries), newest first by default, 20 per page (limit up to 100), with totals in taskStatistic. For filters use search_tasks. Time entries of people are personal data.

Team, 4 operations

  • create_teamCreate teamPOSTAgents: ask firstCreates a team with the user as owner; name is required and must be unique for the user. Returns the team.
  • delete_teamDelete teamDELETEAgents: ask firstDeletes a team with all its data (projects, rates, tags...); only team owners can. No tool here restores it.
  • get_teamGet teamGETAgents: ask firstReturns one team: name, organization, the user's role and project and member counts.
  • list_teamsList teamsGETAgents: ask firstLists the teams accessible to the user, with the user's role and project and member counts. 20 per page, limit up to 100.

Todo, 4 operations

  • create_todoCreate todoPOSTAgents: ask firstCreates a to-do on a project; name and projectId are required. Optional due date, assignees and estimated hours and minutes. Returns the to-do.
  • delete_todoDelete todoDELETEAgents: ask firstDeletes a to-do; tasks linked to it lose the link.
  • get_todoGet todoGETAgents: ask firstReturns one to-do with its project, status, due date, estimate, assignees (personal data), tracked time and progress.
  • list_todosList todosGETAgents: ask firstLists to-dos (open ones by default), optionally of one project, with tracked time and progress. 20 per page, limit up to 100.

Webhook, 4 operations

  • create_webhookCreate webhookPOSTAgents: ask firstRegisters a webhook: Timesheet will POST to target on the event (task.create, timer.start...). The signing secret is withheld, so its deliveries cannot be signature-verified.
  • delete_webhookDelete webhookDELETEAgents: ask firstPermanently deletes a webhook; deliveries stop.
  • get_webhookGet webhookGETAgents: ask firstReturns one webhook with its target URL and event types (no signing secret).
  • list_webhooksList webhooksGETAgents: ask firstLists the user's webhooks with their target URL and event types. 20 per page, limit up to 100.

Automation, 3 operations

  • delete_automationDelete automationDELETEAgents: ask firstDeletes an automation, so the apps stop starting and stopping the timer with it.
  • get_automationGet automationGETAgents: ask firstReturns one automation: type, action code, project, Wi-Fi name or geofence address, coordinates and radius (personal location data).
  • list_automationsList automationsGETAgents: ask firstLists the mobile-app automations (geofence, Wi-Fi, beacon) that start and stop the timer, optionally of one project or status. Includes geofence locations (personal data).

Get file url, 3 operations

  • get_absence_file_urlGet absence file urlGETAgents: ask firstReturns a signed download link for the documentation attached to an absence in url (may be a medical certificate: personal health data).
  • get_expense_file_urlGet expense file urlGETAgents: ask firstReturns a signed, time-limited download link for an expense's receipt in url.
  • get_note_file_urlGet note file urlGETAgents: ask firstReturns a signed download link for a note's attachment in url; url is empty when the note has no attachment or the user has no access.

Invited, 2 operations

  • delete_invited_organization_memberDelete invited organization memberDELETEAgents: ask firstPermanently deletes an organization member who was invited and has not activated an account yet, with their profile. Organization admins only.
  • delete_invited_team_memberDelete invited team memberDELETEAgents: ask firstPermanently deletes a team member who was invited and has not activated an account yet, with their profile. Only team managers and owners can.

Organization, 2 operations

  • get_organizationGet organizationGETAgents: ask firstReturns one organization: name, description, color, AI chat setting and the user's permissions.
  • list_organizationsList organizationsGETAgents: ask firstLists the organizations the user belongs to (directly or through a team), with the user's permissions. permission restricts to admin, invoicing or billing access.

Print, 2 operations

  • print_documentPrint documentPOSTAgents: ask firstReturns the PDF of a document as a file; zugferd true embeds ZUGFeRD XML for e-invoicing. Pass the document id.
  • print_task_work_recordPrint task work recordGETAgents: ask firstReturns a PDF work record of one task (details, times, expenses and notes) as a file.

Approve, 1 operation

  • approve_absenceApprove absencePOSTAgents: ask firstApproves a pending absence request as a manager; this grants the time off and updates the leave balance. Returns the absence.

By reference, 1 operation

  • list_documents_by_referenceList documents by referenceGETAgents: ask firstLists the documents that include a given task (taskId) or expense (expenseId).

Cancel, 1 operation

  • cancel_absenceCancel absencePOSTAgents: ask firstCancels an absence, with a required reason; the person or a manager can withdraw it. Returns the absence.

Copy, 1 operation

  • copy_taskCopy taskPOSTAgents: ask firstCreates a copy of a task at new times (same project, member, description, type, rate, billable flag, tags and breaks). Notes, expenses, to-do and paid and billed status are not copied.

Generate, 1 operation

  • generate_invoice_numberGenerate invoice numberPOSTAgents: ask firstGenerates and uses up the next invoice number of a series; each call consumes a number. Returns it in invoiceNumber. Use preview_invoice_number to look without consuming.

Get colleague, 1 operation

  • list_colleaguesList colleaguesPOSTAgents: ask firstLists the user's colleagues across their teams, or in one team or project, with search and paging (names and emails: personal data).

Get member status, 1 operation

  • list_member_statusList member statusPOSTAgents: ask firstLists team members with their live status: who has a running timer and their current or last activity (project, times, location: personal data). Working members first.

Leave balance, 1 operation

  • list_my_leave_balancesList my leave balancesGETAgents: ask firstLists the current user's leave balances for a year (required): entitled, carried-over, used, pending and remaining days per contract.

Me, 1 operation

  • get_profileGet profileGETAgents: ask firstReturns the user's profile: name, email, language, country and subscription status (plan, trial, expiry). Personal data.

Preview, 1 operation

  • preview_invoice_numberPreview invoice numberGETAgents: ask firstShows the next invoice number of a series without consuming it.

Reject, 1 operation

  • reject_absenceReject absencePOSTAgents: ask firstRejects a pending absence request as a manager, with a required reason. Returns the absence.

Resume, 1 operation

  • resume_timerResume timerPOSTAgents: ask firstResumes a paused timer by ending its break at endDateTime (the current time to resume now). Returns the timer.

Settings, 1 operation

  • get_settingsGet settingsGETAgents: ask firstReturns the user's settings: theme, time zone, language, currency, formats, default durations, timer and break rounding and summary emails.

Start, 1 operation

  • start_timerStart timerPOSTAgents: ask firstStarts the timer on a project, which creates a new running task. projectId and startDateTime (the current time to start now) are required. Returns the timer.

Statistic, 1 operation

  • get_task_statisticsGet task statisticsPOSTAgents: ask firstReturns totals (duration, break time, earnings, expenses, mileage) over every task matching the filters, without the tasks themselves. Same filters as search_tasks.

Stop, 1 operation

  • stop_timerStop timerPOSTAgents: ask firstStops the running timer: completes its task at endDateTime (the current time to stop now) and ends any break. Returns the timer with the completed task.

Summary, 1 operation

  • get_task_day_summaryGet task day summaryPOSTAgents: ask firstReturns per-day totals (duration, break time, earnings) per project for the tasks matching the filters; overnight tasks are split at midnight. Same filters as search_tasks.

Timer, 1 operation

  • get_timerGet timerGETAgents: ask firstReturns the user's timer: status (running, paused or stopped), the task being timed and the break in progress.

Transfer ownership, 1 operation

  • transfer_team_ownershipTransfer team ownershipPOSTAgents: ask firstMakes another active member the owner of a team; the current owner stays as a manager. Only the owner can. Changes who controls the team.

Showing the first 120 of 141 endpoints. The rest are in the product, searchable from the workflow builder and from chat.

Use Timesheet from Claude Code, Cursor or Codex

Connect Timesheet in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Timesheet operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect Timesheet

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect Timesheet once

    Add your Timesheet connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

Timesheet integration FAQ

What can you do with the Timesheet integration?

LiveContext exposes 141 operations on Timesheet, covering search, member, absence and absence type.

Popular integrations

Browse the whole catalog