Kisi MCP server

Read Kisi places, doors, users, groups, access rights and access logs (no unlocking). Hosted by usefulapi — connect from Claude, Cursor, or any MCP client.

Claude

  1. Open Settings → Connectors → Add custom connector
  2. Paste this URL:
    https://kisi.usefulapi.io/mcp
  3. Authenticate with Kisi when prompted

Cursor · VS Code · Windsurf · Cline

Add to your MCP config, then reload & authorize:

{
  "mcpServers": {
    "kisi": {
      "url": "https://kisi.usefulapi.io/mcp"
    }
  }
}
live23 toolsFree 100 tool calls / monthPro $9/mo · $90/yr

Tools 23

ToolTypeWhat it does
kisi_get_current_userread
Get the current user
The Kisi user the API key belongs to (id, name, email, organization). Good first call. GET /user.
kisi_get_organizationread
Get the organization
The current Kisi organization (name, domain, settings summary). GET /organization.
kisi_list_placesread
List places
List places (sites/buildings) in the organization with address, time zone and lock/member counts. GET /places.
kisi_get_placeread
Get a place
One place by id, including lockdown state. GET /places/{id}.
kisi_list_locksread
List locks (doors)
List locks/doors with their state: online, unlocked, locked_down, configured, place and floor. Filter to find offline or locked-down doors. GET /locks.
kisi_get_lockread
Get a lock (door)
One lock/door by id: online/unlocked/locked-down state, place, floor, settings. GET /locks/{id}.
kisi_list_groupsread
List access groups
List access groups (who-can-open-what bundles of doors). Filter by place or by a lock to see which groups open that door. GET /groups.
kisi_get_groupread
Get an access group
One access group by id (name, description, place, member/lock counts, restrictions). GET /groups/{id}.
kisi_list_group_locksread
List a group's locks
The locks/doors an access group opens. GET /group_locks?group_id=.
kisi_list_usersread
List users
List users (members) of the organization. Filter by group or place (users with access there), email, or free text over name/email/notes. Sort by last unlock. GET /users.
kisi_get_userread
Get a user
One user by id. GET /users/{id}.
kisi_list_role_assignmentsread
List role assignments (access rights)
Who holds which role where: a user/team/guest's role on the organization, a place or a group (group members = door access). Filter by user, group, place or role. GET /role_assignments.
kisi_list_cardsread
List access cards
List access cards with status (activated/deactivated/unassigned), assignee and last use. GET /cards.
kisi_list_presencesread
List presences at a place
Who was present at a place on a given day (derived from unlocks): actor, first/last unlock, last door. GET /presences.
kisi_list_schedulesread
List schedules
Time rules: when a group's access is allowed, when doors auto-unlock (unlock timer), first-to-arrive, elevator permit timers. Filter by consequence or by the group/lock it applies to. GET /schedules.
kisi_list_controllersread
List controllers
Kisi controllers (door hardware hubs) with online/offline status. Filter by place, lock or status. GET /controllers.
kisi_list_readersread
List readers
Kisi readers (card/phone readers at doors) with model and online/offline status. GET /readers.
kisi_search_eventswrite
Search access events
Search the access log (unlocks, denied attempts, lockdowns, admin changes) and return the first page. This CREATES a temporary saved search in Kisi (an event set, cursor-paginated, kept ~24 h); it changes no door, user or access right. Defaults to the past 90 days, the maximum width. If status is still in_progress or cursor is set, call kisi_get_event_set with the returned id. POST /event_sets.
kisi_get_event_setread
Get an event set page
Read an event set from kisi_search_events: its status and events. Pass the previous page's cursor for the next page. GET /event_sets/{id}.
kisi_list_event_typesread
List event types
All event type names usable as the type filter of kisi_search_events (e.g. lock.unlock). GET /events/types.
kisi_usage_statusmeta
Usage status (free-tier meter)
Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter.
kisi_upgrademeta
Upgrade to Pro (unlimited)
Subscribe to the Pro plan for UNLIMITED Kisi tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Does not count against the meter.
kisi_cancel_subscriptionmeta
Cancel the Pro subscription
Cancel the caller's Kisi Pro subscription at the end of the paid period (no refund for the current period; unlimited calls continue until then, then the free tier applies). Requires confirm: true. Run kisi_upgrade later to undo the cancel before the period ends. Does not count against the meter.

Pricing

PlanPriceLimit
Free$0100 tool calls / month
Proper user$9/mo · $90/yrUnlimited

Pro covers this Kisi server only. Subscribe with kisi_upgrade (it returns a Stripe Checkout link). Cancel any time with kisi_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running kisi_upgrade before then undoes the cancel. Or write to [email protected].

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.

More Developer Tools & Infrastructure MCP servers

Ablybunny.netCivoCodecovCodemagicCrowdinDepotDNSimpleDubEstuary FlowGeoapifyHetzner CloudHypertuneInngestKindeKnackLaravel ForgeMapTilerNorthflankRelease RadarScalingoSvixTailscaleTrigger.devUnkeyUpCloud

All Developer Tools & Infrastructure servers →