# Kisi MCP connector

The Kisi connector brings your Kisi cards, card assignments, cameras and calendar summaries to Claude, ChatGPT, Cursor and the Elaichi Agent, so each person can look up and manage building access inside their own permissions.

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

## Facts

| | |
| --- | --- |
| Application | Kisi |
| Category | Security |
| AI tools | 229 |
| 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 Kisi is connected

- Which Kisi cards are still active for contractors who left in March?
- Deactivate the card assigned to Priya Nair and confirm it is off.
- Give me the video link for the lobby camera from this morning.

## Connect Kisi in Elaichi

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

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

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

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

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

### Check which cards are active right now

Security. Ask for every active Kisi card and who it is assigned to, then spot the contractor badge that should have been switched off weeks ago.

### Issue a card to a new contractor

Facilities. Create the Kisi card, assign it to the contractor and activate it in one conversation, without opening the Kisi dashboard between calls.

### Deactivate a lost card before lunch

IT. When someone reports a badge missing, deactivate that Kisi card on the spot and confirm the assignment is off before the person reaches the door.

### Pull a card back when someone leaves

HR. On a last day, deassign the person's Kisi card and deactivate it as part of the offboarding checklist, with the change named in the log.

### Grab the camera link for an incident

Operations. Find the right Kisi camera by name and fetch its video link while the report is still being written, instead of hunting through a camera list.

### Review calendar summaries before a site visit

Workplace. Read the Kisi calendar summaries for a location to see what access is scheduled, then update a camera's details if the room layout has changed.

## Elaichi vs Zapier MCP vs Composio for Kisi

All three can connect Kisi to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over Kisi tools | Allow or restrict single Kisi tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per Kisi call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect Kisi to Claude?

In Elaichi, pick Kisi from the catalog and paste in your Kisi API key, which you copy from your Kisi account. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. There is no OAuth application to register and no client ID or secret to generate for Kisi.

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

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

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

An agent can list your Kisi cards and card assignments, see who holds which card, create or update an assignment, and activate or deactivate a card. It can also list Kisi cameras, create or update one, fetch a camera's video link, and read calendar summaries. Short, concrete asks such as deactivate card 4471 work better than long paragraphs.

### Does connecting Kisi give the AI every card, camera and door?

No. The connection carries the Kisi access of the person who connected it, so the agent sees the cards, cameras and calendar summaries that Kisi account is allowed to see, and nothing beyond that. Elaichi can narrow that access further for any team, and it can never widen it.

### Can my team share one Kisi connection?

Yes. One person connects Kisi with the API key and shares the connection with a team, and nobody else ever handles the key. Each teammate still signs in to Elaichi as themselves, so every card activation or camera change in Kisi is logged under their own name.

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

Yes. Restrictions in Elaichi work per action, so you can allow reading Kisi cards and cameras while blocking delete, deactivate or update. A restricted action is never advertised to Claude, ChatGPT or Cursor at all, so no prompt can reach it.

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

Offboarding a person in Elaichi ends their access to Kisi through every client at once. If they connected Kisi and shared it with a team, the shared connection keeps working for everyone else. Disconnecting Kisi once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client together.

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

Yes. Kisi 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.

### Is Elaichi an alternative to Zapier MCP for Kisi?

Yes. Both let Claude, ChatGPT or Cursor use Kisi. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every Kisi call.

### How is Elaichi different from Composio for Kisi?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to Kisi: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 229 Kisi tools

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

- **List all Kisi calendar summaries** (List). Get a summary of a Kisi scheduleable's calendar events for a time window. Returns: events, exceptions, schedules_by_day. Duration-only around values are not supported. Required: around, consequence.
- **List all Kisi cameras** (List). List Kisi cameras. Returns camera objects including id, name, description, status, enabled, place_id, lock_id, and snapshot/clip settings. Supports filtering and name-based sorting.
- **Create a Kisi camera** (Create). Create a Kisi camera. Returns the created camera object including id, resource_type, name, description, enabled, status, created_at, place_id, and lock_id. Required: camera.
- **Get single Kisi camera by ID** (Get). Get a Kisi camera by id. Returns the full camera object including id, name, description, status, enabled, place_id, and lock_id, plus integration details for Rhombus Systems cameras. Required: id.
- **Update a Kisi camera by ID** (Update). Update a Kisi camera by id, changing attributes such as name, description, enabled state, lock assignment, or snapshot and clip settings. Returns an empty 204 response on success. Required: id, camera.
- **Delete a Kisi camera by ID** (Delete). Delete a Kisi camera by id. Returns an empty 204 response on success. Required: id.
- **Get single Kisi camera video link by ID** (Get). Get a Kisi camera video link by id. Returns the url of the camera's video stream. Required: id.
- **List all Kisi card assignments** (List). List card assignments in Kisi, filterable by assignee, card, and status. Returns card assignment objects including id, resource_type, status, assignee_type, assignee_id, card_id, two_factor_pin, created_at, updated_at, and created_by.
- **Create a Kisi card assignment** (Create). Create a card assignment in Kisi, linking a card to a user or guest assignee. Returns the created assignment including id, status, assignee_type, assignee_id, card_id, two_factor_pin, created_at, and created_by. Requires a card_assignment object with assignee_type, assignee_id, and card_id. Required: card_assignment.
- **Get single Kisi card assignment by ID** (Get). Get a single card assignment in Kisi by id. Returns the assignment including id, resource_type, status, assignee_type, assignee_id, card_id, two_factor_pin, created_at, updated_at, and created_by. Required: id.
- **Update a Kisi card assignment by ID** (Update). Update a card assignment in Kisi by id, e.g. to set or clear its two factor pin. Accepts a card_assignment object with two_factor_pin and send_two_factor_pin_notification. Returns an empty 204 response on success. Required: id, card_assignment.
- **Delete a Kisi card assignment by ID** (Delete). Delete a card assignment in Kisi by id, unassigning the associated card. Returns an empty 204 response on success. Required: id.
- **Kisi card assignments activate** (Activate). Activate a card assignment in Kisi by id. Returns an empty 204 response on success. Required: card_assignment_id.
- **Kisi card assignments deactivate** (Deactivate). Deactivate a card assignment in Kisi by id. Returns an empty 204 response on success. Required: card_assignment_id.
- **Create a Kisi card assignment activate with token** (Create). Activate a card assignment in Kisi using its activation token. Returns an empty 204 response on success. Required: activation_token.
- **List all Kisi cards** (List). List cards in Kisi. Returns card records with id, type, token or uid, model, frequency, third_party, last_used_at, and created_at. Filter by status, token, uid, data_block_value, or LF card identifiers. Max 250 per page.
- **Create a Kisi card** (Create). Create a card in Kisi by registering its token or UID. Returns the created card with id, type, token or uid, model, frequency, and third_party.g. token and type for mifare_desfire, uid and type for third_party_hf).
- **Get single Kisi card by ID** (Get). Get a single card in Kisi by id. Returns the card record including id, type, token or uid, model, frequency, third_party, and last_used_at. Required: id.
- **Update a Kisi card by ID** (Update). Update the two-factor PIN settings of a card in Kisi by id. Returns an empty 204 response on success. This endpoint and its two_factor_pin fields are deprecated upstream. Required: id, card.
- **Delete a Kisi card by ID** (Delete). Delete a card in Kisi by id. Returns an empty 204 response on success. Required: id.
- **Kisi cards assign** (Assign). Assign a Kisi card to a user as their primary card; if the user already has a primary card, the card is assigned as backup. Returns an empty 204 response on success.email. Required: card_id, card.
- **Kisi cards activate** (Activate). Activate a Kisi card by id. Only cards that have already been assigned can be activated. Returns an empty 204 response on success. Required: card_id.
- **Kisi cards deactivate** (Deactivate). Deactivate a Kisi card by id. Returns an empty 204 response on success. Required: card_id.
- **Create a Kisi card deassign** (Create). Deassign a card in Kisi by id. Returns an empty 204 response on success. This endpoint is deprecated upstream. Required: card_id.
- **Create a Kisi card activate with token** (Create). Activate a card in kisi by its activation token; only assigned cards can be activated. Returns an empty 204 response on success. This endpoint is deprecated. Required: activation_token.
- **List all Kisi controller input connections** (List). List the controller input connections of a Kisi controller, covering contact sensor, request-to-exit, third-party alarm, and tamper detection types. Returns: id, created_at, updated_at, type, name. Required: controller_id.
- **Create a Kisi controller input connection** (Create). Create a controller input connection in Kisi for a controller input. Returns the created connection with id, name, type, controller_input, lock, zone, action, and enabled.
- **Get single Kisi controller input connection by ID** (Get). Get a single Kisi controller input connection by id. Returns: id, created_at, updated_at, type. Required: id.
- **Update a Kisi controller input connection by ID** (Update). Update a Kisi controller input connection by id; accepts only the fields editable for its type (e.g. name, enabled, duration, action, end-of-line settings). Returns an empty 204 response on success. Required: id.
- **Delete a Kisi controller input connection by ID** (Delete). Delete a Kisi controller input connection by id. Returns an empty 204 response on success. Required: id.
- **List all Kisi controller inputs** (List). List controller inputs in Kisi for a specific controller. Returns: id, channel, name, type, status, created_at, updated_at, controller_id, controller_input_connection_id. The type field is only populated for Controller Pro 1.0 and 1.1 controllers. Required: controller_id.
- **List all Kisi controller relay connections** (List). List Kisi controller relay connections for a given controller. Returns: id, created_at, updated_at, type, name. Required: controller_id.
- **Create a Kisi controller relay connection** (Create). Create a Kisi controller relay connection linking a controller relay to a lock, elevator stop, siren, or third-party alarm zone. Returns: id, created_at, updated_at, name, type, duration, controller_relay_id, controller_relay, lock_id, lock, elevator_stop_id, elevator_stop, zone_id, zone, duration_for_away_mode, duration_for_stay_mode.
- **Get single Kisi controller relay connection by ID** (Get). Get a single Kisi controller relay connection by id. Returns: id, created_at, updated_at, type, name. Required: id.
- **Update a Kisi controller relay connection by ID** (Update). Update a Kisi controller relay connection by id. Accepts a new name, relay duration, or third-party alarm away/stay mode durations. Returns an empty 204 response on success. Required: id.
- **Delete a Kisi controller relay connection by ID** (Delete). Delete a Kisi controller relay connection by id. Returns an empty 204 response on success. Required: id.
- **List all Kisi controller relays** (List). List Kisi controller relays for a given controller. Returns: id, channel, name, status, aux, created_at, updated_at, controller_id, controller_relay_connection_id. Required: controller_id.
- **List all Kisi controllers** (List). List Kisi controllers. Returns each controller's id, name, description, created_at, device_id, model, online status, token, place_id, and its associated place. Max 250 per page.
- **Kisi controllers assign** (Assign). Assign a Kisi controller by its token, binding it to a name and place. Returns an empty 204 response on success. Required: token, controller.
- **Get single Kisi controller by ID** (Get). Get a single Kisi controller by id. Returns the full controller object including id, name, device_id, model, network and IP details, online status, token, and its place. Required: id.
- **Update a Kisi controller by ID** (Update). Update a Kisi controller by id, optionally changing its name, description, or zone_controller flag. Returns an empty 204 response on success. Required: id, controller.
- **Create a Kisi controller deassign** (Create). Deassign a controller in Kisi, removing its current assignment. Returns an empty 204 response on success. Required: controller_id.
- **Create a Kisi controller reboot** (Create). Reboot a controller in Kisi. Returns an empty 204 response on success. Required: controller_id.
- **List all Kisi controller wiegand connections** (List). List Kisi controller wiegand connections for a controller. Returns: id, created_at, updated_at, type, name. Required: controller_id.
- **Create a Kisi controller wiegand connection** (Create). Create a Kisi controller wiegand connection (legacy_reader, legacy_controller, or legacy_keypad_reader). Returns the created connection including id, name, type, controller_wiegand, lock, created_at, and updated_at, plus variant-specific fields.
- **Get single Kisi controller wiegand connection by ID** (Get). Get a Kisi controller wiegand connection by id. Returns the connection including id, name, type, controller_wiegand, lock, created_at, and updated_at, plus variant-specific fields (virtual card, keypad, or elevator). Required: id.
- **Update a Kisi controller wiegand connection by ID** (Update). Update a Kisi controller wiegand connection by id; accepts name and virtual card attributes (format, card number, facility code, card id, oem, uid, uid length) under controller_wiegand_connection. Returns an empty 204 response on success. Required: id, controller_wiegand_connection.
- **Delete a Kisi controller wiegand connection by ID** (Delete). Delete a Kisi controller wiegand connection by id. Returns an empty 204 response on success. Required: id.
- **List all Kisi controller wiegands** (List). List Kisi controller wiegands for a specific controller. Returns: id, channel, name, created_at, updated_at, controller_id, controller_wiegand_connection_id. Required: controller_id.
- **Create a Kisi CSV card import** (Create). Create a CSV card import in Kisi to start importing cards from a previously uploaded CSV file. Returns: id, name, created_at, updated_at, import_errors, file_name, status, organization_id, organization.file_name. The CSV file must first be uploaded using the Signed upload URL endpoint. Required: csv_card_import.
- ...and 179 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
