Skip to main content
Glama
kapilduraphe

Okta MCP Server

by kapilduraphe

Servidor Okta MCP

Este servidor MCP permite a Claude interactuar con el sistema de gestión de usuarios de Okta, proporcionando capacidades integrales de gestión de usuarios y grupos junto con la automatización de la incorporación.

Prerrequisitos

  • Node.js (v16 o superior)

  • Aplicación de escritorio Claude

  • Cuenta de desarrollador de Okta

  • Token de API de administración de Okta

Related MCP server: Okta MCP Server

Instrucciones de configuración

1. Crea una cuenta de desarrollador de Okta

2. Crear un token de API

  • En la consola para desarrolladores de Okta, vaya a Seguridad > API > Tokens

  • Haga clic en "Crear token"

  • Dale a tu token un nombre significativo (por ejemplo, "Token de servidor MCP")

  • Copia el valor del token (no podrás volver a verlo)

3. Configuración inicial del proyecto

Instalar dependencias:

npm install

4. Configurar Claude Desktop

Abra el archivo de configuración de Claude Desktop:

Para MacOS:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

Para Windows:

code %AppData%\Claude\claude_desktop_config.json

Agregar o actualizar la configuración:

{
    "mcpServers": {
        "okta": {
            "command": "node",
            "args": [
                "PATH_TO_PROJECT_DIRECTORY/dist/index.js"
            ],
            "env": {
                "OKTA_ORG_URL": "https://your-domain.okta.com",
                "OKTA_API_TOKEN": "your-api-token"
            }
        }
    }
}

Guarde el archivo y reinicie Claude Desktop.

Herramientas disponibles

El servidor proporciona las siguientes herramientas:

Gestión de usuarios

obtener_usuario

Recupera información detallada del usuario de Okta, que incluye:

  • Detalles del usuario (ID, estado)

  • Fechas de la cuenta (creación, activación, último inicio de sesión, etc.)

  • Información personal (nombre, correo electrónico)

  • Detalles del empleo

  • Información del contacto

  • DIRECCIÓN

  • Preferencias

lista_usuarios

Enumera los usuarios de Okta con filtrado y paginación opcionales:

  • Admite expresiones de filtro SCIM (por ejemplo, 'profile.firstName eq "John"')

  • Búsqueda de texto libre en varios campos

  • Opciones de clasificación (por estado, fecha de creación, etc.)

  • Soporte de paginación con límites personalizables

activar_usuario

Activa un usuario en Okta:

  • Opción para enviar correo electrónico de activación

  • Actualiza el estado del usuario a activo

suspender_usuario

Suspende a un usuario en Okta

cancelar la suspensión del usuario

Reactiva la suspensión de un usuario previamente suspendido en Okta

eliminar_usuario

Elimina un usuario de Okta (nota: el usuario debe desactivarse primero)

obtener_la_última_ubicación_del_usuario

Recupera la última ubicación conocida y la información de inicio de sesión de un usuario de los registros del sistema Okta

Gestión de grupos

grupos de listas

Enumera los grupos de usuarios de Okta con filtrado y paginación opcionales:

  • Expresiones de filtro para grupos (por ejemplo, 'type eq "OKTA_GROUP"')

  • Búsqueda de texto de formato libre en los campos del grupo

  • Opciones de clasificación (por nombre, tipo, etc.)

  • Soporte de paginación con límites personalizables

crear_grupo

Crea un nuevo grupo en Okta con un nombre y una descripción opcional

obtener_grupo

Recupera información detallada sobre un grupo específico

eliminar_grupo

Elimina un grupo de Okta

asignar_usuario_a_grupo

Asigna un usuario a un grupo en Okta

eliminar_usuario_del_grupo

Elimina un usuario de un grupo en Okta

lista_grupo_usuarios

Enumera todos los usuarios de un grupo específico con soporte de paginación

Automatización de la incorporación (experimental)

Nota: Las herramientas de automatización de la incorporación son experimentales y pueden estar sujetas a cambios o limitaciones según las restricciones de la API de Okta. Úselas con precaución en entornos de producción.

importación masiva de usuarios

Importa varios usuarios desde una cadena CSV:

  • Crea cuentas de usuario basadas en datos CSV

  • Activación opcional de usuarios

  • Notificaciones por correo electrónico opcionales

  • Asignación a grupos predeterminados

asignar_usuarios_a_grupos

Asigna múltiples usuarios a grupos según asignaciones de atributos:

  • Asigna atributos de usuario (departamento, título, etc.) a grupos específicos

  • Asignación masiva de usuarios según atributos

provision_applications

Permite el acceso a la aplicación para múltiples usuarios:

  • Asigna usuarios a aplicaciones

  • Admite aprovisionamiento masivo

ejecutar_flujo_de_trabajo_de_incorporación

Ejecuta un flujo de trabajo de incorporación completo para múltiples usuarios a partir de datos CSV:

  • Importación de usuarios desde CSV

  • Activación automática

  • Asignación de grupo basada en atributos

  • Aprovisionamiento de aplicaciones

  • Configuración del correo electrónico de bienvenida

Ejemplo de uso en Claude

Después de la configuración, puede utilizar comandos como:

Gestión de usuarios

  • "Muéstrame los detalles del usuario con ID de usuario XXXX"

  • "¿Cuál es el estado del usuario john.doe@company.com ?"

  • "¿Cuándo fue el último inicio de sesión del usuario jane.smith@organization.com ?"

  • "Enumerar todos los usuarios del departamento de marketing"

  • "Buscar usuarios creados en el último mes"

  • "Activar usuario con ID XXXX"

  • "Suspender usuario con ID XXXX"

  • Eliminar usuario desactivado con ID XXXX

  • "¿Desde dónde inició sesión por última vez el usuario XXXX?"

Gestión de grupos

  • "Muéstrame todos los grupos de mi organización Okta"

  • "Lista de grupos que contienen la palabra 'admin'"

  • "Crear un nuevo grupo llamado 'Equipo de Marketing'"

  • Obtener detalles del grupo con ID XXXX

  • "Eliminar el grupo con ID XXXX"

  • "Añadir usuario XXXX al grupo YYYY"

  • "Eliminar al usuario XXXX del grupo YYYY"

  • "Enumerar todos los usuarios del grupo 'Finanzas'"

Automatización de la incorporación

  • "Importar estos usuarios desde datos CSV: [contenido CSV]"

  • Asignar usuarios a grupos según sus atributos de departamento

  • "Proporcionar acceso a la aplicación para estos 5 usuarios"

  • Ejecute un flujo de trabajo de incorporación completo para estos nuevos empleados: [Contenido CSV]

Manejo de errores

El servidor incluye un manejo robusto de errores para:

  • Usuario o grupo no encontrado (errores 404)

  • Problemas de autenticación de API

  • Perfiles de usuario faltantes o no válidos

  • Errores generales de API

  • Problemas de análisis de CSV

  • Errores en la asignación de atributos de usuario

  • Errores de aprovisionamiento de aplicaciones

Solución de problemas

Problemas comunes

Herramientas que no aparecen en Claude:

  • Consulte los registros de Claude Desktop: tail -f ~/Library/Logs/Claude/mcp*.log

  • Verifique que todas las variables de entorno estén configuradas correctamente

  • Asegúrese de que la ruta a index.js sea absoluta y correcta

Errores de autenticación:

  • Verifique que su token API sea válido

  • Compruebe si OKTA_ORG_URL incluye la URL completa con https://

  • Asegúrese de que su dominio de Okta sea correcto

Problemas de conexión al servidor:

  • Comprueba si el servidor se ha creado correctamente

  • Verificar los permisos de archivo en build/index.js (deberían ser 755)

  • Intente ejecutar el servidor directamente: node /path/to/build/index.js

Visualización de registros

Para ver los registros del servidor:

Para MacOS/Linux:

tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

Para Windows:

Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20

Variables de entorno

Si recibe errores de variables de entorno, verifique:

  • OKTA_ORG_URL : Debe ser la URL completa (por ejemplo, " https://dev-123456.okta.com ")

  • OKTA_API_TOKEN : Debe ser un token de API válido

Consideraciones de seguridad

  • Mantenga su token API seguro

  • No confirme las credenciales en el control de versiones

  • Utilice variables de entorno para datos confidenciales

  • Rotar regularmente los tokens API

  • Supervisar el uso de la API en la consola de administración de Okta

  • Implementar limitación de velocidad para llamadas API

  • Utilice los permisos mínimos requeridos para el token API

Tipos

El servidor incluye interfaces TypeScript para datos de usuarios y grupos de Okta:

interface OktaUserProfile {
  login: string;
  email: string;
  secondEmail?: string;
  firstName: string;
  lastName: string;
  displayName: string;
  nickName?: string;
  organization: string;
  title: string;
  division: string;
  department: string;
  employeeNumber: string;
  userType: string;
  costCenter: string;
  mobilePhone?: string;
  primaryPhone?: string;
  streetAddress: string;
  city: string;
  state: string;
  zipCode: string;
  countryCode: string;
  preferredLanguage: string;
  profileUrl?: string;
}

interface OktaUser {
  id: string;
  status: string;
  created: string;
  activated: string;
  lastLogin: string;
  lastUpdated: string;
  statusChanged: string;
  passwordChanged: string;
  profile: OktaUserProfile;
}

interface OktaGroup {
  id: string;
  created: string;
  lastUpdated: string;
  lastMembershipUpdated: string;
  type: string;
  objectClass: string[];
  profile: {
    name: string;
    description: string;
  };
}

Formato CSV para la incorporación

Al utilizar las herramientas de flujo de trabajo de incorporación o importación masiva, su CSV debe incluir estos encabezados:

  • firstName (requerido)

  • lastName (obligatorio)

  • email (requerido)

  • department (opcional)

  • title (opcional)

  • mobilePhone (opcional)

Ejemplo:

firstName,lastName,email,department,title,mobilePhone
John,Doe,john.doe@example.com,Engineering,Senior Developer,+1-555-123-4567
Jane,Smith,jane.smith@example.com,Marketing,Director,+1-555-987-6543

Licencia

Licencia MIT: consulte el archivo LICENCIA para obtener más detalles.

Apoyo

Si encuentra algún problema:

  • Consulte la sección de solución de problemas más arriba

  • Revisar los registros de Claude Desktop

  • Examinar la salida de error del servidor

  • Consulte la documentación para desarrolladores de Okta

Nota: ¡RR. PP. bienvenidos!

Available Tools

20 tools
activate_userC

Activate a user in Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
sendEmailNoWhether to send an activation email (default: true)
userIdYesThe unique identifier of the Okta user

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Activate' implies a state change, it doesn't specify whether this requires admin permissions, if it's reversible (via 'deactivate_user'), what happens with the email option, or typical response formats. This leaves significant behavioral gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential information immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'activation' means in Okta's context, what happens after activation, error conditions, or relationship to sibling tools. More context is needed given the tool's complexity and lack of structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional parameter context beyond what's in the schema (e.g., what activation entails, email content, or userId format). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Activate') and resource ('a user in Okta'), making the tool's purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'unsuspend_user', which might serve a similar purpose in some contexts, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'unsuspend_user' or 'run_onboarding_workflow'. There's no mention of prerequisites (e.g., user must exist in a deactivated state) or typical scenarios for activation, leaving usage context ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assign_users_to_groupsC

Assign multiple users to groups based on attributes

ParametersJSON Schema
NameRequiredDescriptionDefault
attributeMappingYesMapping of user attributes to group IDs (e.g., {"department": {"Engineering": "group1Id", "Sales": "group2Id"}})
userIdsYesList of user IDs to assign

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Assign') but doesn't cover critical traits like required permissions, whether assignments are additive or replace existing ones, error handling for invalid inputs, or side effects. This is a significant gap for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste—it directly states the tool's purpose without redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with nested objects, no output schema, and no annotations), the description is inadequate. It lacks details on behavioral traits, output expectations, error cases, and how it differs from siblings. For a tool that modifies user-group relationships in bulk, more context is needed to ensure safe and correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value by hinting at the attribute-based logic ('based on attributes'), but doesn't provide additional syntax, format details, or examples beyond what the schema's descriptions offer. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Assign') and resources ('multiple users to groups'), specifying it's based on attributes. It distinguishes from 'assign_user_to_group' by indicating bulk assignment with attribute-based logic, though it doesn't explicitly name that sibling. The purpose is specific but could be more precise about the attribute-driven mechanism.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'assign_user_to_group' (for single assignments) or 'bulk_user_import' (for broader operations). It mentions 'based on attributes' but doesn't clarify prerequisites, exclusions, or ideal scenarios, leaving usage context implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assign_user_to_groupC

Assign a user to a group in Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesID of the group
userIdYesID of the user to assign to the group

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but does not cover critical aspects such as permissions required, whether the assignment is idempotent, error handling (e.g., if user/group doesn't exist), or the response format. This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It fails to address behavioral traits (e.g., side effects, error conditions) or provide usage context, which is essential given the tool's role in modifying system state and the presence of similar sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting both parameters ('groupId' and 'userId') with their types and purposes. The description adds no additional parameter semantics beyond what the schema provides, so the baseline score of 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Assign') and the resources involved ('a user to a group in Okta'), making the purpose immediately understandable. However, it does not differentiate this tool from its sibling 'assign_users_to_groups', which might handle multiple users, leaving some ambiguity in scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'assign_users_to_groups' or 'remove_user_from_group'. It lacks context about prerequisites (e.g., user/group existence) or typical scenarios, leaving the agent to infer usage from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bulk_user_importC

Import multiple users from a CSV string

ParametersJSON Schema
NameRequiredDescriptionDefault
activateUsersNoWhether to activate users immediately (default: false)
csvDataYesCSV string with user information (header row required)
defaultGroupsNoDefault group IDs to assign all imported users to
sendEmailNoWhether to send activation emails (default: true)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'import' but doesn't clarify critical aspects like whether this is a mutating operation, what permissions are required, if it's idempotent, or how errors are handled. The description fails to compensate for the lack of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with 4 parameters and no annotations or output schema, the description is inadequate. It doesn't address behavioral traits, error handling, or what happens after import (e.g., user status). Given the complexity and lack of structured context, more detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, so parameters are well-documented in the structured fields. The description adds minimal value beyond implying CSV format, but doesn't explain parameter interactions (e.g., how 'activateUsers' and 'sendEmail' relate) or provide examples. Baseline 3 is appropriate given the comprehensive schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('import') and resource ('multiple users from a CSV string'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'create_user' (single user creation) or 'run_onboarding_workflow' (which might include user import).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'create_user' for single users or 'assign_users_to_groups' for group management. It lacks context about prerequisites (e.g., CSV format details) or when not to use it (e.g., for small numbers of users).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_groupC

Create a new group in Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionNoDescription of the group (optional)
nameYesName of the group

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a group but lacks details on permissions required, whether the operation is idempotent, what happens on conflicts (e.g., duplicate names), or the response format. This is a significant gap for a mutation tool without annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a group creation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like permissions, idempotency, or error handling, nor does it explain what the tool returns. This leaves gaps for an AI agent to understand the tool fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents both parameters (name and description). The description adds no additional meaning beyond what's in the schema, such as format constraints or examples. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('new group in Okta'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'assign_users_to_groups' or 'list_groups' beyond the basic verb, missing specific distinctions about scope or constraints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., permissions needed), when not to use it (e.g., for updating existing groups), or refer to sibling tools like 'delete_group' or 'list_groups' for context, leaving usage entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_userC

Create a new user in Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
activateNoWhether to activate the user immediately (default: false)
emailYesUser's email address
firstNameYesUser's first name
lastNameYesUser's last name
loginNoUser's login (defaults to email if not provided)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Create a new user' which implies a write operation, but doesn't cover critical aspects like required permissions, whether the user is provisioned with defaults, error handling, or what happens on success (e.g., returns a user ID). This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., user object, ID, or success status), error conditions, or behavioral nuances like how 'activate' parameter affects user state, leaving significant gaps for agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all parameters well-documented in the schema itself. The description adds no additional parameter information beyond what's in the schema, so it meets the baseline score of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('new user in Okta'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'bulk_user_import' or 'run_onboarding_workflow', which might also create users in different contexts, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., admin permissions), when to choose this over 'bulk_user_import' for multiple users, or how it relates to activation/deactivation tools, leaving the agent without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deactivate_userC

Deactivate a user in Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesThe unique identifier of the Okta user

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Deactivate' implies a mutation, it lacks details on permissions required, reversibility, side effects (e.g., data retention), or response format. This is a significant gap for a potentially destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It fails to address critical aspects like behavioral traits, error handling, or return values, leaving gaps that could hinder effective tool use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'userId' clearly documented in the schema. The description does not add any meaning beyond this, such as format examples or validation rules, so it meets the baseline for adequate but unenhanced parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Deactivate') and resource ('a user in Okta'), making the purpose immediately understandable. However, it does not differentiate this tool from its sibling 'suspend_user', which likely serves a similar but distinct function, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'suspend_user' or 'delete_user', nor does it mention prerequisites or context for deactivation. Without such information, users must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_groupC

Delete a group from Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesID of the group to delete

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Delete' implies a destructive operation, it doesn't specify whether this is permanent or reversible, what permissions are required, whether it cascades to group memberships, or what happens on success/failure. This leaves significant behavioral gaps for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - a single sentence with no wasted words. It's front-loaded with the core action and resource, making it immediately understandable despite its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation with no annotations and no output schema, the description is insufficient. It doesn't explain what 'delete' means in this context (permanent removal?), what the response looks like, error conditions, or dependencies on other tools. Given the complexity and risk of group deletion, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'groupId' clearly documented. The description doesn't add any parameter semantics beyond what the schema provides, but with complete schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and target resource ('a group from Okta'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'delete_user' or specify what type of group deletion this performs (permanent vs soft).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing group ID from 'list_groups' or 'get_group'), consequences of deletion, or when to choose other tools like 'remove_user_from_group' for different operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_userA

Delete a user from Okta (must be deactivated first)

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesThe unique identifier of the Okta user

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the prerequisite (deactivation first) but doesn't mention critical behavioral traits such as whether this operation is irreversible, what permissions are required, if it affects associated data (e.g., groups, applications), or what the response looks like. For a destructive mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste—it states the action, resource, and key prerequisite concisely. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a destructive mutation with no annotations and no output schema), the description is minimally adequate. It covers the purpose and a critical prerequisite but lacks details on behavioral outcomes, error handling, or return values. For a high-stakes operation like user deletion, more context would be beneficial to ensure safe usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the 'userId' parameter is fully documented in the schema), so the baseline is 3. The description doesn't add any parameter-specific information beyond what's in the schema, such as format examples or constraints, but it doesn't need to since the schema already covers it adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Delete') and resource ('a user from Okta'), distinguishing it from sibling tools like 'deactivate_user' or 'remove_user_from_group'. It explicitly mentions the target system (Okta) and the resource type (user), providing unambiguous purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context with the prerequisite 'must be deactivated first', which is essential guidance for correct usage. However, it doesn't explicitly mention when to use alternatives like 'deactivate_user' (for temporary removal) or 'suspend_user' (for temporary suspension), though the prerequisite implies a workflow relationship with 'deactivate_user'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_groupC

Get detailed information about a specific group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesID of the group to retrieve

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions retrieving 'detailed information' but fails to specify what that includes, whether it requires permissions, or if it has side effects like rate limits. This leaves significant gaps for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is insufficient. It does not explain what 'detailed information' includes, how results are structured, or any behavioral traits, leaving the agent with incomplete context for proper invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting the 'groupId' parameter. The description adds no additional meaning beyond the schema, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('detailed information about a specific group'), making the purpose evident. However, it does not differentiate from sibling tools like 'list_groups' or 'list_group_users', which would require more specificity about what 'detailed information' entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'list_groups' for broader queries or 'get_user' for individual user details. The description lacks context on prerequisites or exclusions, leaving usage unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_userB

Retrieve detailed user information from Okta by user ID

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesThe unique identifier of the Okta user

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it retrieves information (implying read-only), but doesn't disclose behavioral traits like authentication needs, rate limits, error handling, or what 'detailed information' entails. For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to scan. Every word earns its place without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a single parameter with full schema coverage, the description is incomplete. It doesn't explain what 'detailed user information' includes, potential errors, or response format. For a retrieval tool in a context with many sibling tools, more guidance is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'userId' documented as 'The unique identifier of the Okta user'. The description adds that it retrieves by user ID, but doesn't provide additional semantics beyond what the schema already states. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Retrieve') and resource ('detailed user information from Okta'), specifying it's by user ID. It distinguishes from siblings like list_users (which lists multiple users) but doesn't explicitly contrast with get_user_last_location (which retrieves location data). The purpose is specific but could be more precise about what 'detailed information' includes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need user details by ID, but doesn't explicitly state when to use this vs. alternatives like list_users (for multiple users) or get_user_last_location (for location data). No guidance on prerequisites, error conditions, or exclusions is provided. Usage is contextually implied but not clearly articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_last_locationC

Retrieve the last known location and login information for a user from Okta system logs

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesThe unique identifier of the Okta user

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states what data is retrieved but doesn't mention whether this requires special permissions, if there are rate limits, what format the location data is in, or whether this accesses real-time vs historical data. For a tool accessing sensitive location/login information, this is insufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. Every word contributes meaning - 'retrieve' (action), 'last known location and login information' (what), 'for a user' (target), 'from Okta system logs' (source). There's no wasted verbiage or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that retrieves sensitive location and login data with no annotations and no output schema, the description is incomplete. It doesn't explain what the return data looks like, whether it includes timestamps, geographic coordinates, IP addresses, or device information. Given the complexity of location/login data and absence of structured output documentation, the description should provide more context about the returned information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the userId parameter is fully documented in the schema), so the baseline is 3. The description doesn't add any parameter-specific information beyond what's in the schema - it doesn't clarify format requirements, provide examples, or explain how to obtain the userId. The description simply reinforces that it retrieves data 'for a user' without parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('retrieve') and resource ('last known location and login information for a user'), and specifies the source ('from Okta system logs'). It distinguishes from generic 'get_user' by focusing on location/login data rather than user profile information. However, it doesn't explicitly differentiate from other sibling tools that might access logs or user data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_user' (for profile data) or other logging tools. It doesn't mention prerequisites, permissions needed, or typical use cases. The agent must infer usage from the tool name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_groupsC

List user groups from Okta with optional filtering and pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoCursor for pagination, obtained from previous response
filterNoFilter expression for groups
limitNoMaximum number of groups to return (default: 50, max: 200)
searchNoFree-form text search across group fields
sortByNoField to sort results by
sortOrderNoSort order (asc or desc, default: asc)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions filtering and pagination but doesn't describe what the tool returns (group objects with what fields?), default behaviors, rate limits, authentication requirements, or error conditions. For a list operation with 6 parameters, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that immediately conveys the core functionality. Every word earns its place with no redundancy or unnecessary elaboration, making it optimally concise while still informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what data is returned (group objects structure), how pagination works in practice, what filtering expressions are supported, or how this tool fits within the broader Okta group management context alongside its many siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds minimal value by mentioning 'optional filtering and pagination' which aligns with parameters like 'filter', 'search', 'after', and 'limit', but doesn't provide additional semantic context beyond what's in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and resource ('user groups from Okta'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'list_group_users' or explain how it differs from 'get_group' for single group retrieval, missing full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'optional filtering and pagination' but provides no guidance on when to use this tool versus alternatives like 'list_group_users' (for users within groups) or 'get_group' (for single group details). No explicit when/when-not instructions or prerequisite context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_group_usersC

List all users in a specific group

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoCursor for pagination, obtained from previous response
groupIdYesID of the group
limitNoMaximum number of users to return (default: 50, max: 200)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'List' implies a read operation, it doesn't mention pagination behavior (though hinted in schema), rate limits, authentication requirements, or what happens with invalid group IDs. For a tool with 3 parameters and no annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a straightforward listing tool and front-loads the core functionality without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the return format, pagination behavior, error conditions, or how it differs from similar listing tools. The agent would need to rely heavily on the input schema alone to understand this tool's full context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it mentions 'specific group' which aligns with 'groupId' but provides no extra context about format, validation, or relationships between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('users in a specific group'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_users' or 'get_group', which could cause confusion about when to use this specific tool versus alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_users' or 'get_group'. There's no mention of prerequisites, context, or exclusions, leaving the agent to guess when this specific group-focused listing is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_usersB

List users from Okta with optional filtering and pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoCursor for pagination, obtained from previous response
filterNoSCIM filter expression to filter users
limitNoMaximum number of users to return (default: 50, max: 200)
searchNoFree-form text search across multiple fields
sortByNoField to sort results by
sortOrderNoSort order (asc or desc, default: asc)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'optional filtering and pagination' which gives some context about capabilities, but fails to describe important behaviors like authentication requirements, rate limits, error conditions, response format, or whether this is a read-only operation (implied by 'list' but not explicit).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core functionality upfront. Every word earns its place - 'List users from Okta' establishes the purpose, while 'with optional filtering and pagination' adds important contextual information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with 6 well-documented parameters but no output schema and no annotations, the description is minimally adequate. It identifies the tool's purpose and hints at key features, but doesn't provide enough context about the response format, error handling, or integration patterns that would be helpful for an AI agent to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, providing complete documentation for all 6 parameters. The description adds minimal value beyond the schema by mentioning 'optional filtering and pagination' which aligns with the 'filter' and 'after/limit' parameters, but doesn't provide additional semantic context or usage examples beyond what's already in the parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('users from Okta'), making the purpose immediately understandable. It distinguishes from siblings like 'get_user' by indicating it returns multiple users rather than a single one, though it doesn't explicitly contrast with other list operations like 'list_groups'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_user' (for single users) or 'list_group_users' (for users within a group). It mentions optional filtering and pagination but doesn't explain when these features are appropriate or what scenarios warrant this tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

provision_applicationsC

Provision application access for multiple users

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdsYesApplication IDs to provision
userIdsYesList of user IDs to provision access for

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('provision') but doesn't clarify whether this is a read-only or mutative operation, what permissions are required, whether it's idempotent, or what happens on failure. For a tool that likely modifies access rights, this lack of behavioral context is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a tool with two parameters and no complex behavioral nuances to explain. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that likely performs user access provisioning (a potentially significant mutation), the description is incomplete. With no annotations, no output schema, and minimal behavioral context, the agent lacks crucial information about what the tool actually does, what it returns, and what side effects it might have. The description should provide more context about this operation's nature and consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters clearly documented in the schema. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('provision application access') and target ('for multiple users'), which is a specific verb+resource combination. It distinguishes from siblings like 'activate_user' or 'assign_users_to_groups' by focusing on application access provisioning rather than user status or group assignments. However, it doesn't explicitly differentiate from potential similar tools not in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare with siblings like 'run_onboarding_workflow' which might overlap. The agent must infer usage from the tool name alone, which is insufficient for optimal selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_user_from_groupC

Remove a user from a group in Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesID of the group
userIdYesID of the user to remove from the group

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Remove' implies a destructive mutation, the description lacks details on permissions required, whether the action is reversible, error handling, or side effects. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations and no output schema, the description is insufficient. It lacks critical context such as return values, error conditions, or behavioral nuances, leaving significant gaps for an agent to operate safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for both parameters ('groupId' and 'userId'). The description does not add any additional meaning beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and target ('a user from a group in Okta'), making the purpose immediately understandable. However, it does not differentiate this tool from similar sibling tools like 'assign_users_to_groups' or 'assign_user_to_group', which would require explicit comparison to achieve a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'assign_users_to_groups' and 'assign_user_to_group' available, there is no indication of prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_onboarding_workflowC

Run a complete onboarding workflow for multiple users from CSV data

ParametersJSON Schema
NameRequiredDescriptionDefault
activateUsersNoWhether to activate users immediately (default: true)
applicationIdsNoApplication IDs to provision for all users
csvDataYesCSV string with user information
defaultGroupsNoDefault group IDs to assign all users to
groupMappingsNoMapping of user attributes to group IDs (e.g., {"department": {"Engineering": "group1Id"}})
sendWelcomeEmailNoWhether to send welcome emails (default: true)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'run a complete onboarding workflow' implies a complex, multi-step operation, the description doesn't reveal important behavioral aspects like whether this is a synchronous or asynchronous operation, what permissions are required, whether it's idempotent, what happens on partial failures, or what the expected output format is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that clearly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information about what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex workflow tool with 6 parameters (including nested objects), no annotations, and no output schema, the description is insufficient. It doesn't explain what constitutes a 'complete onboarding workflow', what steps are involved, what happens when the workflow runs, or what the agent should expect as a result. The description leaves too many behavioral questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description mentions 'CSV data' which aligns with the 'csvData' parameter, but adds no additional semantic context beyond what's already in the parameter descriptions. This meets the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('run a complete onboarding workflow') and resource ('multiple users from CSV data'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'bulk_user_import' or 'activate_user', which appear to handle similar user management functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'bulk_user_import', 'activate_user', 'assign_users_to_groups', and 'provision_applications' available, there's no indication of when this comprehensive workflow tool is preferable to using those individual tools separately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suspend_userC

Suspend a user in Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesThe unique identifier of the Okta user

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Suspend' implies a write operation that modifies user state, but the description doesn't specify whether this requires admin permissions, is reversible, affects user access immediately, or has side effects. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and appropriately sized for its purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what suspension entails, what the response looks like, or how it differs from similar operations. Given the complexity of user management and sibling tools, more context is needed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'userId' clearly documented in the schema. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('suspend') and target resource ('a user in Okta'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'deactivate_user' or 'unsuspend_user', which would require more specificity about what suspension means in this context versus deactivation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'deactivate_user' or 'unsuspend_user'. It lacks context about prerequisites, consequences, or typical use cases, leaving the agent to infer usage from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unsuspend_userC

Unsuspend a user in Okta

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesThe unique identifier of the Okta user

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but doesn't mention permissions required, whether this is reversible, what happens to the user's access, or any rate limits. For a user management tool with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple tool with one parameter and is perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a user status mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'unsuspend' means in Okta's context, what the expected outcome is, or any error conditions. Given the complexity of user management operations, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, with the single parameter 'userId' clearly documented in the schema. The description doesn't add any additional parameter information beyond what's already in the schema, so it meets the baseline for when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('unsuspend') and resource ('a user in Okta'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'activate_user' or 'deactivate_user' which also manage user status, leaving some ambiguity about when to choose this specific tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'activate_user' or 'deactivate_user', nor does it mention prerequisites such as needing a suspended user. It simply states what the tool does without contextual usage information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 20 tool updatesv1.0.0
    • First observedactivate_user
    • First observedassign_user_to_group
    • First observedassign_users_to_groups
    • First observedbulk_user_import
    • First observedcreate_group
    • First observedcreate_user
    • First observeddeactivate_user
    • First observeddelete_group
    • First observeddelete_user
    • First observedget_group
    • First observedget_user
    • First observedget_user_last_location
    • First observedlist_group_users
    • First observedlist_groups
    • First observedlist_users
    • First observedprovision_applications
    • First observedremove_user_from_group
    • First observedrun_onboarding_workflow
    • First observedsuspend_user
    • First observedunsuspend_user

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific resources (users, groups, applications) and actions (create, get, list, activate, assign, etc.). There is no significant overlap; for example, assign_user_to_group and assign_users_to_groups differ in scope but are clearly distinguished by their descriptions.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern throughout, using snake_case uniformly. Verbs like create, get, list, assign, delete, etc., are applied predictably to nouns like user, group, or specific operations, making the set highly readable and systematic.

Tool Count4/5

With 20 tools, the count is slightly high but reasonable for an Okta server covering user and group management, onboarding, and application provisioning. It includes core CRUD operations and specialized workflows, though it might be borderline heavy for some agents.

Completeness5/5

The tool surface provides comprehensive coverage for Okta's domain, including full CRUD/lifecycle operations for users and groups (e.g., create, get, list, activate/deactivate, suspend/unsuspend, delete), bulk operations, assignment workflows, and application provisioning, with no obvious gaps for core administrative tasks.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLM agents to manage Okta organizations through natural language, providing full CRUD operations for users, groups, applications, policies, and system logs via Okta's Admin Management APIs.
    57
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables management of Okta identity platform through natural language, allowing users to perform operations on applications, groups, and users with secure API token authentication.
    27
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to manage Okta organizations, including users, groups, and applications, via natural language.
    15
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLM agents to manage Okta organizations through the Okta Admin Management APIs, supporting user provisioning, group management, and more via natural language.
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kapilduraphe/okta-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server