# Autotask MCP connector

The Autotask connector brings tickets, ticket notes, companies, contacts and resources into Claude, ChatGPT, Cursor and any MCP client, so your team can look up, create and update service desk work in plain language, with every action logged.

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

## Facts

| | |
| --- | --- |
| Application | Autotask |
| Category | Ticketing |
| AI tools | 37 |
| 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. 37 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Autotask is connected

- How many Autotask tickets are open for Acme this week?
- Add a note to Autotask ticket 48210 about the callback.
- List Autotask companies with tickets unresolved over five days.

## Connect Autotask in Elaichi

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

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

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

### Log a ticket while the client is talking

Service desk. Describe the problem as the caller explains it and a new Autotask ticket is created against the right company and contact, with the details filled in before the call ends.

### Catch the ticket up after the fix

Service desk. Say what you did and the ticket gets a note, a new status and an updated description, without opening Autotask and clicking through each field.

### See what is open and who owns it

Dispatch. Ask for every open ticket in a queue, grouped by the resource assigned, and spot the ones nobody has picked up yet.

### Prepare for a client review in minutes

Account management. Pull every ticket a company has raised this quarter, read the notes, and walk into the meeting knowing what went wrong and how quickly it was fixed.

### Set up a new client without the forms

Operations. Create the company record in Autotask and add its main contacts in one go, then check the details read back correctly.

### Get ticket counts without building a report

Management. Ask how many tickets are open, how many came in this week, or how many sit with one technician, and get a number from live Autotask records.

## Frequently asked questions

### How do I connect Autotask to Claude?

In Elaichi, choose Autotask and paste in the API key from your Autotask account, then it is connected. There is no OAuth application to register and no client ID or secret to generate. In 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 Autotask tickets, companies and contacts are available in the conversation.

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

Yes. Autotask is connected once in Elaichi, and the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any MCP client and the Elaichi Agent. Each client signs in over OAuth, so nobody pastes an Autotask API key into a chat window.

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

An agent can list and read Autotask tickets, ticket notes, companies, contacts and resources, count them, and create or update tickets, notes, companies and contacts. In practice that means logging a ticket from a call, adding a note after a fix, checking what is open for a client, or setting up a new company with its contacts. Autotask has a lot of actions available, so short, concrete asks like "open tickets for Acme this week" work better than long paragraphs.

### Does connecting Autotask give the AI access to every ticket and company?

No. Every request runs inside the Autotask access of the person who signed in, so an agent sees the tickets, companies and contacts that person can already see in Autotask, and nothing more. Elaichi can narrow that further, for example to reading only, but it can never widen it beyond what Autotask already allows.

### Can my team share one Autotask connection?

Yes. One person connects Autotask in Elaichi and shares it with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so every ticket created or note added through the shared Autotask connection is recorded under their own name in the audit log.

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

Yes. Restrictions in Elaichi work per action, so you can allow reading Autotask tickets and companies while blocking updates, or allow adding notes while blocking changes to ticket status. A blocked action is never advertised to Claude, ChatGPT, Cursor or any other client, so no prompt can reach it. This connector does not delete Autotask records at all.

### What happens to an Autotask connection when someone leaves?

Offboarding that person in Elaichi ends their access to Autotask through every client at once, including Claude, ChatGPT and Cursor. A shared Autotask connection keeps working for everyone else on the team. If you ever want to remove Autotask entirely, disconnecting it once in Elaichi removes it from every client at the same time.

## All 37 Autotask tools

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

- **List all Autotask tickets** (List). Search Autotask Tickets using a JSON filter query. Returns Ticket objects including id, ticketNumber, title, description, status, priority, queueID, companyID, contactID, assignedResourceID, ticketType, issueType, dueDateTime, createDate, completedDate, lastActivityDate, resolution and userDefinedFields. The request body accepts a filter with operators such as eq, gte, contains, in, and grouping with and/or.
- **Get single Autotask ticket by ID** (Get). Retrieve a single Autotask Ticket by its id. Returns the full Ticket object including status, priority, assignment, dates, resolution and user-defined fields.
- **Autotask tickets count** (Action). Count Autotask Tickets matching a JSON filter query, without returning the records. Use the same filter syntax as the ticket list. Returns queryCount.
- **Create a Autotask ticket** (Create). Create a Ticket in Autotask. Fields are sent at the top level of the request body (Autotask does not use a wrapper object). Required: title, companyID, status, priority, and either queueID or assignedResourceID. Returns the created ticket id.
- **Update a Autotask ticket by ID** (Update). Fully update an Autotask Ticket (HTTP PUT). Include the ticket id plus every field you want to persist — fields omitted from a PUT may be cleared. Use partial_update (PATCH) to change only selected fields.
- **Autotask tickets partial update** (Update). Partially update an Autotask Ticket (HTTP PATCH). Send the ticket id plus only the fields you want to change; all other fields are left untouched. This is the safer option for routine updates such as changing status or reassigning.
- **List all Autotask ticket notes** (List). Search Autotask TicketNotes using a JSON filter query. Returns: id, description, title, ticketID, noteType, publish, createDateTime, lastActivityDate, createdByContactID, creatorResourceID, impersonatorCreatorResourceID, impersonatorUpdaterResourceID, userDefinedFields. The request body accepts a filter with operators such as eq, gte, and grouping with and/or.
- **Get single Autotask ticket note by ID** (Get). Get a single Autotask TicketNote by id. Returns: id, description, title, ticketID, noteType, publish, createDateTime, lastActivityDate, createdByContactID, creatorResourceID, impersonatorCreatorResourceID, impersonatorUpdaterResourceID, userDefinedFields. Required: id.
- **Autotask ticket notes count** (Action). Count the total number of TicketNotes records in Autotask matching a given filter. Returns the matching record count as an integer. Required: filter.
- **Create a Autotask ticket note** (Create). Create a note on an Autotask ticket. Returns the created ticket note including its id, title, description, createdDateTime, and lastModifiedDateTime. Required: ticket_id.
- **Autotask ticket notes partial update** (Update). Partially update a ticket note belonging to a specific Autotask ticket. Returns the updated note object including id, description, and title. Required: ticket_id.
- **List all Autotask companies** (List). List Autotask organizations (Companies) using filter expressions sent as a POST body. Returns: id, companyName, companyNumber, companyType, companyCategoryID, isActive, createDate, createdByResourceID, lastActivityDate, lastTrackedModifiedDateTime, phone, alternatePhone1, alternatePhone2, fax, address1, address2, city, state, postalCode, countryID, additionalAddressInformation, webAddress,…
- **Get single Autotask company by ID** (Get). Get a single Autotask company (organization) by id. Returns the full organization record including companyName, companyType, isActive, address fields, phone, webAddress, billing and tax settings, ownerResourceID, parentCompanyID, and audit timestamps. Required: id.
- **Autotask companies count** (Action). Count the total number of Autotask companies (organizations) matching a filter. Returns: count. Accepts a filter array in the request body whose entries use op, field, and value properties; when no filter is supplied, counts all company records.
- **Create a Autotask company** (Create). Create a new organization (Company) in Autotask. Returns the created company object including id, companyName, companyType, isActive, createDate, and all address, billing, and configuration fields. Required: companyName, companyType. The billToAddressToUse field defaults to "Use Organization Address" on create and any billing address values provided are ignored.
- **Update a Autotask company by ID** (Update). Update an existing Autotask company (organization) by submitting the full entity with modified fields. Returns: itemId. Required: id, companyName, companyType. companyType cannot be updated when isTaskFireActive is True, or changed from vendor if the organization has existing services.
- **Autotask companies partial update** (Update). Partially update an Autotask company by submitting only the fields to change. Returns the updated company object including id, companyName, companyType, isActive, and phone. Required: id (company identifier in the request body).
- **List all Autotask contacts** (List). List Autotask contacts using filter expressions in the POST body. Returns each contact with id, firstName, lastName, emailAddress, companyID, isActive, createDate, userDefinedFields, and additional address, phone, and social media fields.
- **Get single Autotask contact by ID** (Get). Get a single Autotask contact by id. Returns: id, firstName, lastName, middleInitial, namePrefix, nameSuffix, title, emailAddress, emailAddress2, emailAddress3, phone, alternatePhone, mobilePhone, faxNumber, extension, companyID, companylocationID, countryID, addressLine, addressLine1, city, state, zipCode, additionalAddressInformation, roomNumber, facebookUrl, linkedInUrl, twitterUrl, isActive,…
- **Autotask contacts count** (Action). Count Autotask contacts matching filter expressions in the POST body. Returns: count.
- **Create a Autotask contact** (Create). Create a new contact associated with an Autotask company. Returns the created contact including id, firstName, lastName, emailAddress, companyID, isActive, createDate, and all contact detail fields. Required: company_id, firstName, lastName, isActive.
- **Autotask contacts partial update** (Update). Partially update an existing Autotask contact by providing only the fields to change. Returns the updated contact including id, firstName, lastName, emailAddress, companyID, isActive, lastModifiedDate, and all contact detail fields. Required: company_id, id.
- **List all Autotask Autotask resources** (List). Search Autotask Resources (staff users such as technicians and account managers) using a JSON filter query. Returns Resource objects including id, userName, firstName, lastName, email, isActive, resourceType, licenseType, title, phone numbers, locationID and defaultServiceDeskRoleID. Use this to look up the assignedResourceID needed when creating or assigning tickets.
- **Get single Autotask Autotask resource by ID** (Get). Get a single Autotask resource (internal staff member) by id. Returns: id, firstName, lastName, email, hireDate, homePhone, gender, and additional contact and HR fields. Required: id.
- **Autotask Autotask resources count** (Action). Count the number of Autotask Resources records matching a filter expression sent in the request body. Returns the total record count as an integer. Required: filter.
- **List all Autotask ticket fields** (List). List field metadata for the Tickets entity in Autotask, including each field's name, data type, length, required/readonly/queryable flags, reference and picklist configuration, and webhook support. Returns: name, dataType, length, isRequired, isReadOnly, isQueryable, isReference, referenceEntityType, isPickList, picklistValues, picklistParentValueField, isSupportedWebhookField.
- **Autotask ticket fields list user defined** (List). List the user-defined (custom) field definitions available on the Autotask Ticket entity. Returns each UDF with its name, label, data type, whether it is required or read-only, and any picklist values. Use this to discover which entries are valid inside the userDefinedFields array when creating or updating a ticket.
- **Autotask ticket fields get entity information** (Get). Get entity information for the Autotask Tickets entity, including its CRUD capabilities, user access levels, and feature support. Returns: name, canCreate, canDelete, canQuery, canUpdate, userAccessForCreate, userAccessForDelete, userAccessForQuery, userAccessForUpdate, hasUserDefinedFields, supportsWebhookCallouts.
- **List all Autotask ticket webhooks** (List). List Autotask ticket webhooks by sending a POST query with filter expressions. Returns each webhook with id, Name, IsActive, WebhookUrl, DeactivationUrl, SecretKey, and additional configuration fields.
- **Get single Autotask ticket webhook by ID** (Get). Get a single Autotask ticket webhook by id. Returns: id, IsActive, DeactivationUrl, IsReady, IsSubscribedToCreateEvents, IsSubscribedToDeleteEvents, IsSubscribedToUpdateEvents, Name, NotificationEmailAddress, OwnerResourceID, SecretKey, SendThresholdExceededNotification, WebhookGUID, WebhookUrl. Required: id.
- **Autotask ticket webhooks count** (Action). Count Autotask ticket webhooks matching a POST query filter. Returns the total record count as an integer.
- **Create a Autotask ticket webhook** (Create). Create a new Autotask ticket webhook. Returns the full webhook object including id, IsActive, Name, WebhookUrl, IsReady, and WebhookGUID. Required: Name, WebhookUrl, DeactivationUrl, SecretKey, IsActive, SendThresholdExceededNotification.
- **Update a Autotask ticket webhook by ID** (Update). Update an existing Autotask ticket webhook. Returns the full webhook object including id, IsActive, Name, WebhookUrl, IsReady, and WebhookGUID. Required: id, Name, WebhookUrl, DeactivationUrl, SecretKey, IsActive, SendThresholdExceededNotification.
- **Autotask ticket webhooks partial update** (Update). Partially update a Ticket Webhook configuration in Autotask by sending only the changed fields in the request body. Returns the updated webhook object including id, Name, WebhookUrl, IsActive, SecretKey, DeactivationUrl, IsReady, WebhookGUID, and OwnerResourceID. Required: id.
- **Delete a Autotask ticket webhook by ID** (Delete). Delete an Autotask ticket webhook by id. Returns an empty 204 response on success. Required: id.
- **List all Autotask ticket webhook fields** (List). Query Autotask ticket webhook fields using a POST filter expression to retrieve fields that trigger callouts or are included in webhook payloads. Returns: id, FieldID, IsDisplayAlwaysField, IsSubscribedField, WebhookID. The request body accepts a filter array of conditions; a default filter is applied if none is supplied.
- **Autotask ticket webhook fields count** (Action). Count the number of TicketWebhookFields records in Autotask that match a given filter expression. Returns the total record count for the specified filter. Accepts a POST body containing filter conditions with comparison operators (eq, gte, and, or) to narrow the count.
