# Linq MCP connector

The Linq connector brings your Linq chats, messages, participants, attachments and phone numbers to Claude, ChatGPT, Cursor and any MCP client, so your team can read, send and tidy up conversations in plain language, inside each person's own Linq access.

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

## Facts

| | |
| --- | --- |
| Application | Linq |
| Category | Ticketing |
| AI tools | 41 |
| Authentication | Connects with an API key |
| 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. 41 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Linq is connected

- Summarize the Linq chats my team opened this week.
- Which Linq messages are still unread by participants?
- Draft a reply on the newest Linq chat thread.

## Connect Linq in Elaichi

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

1. Open Connections, choose Add connection, and pick Linq.
2. Optionally set Share with, then press Connect.
3. Paste a Linq API key. One person generates a token in Linq 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 Linq tools are exposed, rename them, or freeze arguments before anyone points a client at it.

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

### Catch up on a prospect's chat before a call

Sales. Ask for the latest Linq chat with a prospect and get the thread summarized, including any attachments they sent, so you walk into the call knowing where things stand.

### Send a follow-up text from your notes

Sales. Dictate the gist of a follow-up and have it drafted and sent as a Linq message to the right chat, with your contact card shared alongside it when the person is new.

### Find every open chat waiting on a reply

Support. Pull up Linq chats where the customer spoke last, mark the ones you have handled as read, and work through the rest in order.

### Add a specialist to a customer chat

Support. When a question needs a colleague, add them as a participant in the Linq chat and post a short message bringing them up to speed, then remove them once it is resolved.

### Fix a message sent with a mistake

Customer success. Correct a typo or a wrong date in a Linq message you already sent, or delete an attachment that went to the wrong chat, without hunting through the app.

### Keep the team's phone numbers straight

Operations. List every Linq phone number in the organization, see which ones are in use, and update the details on a number when a rep changes territory or role.

## Frequently asked questions

### How do I connect Linq to Claude?

First connect Linq in Elaichi. Linq connects with an API key, so you paste the key from your Linq account into Elaichi, and there is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Claude will ask you to sign in to Elaichi, and from then on Linq chats and messages are available in your conversations.

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

Yes. Once Linq 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 Linq once and every client you use picks it up.

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

An agent can list your Linq chats, open a specific chat or message, summarize a thread, send a new message, edit or delete one you already sent, add or remove participants, share a contact card, add an attachment or voice memo, and mark a chat as read. It can also list the phone numbers in your Linq account and update the details on one. Because Linq offers many actions, short concrete asks like "send this to the chat with Dana" work better than long multi-part instructions.

### Does connecting Linq give the AI access to every chat in the workspace?

No. Every request runs inside the Linq access of the person who signed in, so the agent sees the chats, messages and phone numbers that person can already see in Linq and nothing more. Elaichi can narrow that further, for example blocking deletes for a team, but it can never widen access beyond what Linq itself allows that person.

### Can my team share one Linq connection?

Yes. One person connects Linq in Elaichi and shares the connection with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so every message sent or chat changed through Linq is recorded in the audit log under their own name.

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

Yes. Restrictions in Elaichi work per action, so you can allow reading Linq chats and sending messages while blocking deleting messages, removing participants or editing phone numbers. A blocked action is never advertised to Claude, ChatGPT, Cursor or any other client, so no prompt, however worded, can reach it.

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

When you offboard someone in Elaichi, their access to Linq through every client ends at once, and the append-only audit log keeps a record of what they did while they had it. If they had shared a Linq connection with a team, it keeps working for everyone else. Disconnecting Linq once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 41 Linq tools

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

- **List all Linq chats** (List). List all Linq chats for the authenticated partner. Returns a paginated list of chat objects including id, display_name, handles, service, and health_status. Optionally filter by from (sending phone number) or to (participant handle).
- **Create a Linq chat** (Create). Create a new Linq chat with specified participants and send a required initial message. Returns the created chat object including id, display_name, handles, and service.parts. The first outbound message cannot contain a link or URL. Required: from, to, message.
- **Get single Linq chat by ID** (Get). Get a single Linq chat by id. Returns the chat object including id, display_name, handles, service, and health_status. Required: id.
- **Update a Linq chat by ID** (Update). Update a Linq chat's display name or group icon. Returns: status, chat_id. Accepted asynchronously (202); confirm the outcome via chat.group_name_updated or chat.group_icon_updated webhooks. Required: id.
- **Create a Linq chat participant** (Create). Add a participant to a linq group chat. Returns: status, trace_id, message. Group chats only; the new participant must support the same messaging service as the group. Required: chat_id, handle.
- **Linq chat participants bulk delete** (Delete). Remove a participant from a linq group chat. Returns: status, trace_id, message. Group chats only; the chat must have 3+ participants after removal. Required: chat_id, handle.
- **Create a Linq chat leaf** (Create). Leave a linq group chat. Removes your number from the group; after leaving, interaction endpoints for the chat return 409. Returns: status, trace_id, message. Supports iMessage group chats with 4 or more active participants; DM chats are not supported. Required: chat_id.
- **Create a Linq chat typing** (Create). Start a typing indicator in a linq chat. Returns an empty 204 response on success. Group chats are not supported, and the indicator may not reach inactive chats. Required: chat_id.
- **Linq chat typings bulk delete** (Delete). Stop a typing indicator in a linq chat. Returns an empty 204 response on success. Group chats are not supported. Required: chat_id.
- **Create a Linq chat read** (Create). Mark all messages in a chat as read in Linq. Returns an empty 204 response on success. Required: chat_id.
- **Create a Linq chat share contact card** (Create). Share your Linq contact card (Name and Photo Sharing) with a chat. Returns an empty 204 response on success. A contact card must be configured before sharing. Required: chat_id.
- **Create a Linq message** (Create). Send a message in Linq without providing a from number; Linq auto-selects the sending line and target chat. Returns the send result including chat_id, message, from, and from_selection. Voice memos are not supported. Required: to, message.
- **Get single Linq message by ID** (Get). Get a message in Linq by id. Returns the full message including id, chat_id, delivery_status, parts, and service. Required: id.
- **Update a Linq message by ID** (Update). Edit a message part in Linq. Returns the updated message including id, chat_id, delivery_status, parts, and service. Edits allowed up to 5 times within 15 minutes of sending. Required: id, text.
- **Delete a Linq message by ID** (Delete). Delete a message from Linq by id. Returns an empty 204 response on success. Note: this removes the message from the Linq API only, not from the recipient's chat. Required: id.
- **List all Linq message threads** (List). List all messages in a thread in Linq. Given any message id in the thread, returns the originator and all replies in chronological order. Returns: id, chat_id, service, preferred_service, from, from_handle, parts, reply_to, is_from_me, is_delivered, is_read, delivery_status, created_at, updated_at, sent_at, delivered_at, read_at, effect. Required: message_id.
- **Create a Linq chat voicememo** (Create). Send a voice memo to a chat in linq as an iMessage voice memo bubble. Returns the queued voice memo under the voice_memo key. Supported formats: MP3, M4A, AAC, CAF, WAV, AIFF, AMR. Max 10MB. Required: chat_id.
- **Create a Linq message update** (Create). Update an iMessage app card in place in Linq. Returns the new message version as chat_id and message (id, created_at, delivery_status, parts). The original card must be delivered and sent by you; only url, fallback_text, and layout are replaced. Required: message_id, layout.
- **Create a Linq attachment** (Create). Pre-upload a file in Linq to obtain a presigned URL and a permanent attachment_id. Returns the upload payload including attachment_id, upload_url, download_url, http_method, expires_at, and required_headers. Max file size 100MB; WebP, SVG, FLAC, OGG, and executables are rejected. Required: filename, content_type, size_bytes.
- **Get single Linq attachment by ID** (Get). Get metadata for a specific Linq attachment by id. Returns the attachment object including id, filename, content_type, size_bytes, status, download_url, and created_at. The status field is deprecated. Required: id.
- **Delete a Linq attachment by ID** (Delete). Permanently delete a Linq attachment by id. Returns an empty 204 response on success. Required: id.
- **List all Linq phonenumbers** (List). List phone numbers assigned to the authenticated partner in Linq. Deprecated; use GET /v3/phone_numbers instead. Returns: id, phone_number, type, country_code, capabilities.
- **List all Linq phone numbers** (List). List phone numbers assigned to the authenticated Linq partner. Returns a list of phone numbers with id, phone_number, forwarding_number, reputation, and health_status. No required parameters.
- **Update a Linq phone number by ID** (Update). Update the forwarding number for a Linq phone number. Returns the updated phone number with id, phone_number, forwarding_number, reputation, and health_status. Pass an empty string to clear forwarding. Required: id, forwarding_number.
- **List all Linq available numbers** (List). Get the best available Linq sending line (E.164). Returns: phone_number, vcf_url. Optionally pass to as a list of recipient handles (E.164 or email) to make the line choice sticky.
- **List all Linq webhook events** (List). List available webhook event types in linq. Returns an array of event strings such as message.sent, message.received, and message.delivered.
- **List all Linq webhook subscriptions** (List). List all webhook subscriptions in Linq. Returns: id, created_at, is_active, subscribed_events, target_url, updated_at, phone_numbers.
- **Create a Linq webhook subscription** (Create). Create a new webhook subscription in Linq. Returns: id, target_url, signing_secret, subscribed_events, phone_numbers, is_active, created_at, updated_at. Each target_url can only be used once per account; store the signing_secret securely as it is only returned once. Required: target_url, subscribed_events.
- **Get single Linq webhook subscription by ID** (Get). Get a single Linq webhook subscription by id. Returns: id, target_url, subscribed_events, phone_numbers, is_active, created_at, updated_at. Required: id.
- **Update a Linq webhook subscription by ID** (Update). Update a Linq webhook subscription by id. Returns: id, target_url, subscribed_events, phone_numbers, is_active, created_at, updated_at. The signing secret cannot be changed. Required: id.
- **Delete a Linq webhook subscription by ID** (Delete). Delete a Linq webhook subscription by id. Returns an empty 204 response on success. Required: id.
- **Create a Linq capability check imessage** (Create). Check whether a recipient address is reachable via iMessage in Linq. Returns: address, available. Required: address.
- **Create a Linq capability check rc** (Create). Check whether a recipient address supports RCS messaging in Linq. Returns: address, available. Required: address.
- **List all Linq contact cards** (List). List contact cards in Linq. Returns: phone_number, first_name, last_name, image_url, is_active. Optionally filter by phone_number.
- **Create a Linq contact card** (Create). Create a contact card in Linq for initial, one-time setup. Returns: phone_number, first_name, last_name, image_url, is_active. Use PATCH for later updates. Required: phone_number, first_name.
- **Linq contact cards bulk update** (Update). Update an existing active contact card in Linq. Returns: phone_number, first_name, last_name, image_url, is_active. Omitted body fields keep their existing values. Required: phone_number.
- **Create a Linq location request** (Create). Send a location sharing request to a contact in a linq chat. Returns: success, message. Only works in 1:1 iMessage chats; group, SMS, or RCS chats return a 409 conflict. Required: chat_id.
- **List all Linq chat locations** (List). List live location-sharing features for a Linq chat. Returns a GeoJSON Feature array with type, Point geometry, and properties including handle, address, locality, and updated_at. Required: chat_id.
- **List all Linq chat messages** (List). List messages in a Linq chat thread. Returns: id, chat_id, service, preferred_service, from, from_handle, parts, reply_to, is_from_me, is_delivered, is_read, delivery_status, created_at, updated_at, sent_at, delivered_at, read_at, effect. Required: chat_id.
- **Create a Linq chat message** (Create). Send a message to an existing Linq chat. Returns the accepted message with chat_id and the message object (id, created_at, delivery_status, parts, from_handle).parts. Link and iMessage app parts must each be the only part in the message. Required: chat_id, message.
- **Create a Linq message reaction** (Create). Add or remove an emoji reaction to a Linq message. Returns: status, trace_id, message. Provide custom_emoji when type is custom; optionally target a specific part via part_index. Required: message_id, operation, type.
