jumpcloud-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jumpcloud-mcplist all JumpCloud users"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jumpcloud-mcp
MCP server for JumpCloud APIs with:
Full API surface access through JumpCloud OpenAPI specs
Multi-tenant and multi-user token management persisted in Vault
Non-secret runtime configuration persisted in Postgres
Mutating-tool guard using
MCP_ADMIN_AUTH_KEYStdio and HTTP transports
Solution Summary
This repository is adapted from skeleton-mcp into a JumpCloud-specific implementation.
Key design requirements implemented:
Secrets are persisted in Vault only.
Configuration is persisted in Postgres only.
User tokens are scoped by tenant and user (
app/tenants/:tenantId/users/:userId/jumpcloud/tokens).Tenant/user policy guardrails can restrict allowed domains, methods, paths, and mutating operationIds.
Mutation tools can require
authorizationKeywhenMCP_ADMIN_AUTH_KEYis configured.Full JumpCloud API coverage is supported via OpenAPI-driven discovery and execution.
Related MCP server: @godrix/argocd-mcp
JumpCloud Coverage Model
jumpcloud-mcp supports complete endpoint coverage by loading these OpenAPI specs at runtime:
Console API:
https://docs.jumpcloud.com/new/console/index.yamlDirectory Insights API:
https://docs.jumpcloud.com/new/api/insights/directory/index.yaml
Coverage is exposed by:
jumpcloud_openapi_discoveryfor endpoint/operation discoveryjumpcloud_operation_invokefor operationId-driven executionjumpcloud_api_requestfor explicit method/path execution
Endpoint Inventory Artifact
This repository can generate a deterministic endpoint inventory artifact for diffing API coverage changes:
JSON inventory:
docs/openapi-endpoint-inventory.jsonMarkdown summary:
docs/openapi-endpoint-inventory.md
Commands:
npm run inventory:generate
npm run inventory:checkinventory:check regenerates the artifact and fails if committed files are out of date.
CI workflow:
.github/workflows/openapi-inventory-check.ymlrunsnpm run inventory:checkon push and pull requests.
Architecture
Runtime flow:
src/index.jsstarts stdio MCP mode.src/http/index.jsstarts HTTP MCP mode.src/config/env.jsvalidates runtime configuration.src/services/vault.jsmanages persistent secrets.src/services/configStore.jsmanages persistent config in Postgres.src/services/targetService.jsloads OpenAPI and executes JumpCloud calls.src/mcp/server.jsregisters tools, auth checks, and responses.
Persistence model:
Secrets: Vault KV (
secret/data/<app>/tenants/<tenant>/users/<user>/jumpcloud/tokens)Config: Postgres table (
<app>_config) scoped by composite scope id (tenantId/userIdstored inuser_id)
Setup
Install dependencies:
npm installCopy and edit environment:
cp .env.example .envStart local infra:
docker compose up -d postgres vaultStart server:
npm run start:stdio
# or
npm run start:httpExternal Services Mode
Use docker-compose.external.yml when Vault and Postgres are managed externally.
Required env vars in this mode include:
POSTGRES_HOSTVAULT_ADDR
Start app-only stack:
docker compose -f docker-compose.external.yml up -dMCP Tool Catalog
All tools return JSON in text content with shape:
{
"ok": true,
"status": 200,
"data": {}
}Errors return isError=true and shape:
{
"ok": false,
"status": 401,
"error": "Unauthorized: invalid authorizationKey for mutating API request"
}jumpcloud_query_suggestion
Use when: you need planning guidance, schema guidance, and recommended tool sequence.
Do not use when: you already know the exact tool and operation.
Access type: read-only.
Risk: low.
Required permissions: none.
Environment behavior: reads active OpenAPI operation metadata from loaded specs.
Parameters:
intentstring optionaldomainenum optional:console|directory-insightsmethodstring optionalpathstring optionalincludeToolSchemasboolean optional
Response shape:
data.summarydata.recommendedOrderdata.suggestedOperationsdata.safetyChecksdata.toolSchemas(unless disabled)
Common failures: OpenAPI fetch/parse errors.
Recommended prereq:
jumpcloud_connection_info.Follow-up tools:
jumpcloud_openapi_discovery,jumpcloud_operation_invoke,jumpcloud_api_request.Example:
{
"name": "jumpcloud_query_suggestion",
"arguments": {
"intent": "list users then update one user",
"domain": "console"
}
}jumpcloud_openapi_discovery
Use when: you need schema discovery for operation IDs, methods, paths, tags, and domains.
Do not use when: you are ready to execute and already know the operation.
Access type: read-only.
Risk: low.
Required permissions: none.
Environment behavior: returns operation metadata from OpenAPI cache.
Parameters:
domainenum optional:console|directory-insightssearchstring optionallimitint optional (max 500)
Response shape:
data.endpoints[]data.countdata.totalDiscovered
Common failures: OpenAPI fetch/parse errors.
Recommended prereq:
jumpcloud_connection_info.Follow-up tools:
jumpcloud_operation_invoke,jumpcloud_api_request.Example:
{
"name": "jumpcloud_openapi_discovery",
"arguments": {
"domain": "console",
"search": "systemusers",
"limit": 20
}
}jumpcloud_operation_invoke
Use when: you have an operationId and want strict OpenAPI-based invocation.
Do not use when: you only have raw method/path; use
jumpcloud_api_request.Access type: read-only or mutating (depends on operation method).
Risk: variable.
Required permissions:
Active user token in Vault.
authorizationKeyrequired for mutating operations ifMCP_ADMIN_AUTH_KEYis set.Request must satisfy tenant/user policy guardrails when configured.
Environment behavior: operation domain inferred from OpenAPI metadata.
Parameters:
userIdoptional (defaults toMCP_CONFIG_DEFAULT_USER_ID)tokenIdoptional (defaults to active token)operationIdrequiredpathParamsoptional recordqueryoptional recordbodyoptional JSONheadersoptional recordauthorizationKeyoptional unless gated mutation
Response shape:
data.domain,data.method,data.path,data.status,data.data
Common failures:
Unknown operationId
Missing required path parameter
Missing/inactive token
JumpCloud API errors
Recommended prereq:
jumpcloud_openapi_discovery.Follow-up tools:
jumpcloud_api_requestfor edge cases.Safety warning: high-impact on production identity/device state for mutating operations.
Example:
{
"name": "jumpcloud_operation_invoke",
"arguments": {
"userId": "team-a",
"operationId": "systemusers_list",
"query": {
"limit": 10
}
}
}jumpcloud_api_request
Use when: you need explicit HTTP method/path execution with full API coverage.
Do not use when: planning/discovery only.
Access type: read-only or mutating.
Risk: variable.
Required permissions:
Active user token in Vault.
authorizationKeyfor mutating methods (POST|PUT|PATCH|DELETE) when admin key is configured.Request must satisfy tenant/user policy guardrails when configured.
Environment behavior: routes via
domainto Console or Directory Insights base URL.Parameters:
userIdoptionaltokenIdoptionaldomainoptional:console|directory-insightsmethodrequiredpathrequiredqueryoptional objectbodyoptional JSONheadersoptional objectauthorizationKeyoptional unless gated mutation
Response shape:
data.domain,data.method,data.path,data.status,data.data
Common failures: token missing, auth errors, timeout, invalid path, JumpCloud errors.
Recommended prereq:
jumpcloud_openapi_discovery.Follow-up tools:
jumpcloud_query_suggestionfor next step guidance.Safety warning: mutating calls can alter production directory state.
Example:
{
"name": "jumpcloud_api_request",
"arguments": {
"userId": "default",
"domain": "console",
"method": "GET",
"path": "/api/systemusers"
}
}jumpcloud_user_token_list
Use when: checking per-user token metadata and active selection.
Do not use when: creating/updating/deleting tokens.
Access type: read-only.
Risk: medium.
Required permissions: none.
Environment behavior: reads Vault token document for selected user.
Parameters:
userIdoptionalincludeSensitiveoptional (actual values remain redacted unless sensitive output is enabled)
Response shape:
data.userId,data.activeTokenId,data.tokens
Common failures: Vault connectivity/read issues.
Recommended prereq:
jumpcloud_scope_info.Follow-up tools:
jumpcloud_user_token_upsert,jumpcloud_user_token_set_active,jumpcloud_user_token_delete.
jumpcloud_user_token_upsert
Use when: creating/updating a user-scoped JumpCloud token in Vault.
Do not use when: read-only inspection.
Access type: mutating.
Risk: high.
Required permissions:
authorizationKeywhenMCP_ADMIN_AUTH_KEYis configured.
Environment behavior: writes to user Vault path and may initialize active token.
Parameters:
userIdoptionaltokenIdrequiredvaluerequiredtokenTypeoptional:apiKey|bearerheaderNameoptionaldescriptionoptionalauthorizationKeyoptional unless gated
Response shape:
data.userId,data.tokenId,data.activeTokenId
Common failures: Vault write failure, invalid payload.
Recommended prereq:
jumpcloud_scope_info.Follow-up tools:
jumpcloud_user_token_set_active,jumpcloud_api_request.
jumpcloud_user_token_set_active
Use when: switching active token for a user.
Do not use when: creating token material.
Access type: mutating.
Risk: medium.
Required permissions:
authorizationKeywhen admin key is configured.Environment behavior: updates active token pointer in Vault document.
Parameters:
userIdoptionaltokenIdrequiredauthorizationKeyoptional unless gated
Response shape:
data.userId,data.activeTokenIdCommon failures: unknown tokenId, Vault write failure.
jumpcloud_user_token_delete
Use when: removing obsolete token entries.
Do not use when: only deactivation is needed.
Access type: mutating.
Risk: high.
Required permissions:
authorizationKeywhen admin key is configured.Environment behavior: deletes token and may reselect active token.
Parameters:
userIdoptionaltokenIdrequiredauthorizationKeyoptional unless gated
Response shape:
data.userId,data.activeTokenId,data.remainingTokenCountCommon failures: Vault write failure.
Safety warning: destructive operation.
jumpcloud_config_list / jumpcloud_config_get
Use when: retrieving non-secret per-user Postgres config.
Do not use when: storing secrets.
Access type: read-only.
Risk: low.
Required permissions: none.
Environment behavior: reads
<app>_configtable byuser_id.
jumpcloud_config_set / jumpcloud_config_delete
Use when: writing/deleting non-secret per-user configuration.
Do not use when: storing token values or other sensitive secrets.
Access type: mutating.
Risk: medium/high.
Required permissions:
authorizationKeywhen admin key is configured.Environment behavior: writes/deletes rows in Postgres config table.
Safety warning (
jumpcloud_config_delete): destructive operation.
jumpcloud_tenant_list / jumpcloud_tenant_scope_validate / jumpcloud_tenant_bootstrap_defaults
jumpcloud_tenant_list:Read-only tenant discovery from Postgres scope ids.
Optional user discovery from both Postgres and Vault token paths.
jumpcloud_tenant_scope_validate:Read-only scope readiness checks for tenant/user.
Reports whether tokens/config are present and recommends next tools.
jumpcloud_tenant_bootstrap_defaults:Mutating baseline tenant/user config initializer.
Requires
authorizationKeywhenMCP_ADMIN_AUTH_KEYis configured.Writes non-secret defaults only (never token secrets).
jumpcloud_tenant_policy_get / jumpcloud_tenant_policy_set
jumpcloud_tenant_policy_get:Read-only policy inspection for effective tenant/user guardrails.
Returns the current policy object for the requested scope.
jumpcloud_tenant_policy_set:Mutating policy update tool for tenant/user guardrails.
Requires
authorizationKeywhenMCP_ADMIN_AUTH_KEYis configured.Supports partial updates for:
allowMutationsallowedDomainsallowedMethodsallowedPathPrefixesenforceMutationOperationAllowListallowedOperationIds
Policy enforcement behavior:
If
allowedDomainsis non-empty, requests must match one of those domains.If
allowedMethodsis non-empty, requests must match one of those methods.If
allowedPathPrefixesis non-empty, request path must start with at least one prefix.If
allowMutations=false, mutating methods are denied.If
enforceMutationOperationAllowList=true, mutatingjumpcloud_operation_invokecalls must haveoperationIdinallowedOperationIds.
jumpcloud_connection_info / jumpcloud_scope_info / jumpcloud_health_check
jumpcloud_connection_info: read-only server/runtime metadata.jumpcloud_scope_info: read-only effective app/user scope resolver.jumpcloud_health_check: read-only API connectivity/auth check using active user token.
HTTP Auth for MCP Endpoint
The MCP HTTP endpoint supports:
Vault token index auth (
MCP_HTTP_AUTH_MODE=token)OAuth2 introspection auth (
MCP_HTTP_AUTH_MODE=oauth2)Dual acceptance (
MCP_HTTP_AUTH_MODE=both)
Tests
Run:
npm testHighlights:
OpenAPI discovery and operation invocation tests
Multi-tenant and multi-user token behavior tests
Tenant discovery/scope validation/bootstrap tool tests
Admin auth gating tests for mutating tools
HTTP integration and Vault-related tests
License
MIT. See LICENSE.
Available Tools
20 toolsjumpcloud_api_requestB
Generic JumpCloud request executor. Use for explicit domain/method/path calls with full endpoint coverage. Mutations require admin key if configured. Risk: variable.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| query | No | ||
| domain | No | ||
| method | Yes | ||
| userId | No | ||
| headers | No | ||
| tokenId | No | ||
| tenantId | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that mutations require an admin key and warns 'Risk: variable,' which is useful for a generic executor. But it omits side effects, error behavior, return format, and rate limits, leaving notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the primary purpose in the first sentence. The 'Risk: variable' sentence is a bit vague, but overall it is concise and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a generic tool with 10 parameters, nested objects, no output schema, and no annotations. The description lacks guidance on constructing requests, interpreting responses, handling errors, or parameter relationships. It provides minimal starting context, insufficient for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only indirectly references method, path, domain, and authorization (admin key). It does not explain body, query, headers, userId, tokenId, or tenantId. The parameter names are somewhat self-descriptive, but the description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a generic JumpCloud request executor for explicit domain/method/path calls with full endpoint coverage. It names a concrete action and resource, distinguishing it from specialized siblings, though it does not differentiate from the similarly generic jumpcloud_operation_invoke.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: 'Use for explicit domain/method/path calls with full endpoint coverage.' It also cautions about admin key requirements for mutations. However, it does not explicitly name alternative tools or exclusion conditions, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_config_deleteB
Mutating Postgres config delete. Use to remove obsolete non-secret settings. Destructive. Risk: high.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| userId | No | ||
| tenantId | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explicitly warns 'Destructive' and 'Risk: high,' which is valuable for a delete operation. However, it does not detail side effects, irreversibility, or authentication requirements, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with key warnings. Every sentence adds information, but the opening 'Mutating Postgres config delete' is grammatically clunky and slightly redundant with 'Destructive.' Despite this, it remains appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is under-specified. It does not explain which parameters are required beyond the schema, what happens on success or failure, or whether the operation is reversible. The warning 'Risk: high' is helpful but not complete enough for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it fails to explain the parameters. It does not mention that 'key' identifies the setting, nor what userId, tenantId, or authorizationKey are for. The only implicit hint is 'non-secret settings,' which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool performs a delete operation on Postgres config settings, and the use case 'remove obsolete non-secret settings' clarifies its function. It distinguishes itself from sibling config tools (list/get/set) by explicitly being the delete action, though the phrasing 'Mutating Postgres config delete' is awkward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear usage context: 'Use to remove obsolete non-secret settings.' This implies when to use (for obsolete non-secret settings) and implicitly excludes secrets, but it does not explicitly name alternative tools or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_config_getA
Read-only Postgres config getter. Use to fetch one user-scoped configuration key. Risk: low.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| userId | No | ||
| tenantId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It explicitly states 'Read-only' and 'Risk: low', which are useful safety indicators. It does not cover return format, error behavior, or authentication, but the core behavioral trait is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no fluff. Every phrase adds value: 'Read-only', 'Postgres config getter', 'Use to fetch one user-scoped configuration key', and 'Risk: low'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple read-only tool with a minimal schema (one required param, no output schema). The description covers purpose, usage, and risk sufficiently for an agent to select and invoke it. It could improve by mentioning what is returned or what happens if the key is missing, but given the low complexity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only mentions 'config key' (mapping to 'key') and 'user-scoped' (hinting at userId/tenantId), but does not explain the meaning or format of any parameter, especially the optional userId and tenantId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('fetch') and resource ('Postgres config key'), and clarifies it is user-scoped. This clearly distinguishes it from sibling tools like config_list, config_set, and config_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use it ('fetch one user-scoped configuration key'), providing clear context. However, it does not explicitly mention exclusions or alternatives, such as using config_list for multiple keys or config_set for writing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_config_listA
Read-only Postgres config listing. Use to enumerate app/user scoped non-secret configuration values. Do not store secrets in config. Risk: low.
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | ||
| userId | No | ||
| tenantId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It declares 'Read-only' and 'Risk: low,' which signals non-mutating behavior. However, it does not disclose return format, pagination, or how optional parameters affect behavior, leaving some behavioral traits undefined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short sentences with the core action front-loaded. Every sentence contributes value: read-only status, use case, secret warning, and risk level. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list with no output schema and no annotations, the description conveys purpose and risk. However, it omits how the optional parameters affect results and what a successful response looks like, which is a noticeable gap for an agent deciding how to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has three parameters (prefix, userId, tenantId) with zero descriptions, and the description only vaguely says 'app/user scoped.' It never explains what each parameter does or how it filters the listing, so the description fails to add meaningful parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read-only Postgres config listing' and 'Use to enumerate app/user scoped non-secret configuration values,' clearly identifying a list/enumerate action on config. This explicitly distinguishes it from sibling tools like config_get, config_set, and config_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use to enumerate app/user scoped non-secret configuration values' provides a clear use case, and 'Do not store secrets in config' gives an important advisory. It does not explicitly mention alternatives, but the context makes it evident that this is for listing rather than single get/set/delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_config_setB
Mutating Postgres config setter. Use for non-secret runtime configuration. Do not store token values. Risk: medium.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | No | ||
| userId | No | ||
| tenantId | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full disclosure burden. It discloses that the operation is mutating and assigns a medium risk, but it does not explain side effects, whether the operation is idempotent, required permissions, or what the response looks like. The warnings about token values are more about usage than behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using four short segments to convey purpose, use case, and a caveat. It is front-loaded with the main verb and resource. However, 'Risk: medium' is an isolated fragment that could be integrated more naturally, and the brevity contributes to the lack of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is far too sparse. It does not explain parameter meanings, return values, error conditions, or prerequisites. For a mutation tool with five parameters, this is insufficient for an agent to correctly invoke it without additional implicit knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 5 parameters with 0% description coverage, and the description only hints at the value parameter by saying not to store token values. It gives no explanation for 'key', 'userId', 'tenantId', or 'authorizationKey', leaving the agent uncertain about their purpose and required format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a mutating setter for Postgres config, which distinguishes it from sibling config_get/config_delete/config_list. It also specifies the scope as 'non-secret runtime configuration,' but it does not precisely articulate whether it creates or updates entries or what the key-value structure is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use for non-secret runtime configuration' gives clear context for when to apply this tool, and 'Do not store token values' adds an exclusion for secrets. However, it does not explicitly name alternative tools for reading or deleting config, though the sibling list implies those exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_connection_infoA
Read-only runtime metadata. Use when validating configured base URLs, OpenAPI source URLs, and persistence wiring. Do not use for API execution. Risk: low.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It discloses the read-only nature and low risk, which is useful, but does not mention potential failure modes, return format, or any requirements (e.g., auth). This provides some behavioral context but is not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core purpose. Every sentence adds value: the first defines the tool, the second provides usage guidance. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description covers key aspects: what it returns, when to use it, and what not to use it for. It could be slightly more explicit about the exact metadata fields, but the named items (base URLs, OpenAPI URLs, persistence) give adequate context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is trivially 100%. Per guidelines, 0 params receive a baseline of 4. The description adds context about what the metadata covers, which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a source of read-only runtime metadata, specifically for base URLs, OpenAPI source URLs, and persistence wiring. It distinguishes itself from sibling tools by focusing on connection-level info, though it lacks a direct action verb like 'get' or 'fetch'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use (validating configured URLs and persistence wiring) and explicitly says 'Do not use for API execution,' providing a clear excluding condition. However, it does not name alternative tools for API execution, so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_health_checkA
Read-only health and credential check against JumpCloud using current user's active token. Use before large workflows. Risk: low.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| tokenId | No | ||
| tenantId | No |
TDQS
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 'Read-only' and 'Risk: low,' which are important safety traits. It does not explain the return format, but for a health check tool the core behavior is sufficiently exposed for an agent to understand safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the key action and risk profile. Every phrase earns its place, and there is no redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, no output schema, and 3 undocumented parameters. The description provides a clear purpose and usage context, but it lacks details on parameter semantics and what the tool returns. This is adequate for a simple health-check tool, but there are clear gaps around inputs and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention any of the three optional parameters (userId, tokenId, tenantId). It only references 'current user's active token,' which does not explain what these parameters override or how they are used. The description fails to compensate for the schema's lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'health and credential check' against JumpCloud using the active token. It distinguishes from sibling tools by emphasizing the read-only health-check nature, even though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use before large workflows.' This clearly indicates when to invoke it, though it does not mention when not to use it or provide alternatives. This meets the 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_openapi_discoveryA
Read-only OpenAPI discovery. Use to search operationId/method/path/tag metadata before invocation. Do not use as an execution tool. Risk: low.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| domain | No | ||
| search | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses 'Read-only' and 'Risk: low,' which are important behavioral traits. However, it does not describe the return format or pagination behavior, so it isn't fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three terse sentences, front-loaded with the core purpose ('Read-only OpenAPI discovery'). Each sentence adds useful information—purpose, usage timing, and exclusion/risk—without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only discovery tool, the description covers purpose and safety, but it omits any explanation of parameters (limit, domain) and does not hint at the response structure (no output schema). This leaves gaps for a complete understanding, though the tool's simplicity keeps it at a moderate level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions for the three parameters, and the description only implicitly covers 'search' via 'search operationId/method/path/tag metadata.' It gives no explanation of 'limit' or 'domain' semantics, so it fails to compensate for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read-only OpenAPI discovery' and specifies the exact resource and action: 'search operationId/method/path/tag metadata before invocation.' This distinguishes it from execution tools like jumpcloud_operation_invoke, which are present 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use ('before invocation') and when not to ('Do not use as an execution tool'), providing a clear exclusion. However, it does not name specific alternative tools, so it falls short of a full 5 for 'explicit alternatives.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_operation_invokeB
OpenAPI operation invoker. Use operationId+pathParams for high-fidelity execution with full API coverage. Mutating calls require admin key if configured. Risk: variable.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| query | No | ||
| userId | No | ||
| headers | No | ||
| tokenId | No | ||
| tenantId | No | ||
| pathParams | No | ||
| operationId | Yes | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It does disclose that mutating calls require an admin key and notes that risk is variable, which is helpful. However, it does not explain the arbitrary execution nature, potential side effects, error behavior, or return format, leaving significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the primary usage pattern. The phrase 'Risk: variable' is vague but not verbose; overall it is concise without significant waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex generic invoker with no annotations, no output schema, and 9 parameters at 0% schema coverage. The description lacks essential context about how to discover operationIds, how body/query/headers interact, and how tenant/user/token context applies. It provides only minimal information, making it insufficient for a tool with this scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains operationId and pathParams, and implies authorizationKey for mutating calls, but ignores body, query, headers, userId, tokenId, and tenantId. These parameters are likely essential for many operations, so the description only partially covers the 9-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as an 'OpenAPI operation invoker' and instructs to use operationId+pathParams, which conveys the core function of invoking a specific API operation. However, it does not explicitly distinguish this from the sibling jumpcloud_api_request tool, so it lacks overt sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives usage direction ('Use operationId+pathParams for high-fidelity execution') and a prerequisite ('Mutating calls require admin key if configured'). It does not explicitly state when to prefer this tool over alternatives like jumpcloud_api_request or jumpcloud_openapi_discovery, so context is implied rather than fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_query_suggestionB
Read-only planning helper. Use to choose safe tool order, discover likely operations, and retrieve tool usage schema details. Do not use for direct mutations. Risk: low.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| domain | No | ||
| intent | No | ||
| method | No | ||
| includeToolSchemas | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the tool is read-only and has low risk, which is valuable, but it does not describe the output format, possible errors, or any internal behavior beyond 'planning helper'. The safety profile is clear, but depth is limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences that front-load the key purpose ('Read-only planning helper') and then list specific use cases. Every word earns its place, with no redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a clear purpose, the description is incomplete for a tool with 5 undocumented optional parameters and no output schema. It does not explain how to structure a query, what the response will look like, or how it relates to sibling tools in a practical workflow. The description is too terse to fully enable correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 5 parameters with 0% description coverage, and the description does not mention any parameter names or provide hints about their meaning. The agent is left with no guidance on how to fill 'path', 'domain', 'intent', 'method', or 'includeToolSchemas'. This is a major gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a read-only planning helper with specific purposes: choosing safe tool order, discovering operations, and retrieving schema details. It distinguishes itself from sibling tools by emphasizing planning rather than execution, though it does not fully describe the exact input/output mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases (planning, discovering operations, retrieving schemas) and an explicit when-not-to-use (direct mutations). This effectively guides the agent away from using it for mutations, but it does not name alternative tools or more specific conditions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_scope_infoA
Read-only scope resolver. Use when you need the effective app/tenant/user scope and storage locations. Do not use for mutation. Risk: low.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| tenantId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Read-only' and 'Risk: low', which are useful behavioral disclosures given no annotations are provided. However, it does not elaborate on side effects, authentication requirements, rate limits, or error behavior, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short, front-loaded sentences. Each sentence contributes distinct information: purpose, usage, mutation exclusion, and risk. There is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage, and risk but leaves parameter semantics and return format unspecified. With no output schema and no annotations, the description could provide more detail on how to use parameters and what output to expect, though it adequately conveys the tool's core function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the 'userId' and 'tenantId' parameters. While the parameter names are somewhat self-explanatory, the description does not clarify how they relate to resolving scope or whether one or both are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a 'Read-only scope resolver' and specifies the resource: 'effective app/tenant/user scope and storage locations'. This distinguishes it from siblings like 'jumpcloud_tenant_scope_validate' by indicating it resolves rather than validates, and is read-only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when you need the effective app/tenant/user scope and storage locations' and 'Do not use for mutation', providing clear when-to-use and when-not-to-use guidance. However, it does not name an alternative tool for mutation or validation, so it lacks explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_tenant_bootstrap_defaultsB
Mutating tenant/user baseline config initializer. Use to write recommended non-secret defaults for a scope. Risk: high.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| defaults | No | ||
| tenantId | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses that the tool is 'Mutating' and warns 'Risk: high', which are important behavioral traits. Still, it lacks detail on what exactly gets written, whether existing defaults are overwritten, required authorization, or other side effects, leaving a notable transparency gap for a high-risk 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two short sentences front-loaded with the action and purpose. Every phrase earns its place, including the high-risk warning and scope clarification, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a mutating tool with no annotations or output schema, the description is incomplete. It omits return-value behavior, preconditions, idempotency, and detailed parameter semantics. It only provides a high-level risk flag and a vague scope reference, making it insufficient for understanding the full operational impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 4 parameters with 0% description coverage. The description vaguely hints at 'tenant/user' and 'scope' (aligning with tenantId/userId) and 'non-secret defaults' (aligning with the defaults object), but it provides no concrete details about parameter structure, types, or the authorizationKey parameter. It fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Mutating tenant/user baseline config initializer' and explains its function: 'Use to write recommended non-secret defaults for a scope.' This identifies a specific action (write) and resource (baseline config) with a defined scope. However, it does not explicitly distinguish itself from sibling tools like jumpcloud_config_set, relying on the term 'bootstrap defaults' for differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Use to write recommended non-secret defaults for a scope.' It tells the agent when to invoke the tool. However, it does not mention when not to use it or compare with alternative tools for setting configs, such as jumpcloud_config_set, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_tenant_listA
Read-only tenant discovery. Use to list tenant ids and optionally discover scoped users from Postgres and Vault token paths. Do not use for mutation. Risk: low.
| Name | Required | Description | Default |
|---|---|---|---|
| includeUsers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses 'Read-only' and 'Risk: low', and also mentions it may discover scoped users from Postgres and Vault token paths, adding behavioral context. However, it does not detail return format or pagination, but for a read-only discovery tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with purpose, and includes only essential guidance. Every sentence earns its place: purpose, usage, and risk. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional boolean parameter and no output schema, the description covers purpose, usage, risk, and parameter behavior sufficiently. It could add more detail on exact return values, but the low complexity keeps it complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only one boolean parameter (includeUsers) with no schema description. The description's phrase 'optionally discover scoped users' directly hints at the parameter's purpose, compensating partially for the 0% schema coverage. However, it does not explicitly state that includeUsers controls that behavior, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource structure ('list tenant ids') and clearly marks the operation as 'read-only tenant discovery'. It differentiates from sibling tools by stating that it lists tenants and optionally discovers scoped users, which is unique among the provided siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool ('Use to list tenant ids...') and provides a clear exclusion ('Do not use for mutation'). It does not name specific alternatives, but the context of tenant discovery is sufficient to distinguish from mutation or other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_tenant_policy_getA
Read-only tenant/user policy reader. Use to inspect effective policy guardrails for a scope. Risk: medium.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| tenantId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It states the tool is 'Read-only' and notes 'Risk: medium,' providing some behavioral context. However, the risk level is vague and there is no explanation of permissions, failure modes, or what 'effective' policies entail, limiting transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct, front-loaded with the core purpose, and each sentence adds value: purpose, usage context, and risk level. There is no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should indicate what the tool returns, but it only says 'inspect effective policy guardrails' without specifying the return format. Additionally, the optional parameters are underspecified, and the vague risk note does not fill the gap. The description is not complete enough for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only partially compensates. It mentions 'tenant/user policy reader' and 'for a scope,' implying the userId and tenantId parameters relate to user and tenant scopes, but it does not clarify whether they are optional, mutually exclusive, or how they interact. This leaves the agent uncertain about how to construct a valid call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a 'Read-only tenant/user policy reader' used to 'inspect effective policy guardrails for a scope.' It identifies the specific resource and action, and the 'Read-only' qualifier distinguishes it from the sibling 'jumpcloud_tenant_policy_set' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool ('Use to inspect effective policy guardrails for a scope'), but does not explicitly state when not to use it or name alternatives. The presence of a sibling set tool implies the distinction, but the description could be more explicit about exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_tenant_policy_setB
Mutating tenant/user policy writer. Use to update scoped policy guardrails for API execution. Risk: high.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| tenantId | No | ||
| allowMutations | No | ||
| allowedDomains | No | ||
| allowedMethods | No | ||
| authorizationKey | No | ||
| allowedOperationIds | No | ||
| allowedPathPrefixes | No | ||
| enforceMutationOperationAllowList | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'Mutating' and 'Risk: high' without detailing effects on existing policies, authorization requirements, reversibility, or response format. The risk warning is a minimal behavioral cue but insufficient for a high-stakes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the action and risk level. Minor redundancy exists between 'Mutating tenant/user policy writer' and 'Use to update scoped policy guardrails,' but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no annotations, and no output schema, the description is too sparse. It omits which parameters are required, how the policy is applied or replaced, what the response contains, and any prerequisites or side effects, making it inadequate for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter-specific explanations. It hints at tenant/user scoping, but the 9 parameters (e.g., allowMutations, allowedDomains, authorizationKey) remain semantically opaque, leaving the agent to guess their meaning from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a 'Mutating tenant/user policy writer' and states it is used to 'update scoped policy guardrails for API execution.' This distinguishes it from read-only siblings like jumpcloud_tenant_policy_get, though it does not explicitly mention alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit use case ('Use to update scoped policy guardrails'), giving clear context for when to invoke this tool. However, it lacks any exclusions or comparisons to sibling tools, so it does not fully address when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_tenant_scope_validateB
Read-only tenant/user scope validation. Use to confirm token and config readiness before operational API calls. Risk: medium.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| tenantId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes the tool is 'Read-only' and discloses a 'Risk: medium' assessment, which adds some transparency beyond the schema. However, it lacks details on what the validation entails (e.g., network calls, error behavior) and the 'medium' risk is somewhat ambiguous for a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, stating the core purpose in the first sentence and adding a usage hint in the second. Every word contributes value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two parameters and no output schema, the description is too sparse. It does not describe return values, failure modes, or parameter details, leaving the agent under-informed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has two parameters (userId, tenantId) with zero coverage in the description. The description only implies these via 'tenant/user scope' but does not explain their meaning, format, or why they are optional, leaving the agent with insufficient guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a read-only validation for tenant/user scope, with the specific purpose of confirming token and config readiness. It differentiates from siblings like health_check or scope_info by emphasizing pre-operational validation, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'before operational API calls.' This gives clear context for when the tool is appropriate, though it doesn't mention when not to use it or offer alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_user_token_deleteB
Mutating token deletion. Use when removing obsolete user tokens from Vault. Destructive. Risk: high.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| tokenId | Yes | ||
| tenantId | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It says 'Destructive' and 'Risk: high,' but these merely restate what a delete operation implies. It does not specify irreversibility, required permissions, cascade effects, or any details beyond the inherent destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very brief and front-loaded: 'Mutating token deletion. Use when removing obsolete user tokens from Vault. Destructive. Risk: high.' No filler or unnecessary detail; however, 'Mutating' and 'Destructive' are slightly redundant, which keeps it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a destructive delete operation with four parameters, no annotations, and no output schema, the description is too sparse. It does not address parameter meanings, error behavior, or preconditions, leaving significant gaps for an agent to navigate safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the four parameters (userId, tokenId, tenantId, authorizationKey). The required tokenId is not described, and there is no guidance on how the parameters relate to the operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mutating token deletion') and the target resource ('user tokens from Vault'), using a specific verb and resource. It distinguishes itself from sibling tools like jumpcloud_user_token_list and jumpcloud_user_token_upsert by explicitly framing it as a removal operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear context for when to use the tool: 'Use when removing obsolete user tokens from Vault.' While it names one specific scenario, it does not include explicit exclusions or mention alternatives such as deactivating tokens (jumpcloud_user_token_set_active), so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_user_token_listA
Read-only token metadata listing. Use to inspect user-scoped token entries and active token selection. Do not use to rotate/update secrets. Risk: medium.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| tenantId | No | ||
| includeSensitive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It explicitly labels itself 'read-only' and warns 'Do not use to rotate/update secrets,' which accurately conveys its non-mutating nature. However, it does not explain what 'Risk: medium' entails or the implications of the 'includeSensitive' parameter, which leaves some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the core purpose. Every sentence is functional: purpose, usage, and explicit non-usage. No filler or redundancy, making it an ideal concise structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple read-only list with 3 parameters and no output schema, the description provides the essential purpose and caution. However, the lack of any parameter semantics and the vague 'Risk: medium' leave gaps for correct invocation. It's adequate but not complete, hence a mid-level score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not explain any parameter (userId, tenantId, includeSensitive). It only vaguely mentions 'user-scoped' which maps to userId, but provides no guidance on values, defaults, or the sensitive parameter. The description fails to compensate for the schema's lack of semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Read-only token metadata listing' with the specific purpose of inspecting user-scoped token entries and active token selection. It also explicitly contrasts with sibling operations by stating 'Do not use to rotate/update secrets,' which differentiates it from mutation tools like upsert/delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use to inspect user-scoped token entries and active token selection' and an explicit exclusion: 'Do not use to rotate/update secrets.' This tells the agent when to select this tool versus mutation tools, fulfilling the highest bar for this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_user_token_set_activeC
Mutating token selection. Use to change active token for a user. Do not use to create tokens. Risk: medium.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | ||
| tokenId | Yes | ||
| tenantId | No | ||
| authorizationKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It discloses 'Mutating token selection' and 'Risk: medium,' which indicates a write operation with some risk. However, it fails to explain side effects, permissions required, whether the change is reversible, or what happens to the previously active token. The minimal risk label helps but leaves significant behavioral unknowns 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three short sentences. The first sentence is a bit vague ('Mutating token selection'), but the second clarifies the actual purpose. 'Risk: medium' is a useful label. Overall, it is compact and front-loaded, though the first sentence could be more informative and the structure is slightly disjointed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no output schema, and no annotations. The description only covers the basic action and a no-go case, omitting details on parameter usage, prerequisites, return values, error conditions, or operational context. This is far too incomplete for a mutation tool of this complexity, especially with zero schema parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for its parameters, and the tool description provides no parameter details. It mentions 'user' and 'token' but doesn't explain what userId, tokenId, tenantId, or authorizationKey mean or how they should be provided. With zero coverage from both schema and description, the agent is left guessing about parameter semantics. This is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool changes the active token for a user, using the specific phrase 'change active token for a user.' It also distinguishes from token creation by saying 'Do not use to create tokens,' which helps avoid confusion with sibling tools like jumpcloud_user_token_upsert. However, it stops short of naming the exact alternative tool, so it's slightly less explicit than the high benchmark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: 'Use to change active token for a user.' It explicitly states when NOT to use it: 'Do not use to create tokens.' This gives the agent exclusionary guidance, though it doesn't mention other alternatives (e.g., list/delete). This is solid guidance but could be more comprehensive by referencing sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jumpcloud_user_token_upsertA
Mutating token create/update. Use to add or rotate JumpCloud user tokens in Vault. Do not use for read-only workflows. Risk: high.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| userId | No | ||
| tokenId | Yes | ||
| tenantId | No | ||
| tokenType | No | ||
| headerName | No | ||
| description | No | ||
| authorizationKey | No |
TDQS
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. It does disclose that the operation is mutating and labels risk as high, which is useful. However, it omits important specifics such as overwrite behavior, required permissions, and side effects, making the disclosure only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the core action front-loaded: 'Mutating token create/update.' Each sentence is purposeful, including the high-risk warning. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-risk mutating tool with 8 parameters, no output schema, and no annotations, this description is too sparse. It gives the basic purpose and risk level but fails to explain required parameters, overwrite semantics, authentication requirements, or return behavior. The tool's operational context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no parameter-level explanations. Required parameters like tokenId and value are not clarified, and fields such as tokenType, headerName, and userId are left entirely to the bare schema. With 8 parameters, this is a significant deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool performs a 'token create/update' operation for JumpCloud user tokens in Vault, using a specific verb and resource. It also distinguishes itself from read-only workflows and sibling tools by emphasizing its mutating nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'Use to add or rotate JumpCloud user tokens in Vault.' It also provides a clear exclusion: 'Do not use for read-only workflows.' However, it does not name specific alternative sibling tools, so it lacks full alternative guidance.
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.
20 tool updates
v0.1.0- First observed
jumpcloud_api_request - First observed
jumpcloud_config_delete - First observed
jumpcloud_config_get - First observed
jumpcloud_config_list - First observed
jumpcloud_config_set - First observed
jumpcloud_connection_info - First observed
jumpcloud_health_check - First observed
jumpcloud_openapi_discovery - First observed
jumpcloud_operation_invoke - First observed
jumpcloud_query_suggestion - First observed
jumpcloud_scope_info - First observed
jumpcloud_tenant_bootstrap_defaults - First observed
jumpcloud_tenant_list - First observed
jumpcloud_tenant_policy_get - First observed
jumpcloud_tenant_policy_set - First observed
jumpcloud_tenant_scope_validate - First observed
jumpcloud_user_token_delete - First observed
jumpcloud_user_token_list - First observed
jumpcloud_user_token_set_active - First observed
jumpcloud_user_token_upsert
TDQS
Several read-only introspection tools (connection_info, scope_info, tenant_list, tenant_scope_validate, health_check, query_suggestion) have overlapping purposes and could be confused. The two API execution tools (operation_invoke and api_request) also serve similar functions with only subtle invocation differences.
Tool names mix noun endings (connection_info, openapi_discovery) with verb endings (tenant_list, config_get). The prefix 'jumpcloud_' is consistent, but the action part is not a uniform verb_noun pattern, making the naming style inconsistent.
At 20 tools, the server is on the heavier end of the typical range. While many tools serve distinct configuration and discovery purposes, the count could be trimmed by consolidating some overlapping introspection and execution tools.
The tool surface covers connection info, scope/tenant management, policies, token lifecycle, config storage, and API execution, leaving no major dead ends. Minor gaps exist around tenant mutation beyond bootstrap, but generic invocation fills most needs.
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
111Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRuntime MCP server that dynamically bridges any OpenAPI 3.x spec to MCP tools.13MIT
- AlicenseBqualityBmaintenanceMCP server for Argo CD that provides multi-environment profiles, SSO or API key authentication, application search with cache, and REST API tools from the bundled OpenAPI catalog.2626MIT
- AlicenseNot gradedqualityCmaintenanceConvert any OpenAPI spec into a secure MCP server with scoped auth, per-tool allow/deny policies, rate limiting, and a redacted audit trail.10MIT
- AlicenseBqualityCmaintenanceAn MCP server that exposes X API tools generated from OpenAPI spec, with tenant-aware auth, secret management via Vault, and configuration via Postgres. Enables natural language-driven interaction with X API operations, schema discovery, and query suggestions.100MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/LesterAJohn/jumpcloud-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server