# Toggl MCP connector

The Toggl connector links your Toggl workspace to Claude, ChatGPT, Cursor and any MCP client, so your team can review Toggl audit logs, calendars, calendar events and logins by asking in plain language.

Source: https://elaichi.ai/connectors/toggl/

## Facts

| | |
| --- | --- |
| Application | Toggl |
| Category | Time Tracking |
| AI tools | 315 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Toggl is connected

- Summarize this week's Toggl audit log by person
- Which calendars are connected to our Toggl workspace?
- List Toggl SAML logins from the last 30 days

## Connect Toggl in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Toggl.
2. Optionally set Share with, then press Connect.
3. Paste a Toggl API key. One person generates a token in Toggl and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Toggl tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Toggl MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Toggl MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Toggl MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Toggl to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Toggl tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Toggl through Elaichi

### Review who changed what in Toggl

IT. Pull the Toggl audit log for the last week and ask for a plain summary of the changes, who made them, and when.

### Check SAML and desktop logins

Security. List the SAML logins and desktop logins on your Toggl workspace and spot anything that does not match your staff list.

### Keep connected calendars in order

Operations. See which calendars are connected to Toggl, rename or remove the stale ones, and pick the ones the team should actually track against.

### Turn calendar events into tracked work

Project management. Pull this week's calendar events from Toggl and ask for suggested details for each one before the team logs its time.

### Confirm currencies and countries before billing

Finance. Check the currencies and country subdivisions Toggl supports so client rates and tax regions are set up correctly the first time.

### Look up a workspace member quickly

People. Find a person's Toggl workspace details, update their avatar, or send feedback to Toggl on the team's behalf without opening the admin screens.

## Frequently asked questions

### How do I connect Toggl to Claude?

Connect Toggl in Elaichi first: open the Toggl connector, paste the API key from your Toggl profile settings, and save. There is no OAuth application to register and no client ID or secret to generate. Then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Sign in with your Elaichi account and Toggl is available in your next conversation.

### Does Toggl work with ChatGPT and Cursor as well as Claude?

Yes. Once Toggl is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent. You connect Toggl once and every client you use picks it up.

### What can an AI agent actually do with my Toggl data?

With Toggl connected, an agent can read your Toggl audit logs, list SAML and desktop logins, show the calendars connected to your workspace and the events on them, suggest details for an event, look up a workspace member, and check the countries and currencies Toggl supports. You ask in plain language, the agent finds the right Toggl action and runs it. Short, concrete asks work better than long sentences.

### Does connecting Toggl give the AI access to my whole workspace?

No. Every call to Toggl through Elaichi runs as the person who signed in, so the agent sees only what that person can already see in Toggl. Elaichi can narrow that further with roles and restrictions, but it can never widen it beyond the person's own Toggl access.

### Can my team share one Toggl connection?

Yes. One person connects Toggl in Elaichi and shares the connection with a team, and nobody else ever handles the Toggl API key. Each teammate still signs in to Elaichi as themselves, so the audit log names the person behind every Toggl call.

### Can I stop an agent from deleting or changing things in Toggl?

Yes. In Elaichi you restrict Toggl actions one by one, for example removing calendars or deleting avatars. A restricted action is never advertised to Claude, ChatGPT or any other client, so no prompt can reach it, however it is worded.

### What happens to a Toggl connection when someone leaves?

When you offboard someone in Elaichi, their access to Toggl through every client ends at once. A shared Toggl connection keeps working for everyone else on the team. If you disconnect Toggl in Elaichi, it disappears from Claude, ChatGPT, Cursor and every other client in one step.

### Does the Toggl MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Toggl is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

## All 315 Toggl tools

Every tool below is callable through https://api.elaichi.ai/mcp once Toggl is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Toggl audit logs** (List). List Toggl Track audit log events for an organization over a given time range. Returns a list of audit log event objects; the upstream docs do not enumerate the individual event fields. Required: organization_id, from, to (RFC3339 datetimes).
- **List all Toggl saml 2 logins** (List). Get the SAML2 Identity Provider (SSO) URL in Toggl Track for a given user email, used for authenticating in an Identity Provider. Returns the SAML2 login response object with provider-specific fields. Required: email. Fails if the email is invalid or SSO is not configured for it.
- **Create a Toggl saml 2 login** (Create). Submit the SAML2 Identity Provider callback assertion to complete authentication for a Toggl Track workspace. Requires login_id (the numeric workspace ID) and SAMLResponse. Returns a 302 redirect to the authentication result URI with no response body.
- **Create a Toggl avatar** (Create). Upload a new avatar image for the current Toggl user. Returns the created avatar object (the upstream API does not document its fields). Required: file. The image must have a valid image content type and be resizable — convert it to png or jpeg if the upload is rejected.
- **Toggl avatars bulk delete** (Delete). Delete the current user's avatar in Toggl. Returns a plain string success message on success.
- **Create a Toggl avatars use gravatar** (Create). Change the authenticated toggl Track user's avatar to their Gravatar image. Returns the updated avatar record with its id and avatar attributes. Requires the email in Toggl to match the Gravatar email.
- **List all Toggl countries** (List). List all existing countries in Toggl Track. Returns an array of country records, each including its numeric id plus the remaining model-specific attributes of the upstream Country schema.
- **List all Toggl countrie subdivisions** (List). List the subdivisions of a specific country in toggl. Returns subdivision records including their id and other upstream-defined attributes. Required: country_id.
- **List all Toggl currencies** (List). List the available currencies in toggl Track. Returns an array of currency records, each with an id and upstream-defined currency attributes (the models.Currency fields are not enumerated in the docs). Takes no parameters.
- **List all Toggl desktop logins** (List). Get a new desktop login token in Toggl. The endpoint stores a new token and responds with a 302 redirect carrying an opaque string body — no structured fields are documented. Takes no parameters.
- **Create a Toggl desktop login token** (Create). Create (store) a new desktop login token in Toggl Track. Returns the desktop login token object including its id and an attributes object holding the upstream desktop.LoginToken fields, which the Toggl docs do not enumerate field-by-field. Requires no additional parameters.
- **Create a Toggl feedback** (Create). Send feedback to toggl about the app, attaching the toggl_version, feedback date, and details of the issue. Returns an empty response on success. Required: toggl_version, date, details.
- **Get single Toggl ical workspace user by ID** (Get). Get the iCal calendar file for a Toggl workspace user, containing the user's time entries from the last 14 days. Returns the iCal (.ics) file content — a text/calendar payload, not a JSON object. Required: id and token (the iCal token). This is a paid Toggl feature.
- **List all Toggl integrations calendars** (List). List the toggl calendar integrations a user has — each user may have at most one integration per provider. Returns the integration records including their id, integration_id, and provider-specific properties.
- **Update a Toggl integrations calendar by ID** (Update). Update a toggl calendar integration's properties by id. Returns an empty 204 response on success. Required: id (the integration's ID as saved in the database).
- **Delete a Toggl integrations calendar by ID** (Delete). Delete a toggl calendar integration by id (logical deletion). Returns an empty 204 response on success. Required: id (the integration's ID as saved in the database).
- **Update a Toggl calendar by ID** (Update). Update updatable fields of a Toggl calendar, such as whether it is selected by the user. Returns the updated calendars with id, selected, and integration_id. Required: integration_id, id. The request payload must not be empty.
- **Toggl calendars list events** (List). List events for a given calendar in a Toggl calendar integration. Deprecated upstream. Returns calendar event records including their id. Required: integration_id, id_calendar, start_date, end_date.
- **Toggl calendars list calendars** (List). List calendars saved for a Toggl user, optionally filtered by integration_id and selected. Returns calendars with id, selected, and integration_id.
- **List all Toggl calendars selecteds** (List). List all calendars the user previously marked as selected for Toggl's calendar integrations. Returns the paginated collection of selected calendars saved in Toggl; field details are not enumerated in the upstream docs. Max 250 per page.
- **List all Toggl calendar events** (List). List calendar events from the caller user's selected calendars in Toggl Track. Returns an opaque EventsResponse payload — the upstream docs publish no field-level structure for it. Events appear only after they were previously fetched from the provider via the events update endpoint. Required: start_date, end_date.
- **Create a Toggl events details suggestion** (Create). Get suggested time-entry details for one or more Toggl calendar events. Matches each event ID against past time entries and returns the most probable description, project_id, and accuracy (100% on an exact match; otherwise frequency- or Jaro-Winkler-based). Invalid or inaccessible event IDs, and events with no available suggestion, are silently omitted from the response. Required: event_ids…
- **Create a Toggl events update** (Create). Refresh all calendar events for the caller's selected calendars in toggl: fetches the events from the provider and saves them in the database. Returns the amount of fetched events as reported in the response body. No request parameters are required.
- **Get single Toggl event details suggestion by ID** (Get). Get the most probable details (and accuracy) for the time entry to be created from a Toggl calendar event, matched against similar past time entries. Returns a suggestion with an accuracy rating, or a "null" string when no suggestion exists. Required: id.
- **List all Toggl calendar setups** (List). Get the URL for setting up a Toggl Track calendar integration with a given provider. Returns the provider authentication URL (302 redirect). Required: provider.
- **Create a Toggl calendars update** (Create). Refresh Toggl calendar data for a calendar integration by re-fetching all of its calendars from the provider. Returns the fetched-calendars response object; its fields are not enumerated in the Toggl docs. Required: integration_id.
- **List all Toggl event attendees** (List). List all attendees for a given calendar event in Toggl Track. Returns an array of attendee records for that event (the record's fields are defined by Toggl's upstream EventAttendee schema and are not itemized in the API docs). Required: integration_id, calendar_id, event_id.
- **Get single Toggl invitation by ID** (Get). Get a toggl invitation by code. Returns the SSO invitation object including email, invitation_id, invite_url, organization_id, recipient_id, sender_id, and workspaces. Required: id (the invitation code).
- **List all Toggl keys** (List). Get the current JWKS keyset in Toggl Track used to sign JWT tokens. Returns the JSON Web Key Set document as a JSON object; the upstream API documents no specific key fields for this response. Requires no parameters.
- **List all Toggl me** (List). Get details for the current toggl user. Returns: id, email, fullname, timezone, api_token, at, authorization_updated_at, beginning_of_week, country_id, created_at, updated_at, default_workspace_id, has_password, 2fa_enabled, image_url, openid_email, openid_enabled, oauth_providers, intercom_hash, options, clients, projects, tags, tasks, time_entries, workspaces.
- **Toggl me bulk update** (Update). Update details for the current toggl user, such as email, fullname, timezone, beginning_of_week, country_id, default_workspace_id, or password. Returns the updated user: id, email, fullname, timezone, updated_at. Changing the password requires current_password and a new password of at least 6 characters.
- **Create a Toggl accept to** (Create). Accept the latest version of the Terms of Service for the current Toggl Track user. Returns a plain string confirmation on success. Takes no query parameters or request body.
- **List all Toggl clients** (List). List the Toggl Track clients belonging to the authenticated user. Returns client records including id, name, notes, external_reference, and workspace_id.
- **Create a Toggl close account** (Create). Close the authenticated user's Toggl Track account. Returns a string confirmation message on success.
- **Create a Toggl disable product email** (Create). Disable product emails for the authenticated Toggl user. Returns a plain string confirmation of the successful operation. Required: disable_product_email_id, disable_code.
- **Create a Toggl disable weekly report** (Create). Disable a weekly report in toggl by supplying its weekly report code. Returns a plain string response on success. Required: disable_weekly_report_id, weekly_report_code.
- **Create a Toggl enable SSO** (Create). Confirm SSO enabling for an existing Toggl account after a successful SSO login. Returns a plain-text string response on success. Requires the SSO enabling confirmation data request body (the upstream sso.Confirmation schema, whose fields the Toggl docs do not enumerate).
- **List all Toggl exports** (List). List Toggl download (export) requests for the current user. Returns an array of download request records including id, uuid, requested_at, and created_at. No request body or query parameters required.
- **Create a Toggl export** (Create). Request a new Toggl export of the current user's data as a downloadable archive. Returns a string message confirming the export was started. Requires the export payload ("Objects to export"). Only one export can run at a time; requests to export at least one object.
- **List all Toggl export data** (List). Download the zip archive of export data for the authenticated toggl user by its archive id. Returns the zip file itself as a binary stream, not a JSON object. Required: uuid.
- **List all Toggl favorites** (List). List all favorites saved by the requesting Toggl user. Returns the favorite record: id, workspace_id, user_id, description, project_id, tags, created_at, updated_at.
- **Create a Toggl favorite** (Create). Create a favorite in Toggl. Returns the created favorite with its id, workspace_id, user_id, description, project_id, and tags. Requires workspace_id and at least one of description or project_id; any referenced tags must belong to that workspace.
- **Delete a Toggl favorite by ID** (Delete). Delete a Toggl favorite by its numerical id; the favorite and its tags are removed logically. Returns an empty 204 response on success. Required: id.
- **Toggl favorites bulk update** (Update). Update favorites in Toggl, following the same requirements as creation. Returns the updated favorite with its id, workspace_id, user_id, description, project_id, and tags. Requires workspace_id and at least one of description or project_id; any referenced tags must belong to that workspace.
- **Create a Toggl favorites suggestion** (Create). Generate suggested favorites in Toggl Track from the user's past time-entry activity. Returns an array of suggested favorite objects with id, description, and tags, or a 204 response when there is no past time-entry data to base suggestions on. Suggestions are created only once per user and only if the user has never created a favorite before.
- **Toggl favorites suggestions create workspace suggestion** (Create). Generate suggested favorites for the user's activity in a specific Toggl Track workspace. Returns an array of suggested favorite objects with id, description, and tags, or a 204 response when there is no past time-entry data to base suggestions on. Required: workspace_id. Suggestions are created only once per user and only if the user has never created a favorite before.
- **List all Toggl features** (List). List the feature flags available to the current user in Toggl Track, grouped per workspace. Returns: workspace_id, features.
- **List all Toggl flags** (List). List feature flags for the current Toggl Track user. Returns the flags object with dynamic string keys whose values can be of any type.
- **Create a Toggl flag** (Create). Add feature flags for the current Toggl Track user. Returns the updated flags object with dynamic string keys whose values can be of any type. Requires a flags body; limits: 4 flags per request, 128 flags in total, keys up to 32 characters, values up to 64 characters.
- **List all Toggl IDS** (List). Get the local Track user ID for the authenticated user in toggl. Returns a bare JSON number — the user's local Track ID — rather than an object, so there are no fields to unpack. Requires no parameters.
- ...and 265 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
