Skip to main content
Glama
parallelworks

Parallel Works MCP Server

Official

Parallel Works MCP Server

A Model Context Protocol (MCP) server that enables AI assistants to interact with the Parallel Works ACTIVATE REST API. This allows code assist agents to manage Parallel Works resources including clusters, storage, workflows, and more.

Features

The MCP server provides tools for managing:

  • Clusters: List and query compute clusters and nodes

  • Workflows: List, inspect, and execute workflows

  • Storage: Manage buckets, Lustre filesystems, and NFS storage

  • Sessions: View and manage user sessions

  • Allocations: Query budget allocations and usage

  • Machine Learning: List and manage ML workspaces (AWS SageMaker, Azure ML)

  • Kubernetes: Query Kubernetes clusters

  • User Resources: Get notifications, organizations, and groups

Related MCP server: Tonle OpenProject MCP Server

Installation

Prerequisites

  • Node.js 18+ or recent version

  • Parallel Works ACTIVATE account with API access

Setup

  1. Clone or navigate to the project directory:

cd parallel-works-mcp
  1. Install dependencies:

npm install

Configuration

The MCP server requires authentication to connect to the Parallel Works API. You can authenticate using either:

Option 1: API Key (Basic Auth)

export PARALLEL_WORKS_API_KEY="your-api-key-here"

Option 2: Bearer Token (JWT)

export PARALLEL_WORKS_TOKEN="your-jwt-token-here"

Optional: Custom API URL

export PARALLEL_WORKS_API_URL="https://activate.parallel.works"

Usage

Running the Server

Start the MCP server with stdio transport:

npm start

Or using Node directly:

node src/index.js

With custom API URL:

node src/index.js --api-url https://activate.parallel.works --api-key YOUR_KEY

With Bearer token:

node src/index.js --token YOUR_JWT_TOKEN

MCP Client Configuration

The recommended way to add the MCP server is by editing your ~/.claude.json configuration file directly:

# Open your Claude config file
nano ~/.claude.json

Add the MCP server configuration to each project where you want to use it:

{
  "projects": {
    "/your/project/path": {
      "mcpServers": {
        "parallelworks": {
          "type": "stdio",
          "command": "node",
          "args": ["/absolute/path/to/parallel-works-mcp/src/index.js"],
          "env": {
            "PARALLEL_WORKS_API_KEY": "your-api-key-here"
          }
        }
      },
      "enabledMcpjsonServers": ["parallelworks"]
    }
  }
}

Configuration options:

Field

Value

type

"stdio" - standard input/output communication

command

"node" - Node.js runtime

args

Array with absolute path to src/index.js

env.PARALLEL_WORKS_API_KEY

Your Parallel Works ACTIVATE API key

enabledMcpjsonServers

["parallelworks"] - enables the server

To enable for all projects, add the same configuration under each project path in your ~/.claude.json file.

Available Tools

Authentication & User Info

get_auth_session

Get the current authentication session and user information.

{}

get_organizations

List organizations the user can access.

{}

get_groups

Get groups for the authenticated user.

{
  "provider": "aws-slurm",
  "network": "my-network"
}

Cluster Operations

list_clusters

List all clusters the user can access.

{}

get_cluster_nodes

Get nodes for a specific compute cluster.

{
  "organization": "parallelworks",
  "user": "username",
  "clusterName": "my-cluster",
  "type": "compute"
}

Workflow Operations

list_workflows

List all workflows for the authenticated user.

{
  "filter": "workflows"
}

get_workflow

Get details of a specific workflow.

{
  "workflow": "my-workflow"
}

get_workflow_yaml

Get the YAML configuration of a workflow.

{
  "workflow": "my-workflow"
}

run_workflow

Run a workflow with optional input parameters.

{
  "workflow": "my-workflow",
  "inputs": {
    "param1": "value1",
    "param2": "value2"
  }
}

Storage Operations

list_buckets

List storage buckets the user can access.

{
  "permission": "edit",
  "provisioned": true
}

list_lustre

List Lustre filesystems the user can access.

{
  "permission": "mount",
  "provisioned": true
}

list_nfs

List NFS filesystems the user can access.

{
  "permission": "edit",
  "provisioned": true
}

Session Operations

list_sessions

List sessions for the authenticated user.

{
  "type": "tunnel",
  "subdomain": "my-subdomain"
}

Allocation Operations

list_allocations

List budget allocations the user can access.

{
  "limit": 50,
  "skip": 0,
  "name": "production",
  "sort": "-total"
}

Kubernetes Operations

list_kubernetes_clusters

List Kubernetes clusters accessible to the user.

{}

ML Workspace Operations

list_ml_workspaces

List Machine Learning Workspaces.

{
  "csp": "aws",
  "region": "us-west-2",
  "provisioned": true
}

Notifications

get_notifications

Get notifications for the authenticated user.

{
  "limit": 20,
  "skip": 0,
  "read": false
}

Example Conversations

Listing Clusters

User: List all my clusters
Assistant: [calls list_clusters] Here are your clusters...

Running a Workflow

User: Run the "data-processing" workflow with input dataset="s3://my-bucket/data"
Assistant: [calls run_workflow with workflow="data-processing", inputs={"dataset": "s3://my-bucket/data"}] Workflow started successfully...

Checking Storage

User: What Lustre filesystems do I have access to?
Assistant: [calls list_lustre] You have access to the following Lustre filesystems...

Managing Sessions

User: Show me all my active tunnel sessions
Assistant: [calls list_sessions with type="tunnel"] Here are your active tunnel sessions...

Error Handling

The MCP server handles errors gracefully:

  • Authentication errors: Check your API key or token

  • Network errors: Verify your network connection and API URL

  • Invalid parameters: Check the tool input schema

  • Resource not found: Verify resource names and permissions

All errors are returned with descriptive messages in the response.

Development

Project Structure

parallel-works-mcp/
├── src/
│   └── index.js          # Main MCP server implementation
├── package.json           # Dependencies and scripts
├── pw-openapi.json       # OpenAPI specification (reference)
├── PROGRESS.md           # Development progress tracking
└── README.md             # This file

Adding New Tools

To add a new tool:

  1. Add the tool definition to the tools array in src/index.js

  2. Add a case in the CallToolRequestSchema handler

  3. Test the tool with your MCP client

Example:

{
  name: 'my_new_tool',
  description: 'Does something useful',
  inputSchema: {
    type: 'object',
    properties: {
      param1: { type: 'string', description: 'First parameter' },
    },
    required: ['param1'],
  },
}

API Reference

This MCP server is based on the Parallel Works ACTIVATE OpenAPI specification:

  • Base URL: https://activate.parallel.works

  • Documentation: Parallel Works Docs

  • OpenAPI Spec: Included as pw-openapi.json

License

MIT

Support

For issues or questions:

Available Tools

17 tools
get_auth_sessionA

Get the current authentication session and user information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/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. 'Get' implies a read-only operation, but it does not disclose any error conditions, response structure, or whether the session could be null or expired. For a simple getter with no parameters, this is adequate but not thorough.

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?

A single, straightforward sentence with no filler. It front-loads the verb and resource, making it easy to scan. Every word earns its place.

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 no output schema, the description is the only source for what the tool returns. 'User information' is vague, leaving the agent to guess what fields are included. The tool is simple, but a bit more detail on the session object or user fields would make it fully complete.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. There is no parameter information needed, and the description correctly avoids adding irrelevant detail. The schema coverage is 100% since there are no properties.

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 uses a specific verb ('Get') and resource ('current authentication session and user information'), which clearly distinguishes it from sibling tools like get_organizations or list_clusters. The scope is unambiguous and directly reflects the tool's function.

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 the tool is used when you need the current authentication session or user info, but it does not explicitly state when to use it versus alternatives or mention any exclusions. Given the sibling list, the purpose is clear enough, but explicit guidance is absent.

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

get_cluster_nodesA

Get nodes for a specific compute cluster

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by node type (controller, compute)
userYesUsername of the cluster owner
clusterNameYesCluster name
organizationYesOrganization name

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description must convey that this is a read-only operation; 'Get' implies this, but it doesn't disclose response format, filtering behavior, or error conditions. It adds minimal behavioral context beyond the tool name.

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?

A single, direct sentence that leads with the verb and specifies the target resource. No unnecessary words or repetition, making it highly scannable.

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

Completeness4/5

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

Given the tool's simple read-only nature, fully documented parameters, and no output schema, the description adequately identifies the purpose and resource. It could mention that nodes are returned as a list, but the overall scope is clear and complete enough for a tool of this complexity.

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% coverage with descriptions for all four parameters, so the schema already carries the semantic weight. The description does not add meaning beyond identifying that nodes are fetched for a cluster; it doesn't clarify parameter relationships or provide examples.

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 uses a specific verb 'Get' and resource 'nodes' with a clear qualifier 'for a specific compute cluster'. It distinctly differentiates from sibling tools like list_clusters, which enumerate clusters rather than their nodes.

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 nodes for a particular cluster, but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites like verifying the cluster exists via list_clusters. There are no exclusions or alternative tool references.

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

get_groupsB

Get groups for the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoFilter by network name
providerNoFilter by provider (aws-slurm, google-slurm, azure-slurm, existing)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description adds no behavioral context beyond the basic 'Get' operation. It does not mention response format, potential network behavior, or any side effects. A simple read operation is implied, but the description carries the full burden and fails to add value.

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 sentence with no unnecessary words. It front-loads the verb and resource, making it easy to scan.

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 simple getter with optional filters, the description provides the essential purpose, but it lacks usage context, return type explanation, or relationship to other tools. Given no output schema, the agent is left to infer the response structure, making it minimally viable but not complete.

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?

Both parameters are already fully described in the input schema (100% coverage), and the tool description adds no additional meaning about how filtering works or the relationship between network and provider. Baseline of 3 is appropriate.

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 uses a specific verb 'Get' and identifies the resource 'groups' scoped to the authenticated user. This clearly distinguishes it from sibling tools like get_organizations or list_clusters, as 'groups' is unique among them.

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, nor any context about typical use cases. The description is purely functional with no exclusions or references to sibling tools.

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

get_notificationsB

Get notifications for the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault
readNoFilter by read status
skipNoNumber of notifications to skip
limitNoMaximum number of notifications to return

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description must carry behavioral disclosure. It states the operation is for the authenticated user but does not reveal whether it is read-only, any side effects (e.g., marking notifications as read), or response format.

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, concise sentence that front-loads the action and resource. No unnecessary words are present.

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?

The tool is simple, but the description lacks information about return values or pagination behavior. With no output schema, the description should at least indicate the response structure or any default filters.

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 provides full descriptions for all three parameters (read, skip, limit), meeting the baseline. The description adds no extra meaning about parameter usage, defaults, or relationships.

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 uses the specific verb 'Get' and resource 'notifications', scoped to the authenticated user. It clearly differentiates from sibling tools that target other resources (e.g., organizations, workflows, clusters).

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 on when to use this tool versus alternatives is provided. It does not mention exclusions or selection criteria beyond the self-evident purpose.

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

get_organizationsA

List organizations the user can access

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 full responsibility for disclosing behavior. It only states the basic listing action and does not mention authentication requirements, potential empty results, pagination, or the shape of the returned data. For a tool with zero annotations, 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, concise sentence that immediately conveys the tool's purpose. There is no wasted wording or redundant information.

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 simplicity (no parameters, no output schema), the description provides a minimal but adequate understanding. However, it omits any indication of the return format or behavior beyond 'listing', which could leave an agent unsure about what to expect as output. The lack of annotations further reduces completeness, but the simple nature keeps it from being lower.

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

Parameters4/5

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

The tool has zero parameters, so the input schema is fully covered (100%) vacuously. According to the rubric, a baseline of 4 is appropriate when there are no parameters; the description adds no parameter-specific detail because none exist.

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 action (List) and resource (organizations), with a scope qualifier ('the user can access'). This distinguishes it from sibling list tools that target other resource types (e.g., clusters, workflows, buckets).

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 purpose inherently implies when to use it: when you need to see organizations available to the user. However, the description does not provide explicit guidance on when to prefer this over other list tools (e.g., list_groups or list_clusters), nor any exclusions or prerequisites. Usage is inferred rather than stated.

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

get_workflowB

Get details of a specific workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesWorkflow name

TDQS

B3.1/5.0
Behavior2/5

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 only says 'Get details' without disclosing return format, error behavior, auth requirements, or any side effects. Minimal behavioral context added.

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?

A single, front-loaded sentence directly stating the purpose with no redundant words. Excellent conciseness.

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?

The tool is simple with one parameter and no output schema, so a short description is appropriate. However, the term 'details' is vague and does not specify what is returned, leaving some ambiguity.

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 coverage is 100% with a clear description of the 'workflow' parameter as 'Workflow name'. The description adds no additional meaning but is consistent with the schema, so baseline 3 applies.

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 uses a specific verb 'Get' and resource 'workflow' indicating a read operation. The word 'specific' distinguishes it from list_workflows, though it doesn't explicitly differentiate from get_workflow_yaml. Overall clear.

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 on when to use this tool versus alternatives like list_workflows or get_workflow_yaml. No prerequisites or context provided.

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

get_workflow_yamlB

Get the YAML configuration of a workflow

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesWorkflow name

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states 'Get the YAML configuration', implying read-only without explicit disclosure. It does not mention permissions, error behavior, or side effects.

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?

A single, direct sentence that contains no filler. It is appropriately sized for a simple getter tool and is front-loaded with the action.

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?

The tool lacks an output schema and annotations, so the description should explain return format or error conditions. It does not, leaving the agent to infer expected YAML structure and failure behavior.

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 coverage is 100% with the 'workflow' parameter documented as 'Workflow name'. The description adds no extra meaning beyond the schema, so baseline 3 applies.

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 uses a specific verb 'Get' and identifies the exact resource 'YAML configuration of a workflow', clearly distinguishing it from sibling tools like list_workflows and get_workflow.

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. The description simply states the action without context or exclusions.

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

list_allocationsB

List budget allocations the user can access

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by allocation name (case-insensitive contains)
skipNoNumber of allocations to skip
sortNoSort field and direction
limitNoMaximum number of allocations to return

TDQS

B3.3/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 adds only an access control qualifier ('the user can access') but does not disclose pagination behavior, return format, authentication requirements, or default sort/limit behavior. This leaves significant gaps for a listing 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 sentence of seven words, front-loaded with the verb and resource. It is perfectly concise with zero wasted words.

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?

This is a low-complexity list operation with a fully documented schema, but the absence of an output schema and annotations means the description should have explained return shape and pagination behavior. The access scoping is useful, but the overall completeness is adequate yet incomplete.

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 provides 100% coverage for all four parameters (name, skip, sort, limit). The description adds no parameter-specific meaning, so the baseline of 3 applies.

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 uses the specific verb 'List' with a clear resource, 'budget allocations', and adds a scoping qualifier ('the user can access'). This clearly distinguishes it from sibling list tools like list_clusters and list_buckets, which cover different resource types.

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, no exclusions, and no mention of preconditions. It simply states the core function, leaving usage entirely implied by the resource name.

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

list_bucketsB

List storage buckets the user can access

ParametersJSON Schema
NameRequiredDescriptionDefault
permissionNoFilter by permission
provisionedNoFilter by provisioned status

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description bears the full burden of disclosing behavior. It states the scope ('the user can access') but does not disclose whether the operation is read-only, any rate limits, pagination, or permission requirements. The simple 'list' verb implies a read operation, but the description adds little beyond the literal action.

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, tightly worded sentence that front-loads the action and resource. No filler or redundant information. It earns its place.

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?

Although the tool has no output schema, the description is adequate for a straightforward list operation. However, it does not mention the return format, pagination, or how the permission/provisioned filters affect results. Given the simplicity, a score of 3 reflects the clear gaps in 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?

The input schema documents both parameters (permission and provisioned) with full descriptions, achieving 100% schema coverage. The description adds no additional meaning to these parameters beyond what the schema already provides, so 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.

Purpose5/5

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

The description uses the specific verb 'List' with a clear resource ('storage buckets') and scope ('the user can access'), which clearly distinguishes it from sibling tools like list_clusters or list_nfs. It unambiguously states what the tool does.

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_nfs or list_lustre. It does not mention any conditions, prerequisites, or scenarios where another tool would be more appropriate. The agent is left to infer based on the resource type.

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

list_clustersA

List all clusters the user can access

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/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 responsibility for disclosing behavioral traits. It does state the access scope (user-accessible clusters), which is useful, but it does not mention whether it's a read-only operation, any potential side effects, rate limits, or response behavior. For a list operation, the lack of explicit read-only confirmation and pagination details is a 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, concise sentence that is front-loaded with the verb 'List' and the resource 'clusters'. Every word earns its place, with no unnecessary detail.

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

Completeness4/5

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

For a zero-parameter list tool with no output schema, the description is adequate: it defines the scope ('all clusters the user can access') and is simple enough that the missing details (pagination, return format) are likely not critical. However, the lack of any behavioral context, such as whether an empty list is returned or if authentication is required, keeps it from a perfect score.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100% (an empty object), so the description has no need to explain parameters. The baseline for 0 params is 4; the description does not add anything beyond the schema, but no compensation is needed.

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 action (list) and the resource (clusters), and adds the scope 'the user can access', which distinguishes it from sibling tools like get_cluster_nodes (which lists nodes) and list_kubernetes_clusters (which lists a specific type). Purpose is unambiguous.

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 gives no explicit guidance on when to use this tool versus alternatives such as get_organizations or list_kubernetes_clusters. The intended use is only implied by the phrase 'clusters the user can access', but no exclusions or alternative tools are mentioned.

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

list_kubernetes_clustersB

List Kubernetes clusters accessible to the user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adds 'accessible to the user' to indicate user-based filtering, but does not disclose behaviors such as pagination, sorting, fields returned, or whether clusters are across all namespaces. Minimal but not misleading.

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, front-loaded sentence with no filler. Every word contributes to meaning.

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 tool with no output schema and no annotations, the description is thin. It does not mention return structure (e.g., names, metadata) or potential pagination limits. Given the tool's simplicity, this is acceptable but not fully complete.

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

Parameters4/5

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

The schema has zero parameters, so the baseline is 4. The description adds no parameter-specific meaning, but none is needed since there are no inputs to clarify.

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 ('Kubernetes clusters'), with a scope qualifier ('accessible to the user'). It is specific and likely distinct from sibling 'list_clusters' (generic), but it does not explicitly differentiate from that sibling.

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 like the broader 'list_clusters' or related 'get_cluster_nodes'. The description only implies use for listing Kubernetes clusters, without exclusions or context.

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

list_lustreA

List Lustre filesystems the user can access

ParametersJSON Schema
NameRequiredDescriptionDefault
permissionNoFilter by permission
provisionedNoFilter by provisioned status

TDQS

A3.6/5.0
Behavior2/5

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

The description is limited to 'List Lustre filesystems the user can access', adding no behavioral context beyond the read-only nature implied by 'list'. With no annotations, the safety profile and return behavior are not disclosed.

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 front-loaded sentence with no redundant words or details, making it highly efficient.

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

Completeness4/5

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

As a simple list tool with two optional filter parameters and no output schema, the description adequately states the operation and scope. It could mention response structure, but the simplicity of listing Lustre filesystems makes it reasonably complete.

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?

Input schema has 100% coverage with descriptions for both 'permission' and 'provisioned' filters, so the baseline is 3. The description does not elaborate on these parameters, leaving schema to carry the semantic detail.

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 uses the specific verb 'List' with the resource 'Lustre filesystems' and the scope 'the user can access', clearly distinguishing it from sibling tools like list_clusters or list_nfs.

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?

No explicit usage guidance is provided. The description implies usage when one needs to list Lustre filesystems, but it does not mention alternatives or exclusion criteria.

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

list_ml_workspacesC

List Machine Learning Workspaces

ParametersJSON Schema
NameRequiredDescriptionDefault
cspNoCloud service provider filter
regionNoRegion filter
provisionedNoFilter by provisioned status

TDQS

C2.9/5.0
Behavior2/5

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, but it only says 'List' without detailing pagination, return format, permissions, or any side effects. It is not misleading, but it provides no behavioral context beyond the operation itself.

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, front-loaded sentence with no unnecessary words. It is appropriately concise for a simple list operation.

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?

Despite the tool having three optional filter parameters and no output schema, the description provides no context about how filters interact, what the response contains, or any usage caveats. The description is minimal and leaves the agent without critical operational details.

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 covers all three parameters with clear descriptions (e.g., 'Cloud service provider filter'), so schema coverage is 100%. The tool description adds no additional parameter meaning, but the baseline of 3 is appropriate given the schema's completeness.

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 uses a specific verb and resource ('List Machine Learning Workspaces'), clearly stating the tool's primary function. However, it does not differentiate from sibling list tools beyond the resource name, so it falls short of a 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?

No guidance is provided on when to use this tool versus alternatives, and no exclusions or context are given. The description merely restates the tool's purpose without mentioning use cases or related sibling tools.

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

list_nfsB

List NFS filesystems the user can access

ParametersJSON Schema
NameRequiredDescriptionDefault
permissionNoFilter by permission (edit, mount)
provisionedNoFilter by provisioned status

TDQS

B3.3/5.0
Behavior2/5

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 only hints at access scoping ('the user can access') but does not mention whether the operation is read-only, how results are paginated, or what constitutes a filesystem in the return. This minimal disclosure leaves significant behavioral expectations unstated.

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 sentence, front-loaded with the purpose, and contains zero fluff. Every word earns its place by conveying resource type and scope.

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?

The tool is simple, with only two optional parameters and no output schema. The description states the basic purpose but omits what a returned NFS filesystem looks like, any usage caveats, or related tools. It is minimally viable but lacks richness for a fully self-contained description.

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 (permission and provisioned). The description adds no additional meaning about the parameters, so the baseline of 3 applies, 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.

Purpose5/5

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

The description uses a specific verb ('List') and resource ('NFS filesystems') and adds a clear scope ('the user can access'), which distinguishes it from sibling tools like list_buckets or list_lustre. It precisely communicates what the tool does.

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, nor any prerequisites or exclusions. The description simply states the action without context, leaving the agent to infer appropriate usage from the tool name and sibling list.

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

list_sessionsB

List sessions for the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by session type (tunnel, link)
subdomainNoFilter by subdomain/domain name

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but only states the basic action. It does not disclose pagination, default behavior, or whether both session types are returned, though the schema hints at filtering.

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, concise sentence that immediately conveys the tool's function. Every word is necessary, with no redundancy.

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?

The tool has low complexity with two optional parameters and no output schema, so the description plus schema are largely sufficient. However, given the absence of annotations, the description could have noted the filtering capability or return expectations, so it's marginally complete.

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 provides full documentation for both parameters (type and subdomain), with enum values for type. The description adds nothing about parameters, so a baseline score of 3 is appropriate.

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 that the tool lists sessions for the authenticated user. It uses a specific verb and resource, and since sibling tools list other resources (clusters, workflows, buckets), this distinguishes itself well.

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 or any exclusions. The description gives no context about session types or scenarios where one might prefer a different listing tool.

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

list_workflowsC

List all workflows for the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoFilter by type (apps, workflows)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, and the description only mentions 'for the authenticated user', implying authentication is required. It does not disclose return format, pagination, error behavior, or any side effects. The description carries the full burden and provides minimal behavioral insight.

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, clear sentence with no redundant information. It is appropriately front-loaded and every word earns its place, though it could benefit from more detail without becoming verbose.

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?

With no output schema and no annotations, the description should explain return values and usage context. It omits the effect of the filter parameter, what the returned data looks like, and when to prefer this tool over related siblings. This is insufficient for an agent to invoke it confidently.

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 fully describes the 'filter' parameter with an enum and description (100% coverage). The description adds no additional meaning beyond the schema, so the baseline 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 tool lists workflows for the authenticated user, using a specific verb and resource. It distinguishes from sibling tools like list_clusters and get_workflow. However, the filter parameter also supports 'apps', creating slight ambiguity about whether the tool lists apps as well.

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 like get_workflow or run_workflow. The description lacks any context on typical use cases or exclusions, leaving the agent to infer from the tool name and siblings.

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

run_workflowB

Run a workflow with optional input parameters

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsNoInput variables for the workflow (key-value pairs)
workflowYesWorkflow name

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 only states the action and optional inputs, without mentioning side effects, whether the workflow runs synchronously or asynchronously, auth requirements, or what the response contains.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no redundancy. It is efficient but borderline under-specified; however, it still conveys the core action and parameter information without waste.

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 an execution tool with no output schema, annotations, or additional context, the description is too sparse. It does not explain what happens when a workflow is run, whether it returns a run ID, or any post-invocation behavior. This leaves significant gaps for an agent deciding to invoke it.

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% for both parameters. The description adds nothing beyond the schema; 'optional input parameters' merely restates the inputs property's description without providing examples, types, or usage nuances.

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 uses the specific verb 'run' with the resource 'workflow', clearly indicating execution. This distinguishes it from sibling tools like list_workflows and get_workflow, which are read-only operations.

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 given on when to use this tool versus the sibling tools. The description does not mention alternatives, exclusions, or prerequisites, leaving the agent to infer usage context solely from the tool name.

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

TDQS

B3.3/5.0
Disambiguation5/5

Each tool targets a distinct resource: auth, organizations, groups, clusters, nodes, workflows, workflow YAML, storage types, sessions, allocations, Kubernetes, ML workspaces, and notifications. No two tools appear to serve the same purpose, and the resource-action pairs are clearly differentiated.

Naming Consistency3/5

The naming pattern is generally verb_noun, but there is inconsistency between 'get_' and 'list_' prefixes for essentially the same operation. For example, get_organizations and get_groups return lists, while list_clusters and list_workflows are used elsewhere. This mixed convention adds avoidable ambiguity.

Tool Count4/5

With 17 tools, the server covers a broad but reasonable domain of resources and actions. While slightly on the heavier side, each tool represents a distinct resource or operation, and the count aligns with the platform's diverse feature set without feeling excessive.

Completeness3/5

The tool surface is strong for read/listing operations and includes run_workflow as the primary action, but lacks create, update, or delete capabilities for most resources (e.g., creating a bucket, deleting a session, or stopping a workflow). This leaves the set incomplete for full lifecycle management, though it may suffice for monitoring and execution scenarios.

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

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/parallelworks/pw-mcp'

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