Skip to main content
Glama
kapilduraphe

Okta MCP Server

by kapilduraphe

Okta MCP Server

This MCP server enables Claude to interact with Okta's user management system, providing comprehensive user and group management capabilities along with onboarding automation.

Prerequisites

  • Node.js (v16 or higher)

  • Claude Desktop App

  • Okta Developer Account

  • Admin API Token from Okta

Related MCP server: Okta MCP Server

Setup Instructions

1. Create an Okta Developer Account

  • Go to the Okta Developer Console

  • Create a new account or sign in to an existing one

  • Note your Okta domain (e.g., dev-123456.okta.com)

2. Create an API Token

  • In the Okta Developer Console, go to Security > API > Tokens

  • Click "Create Token"

  • Give your token a meaningful name (e.g., "MCP Server Token")

  • Copy the token value (you won't be able to see it again)

3. Initial Project Setup

Install dependencies:

npm install

4. Configure Claude Desktop

Open your Claude Desktop configuration file:

For MacOS:

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

For Windows:

code %AppData%\Claude\claude_desktop_config.json

Add or update the configuration:

{
    "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"
            }
        }
    }
}

Save the file and restart Claude Desktop.

Available Tools

The server provides the following tools:

User Management

get_user

Retrieves detailed user information from Okta, including:

  • User Details (ID, Status)

  • Account Dates (Created, Activated, Last Login, etc.)

  • Personal Information (Name, Email)

  • Employment Details

  • Contact Information

  • Address

  • Preferences

find_users_by_attribute

Search users by any profile attribute with advanced filtering:

  • Supported attributes: firstName, lastName, email, manager, department, title, division, organization, employeeNumber, costCenter, userType, city, state

  • Search operators:

    • eq (exact match) - Works for all attributes

    • sw (starts with) - Works for all attributes

    • ew (ends with) - Works for most attributes

    • co (contains) - Works for some attributes (firstName, lastName, email)

    • pr (present/exists) - Works for all attributes (finds users with any value for that attribute)

  • Features:

    • Uses Okta's native search for optimal performance

    • Automatic fallback to client-side filtering for unsupported operators

    • PII masking in search results for sensitive attributes

    • Status filtering (include/exclude inactive users)

    • Pagination support with customizable limits

list_users

Lists users from Okta with optional filtering and pagination:

  • Supports SCIM filter expressions (e.g., 'profile.firstName eq "John"')

  • Free-form text search across multiple fields

  • Sorting options (by status, creation date, etc.)

  • Pagination support with customizable limits

activate_user

Activates a user in Okta:

  • Option to send activation email

  • Updates user status to active

suspend_user

Suspends a user in Okta

unsuspend_user

Unsuspends a previously suspended user in Okta

delete_user

Deletes a user from Okta (note: user must be deactivated first)

get_user_last_location

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

Group Management

list_groups

Lists user groups from Okta with optional filtering and pagination:

  • Filter expressions for groups (e.g., 'type eq "OKTA_GROUP"')

  • Free-form text search across group fields

  • Sorting options (by name, type, etc.)

  • Pagination support with customizable limits

create_group

Creates a new group in Okta with a name and optional description

get_group

Retrieves detailed information about a specific group

delete_group

Deletes a group from Okta

assign_user_to_group

Assigns a user to a group in Okta

remove_user_from_group

Removes a user from a group in Okta

list_group_users

Lists all users in a specific group with pagination support

Onboarding Automation (Experimental)

Note: The onboarding automation tools are experimental and may be subject to changes or limitations based on Okta's API constraints. Use with caution in production environments.

bulk_user_import

Imports multiple users from a CSV string:

  • Creates user accounts based on CSV data

  • Optional activation of users

  • Optional email notifications

  • Assignment to default groups

assign_users_to_groups

Assigns multiple users to groups based on attribute mappings:

  • Maps user attributes (department, title, etc.) to specific groups

  • Bulk assignment of users based on attributes

provision_applications

Provisions application access for multiple users:

  • Assigns users to applications

  • Supports bulk provisioning

run_onboarding_workflow

Runs a complete onboarding workflow for multiple users from CSV data:

  • User import from CSV

  • Automatic activation

  • Group assignment based on attributes

  • Application provisioning

  • Welcome email configuration

Example Usage in Claude

After setup, you can use commands like:

User Management

  • "Show me details for user with userId XXXX"

  • "Find all users in the engineering department"

  • "Search for users with first name starting with 'John'"

  • "Find users whose email contains 'gmail'"

  • "Show me all users who have a department assigned"

  • "List users whose title is 'Manager'"

  • "What's the status of user john.doe@company.com"

  • "When was the last login for user jane.smith@organization.com"

  • "Find users created in the last month"

  • "Activate user with ID XXXX"

  • "Suspend user with ID XXXX"

  • "Delete deactivated user with ID XXXX"

  • "Where did user XXXX last log in from?"

Advanced User Searches

  • "Find all users in the Sales department" → Uses find_users_by_attribute with department eq "Sales"

  • "Show me users whose email starts with 'admin'" → Uses email sw "admin"

  • "Find users with any manager assigned" → Uses manager pr

  • "List users whose last name contains 'smith'" → Uses lastName co "smith"

Group Management

  • "Show me all groups in my Okta organization"

  • "List groups containing the word 'admin'"

  • "Create a new group called 'Marketing Team'"

  • "Get details for group with ID XXXX"

  • "Delete group with ID XXXX"

  • "Add user XXXX to group YYYY"

  • "Remove user XXXX from group YYYY"

  • "List all users in the 'Finance' group"

Onboarding Automation

  • "Import these users from CSV data: [CSV content]"

  • "Assign users to groups based on their department attribute"

  • "Provision application access for these 5 users"

  • "Run a complete onboarding workflow for these new hires: [CSV content]"

Error Handling

The server includes robust error handling for:

  • User or group not found (404 errors)

  • API authentication issues

  • Missing or invalid user profiles

  • General API errors

  • CSV parsing issues

  • User attribute mapping failures

  • Application provisioning errors

  • Unsupported search operators (automatic fallback to alternative methods)

Troubleshooting

Common Issues

Tools not appearing in Claude:

  • Check Claude Desktop logs: tail -f ~/Library/Logs/Claude/mcp*.log

  • Verify all environment variables are set correctly

  • Ensure the path to index.js is absolute and correct

Authentication Errors:

  • Verify your API token is valid

  • Check if OKTA_ORG_URL includes the full URL with https://

  • Ensure your Okta domain is correct

Server Connection Issues:

  • Check if the server built successfully

  • Verify file permissions on build/index.js (should be 755)

  • Try running the server directly: node /path/to/build/index.js

Search Issues:

  • Some search operators are not supported for all attributes (e.g., contains doesn't work for department)

  • The server automatically falls back to alternative search methods when needed

  • Check the response message for which search method was used

Viewing Logs

To view server logs:

For MacOS/Linux:

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

For Windows:

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

Environment Variables

If you're getting environment variable errors, verify:

Security Considerations

  • Keep your API token secure

  • Don't commit credentials to version control

  • Use environment variables for sensitive data

  • Regularly rotate API tokens

  • Monitor API usage in Okta Admin Console

  • Implement rate limiting for API calls

  • Use minimum required permissions for API token

  • PII masking is enabled for sensitive search parameters

Search Operator Compatibility

Different Okta attributes support different search operators:

Attribute Type

eq

sw

ew

co

pr

firstName, lastName

email, login

department, title

❌*

division, organization

❌*

All attributes

⚠️

⚠️

*❌ = Not supported, ⚠️ = May not be supported for all attributes

Note: When an operator is not supported, the server automatically falls back to client-side filtering for compatibility.

Types

The server includes TypeScript interfaces for Okta user and group data:

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;
  };
}

CSV Format for Onboarding

When using the bulk import or onboarding workflow tools, your CSV should include these headers:

  • firstName (required)

  • lastName (required)

  • email (required)

  • department (optional)

  • title (optional)

  • mobilePhone (optional)

Example:

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

License

MIT License - See LICENSE file for details.

Support

If you encounter any issues:

  • Check the troubleshooting section above

  • Review Claude Desktop logs

  • Examine the server's error output

  • Check Okta's developer documentation

Note: PRs welcome!

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
ResponsivenessSyncing

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
    D
    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.
    21
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to manage Okta organizations, including users, groups, and applications, via natural language.
    14
    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