Kinde MCP by usefulapi
Users, organizations, roles, permissions, applications and feature flags.
Should I use this
Quality & Safety
Findings (9)
- LOWin kinde_grant_user_role_in_organization
- LOWin kinde_grant_user_permission_in_organization
- LOWin kinde_get_user_roles_in_organization
- LOWin kinde_get_user_permissions_in_organization
- LOWin kinde_list_environment_feature_flags
- LOWin kinde_list_organization_feature_flags
- LOWin kinde_add_users_to_organization
- LOWin kinde_grant_user_role_in_organization
- LOWin kinde_grant_user_permission_in_organization
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"kinde": {
"url": "https://kinde.usefulapi.io/mcp"
}
}
}Remote endpoints
https://kinde.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (23)
🟢kinde_get_business
Fetch the Kinde business this token belongs to — its name, industry and timezone. A cheap way to confirm the credentials and audience are right. Kinde: GET /api/v1/business.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_users(email, user_id, expand, page_size, next_token)
List users in the business, optionally narrowed by email or user id. Kinde: GET /api/v1/users.
Input Schema
{
"type": "object",
"properties": {
"email": {
"description": "Only the user with this email address.",
"type": "string"
},
"user_id": {
"description": "Only this user id.",
"type": "string"
},
"expand": {
"description": "Comma-separated extras to include, e.g. organizations,identities.",
"type": "string"
},
"page_size": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_get_user(user_id, expand)
Fetch a single user by id, optionally expanded with their organizations and identities. Kinde: GET /api/v1/user.
Input Schema
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "The user's id."
},
"expand": {
"description": "Comma-separated extras, e.g. organizations,identities.",
"type": "string"
}
},
"required": [
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_organizations(sort, page_size, next_token)
List the organizations (tenants) in the business. Kinde: GET /api/v1/organizations.
Input Schema
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order, e.g. name_asc or name_desc.",
"type": "string"
},
"page_size": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_get_organization(org_code)
Fetch a single organization by its org code. Kinde: GET /api/v1/organization.
Input Schema
{
"type": "object",
"properties": {
"org_code": {
"type": "string",
"description": "The organization's code, e.g. org_1234abcd."
}
},
"required": [
"org_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_organization_users(org_code, permissions, roles, sort, page_size, ...)
List the users belonging to one organization, optionally filtered by the permissions or roles they hold. Kinde: GET /api/v1/organizations/{org_code}/users.
Input Schema
{
"type": "object",
"properties": {
"org_code": {
"type": "string",
"description": "The organization's code."
},
"permissions": {
"description": "Only users holding these permissions.",
"type": "string"
},
"roles": {
"description": "Only users holding these roles.",
"type": "string"
},
"sort": {
"description": "Sort order, e.g. name_asc or name_desc.",
"type": "string"
},
"page_size": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
}
},
"required": [
"org_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_get_user_roles_in_organization(org_code, user_id)
List the roles one user holds in one organization — the direct answer to 'what can this person do here?'. Kinde: GET /api/v1/organizations/{org_code}/users/{user_id}/roles.
Input Schema
{
"type": "object",
"properties": {
"org_code": {
"type": "string",
"description": "The organization's code."
},
"user_id": {
"type": "string",
"description": "The user's id."
}
},
"required": [
"org_code",
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_get_user_permissions_in_organization(org_code, user_id)
List the permissions one user holds in one organization. Kinde: GET /api/v1/organizations/{org_code}/users/{user_id}/permissions.
Input Schema
{
"type": "object",
"properties": {
"org_code": {
"type": "string",
"description": "The organization's code."
},
"user_id": {
"type": "string",
"description": "The user's id."
}
},
"required": [
"org_code",
"user_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_roles(sort, page_size, next_token)
List the roles defined in the business. Kinde: GET /api/v1/roles.
Input Schema
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order, e.g. name_asc or name_desc.",
"type": "string"
},
"page_size": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_role_permissions(role_id, page_size, next_token)
List the permissions attached to one role. Kinde: GET /api/v1/roles/{role_id}/permissions.
Input Schema
{
"type": "object",
"properties": {
"role_id": {
"type": "string",
"description": "The role's id."
},
"page_size": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
}
},
"required": [
"role_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_permissions(sort, page_size, next_token)
List the permissions defined in the business. Kinde: GET /api/v1/permissions.
Input Schema
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order, e.g. name_asc or name_desc.",
"type": "string"
},
"page_size": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_applications(sort, page_size, next_token)
List the applications registered in the business, with their types. Kinde: GET /api/v1/applications.
Input Schema
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order, e.g. name_asc or name_desc.",
"type": "string"
},
"page_size": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_get_application(application_id)
Fetch a single application by id, including its client id and login URLs. Kinde: GET /api/v1/applications/{application_id}.
Input Schema
{
"type": "object",
"properties": {
"application_id": {
"type": "string",
"description": "The application's id."
}
},
"required": [
"application_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_apis
List the APIs registered as token audiences. Kinde: GET /api/v1/apis.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_environment_feature_flags
List the feature flags set at the environment level, with their values. Kinde: GET /api/v1/environment/feature_flags.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_organization_feature_flags(org_code)
List the feature-flag overrides set for one organization. Kinde: GET /api/v1/organizations/{org_code}/feature_flags.
Input Schema
{
"type": "object",
"properties": {
"org_code": {
"type": "string",
"description": "The organization's code."
}
},
"required": [
"org_code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢kinde_list_subscribers(sort, page_size, next_token)
List marketing subscribers. Kinde: GET /api/v1/subscribers.
Input Schema
{
"type": "object",
"properties": {
"sort": {
"description": "Sort order, e.g. name_asc or name_desc.",
"type": "string"
},
"page_size": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"next_token": {
"description": "Cursor from the previous page's next_token. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kinde_create_organization(name, external_id, feature_flags)
Create a new organization (tenant) in the business. Kinde: POST /api/v1/organization.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The organization's display name."
},
"external_id": {
"description": "Your own id for this organization.",
"type": "string"
},
"feature_flags": {
"description": "Feature-flag overrides to set on creation.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kinde_add_users_to_organization(org_code, users)
Add existing users to an organization, optionally with roles and permissions. Reversible by removing them. Kinde: POST /api/v1/organizations/{org_code}/users.
Input Schema
{
"type": "object",
"properties": {
"org_code": {
"type": "string",
"description": "The organization's code."
},
"users": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The user's id."
},
"roles": {
"description": "Role keys to grant on join.",
"type": "array",
"items": {
"type": "string"
}
},
"permissions": {
"description": "Permission keys to grant on join.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id"
]
},
"description": "The users to add."
}
},
"required": [
"org_code",
"users"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kinde_grant_user_role_in_organization(org_code, user_id, role_id)
Give one user a role within one organization. Reversible with kinde_revoke_user_role_in_organization. Kinde: POST /api/v1/organizations/{org_code}/users/{user_id}/roles.
Input Schema
{
"type": "object",
"properties": {
"org_code": {
"type": "string",
"description": "The organization's code."
},
"user_id": {
"type": "string",
"description": "The user's id."
},
"role_id": {
"type": "string",
"description": "The role's id."
}
},
"required": [
"org_code",
"user_id",
"role_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kinde_grant_user_permission_in_organization(org_code, user_id, permission_id)
Give one user a permission within one organization. Reversible. Kinde: POST /api/v1/organizations/{org_code}/users/{user_id}/permissions.
Input Schema
{
"type": "object",
"properties": {
"org_code": {
"type": "string",
"description": "The organization's code."
},
"user_id": {
"type": "string",
"description": "The user's id."
},
"permission_id": {
"type": "string",
"description": "The permission's id."
}
},
"required": [
"org_code",
"user_id",
"permission_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kinde_create_role(name, key, description, is_default_role)
Create a role that can then be granted to users. Kinde: POST /api/v1/roles.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The role's display name."
},
"key": {
"type": "string",
"description": "The role's key, used in tokens."
},
"description": {
"description": "What the role is for.",
"type": "string"
},
"is_default_role": {
"description": "Grant this role to new users automatically.",
"type": "boolean"
}
},
"required": [
"name",
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴kinde_create_permission(name, key, description)
Create a permission that roles and users can hold. Kinde: POST /api/v1/permissions.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The permission's display name."
},
"key": {
"type": "string",
"description": "The permission's key, used in tokens."
},
"description": {
"description": "What the permission allows.",
"type": "string"
}
},
"required": [
"name",
"key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence