# Imagga MCP connector

Connect Imagga to Elaichi and Claude, ChatGPT, Cursor, or any MCP client can tag images, sort them into categories, flag adult content, detect faces and compare them, all inside your team's own access with every call logged.

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

## Facts

| | |
| --- | --- |
| Application | Imagga |
| Category | Artificial Intelligence |
| AI tools | 50 |
| 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 Imagga is connected

- Tag the product photos uploaded this week and group them by category
- Run adult content moderation on yesterday's uploads and list anything flagged
- Check whether these two headshots show the same person

## Connect Imagga in Elaichi

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

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

## Imagga 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.

## Imagga 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.

## Imagga 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 Imagga 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 Imagga 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 Imagga through Elaichi

### Tag a batch of campaign photos

Marketing. Upload the new campaign shots and ask for descriptive tags on each one, so the image library is searchable before anyone has to type a keyword by hand.

### Sort product images into catalog categories

E-commerce. Run new product photos through Imagga categories and get back a suggested section for each, ready to review before the listings go live.

### Screen user uploads for adult content

Trust and Safety. Check the day's uploads for adult content and pull the text moderation results in the same pass, then list only the items that need a human look.

### Check whether two photos show the same person

Product. Run faces detection on a pair of profile photos and ask for a similarity score, useful for verifying a re-uploaded avatar against the original.

### Find faces in event photos before publishing

Community. Detect how many faces appear in each gallery image so the team knows which photos need consent checks before they are posted.

### Report on Imagga usage this month

Operations. Ask how many uploads, tags and moderation checks ran this month and get a plain summary against your plan without opening the Imagga dashboard.

## Frequently asked questions

### How do I connect Imagga to Claude?

Two steps. In Elaichi, connect Imagga by pasting your Imagga API key, which you copy from your Imagga account. Then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. There is no OAuth application to register and no client ID or secret to generate.

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

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

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

With Imagga connected, an agent can upload an image, ask for tags and categories on it, run adult content and text moderation, detect faces and compare two faces for similarity, and check your usage. Short concrete asks work best, such as tagging this week's uploads or flagging anything unsafe in a folder.

### Does connecting Imagga give the AI access to everything in my account?

No. Every request to Imagga runs through the key and plan your organization connected, and only for the people you have shared it with in Elaichi. Elaichi can narrow that access further, for example to tagging only, and it never widens it beyond what the Imagga account already allows.

### Can my team share one Imagga connection?

Yes. One person connects Imagga with the API key, shares the connection with a team in Elaichi, and nobody else ever sees or handles that key. Each person still signs in to Elaichi as themselves, so the audit log names who ran each tag, moderation check or faces detection.

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

Yes. Restrictions in Elaichi apply per action, so you can allow reading tags and categories while blocking new uploads or moderation runs. A restricted Imagga action is never advertised to Claude, ChatGPT or any other client, so no prompt can reach it.

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

Offboarding that person in Elaichi ends their access to Imagga at once, across Claude, ChatGPT, Cursor and every other client. A shared Imagga connection keeps working for everyone else on the team. If you disconnect Imagga in Elaichi, it disappears from every client in one step.

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

Yes. Imagga 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 50 Imagga tools

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

- **List all Imagga usage** (List). Get Imagga subscription usage statistics for the current billing period. Returns: billing_period_start, billing_period_end, monthly_limit, monthly_requests, monthly_processed, weekly_requests, weekly_processed, daily_requests, daily_processed, daily_for, total_requests, total_processed, last_usage, daily, weekly, monthly, concurrency.
- **Create a Imagga upload** (Create). Upload an image (or supported video) file to imagga and receive an upload_id that can be passed as image_upload_id to analysis endpoints such as tagging, categorization, and cropping. Returns: upload_id, score. Requires image (multipart file) or image_base64.
- **Get single Imagga upload by ID** (Get). Check the status of an uploaded file in imagga and retrieve its content id. Returns: upload_id. Required: id. Uploaded files expire automatically after the retention window.
- **Get single Imagga ticket by ID** (Get). Get the status and result of an Imagga asynchronous job (face grouping, index training, batch processing) by its ticket id. Returns: id, is_final, result.g. face grouping clusters). Required: id. Supports all=1 to retrieve intermediate results; tickets are retained for 24 hours after the job finishes and are deleted once the final result is retrieved.
- **Create a Imagga tag** (Create). Analyze an uploaded image with Imagga's Image Tagging API (v2) and return a flat list of descriptive tags. Returns: tags.en). Provide exactly one image input: image (multipart file) or image_base64.
- **Get single Imagga tag by ID** (Get). Get Imagga's Image Tagging API (v2) tags for previously uploaded images by passing the image upload id (comma-separate ids to batch) in the path. Returns: tags.en). Required: id.
- **List all Imagga tags** (List). Analyze an image by URL or upload id with Imagga's Image Tagging API (v2) and return a flat list of descriptive tags with confidence scores. Returns: tags.en). Provide exactly one image input: image_url or image_upload_id.
- **Create a Imagga structured tag** (Create). Analyze an image with Imagga's Structured Image Tagging API (v3) via binary upload or base64 content. Returns: caption, metadata, tags. Requires exactly one of image or image_base64.
- **Get single Imagga structured tag by ID** (Get). Get structured semantic tags for a previously uploaded image by id with Imagga's Structured Image Tagging API (v3). Returns: caption, metadata, tags. Required: id.
- **List all Imagga structured tags** (List). Analyze an image by URL or upload id with Imagga's Structured Image Tagging API (v3). Returns: caption, metadata, tags. Requires exactly one of image_url or image_upload_id.
- **Create a Imagga category** (Create). Categorize an image with an Imagga categorizer by submitting a multipart image upload or a base64-encoded image. Returns: categories.en labels. Required: categorizer_id, plus the image itself via image or image_base64.
- **Get single Imagga category by ID** (Get). Get categorization results for a specific image under an Imagga categorizer by id (comma-separated upload ids are supported). Returns: categories.en labels. Required: id and categorizer_id.
- **List all Imagga categories** (List). List the categories defined for an Imagga categorizer (e.g. personal_photos, nude, general_v3). Returns: categories.en labels. Required: categorizer_id.
- **Create a Imagga adult content moderation** (Create). Classify an image for adult or explicit content in Imagga by uploading a binary image or base64 content. Returns: categories, tags. Requires an image input: image or image_base64.
- **Get single Imagga adult content moderation by ID** (Get). Get adult content moderation results for a previously uploaded image by id (upload id from POST /v2/uploads; comma-separated ids allowed). Returns: categories, tags. Required: id.
- **List all Imagga adult content moderation** (List). Classify an image for adult or explicit content in Imagga by image URL or uploaded image id. Returns: categories, tags. Provide one of image_url or image_upload_id.
- **Create a Imagga text moderation** (Create). Moderate text in an image uploaded directly to Imagga: OCR extracts visible text and classifies it into sensitive and PII-related categories. Returns: categories. Requires either image (binary file) or image_base64.
- **Get single Imagga text moderation by ID** (Get). Get OCR text moderation results from Imagga for a previously uploaded image, accepting comma-separated upload ids. Returns: categories. Required: id.
- **List all Imagga text moderation** (List). Moderate text visible in an image with Imagga's Text Moderation API: OCR extracts the text from the image at image_url and classifies it into sensitive and PII-related categories. Returns: categories. Required: image_url.
- **Create a Imagga faces detection** (Create). Detect human faces in an image via imagga using a binary upload or base64 payload. Returns a faces array where each detected face includes confidence, bounding-box coordinates, attributes, landmarks, and a face_id when requested. Requires an image input: image (multipart binary upload) or image_base64.
- **Get single Imagga faces detection by ID** (Get). Get face detections in imagga for previously uploaded images by id. Returns a faces array where each detected face includes confidence, bounding-box coordinates, attributes, landmarks, and a face_id when requested. Required: id (one or more comma-separated upload ids).
- **List all Imagga faces detections** (List). Detect human faces in an image in imagga by image URL or upload id. Returns a faces array where each detected face includes confidence, bounding-box coordinates, attributes, landmarks, and a face_id when requested. Requires one image input: image_url or image_upload_id.
- **Create a Imagga faces similarity** (Create). Create a face similarity comparison in Imagga by sending images for face comparison. Returns: score. Provide the image input as a multipart upload (image) or base64-encoded content (image_base64).
- **Get single Imagga faces similarity by ID** (Get). Get a face similarity result by id in Imagga using the /id variant of the Face Similarity API, where id holds the comma-separated upload ids to compare. Returns: score. Required: id.
- **List all Imagga faces similarities** (List). Compare faces in two images with the Imagga Face Similarity API. Returns: score.
- **Create a Imagga faces categorizer** (Create). Categorize the faces in an image with an Imagga face categorizer (e.g. gender, ethnicity_v2), submitting the image as a multipart upload (image) or base64-encoded content (image_base64). Returns the endpoint-specific face categorization result object. Required: face_categorizer_id.
- **Get single Imagga faces categorizer by ID** (Get). Get the face categorization result for a specific image from an Imagga face categorizer (e.g. gender, ethnicity_v2), identified by its image id. Returns the endpoint-specific face categorization result object. Required: id and face_categorizer_id.
- **List all Imagga faces categorizers** (List). List the possible face categories for an Imagga face categorizer (e.g. gender or ethnicity_v2). Returns the supported categories under categories. Required: face_categorizer_id.
- **Create a Imagga faces assignment** (Create). Create a face assignment in Imagga, associating a face_id (generated by the faces/detections endpoint) with an entry_id. Returns the created assignment result payload with endpoint-specific fields not enumerated in the Imagga docs. Required: face_id, entry_id.
- **Delete a Imagga faces assignment by ID** (Delete). Delete an Imagga face assignment by its id (the face_id of the assignment). Returns an empty 204 response on success. Required: id.
- **List all Imagga faces assignments** (List). List Imagga face assignments for a given face_id, or pass all=1 to retrieve all assignments. Returns assignment records with face_id, entry_id, and entry_title.
- **Create a Imagga faces grouping** (Create). Create an asynchronous face grouping job in Imagga: submits a set of faces (identified by their face_id) to be grouped into visually similar clusters. Returns: ticket_id, score.
- **Create a Imagga text** (Create). Create an OCR text extraction in Imagga by submitting an image directly — a multipart image file or base64-encoded content. Returns the detected text items, each with its recognized data and bounding-box coordinates (xmin, ymin, xmax, ymax, width, height). Provide image or image_base64 (one is required). Experimental endpoint.
- **Get single Imagga text by ID** (Get). Get Imagga OCR text recognition results for previously uploaded images by id — the upload_id returned by POST /v2/uploads; comma-separated ids are supported. Returns the text array of detected items, each with data and bounding-box coordinates (xmin, ymin, xmax, ymax, width, height). Required: id. Experimental endpoint.
- **List all Imagga text** (List). List Imagga OCR text recognition results for an image, detecting readable text and the location of each text region. Returns the text array of detected items, each with data and bounding-box coordinates (xmin, ymin, xmax, ymax, width, height). Required: image_url. Experimental endpoint.
- **Create a Imagga similar images category** (Create). Index images into a category-based similarity index in Imagga (Similar Images Search API). Returns a ticket_id for the asynchronous indexing job — query the /tickets endpoint for the final result. Required: categorizer_id, index_id. Supply images via image_url or image_upload_id; general_v3 is the recommended categorizer.
- **List all Imagga similar images categories** (List). Search a trained category-based similarity index in Imagga with an unlabeled image to find visually and semantically similar images. Returns: count, images. Required: categorizer_id, index_id. Supply the query image via image_url or image_upload_id.
- **Imagga similar images categories bulk delete** (Delete). Delete an entire category-based similarity index or a single entry from it in Imagga. Returns an empty 204 response on success. Required: categorizer_id, index_id. Omit entry_id to delete the entire index.
- **Create a Imagga color** (Create). Extract the dominant colors of an image in Imagga from a binary multipart upload or base64-encoded image content. Returns the colors object including image_colors, background_colors, foreground_colors, color_variance, color_percent_threshold, and object_percentage. Requires image or image_base64.
- **Get single Imagga color by ID** (Get). Extract the dominant colors of a previously uploaded image in Imagga by passing its upload id. Returns the colors object including image_colors, background_colors, foreground_colors, color_variance, color_percent_threshold, and object_percentage. Required: id (comma-separated upload ids are accepted).
- **List all Imagga colors** (List). Extract the dominant colors of an image with the Imagga Color Extraction API, given an image URL or a previously uploaded image id. Returns the colors object including image_colors, background_colors, foreground_colors, color_variance, color_percent_threshold, and object_percentage. Requires image_url (or image_upload_id as an alternative).
- **Create a Imagga cropping** (Create). Create smart cropping coordinates for an imagga image supplied as a multipart file upload or base64 content. Returns the croppings array of crop rectangles with x1, x2, y1, y2 coordinates and target_width/target_height. Requires image (multipart file) or image_base64.
- **Get single Imagga cropping by ID** (Get). Get smart cropping coordinates for a previously uploaded imagga image by id (the upload id from POST /v2/uploads). Returns the croppings array of crop rectangles with x1, x2, y1, y2 coordinates and target_width/target_height. Required: id. Comma-separated upload ids are supported.
- **List all Imagga croppings** (List). List smart cropping coordinates for an imagga image, returning the most visually important crop region per requested resolution. Returns the croppings array of crop rectangles with x1, x2, y1, y2 coordinates and target_width/target_height. Requires image_url or image_upload_id.
- **Create a Imagga smart cropping** (Create). Create structured crop boxes for an uploaded image in imagga by sending a binary image file or base64-encoded content. Returns: croppings, subject, reason, metadata. Requires either image or image_base64 (multipart/form-data).
- **Get single Imagga smart cropping by ID** (Get). Get structured smart-cropping results for an image in imagga by id. Returns: croppings, subject, reason, metadata. Required: id.
- **List all Imagga smart croppings** (List). List structured crop boxes for an image in imagga by analyzing a public image URL or an uploaded image id. Returns: croppings, subject, reason, metadata. Requires either image_url or image_upload_id.
- **Create a Imagga remove background** (Create). Remove the background of an image in Imagga and get the subject cut-out. Provide either image (multipart file upload) or image_base64 (base64-encoded content). Returns a binary PNG image (not JSON), transparent by default.
- **Get single Imagga remove background by ID** (Get). Get the background-removed subject cut-out for previously uploaded Imagga images by id; comma-separated upload ids (from POST /v2/uploads) are accepted. Returns a binary PNG image (not JSON). Required: id.
- **List all Imagga remove background** (List). Remove the background of an image in Imagga and get the subject cut-out. Supply image_url (direct image URL) or image_upload_id (upload ID from the Imagga uploads endpoint). Returns a binary PNG image (not JSON), transparent by default.
