Kinde MCP by usefulapi

Users, organizations, roles, permissions, applications and feature flags.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
88%
Naming quality
74%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (9)

  • LOWTool 'kinde_grant_user_role_in_organization' description lacks action verbin kinde_grant_user_role_in_organization
  • LOWTool 'kinde_grant_user_permission_in_organization' description lacks action verbin kinde_grant_user_permission_in_organization
  • LOWTool 'kinde_get_user_roles_in_organization' name length outside 3-30 rangein kinde_get_user_roles_in_organization
  • LOWTool 'kinde_get_user_permissions_in_organization' name length outside 3-30 rangein kinde_get_user_permissions_in_organization
  • LOWTool 'kinde_list_environment_feature_flags' name length outside 3-30 rangein kinde_list_environment_feature_flags
  • LOWTool 'kinde_list_organization_feature_flags' name length outside 3-30 rangein kinde_list_organization_feature_flags
  • LOWTool 'kinde_add_users_to_organization' name length outside 3-30 rangein kinde_add_users_to_organization
  • LOWTool 'kinde_grant_user_role_in_organization' name length outside 3-30 rangein kinde_grant_user_role_in_organization
  • LOWTool 'kinde_grant_user_permission_in_organization' name length outside 3-30 rangein kinde_grant_user_permission_in_organization

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,171Tokens (tool definitions)
~976 BTypical response size
Significant attention impact (2.48% of 128k context)

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-http

What it can do

Tool inventory

Tools (23)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded23 tools
verifiedversion not recorded23 tools