# Puzzel MCP connector

The Puzzel connector lets Claude, ChatGPT, Cursor and other AI clients work with your Puzzel contact center, from scheduled callbacks and call recordings to contacts, appointments and surveys, inside each person's own access, with every action logged.

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

## Facts

| | |
| --- | --- |
| Application | Puzzel |
| Category | Helpdesk |
| AI tools | 84 |
| Authentication | App credentials |
| Needs 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. 84 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Puzzel is connected

- Which Puzzel scheduled tasks run this week?
- Summarize yesterday's Puzzel enquiry registrations by queue.
- List Puzzel user groups with no recent activity.

## Connect Puzzel in Elaichi

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

1. Open Connections, choose Add connection, and pick Puzzel.
2. Optionally set Share with, then press Connect.
3. Paste your Puzzel app credentials. Puzzel authenticates the app rather than a person. One person supplies the credentials once, and everyone else works through Share with.

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

## Connect Puzzel to 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.

## Connect Puzzel to 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.

## Connect Puzzel to 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 Puzzel 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 Puzzel 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 Puzzel through Elaichi

### Schedule the callback before the customer hangs up

Support. Ask for a scheduled task in Puzzel for tomorrow at ten with the customer's number and a note on what they need, then adjust or cancel it later if plans change.

### Pull the recordings for a coaching session

Quality. Find the archived calls for one agent last week, download the recording files, and tag the ones worth reviewing so the team lead can find them again.

### See how a contact was categorized after the call

Team leads. Look up the enquiry registration for a specific conversation and read the survey the customer answered afterwards, without opening Puzzel and clicking through the archive.

### Book the follow-up appointment from the catalog

Sales. Find the right person in the Puzzel contact catalog and create an appointment with them for next week, then move it when the customer asks for a different time.

### Check who sits in which user group

Operations. List the Puzzel user groups and fix the catalog time zone for a site before the new team starts taking calls on Monday.

### Answer a deletion request with a clear trail

Compliance. Find the archive records tied to a customer, delete the ones covered by the request, and check the Puzzel archive audit log to confirm what was removed and when.

## Frequently asked questions

### How do I connect Puzzel to Claude?

Connect Puzzel in Elaichi first: pick Puzzel from the catalog and enter your Puzzel app credentials when asked. There is no OAuth application to register and no client ID or secret to generate. Then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. Sign in with your Elaichi account and Puzzel is ready to use in Claude.

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

Yes. Once Puzzel is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Puzzel once and every client your team uses gets it.

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

With Puzzel connected, an agent can create, change and cancel scheduled tasks such as callbacks, look up contacts in the Puzzel catalog, book and move appointments, and send an SMS. It can find archived call recordings, download the files, tag them, and read the enquiry registration and survey tied to a call. It can also list user groups, check the archive audit log, and fix a catalog time zone. Because Puzzel has many actions, short concrete asks such as "find last week's recordings for Anna" work better than long paragraphs.

### Does connecting Puzzel give the AI access to every recording and contact?

No. Every request to Puzzel runs as the person who signed in, so the agent sees only the archive records, contacts and tasks that person can already see in Puzzel. Elaichi can narrow that further, for example by hiding recording downloads from a team, but it can never widen what Puzzel itself allows.

### Can my team share one Puzzel connection?

Yes. One person connects Puzzel in Elaichi and shares the connection with a team, and nobody else ever handles the Puzzel app credentials. Each teammate still signs in to Elaichi as themselves, so the audit log names the actual person who downloaded a recording or scheduled a callback.

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

Yes. Restrictions in Elaichi apply per action, so you can allow reading Puzzel archive records and contacts while blocking deleting archive records or changing scheduled tasks. A blocked action is never shown to Claude, ChatGPT or any other client, so no prompt, however worded, can reach it.

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

Offboard the person in Elaichi and their access to Puzzel through every AI client ends at once. If they had shared their Puzzel connection with a team, the connection keeps working for everyone else. If you want Puzzel gone entirely, disconnect it once in Elaichi and it disappears from Claude, ChatGPT, Cursor and every other client at the same time.

## All 84 Puzzel tools

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

- **List all Puzzel user groups** (List). List user groups in Puzzel. Returns result with each group including id and name.
- **List all Puzzel token info** (List). Get access token information in Puzzel. Returns customerKey, customerId, userGroupId, userId, languageId, languageCode, passwordValidDaysLeft, and accessTokenExpiry in the response.
- **List all Puzzel scheduled tasks** (List). Search for scheduled tasks in Puzzel. Returns entries with details such as contactId, name, phone, duration, queueId, scheduledDateTime, reservedUserId, reservedUserName, and title.
- **Get single Puzzel scheduled task by ID** (Get). Get an existing scheduled task in Puzzel using id. Returns fields such as contactId, name, description, phone, reservedUserId, scheduledDateTime, queueKey, and related variables.
- **Create a Puzzel scheduled task** (Create). Create a new scheduled-tasks in Puzzel. Returns result and code fields in the response.
- **Update a Puzzel scheduled task by ID** (Update). Update a scheduled etask in Puzzel using id. Returns updated etask details such as contactId, name, scheduledDateTime, reservedUserId, and variables.
- **Delete a Puzzel scheduled task by ID** (Delete). Delete a scheduled task in Puzzel. Requires id. Returns code indicating the result of the operation.
- **Create a Puzzel sm** (Create). Send an SMS message in Puzzel. Requires user_id. Returns code (status), id (message identifier), and message (status message) in the response.
- **List all Puzzel token extended information** (List). Get extended access token details in Puzzel, including customerKey, userId, accessTokenExpiry, language, pauseTypes, and queues. Returns these fields in the response.
- **List all Puzzel archive records** (List). Search archive records in Puzzel for a specific user. Requires user_id. Returns fields including recordStart, accessPoint, callId, recordingType, contentAvailable, surveyExist, enquiryRegistrationExists, entries, tags, and comment.
- **Delete a Puzzel archive record by ID** (Delete). Delete an archived record in Puzzel. Requires user_id. Returns code (status), id (record identifier), and message (operation result details) in the response.
- **Get single Puzzel archive stream by ID** (Get). Stream archive recordings for a specific user in Puzzel. Requires user_id, iq_session_id, and id. Returns the audio/video stream content for the requested archive recording.
- **Puzzel archive recording files download** (Archive). Download a recording file from Archive in Puzzel. Requires user_id, iq_session_id, and index. Returns the audio file as application/octet-stream with Content-Disposition header indicating filename.
- **Get single Puzzel enquiry registration by ID** (Get). Get enquiry registration for a specific user by callId in Puzzel. Requires user_id, and id. Returns fields including id, time, agentId, agentName, queueKey, queueDescription, categories.
- **Get single Puzzel survey by ID** (Get). Get survey from Puzzel by user_id and id. Returns survey details including key fields for the specified callId.
- **List all Puzzel archive audit logs** (List). Search archive audit logs in Puzzel. Returns id, dateTime, operation, iqSessionId, recIndex, mediaType, and userId fields for each log entry in the response.
- **Update a Puzzel archive tag by ID** (Update). Update tags for a specific call archive in Puzzel using user_id and id. Returns code, id, and message indicating the update result.
- **List all Puzzel catalog timezone** (List). Get the customer timezone set in the Puzzel database. Returns result, code, id, and message fields in the response.
- **Update a Puzzel catalog timezone by ID** (Update). Update the customer timezone in Puzzel. Returns code, id, and message indicating the result of the operation.
- **List all Puzzel catalog contacts** (List). Search catalog-contacts in Puzzel using user_id. Returns id, firstName, lastName, title, info, organizationName, communicationPoints, and other contact details in the response.
- **Get single Puzzel catalog contact by ID** (Get). Retrieve a contact by contactId in Puzzel. Requires user_id, and id. Returns fields such as id, firstName, lastName, title, info, services, communicationPoints with status and address, isCalenderBusy, and organization details.
- **List all Puzzel contacts appointments** (List). List all appointments for a specific contact in Puzzel using user_id and contact_id. Returns id, subject, location, beginTime, endTime, description, durationMinute, isPrivate, isAvailable, source, and absence fields.
- **Create a Puzzel contacts appointment** (Create). Create a new appointment for a contact in Puzzel. Requires user_id, and contact_id. Returns code, id, message, and result fields in the response.
- **Update a Puzzel contacts appointment by ID** (Update). Update an existing appointment for a contact in Puzzel. Returns code, id, and message fields indicating the result of the operation. Requires user_id, and contact_id.
- **Delete a Puzzel contacts appointment by ID** (Delete). Delete an appointment in Puzzel for a specific contact using user_id, contact_id, and id. Returns code, id, and message indicating result.
- **List all Puzzel access point tickers** (List). Get ticker data for access numbers in Puzzel by ticker_period_window. Returns accesspoint, requestsOffered, and requestsAnswered fields in the response.
- **List all Puzzel state information** (List). Get real-time agent state and statistics for a specific user group in Puzzel. Requires ticker_period_window, and userGroupName. Returns userId, name, status, stats, and survey results fields.
- **List all Puzzel personal queue requests** (List). List requests in the personal queue for a user in Puzzel. Requires user_id. Returns requestId, serviceId, timeInQueue, vip, mediaType, requestStatus, sla, description, category, callbackScheduledTime, and more for each request.
- **List all Puzzel connected requests** (List). List connected requests for a specific user in Puzzel. Requires user_id. Returns queueName, requestCategory, requestDescription, requestRemoteAddress, durationSeconds, userName, and userId for each connected request.
- **List all Puzzel user state information** (List). Get user state information in Puzzel by user_id. Returns userStatus, contactCentreStatus, status duration, chat connection details, silent monitoring flags, and related fields in the response.
- **List all Puzzel extended user state info** (List). Get very detailed user state information in Puzzel. Requires user_id. Returns userStateInformation, systemDateTime, iqSessionStateInformation, recordingInfo, requestPersonalQueueList, request, and pauseDisabledList fields in the response.
- **List all Puzzel agents stats** (List). Get real-time agent stats in Puzzel for a given user_id, and ticker_period_window. Returns queuesTotal, pause, and overview data including requestsOffered, requestsAnswered, loggedOnSeconds, inPauseSeconds, survey stats, and more.
- **List all Puzzel user visual queues** (List). List visual queues for a user in Puzzel. Requires user_id. Returns requestId, serviceId, timeInQueue, vip, mediaType, requestStatus, queueId, callbackScheduledTime, and related visual queue details.
- **Get single Puzzel user visual queue by ID** (Get). Get visual queue information in Puzzel for a specific visual queue using user_id, and id. Returns fields such as requestId, serviceId, timeInQueue, mediaType, requestStatus, and destination.
- **List all Puzzel visual queues** (List). List visual-queues in Puzzel. Returns id, description, and queues with id, key, description, and serviceId in the response.
- **Get single Puzzel visual queue by ID** (Get). Get user visual queue information in Puzzel for a specific visual queue. Requires id, and result. Returns usersDetails and usersOverview fields with details on users and overall queue status.
- **List all Puzzel visual queue state info** (List). Get visual queue state and ticker information in Puzzel. Requires visual_queue_result. Returns id, description, waitTimeMaxSeconds, waitTimeAverageSeconds, queueSize, agentsLoggedOn, agentsInPause, agentsReady, agentsUnavailable, sla, queueSizeCiq, unblockedLoggedIn, unblockedUnavailable, queueSizePreferred, callsOfferedToday, callsAnsweredToday, ciqsOfferedToday, ciqsAnsweredToday, callsAnsweredWithinSla, alarmFlag, ciqScheduled, callsAbandonedToday, callsAbandonedWithinSla, silentCallsToday fields in the response.
- **List all Puzzel visual queue ticker** (List). Get visual queue ticker information in Puzzel for the specified ticker_period_window, and visual_queue_result. Returns id, description, call statistics, CIQ and survey results in the response.
- **Get single Puzzel etask by ID** (Get). Get details about a specific etask request in Puzzel. Requires id. Returns id, additionalInfo, requestStart, queueEntryTime, reservedUserExpiry, status, queueId, mediaType, queuePosition, iqSessionId, extendedInformations, from, to, vipScore, reservedUserId, and variables.
- **Create a Puzzel etask** (Create). Add etasks or emails in Puzzel. Returns the created etask object including from, to, subject, uri, vipScore, reservedUserId, reservedUserWaitTime, category, description, variables, queueKey, and xdrCopy fields.
- **Delete a Puzzel etask by ID** (Delete). Delete an existing etask/email request in Puzzel by id. Returns code indicating operation completion.
- **Update a Puzzel etask by ID** (Update). Update etask or email request in Puzzel. Returns updated fields including subject, uri, vipScore, reservedUserId, reservedSecondsFromNow, category, description, queueKey, variables, and xdrCopy.
- **Update a Puzzel request by ID** (Update). Update a request in queue by id in Puzzel. Returns code, id, and message fields indicating the result of the operation.
- **Get single Puzzel request by ID** (Get). Get details about a specific request in Puzzel. Requires id. Returns fields such as remoteAddress, destination, requestStart, status, variables, extendedInformations, and outboundInfo.
- **Delete a Puzzel request by ID** (Delete). Delete a request in Puzzel. Requires id. Returns code, id, and message indicating the operation result.
- **List all Puzzel missed calls** (List). List missed calls in Puzzel for a specific queue using queue_id. Returns key fields for each missed call: queueId, queueName, requestId, requestRemoteAddress, destination, queueEntered, inQueueSeconds, category, description, reservedUserId, mediaType, tagLevel, userIdTagged, userNameTagged, and dateTimeTagged.
- **Puzzel missed calls tag** (Action). Tag a missed call in Puzzel. Requires missed_call_id. Returns code, id, and message fields indicating the tagging operation result.
- **List all Puzzel user missed calls** (List). List missed calls for a user in Puzzel by id. Returns fields such as queueId, queueName, requestId, requestRemoteAddress, destination, queueEntered, inQueueSeconds, category, tagLevel, userIdTagged, userNameTagged, dateTimeTagged, and others.
- **Get single Puzzel user request by ID** (Get). Get details of a specific user request in Puzzel using id. Returns fields such as remoteAddress, destination, status, queueId, vip, mediaType, variables, and extendedInformations.
- **Puzzel user requests reserve** (Action). Reserve a user-request in Puzzel by user_id and request id. Returns code, id, and message indicating the reservation result.
- **Delete a Puzzel user request by ID** (Delete). Cancel a reserved user-request in Puzzel. Requires user_id, and id. Returns code, id, and message indicating the result of the cancellation.
- **Puzzel user requests events** (Action). Create session request event in Puzzel for a specific user and request. Requires user_id, and request_id. Returns code, id, and message fields in the response indicating the result.
- **List all Puzzel request extended information** (List). Get extended information about a specific request in Puzzel. Requires request_id. Returns fields: time, message, fullUserName, userId, type, and userName for each entry in the response.
- **List all Puzzel user call logs** (List). List last 20 request logs for a specific user in Puzzel, including queueName, queueId, accessPoint, requestId, mediaType, callType, requestRemoteAddress, answeredAt, and speakTimeSeconds. Requires user_id. These fields are returned in the response.
- **Create a Puzzel user callout request** (Create). Create an outgoing callout request for a user in Puzzel using user_id. Returns callout execution details including destination, scheduling, and agent assignment fields.
- **Delete a Puzzel user callout request by ID** (Delete). Delete a specific callout request for a user in Puzzel. Returns code (operation status), id (request id), and message (operation result).
- **Create a Puzzel user email** (Create). Send an email message for a specific user in Puzzel. Requires  user_id. Returns code, id, and message fields indicating the email send status and message id.
- **Create a Puzzel user enquiry registration** (Create). Create enquiry registration for a user in Puzzel. Requires user_id. Returns code (status code), id (enquiry registration id), and message (response information).
- **List all Puzzel enquiry registrations categories** (List). Get enquiry registration categories and topics in Puzzel using user_id, and result. Returns code, id, and message fields in the response.
- **List all Puzzel outbound request feedback** (List). Update an outbound dialler request with feedback in Puzzel. Requires user_id. Returns code, id, and message indicating the result of the update.
- **List all Puzzel call recordings** (List). Get recording details of the connected call in Puzzel using user_id. Returns recordingIndex, recordingStart, recordingState, forcedOnQueue, forcedOnUser, and lengthSeconds fields.
- **Puzzel call recordings command** (Action). Send a recorder command for a user session in Puzzel. Requires user_id. Returns code, id, and message indicating the command status.
- **Puzzel user sessions command** (Action). Execute a command for an active user session in Puzzel using user_id and session_id. Returns code, id, and message indicating the command status.
- **List all Puzzel languages** (List). List languages in Puzzel. Returns each language's id, code, and description in the response.
- **List all Puzzel system date time** (List). Get system date and time in Puzzel. Returns result (system dateTime), code, id, and message in the response.
- **List all Puzzel system properties** (List). Retrieve a list of property settings for a specified property_group in Puzzel. Returns key, value, and typeId for each property.
- **Create a Puzzel system property** (Create). Set property value for a property group in Puzzel. Requires property_group. Returns code, id, and message fields in the response indicating result and operation info.
- **Get single Puzzel system property by ID** (Get). Get details about a system property in Puzzel using property_group, id, and userId. Returns key, value, and typeId fields in the response.
- **List all Puzzel queues** (List). List queues in Puzzel. Returns id, key, description, and serviceId for each queue.
- **List all Puzzel services** (List). List services in Puzzel. Returns id, number, and description fields for each service in the response.
- **List all Puzzel service qualities** (List). List service qualities in Puzzel. Returns id, number, description, serviceId, and elements (with id, name, userLevel) fields in the response.
- **List all Puzzel user service labels** (List). List service labels for a specific user in Puzzel. Returns nodeType, label, and nodeId for each service label.
- **Puzzel user service labels search** (Search). Search for service labels in Puzzel for a specific user using user_id. Returns nodeType, label, and nodeId for each matched service label.
- **List all Puzzel access logs** (List). List access logs in Puzzel for the last 14 days. Returns entries containing id, dateTime, ip, clientType, clientInfo, logInResult, userId, and userName.
- **List all Puzzel changelogs** (List). Search change logs in Puzzel for the past 3 months. Returns entries with id, dateTime, userId, auditType, operation, key, and value for each change.
- **Puzzel access token logout** (Action). Log out and destroy access token in Puzzel. Returns code, id, and message fields in the response.
- **List all Puzzel pause types** (List). List pause types in Puzzel. Requires userId. Returns id and description for each pause type in the response.
- **List all Puzzel users search** (List). Search for users in Puzzel using user_id. Returns user details such as userGroupName, profileName, chatState, contactCentreStatus, joined, userStatus, sessionTime, and profiles.
- **Get single Puzzel profile by ID** (Get). Get details of a specific profile for a user in Puzzel using user_id, and id. Returns profile fields including id, number, lastPhoneNumber, phoneNumber, phoneType, name, groupProfile, and qualities.
- **Create a Puzzel profile element** (Create). Add a quality element/skill to a specific user profile in Puzzel. Requires user_id, and profile_id. Returns code, id, and message indicating the result.
- **Delete a Puzzel profile element by ID** (Delete). Remove a skill from profile in Puzzel. Requires user_id, profile_id, and id. Returns code, id, and message fields in the response indicating the operation result.
- **List all Puzzel iq session state info** (List). Get IQ session state information for a specific user_id in Puzzel. Returns iqSessionId, iqSessionState, requestIds, user session details, and request metadata for the given user_id.
- **List all Puzzel available users** (List). List available users (Ready) in Puzzel for a specific user. Requires user_id. Returns the users who are logged on and available.
- **List all Puzzel query users** (List). Search users by queue or user filter in Puzzel. Requires user_id. Returns sourceSearchResultType, contactCentreStatus, queueDescription, queueKey, userFullName, userId, userName, userStatus, and chatState fields in the response.
