Read Kisi places, doors, users, groups, access rights and access logs (no unlocking). Hosted by usefulapi — connect from Claude, Cursor, or any MCP client.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"kisi": {
"url": "https://kisi.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
kisi_get_current_user | read | Get the current user The Kisi user the API key belongs to (id, name, email, organization). Good first call. GET /user. |
kisi_get_organization | read | Get the organization The current Kisi organization (name, domain, settings summary). GET /organization. |
kisi_list_places | read | List places List places (sites/buildings) in the organization with address, time zone and lock/member counts. GET /places. |
kisi_get_place | read | Get a place One place by id, including lockdown state. GET /places/{id}. |
kisi_list_locks | read | 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_lock | read | Get a lock (door) One lock/door by id: online/unlocked/locked-down state, place, floor, settings. GET /locks/{id}. |
kisi_list_groups | read | 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_group | read | Get an access group One access group by id (name, description, place, member/lock counts, restrictions). GET /groups/{id}. |
kisi_list_group_locks | read | List a group's locks The locks/doors an access group opens. GET /group_locks?group_id=. |
kisi_list_users | read | 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_user | read | Get a user One user by id. GET /users/{id}. |
kisi_list_role_assignments | read | 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_cards | read | List access cards List access cards with status (activated/deactivated/unassigned), assignee and last use. GET /cards. |
kisi_list_presences | read | 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_schedules | read | 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_controllers | read | List controllers Kisi controllers (door hardware hubs) with online/offline status. Filter by place, lock or status. GET /controllers. |
kisi_list_readers | read | List readers Kisi readers (card/phone readers at doors) with model and online/offline status. GET /readers. |
kisi_search_events | write | 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_set | read | 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_types | read | 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_status | 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_upgrade | 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_subscription | 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. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Proper user | $9/mo · $90/yr | Unlimited |
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.