Skip to main content
Glama
avi892nash

PureScript MCP Server

by avi892nash

PureScript MCP Tools

npm version License: MIT

A Model Context Protocol (MCP) server that provides PureScript development tools for AI assistants like Claude.

Features

  • Code Analysis: Parse and analyze PureScript code structure without heavy IDE setup

  • PureScript IDE Integration: Start and manage PureScript IDE servers

  • Type Information: Look up types and find code usages

  • Dependency Graphs: Generate visual representations of module dependencies

  • AI-First: Built specifically for AI assistants using the Model Context Protocol

Related MCP server: TypeScript Definition Finder

Installation

npm install -g purescript-mcp-tools

From Source

# Clone this repository
git clone https://github.com/avi892nash/purescript-mcp-tools.git
cd purescript-mcp-tools

# Install dependencies
npm install

# Test that it works
npm test

Configuration

For Claude Desktop

  1. Find your Claude config file:

    • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%/Claude/claude_desktop_config.json

  2. Add this server configuration:

If installed via npm:

{
  "mcpServers": {
    "purescript-tools": {
      "command": "npx",
      "args": ["purescript-mcp-tools"]
    }
  }
}

If installed from source:

{
  "mcpServers": {
    "purescript-tools": {
      "command": "node",
      "args": ["/FULL/PATH/TO/purescript-mcp-tools/index.js"]
    }
  }
}
  1. Restart Claude Desktop.

For Other MCP Clients

Configure as a stdio MCP server:

  • Command: npx (or node if from source)

  • Arguments: ["purescript-mcp-tools"] (or ["/full/path/to/index.js"] if from source)

  • Protocol: stdio

Usage

Verify Installation

In your MCP client, try running:

get_server_status

You should see a response showing the server is running.

Available Tools

This MCP server provides the following tools:

Static Analysis (No IDE Required)

  • getModuleName - Extract module name from PureScript file

  • getImports - List all imports from a module

  • getAllFunctionNames - Get all function definitions

  • getExports - List exported values

  • getFunctionSignature - Get type signature for a function

  • getDependencyGraph - Generate module dependency graph

PureScript IDE Integration

  • start_purs_ide_server - Start a PureScript IDE server

  • stop_purs_ide_server - Stop the IDE server

  • pursIdeLoad - Load modules into IDE

  • pursIdeType - Get type information

  • pursIdeComplete - Get completion suggestions

  • pursIdeUsages - Find where a symbol is used

  • pursIdeCaseSplit - Generate case splits

  • pursIdeAddClause - Add function clause

  • pursIdeImport - Add imports

Basic Workflow

  1. Check status: get_server_status

  2. For simple analysis: Use static analysis tools directly

  3. For advanced features:

    • start_purs_ide_server with your project path

    • pursIdeLoad to load modules

    • Use pursIdeType, pursIdeUsages, etc.

Requirements

  • Node.js >= 14.0.0

  • PureScript compiler (purs) - Required only if using IDE features

  • Your PureScript project - With compiled output for IDE features

Troubleshooting

Server won't start: Check that Node.js is installed and dependencies are installed (npm install)

Tools not working: Run get_server_status to see what's available

Path errors: Ensure you use absolute paths in your MCP configuration

Multiple servers: Only run one PureScript IDE server at a time to avoid port conflicts

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

This server implements the Model Context Protocol and provides comprehensive PureScript development assistance to AI tools.

Available Tools

19 tools
echoA

Simple test tool that echoes back your input. Use to verify the MCP server is responding correctly.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

TDQS

A4.4/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. It describes the core behavior ('echoes back your input') and purpose ('test tool'), but doesn't disclose potential behavioral traits like whether it modifies data, has rate limits, or requires specific permissions. For a simple test tool with no annotations, this is adequate but 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.

Conciseness5/5

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

Perfectly concise with two sentences that each earn their place: the first explains what the tool does, the second explains when to use it. No wasted words, and the information is front-loaded appropriately.

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 simplicity (one parameter, no output schema, no annotations), the description is nearly complete. It explains the purpose, usage, and parameter semantics effectively. The only minor gap is the lack of explicit behavioral details like whether it's read-only or has side effects, but for a test tool, this is acceptable.

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?

With 0% schema description coverage and only one parameter ('message'), the description adds meaningful context by explaining that the tool 'echoes back your input,' which clarifies that the 'message' parameter is the content to be returned. This compensates well for the lack of schema documentation.

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 tool's purpose with a specific verb ('echoes back') and resource ('your input'), and distinguishes it from siblings by specifying it's a 'test tool' for verification purposes. It goes beyond the name 'echo' by explaining the testing context.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool: 'Use to verify the MCP server is responding correctly.' This provides clear guidance on the tool's intended purpose versus its sibling tools, which appear to be IDE/server management functions.

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

generate_dependency_graphA

Create a dependency graph showing which functions/types use which others in PureScript modules. PREREQUISITES: IDE server must be running and modules must be loaded. Useful for understanding code relationships and refactoring impact.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_concurrent_requestsNoMax concurrent 'usages' requests.
target_modulesYesArray of module names.

TDQS

A3.7/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. It discloses prerequisites (IDE server running, modules loaded) and the tool's purpose, but lacks details on behavioral traits like rate limits, error handling, output format, or whether it's read-only or mutating. The description doesn't contradict annotations (none exist), but it's incomplete for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by prerequisites and usage context. Every sentence earns its place with no wasted words, making it efficient and easy to parse.

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 annotations, no output schema, and 2 parameters with full schema coverage, the description is moderately complete. It covers purpose, prerequisites, and usage context but lacks details on output format, error cases, or behavioral constraints. For a tool with no structured safety or output info, it should do more to compensate.

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 (target_modules and max_concurrent_requests). The description doesn't add any meaning beyond what the schema provides—it doesn't explain parameter usage, constraints, or examples. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Create a dependency graph showing which functions/types use which others in PureScript modules.' It specifies the verb ('Create'), resource ('dependency graph'), and scope ('PureScript modules'), distinguishing it from siblings like getImports or pursIdeUsages. However, it doesn't explicitly differentiate from all siblings (e.g., getTopLevelDeclarations might overlap in code analysis).

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: 'Useful for understanding code relationships and refactoring impact.' It includes prerequisites: 'IDE server must be running and modules must be loaded.' This gives explicit guidance on necessary conditions. However, it doesn't specify when not to use it or name alternatives among siblings.

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

getFunctionNamesA

Extract only function names from PureScript code snippets. Focuses specifically on functions, ignoring data types and classes. Quick analysis for code understanding.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesPureScript code snippet.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It describes the tool's focus (functions only) and purpose (quick analysis), but lacks details on error handling, output format, or performance characteristics like speed or limitations. It adds some behavioral context but is incomplete.

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 two sentences, front-loaded with the core purpose, and every sentence adds value: the first defines the action and scope, the second provides usage context. There is no wasted text, making it highly efficient.

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 moderate complexity (extracting function names from code), no annotations, and no output schema, the description is adequate but has gaps. It explains what the tool does and its focus, but lacks details on return values, error cases, or edge behaviors, making it minimally viable but not fully 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?

Schema description coverage is 100%, with the parameter 'code' documented as 'PureScript code snippet.' The description adds no additional parameter details beyond what the schema provides, such as examples or constraints, so it meets the baseline for high schema coverage without extra value.

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

Purpose5/5

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

The description clearly states the specific action ('Extract only function names') and resource ('from PureScript code snippets'), distinguishing it from siblings like getTopLevelDeclarationNames or getImports by focusing exclusively on functions while ignoring data types and classes.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('Quick analysis for code understanding' and focusing on functions only), but does not explicitly state when not to use it or name alternatives among siblings, such as getTopLevelDeclarationNames for broader extraction.

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

getImportsA

Find all import statements in PureScript code (like 'import Data.List', 'import Prelude'). Shows what external modules the code depends on. Works without the IDE server.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoPureScript code string.
filePathNoAbsolute path to the PureScript file. Only absolute paths are supported.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses the key behavioral trait of working 'without the IDE server', which is valuable operational context. However, it doesn't describe output format, error conditions, performance characteristics, or what happens with malformed code - leaving gaps for a tool with no output schema.

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?

Three tightly focused sentences with zero waste. First sentence states core functionality with examples, second explains the purpose, third provides crucial operational context. Every sentence 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?

For a tool with no annotations and no output schema, the description provides good purpose and operational context but leaves significant gaps. It doesn't describe what the output looks like (list format, structure), error handling, or edge cases. Given the complexity of code analysis, more completeness would be helpful.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. Baseline 3 is appropriate when the schema does all the parameter documentation work.

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

Purpose5/5

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

The description clearly states the specific action ('Find all import statements'), the resource ('PureScript code'), and provides concrete examples ('import Data.List', 'import Prelude'). It explicitly distinguishes this tool from siblings by stating it 'Works without the IDE server' (unlike pursIde* tools).

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('Shows what external modules the code depends on') and distinguishes it from IDE-dependent tools. However, it doesn't explicitly state when NOT to use it or mention specific alternatives among the siblings (e.g., when to use getModuleName instead).

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

getModuleNameA

Extract the module name (like 'Data.List' or 'Main') from PureScript code. Works on files or code snippets without needing the IDE server. Useful for understanding code structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoPureScript code string.
filePathNoAbsolute path to the PureScript file. Only absolute paths are supported.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses that it works on files or code snippets without needing the IDE server, which is useful behavioral context. However, it doesn't mention error handling, performance characteristics, or what happens with malformed input. The description doesn't contradict any annotations since none exist.

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?

Two sentences, zero waste. First sentence states purpose and scope, second sentence provides usage context. Every word earns its place with no redundancy or unnecessary elaboration.

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 relatively simple extraction tool with 100% schema coverage but no output schema or annotations, the description provides good context about what it does and when to use it. It could be more complete by mentioning what the output looks like (since no output schema exists) or error conditions, but it covers the essential purpose well.

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 fully documents both parameters. The description mentions 'files or code snippets' which aligns with the filePath/code parameters but doesn't add meaningful semantics beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the specific action ('extract'), resource ('module name from PureScript code'), and scope ('files or code snippets without needing the IDE server'). It distinguishes from siblings like getFunctionNames or getImports by focusing specifically on module names.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('useful for understanding code structure') and mentions it works without the IDE server, which differentiates it from some sibling tools. However, it doesn't explicitly state when NOT to use it or name specific alternatives for related tasks.

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

get_server_statusA

Check if IDE server processes are running to avoid resource conflicts. Shows status of Tree-sitter parser (lightweight code analysis) and purs IDE server (process for type checking). ALWAYS use this before starting new IDE servers to prevent running multiple processes simultaneously.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and effectively discloses key behavioral traits: it's a read-only check (implied by 'Check' and 'Shows'), it helps avoid conflicts, and it monitors specific processes. However, it lacks details on output format or error handling, which could be useful for an agent.

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 front-loaded with the main purpose, followed by specific details and usage instructions in two concise sentences, with no wasted words—every sentence adds value to the agent's understanding.

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 complexity (simple status check with no parameters), no annotations, and no output schema, the description is mostly complete—it covers purpose, usage, and behavioral context. However, it doesn't specify what the status output looks like (e.g., success/failure indicators), leaving a minor gap.

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?

Since there are 0 parameters and schema coverage is 100%, the baseline is 4. The description adds context by explaining the tool's purpose and usage, which compensates for the lack of parameters, making it clear that no inputs are needed for this status check.

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 tool's purpose with specific verbs ('Check', 'Shows') and resources ('IDE server processes', 'Tree-sitter parser', 'purs IDE server'), distinguishing it from siblings like 'start_purs_ide_server' or 'stop_purs_ide_server' by focusing on status checking rather than control operations.

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

Usage Guidelines5/5

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

It provides explicit guidance on when to use the tool ('ALWAYS use this before starting new IDE servers') and why ('to avoid resource conflicts', 'to prevent running multiple processes simultaneously'), with clear context for its application relative to other tools.

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

getTopLevelDeclarationNamesA

List all main definitions in PureScript code: function names, data types, type classes, etc. Gets just the names (like 'myFunction', 'MyDataType'). Fast analysis without needing IDE server.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoPureScript code string.
filePathNoAbsolute path to the PureScript file. Only absolute paths are supported.

TDQS

A3.9/5.0
Behavior3/5

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 that the tool performs 'Fast analysis' and works 'without needing IDE server', which are useful behavioral traits. However, it doesn't mention potential limitations like file size constraints, error handling, or performance characteristics beyond speed.

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 efficiently structured in two sentences that each earn their place: the first states the core functionality and scope, the second adds important behavioral context about speed and server requirements. No 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?

For a read-only analysis tool with no annotations and no output schema, the description provides adequate but minimal context. It explains what the tool does and some behavioral aspects, but doesn't describe the return format (e.g., array of strings) or potential edge cases, leaving gaps for the agent to infer.

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

Parameters3/5

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

The schema has 100% description coverage, so the baseline is 3. The description doesn't add any parameter-specific information beyond what's in the schema (which already explains the 'filePath' and 'code' parameters and their mutual exclusivity).

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

Purpose5/5

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

The description clearly states the specific action ('List all main definitions'), resource ('PureScript code'), and scope ('just the names'). It distinguishes from sibling tools like 'getTopLevelDeclarations' by specifying it only returns names, not full declarations.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('Fast analysis without needing IDE server'), but doesn't explicitly state when not to use it or name specific alternatives. It implies usage for quick name extraction versus more detailed analysis tools.

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

getTopLevelDeclarationsA

Get detailed information about all main definitions in PureScript code: names, types (function/data/class), and full source code. Includes filtering options to find specific items. More comprehensive than getTopLevelDeclarationNames.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoPureScript code string.
filePathNoAbsolute path to the PureScript file. Only absolute paths are supported.
filtersNoOptional filters to apply to the declarations.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It describes what information is returned (detailed info including names, types, full source code) and mentions filtering capabilities, but doesn't disclose important behavioral aspects like whether this is a read-only operation, potential performance implications, error conditions, or response format. The description adds some value but leaves 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.

Conciseness4/5

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

The description is appropriately concise with two sentences that each serve distinct purposes: the first states the core functionality, the second adds comparative context. No wasted words, though it could be slightly more front-loaded by mentioning filtering earlier.

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 3 parameters, no annotations, and no output schema, the description provides adequate but incomplete context. It covers the purpose and distinguishes from one sibling, but doesn't address the response format, error handling, or performance characteristics that would be helpful given the lack of structured metadata.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description mentions 'filtering options' but doesn't add meaningful semantic context beyond what's in the schema. It doesn't explain when to use filePath vs code, or provide examples of filter usage. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get detailed information about all main definitions in PureScript code' with specific details about what information is returned (names, types, full source code). It explicitly distinguishes from sibling tool 'getTopLevelDeclarationNames' by stating it's 'more comprehensive'.

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

Usage Guidelines5/5

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

The description provides excellent usage guidance by explicitly comparing to the sibling tool 'getTopLevelDeclarationNames' and stating this tool is 'more comprehensive.' This tells the agent when to choose this tool over that specific alternative, though it doesn't mention other siblings.

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

getWhereBindingsB

Find 'where' clauses in PureScript functions. These contain local helper functions and variables. Useful for understanding function implementation details.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesPureScript code snippet.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does (finds 'where' clauses) and their purpose (contain local helper functions and variables), but doesn't describe the return format, error handling, performance characteristics, or whether it requires specific code formatting. For a code analysis tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is extremely concise (two sentences) and front-loaded with the core purpose in the first sentence. Every word earns its place: the first sentence defines the action and target, the second explains the utility. No redundant information or unnecessary elaboration.

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

Completeness3/5

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

Given the tool's moderate complexity (code analysis with one parameter), 100% schema coverage, but no annotations or output schema, the description is minimally adequate. It explains what the tool does and why, but doesn't address return format, error cases, or detailed behavioral expectations. For a tool without output schema, more information about what gets returned would be helpful.

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

Parameters3/5

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

The input schema has 100% description coverage with one parameter ('code') clearly documented as 'PureScript code snippet.' The description adds minimal value beyond this, mentioning 'PureScript functions' which aligns with the schema but doesn't provide additional context about code format expectations, size limitations, or preprocessing requirements. With complete schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Find 'where' clauses in PureScript functions' with the specific resource being PureScript code. It distinguishes from siblings by focusing on 'where' clauses rather than imports, module names, or other code analysis tasks. However, it doesn't explicitly differentiate from tools like 'getTopLevelDeclarations' which might also analyze code structure.

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 provides implied usage context: 'Useful for understanding function implementation details' suggests this tool is for code analysis rather than execution or transformation. However, it doesn't explicitly state when to use this tool versus alternatives like 'getFunctionNames' or 'getTopLevelDeclarations', nor does it mention prerequisites or exclusions.

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

pursIdeCwdA

Get the current working directory that the IDE server is using. PREREQUISITE: IDE server must be running. Useful for understanding the project context.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/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. It discloses a prerequisite (IDE server must be running) and a use case (understanding project context), but does not cover other behavioral aspects like error handling, response format, or performance. This is adequate but has gaps, fitting a baseline 3.

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 two concise sentences with zero waste: the first states the purpose and prerequisite, the second adds value with the use case. It is front-loaded and every sentence 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 the tool's simplicity (0 params, no output schema, no annotations), the description is reasonably complete for a read-only utility. However, it lacks details on return values or error cases, which could be helpful despite the low complexity. This meets minimum viability with clear gaps.

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 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description does not add param details, which is appropriate. Baseline for 0 params is 4, as it avoids unnecessary repetition.

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's purpose: 'Get the current working directory that the IDE server is using.' It specifies the verb ('Get') and resource ('current working directory'), but does not explicitly differentiate it from siblings like 'get_server_status' or 'pursIdeList', which is why it's not 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 Guidelines4/5

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

The description provides clear context for usage with 'PREREQUISITE: IDE server must be running' and 'Useful for understanding the project context.' However, it does not explicitly state when not to use this tool or name alternatives among siblings, 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.

pursIdeListB

List available modules in the project or imports in a specific file. PREREQUISITES: IDE server running and modules loaded. Helps understand project structure and dependencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoPath to the .purs file (required for 'import' listType).
listTypeYesType of list to retrieve.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions prerequisites ('IDE server running and modules loaded') and a high-level benefit ('Helps understand project structure and dependencies'), but it lacks details on behavioral traits such as error handling, performance characteristics, or what the output looks like (e.g., format, pagination). For a tool with no 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.

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the core purpose stated first, followed by prerequisites and a benefit. It uses three concise sentences without unnecessary fluff, making it efficient. However, it could be slightly more structured by explicitly separating usage guidelines from the purpose, preventing a perfect score.

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 moderate complexity (2 parameters, no output schema, no annotations), the description is adequate but has clear gaps. It covers the purpose and prerequisites but lacks details on output format, error cases, or how it interacts with sibling tools. Without an output schema, the description should ideally explain return values, which it doesn't, making it minimally viable but 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 has 100% description coverage, providing clear details for both parameters ('file' and 'listType'). The description adds minimal value beyond the schema, only implying the parameter usage in the opening sentence. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't significantly enhance parameter understanding.

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's purpose: 'List available modules in the project or imports in a specific file.' It specifies the verb ('List') and resources ('modules' or 'imports'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'getImports' or 'getModuleName', which offer similar functionality, keeping it from a perfect score.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: 'PREREQUISITES: IDE server running and modules loaded.' It also implies usage based on the 'listType' parameter (e.g., 'availableModules' vs. 'import'), but it doesn't explicitly state when to choose this tool over alternatives like 'getImports' or 'getModuleName', or specify exclusions, so it's not a full 5.

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

pursIdeLoadA

Load PureScript modules into the IDE server for type checking and completions. PREREQUISITE: IDE server must be running. ALWAYS run this first after starting the IDE server before using other pursIde* tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
modulesNoOptional: specific modules to load. If omitted, attempts to load all compiled modules.

TDQS

A4.4/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. It discloses key behavioral traits: it's a prerequisite action that enables other tools, implying it's a setup/initialization step. However, it doesn't mention potential side effects (e.g., loading time, memory usage), error handling, or what happens if modules fail to load. For a tool with no annotations, this is adequate but lacks depth.

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 front-loaded with the core purpose, followed by prerequisite and usage guidance in clear, imperative sentences. Every sentence earns its place: the first explains what it does, the second states prerequisites, and the third gives timing instructions. No wasted words.

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 complexity (initialization step for an IDE server), no annotations, and no output schema, the description is fairly complete. It covers purpose, prerequisites, and usage sequence, which are critical for an agent. However, it lacks details on expected outcomes (e.g., success indicators) or error cases, leaving some gaps.

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 input schema has 100% description coverage, so the baseline is 3. The description adds value by explaining the tool's purpose and prerequisites, which helps contextualize the 'modules' parameter (e.g., why loading modules is needed). However, it doesn't provide additional semantic details about the parameter beyond what the schema says (e.g., module naming conventions).

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

Purpose5/5

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

The description clearly states the specific action ('Load PureScript modules into the IDE server') and the purpose ('for type checking and completions'), distinguishing it from siblings like 'pursIdeList' (which likely lists modules) or 'pursIdeType' (which likely checks types). It uses precise verbs and resources.

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

Usage Guidelines5/5

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

It provides explicit usage instructions: 'PREREQUISITE: IDE server must be running' and 'ALWAYS run this first after starting the IDE server before using other pursIde* tools.' This clearly indicates when to use it (after server start, before other IDE tools) and distinguishes it from alternatives like 'start_purs_ide_server' (which starts the server).

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

pursIdeQuitA

Gracefully shut down the IDE server and free up resources. PREREQUISITE: IDE server must be running. Same effect as stop_purs_ide_server but uses the server's built-in quit command first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/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 effectively describes the tool's behavior ('Gracefully shut down... and free up resources'), prerequisite condition, and how it differs from an alternative tool. However, it doesn't mention potential side effects like whether unsaved work might be lost or if there's a confirmation step, leaving some behavioral aspects unclear.

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 perfectly concise with two sentences that each earn their place: the first states the core action and resource, the second provides prerequisite and sibling comparison. There's no wasted language, and information is front-loaded effectively.

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 this is a shutdown tool with 0 parameters and no annotations or output schema, the description provides good contextual completeness by explaining the action, prerequisite, and sibling relationship. However, it doesn't mention what happens after shutdown (e.g., confirmation message, error handling), which would make it more complete for a server control tool.

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 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, maintaining focus on the tool's core functionality without unnecessary details.

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 tool's purpose with a specific verb ('Gracefully shut down') and resource ('the IDE server'), and explicitly distinguishes it from its sibling tool 'stop_purs_ide_server' by noting it uses the server's built-in quit command first. This provides clear differentiation and avoids tautology.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('PREREQUISITE: IDE server must be running') and provides a direct alternative ('Same effect as stop_purs_ide_server but uses the server's built-in quit command first'), giving clear guidance on when to choose this tool over its sibling.

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

pursIdeRebuildA

Quickly recompile a single PureScript module and check for errors. PREREQUISITES: IDE server running and modules loaded. Much faster than full project rebuild. Use when editing code to get immediate feedback.

ParametersJSON Schema
NameRequiredDescriptionDefault
actualFileNoOptional: Real path if 'file' is 'data:' or a temp file.
codegenNoOptional: Codegen targets (e.g., 'js', 'corefn'). Defaults to ['js'].
fileYesPath to the module to rebuild, or 'data:' prefixed source code.

TDQS

A4.2/5.0
Behavior3/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 effectively describes the tool's purpose and speed advantage, but lacks details on error handling, output format, or potential side effects (e.g., whether it modifies files or only reports errors). The mention of prerequisites adds some context, but more behavioral traits would enhance transparency.

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

Conciseness5/5

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

The description is efficiently structured with three sentences: the first states the core purpose, the second lists prerequisites, and the third provides usage context and comparison. Every sentence adds value without redundancy, making it front-loaded and appropriately sized for the tool's complexity.

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 moderate complexity (3 parameters, no output schema, no annotations), the description is mostly complete. It covers purpose, prerequisites, and usage context well, but lacks details on return values or error behavior. Since there's no output schema, some additional information about what the tool returns would improve completeness, though the current description is sufficient for basic understanding.

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%, providing complete parameter documentation. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain 'data:' format details or codegen options further). This meets the baseline score of 3 since the schema adequately covers parameter meanings.

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

Purpose5/5

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

The description clearly states the specific action ('recompile a single PureScript module and check for errors'), identifies the resource ('PureScript module'), and distinguishes it from sibling tools by emphasizing speed ('Much faster than full project rebuild') and context ('when editing code to get immediate feedback'). This provides precise differentiation from tools like 'pursIdeLoad' or 'start_purs_ide_server'.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Use when editing code to get immediate feedback'), provides prerequisites ('IDE server running and modules loaded'), and contrasts it with alternatives ('Much faster than full project rebuild'), giving clear guidance on its appropriate context versus other rebuild or IDE operations.

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

pursIdeResetA

Clear all loaded modules from the IDE server's memory. PREREQUISITE: IDE server must be running. Use when switching projects or after major code changes. You'll need to run pursIdeLoad again after this.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/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 effectively describes the destructive nature ('Clear all loaded modules'), the prerequisite state ('IDE server must be running'), and the post-action requirement ('run pursIdeLoad again'). However, it doesn't mention potential side effects like loss of unsaved state or performance impact, which could be relevant for a memory-clearing operation.

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

Conciseness5/5

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

The description is perfectly front-loaded with the core purpose in the first sentence, followed by prerequisite and usage guidance. Every sentence adds essential information with zero waste, making it highly efficient and well-structured for an AI agent.

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 0-parameter tool with no annotations and no output schema, the description provides excellent context about purpose, prerequisites, usage timing, and follow-up actions. The only minor gap is the lack of explicit mention about what 'clearing memory' entails operationally (e.g., whether it affects server stability or requires reinitialization), but overall it's highly complete for its complexity level.

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 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on contextual information about when and how to use the tool.

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

Purpose5/5

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

The description clearly states the specific action ('Clear all loaded modules') and the target resource ('IDE server's memory'), distinguishing it from siblings like pursIdeLoad (loads modules) or pursIdeList (lists modules). It uses precise language that leaves no ambiguity about 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 Guidelines5/5

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

The description explicitly provides when to use ('when switching projects or after major code changes'), prerequisites ('IDE server must be running'), and a named alternative action ('You'll need to run pursIdeLoad again after this'). This gives comprehensive guidance on context and sequencing.

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

pursIdeTypeA

Look up the type signature of functions, variables, or values in PureScript code. PREREQUISITES: IDE server running and modules loaded. Helpful for understanding what a function expects and returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
currentModuleNoOptional: Current module context.
filtersNoOptional: Array of Filter objects.
searchYesIdentifier name to search for.

TDQS

A3.7/5.0
Behavior3/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 useful context about prerequisites (IDE server running) and the tool's value (understanding function expectations/returns), but doesn't describe behavioral traits like error handling, performance characteristics, or what happens when the search fails. The description doesn't contradict any annotations since none exist.

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 efficiently structured in two sentences: the first states the core purpose, the second provides prerequisites and value. Every element earns its place with no redundant information, making it appropriately sized and front-loaded.

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 read-only lookup tool with 3 parameters, 100% schema coverage, and no output schema, the description is adequate but has gaps. It covers purpose and prerequisites well, but doesn't address what the tool returns (type signatures in what format?) or how it behaves with partial matches. Given the complexity and lack of output schema, more detail about return values would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain how 'search' interacts with 'currentModule' or what 'filters' objects contain). This meets the baseline expectation when schema coverage is high.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Look up the type signature of functions, variables, or values in PureScript code.' It specifies the verb ('look up'), resource ('type signature'), and target ('functions, variables, or values'), but doesn't explicitly differentiate from sibling tools like 'getFunctionNames' or 'getTopLevelDeclarations' that might retrieve different information about PureScript code.

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

Usage Guidelines4/5

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

The description provides clear context with prerequisites ('IDE server running and modules loaded') and a usage scenario ('Helpful for understanding what a function expects and returns'). However, it doesn't explicitly state when to use this tool versus alternatives like 'getFunctionNames' or 'getTopLevelDeclarations', which could help with sibling differentiation.

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

pursIdeUsagesA

Find everywhere a specific function, type, or value is used across the project. PREREQUISITES: IDE server running and modules loaded. Essential for refactoring - shows impact of changes. If you plan to refactor, get usages before refactoring so you can make changes to all places that function is used.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesThe identifier to find usages for.
moduleYesModule where the identifier is defined.
namespaceYesNamespace of the identifier.

TDQS

A4.2/5.0
Behavior3/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 effectively indicates this is a read-only analysis tool ('Find everywhere... is used') and adds useful context about prerequisites and refactoring workflow. However, it lacks details on output format, error handling, or performance characteristics that would enhance transparency.

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

Conciseness5/5

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

The description is efficiently structured with three sentences that each serve distinct purposes: stating the core functionality, listing prerequisites, and providing usage guidance. There's no wasted text, and the information is front-loaded with the main purpose immediately clear.

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 tool with no annotations and no output schema, the description does well in covering purpose, prerequisites, and usage context. It could be more complete by describing the return format or what constitutes a 'usage' result, but given the schema's thorough parameter documentation and the clear behavioral context provided, it's largely adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score. It doesn't compensate but doesn't need to given the comprehensive schema coverage.

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 tool's purpose with a specific verb ('Find') and resource ('usages of a specific function, type, or value across the project'). It distinguishes itself from siblings like 'getFunctionNames' or 'getTopLevelDeclarations' by focusing on cross-project usage analysis rather than listing or querying definitions.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Essential for refactoring - shows impact of changes') and when to invoke it ('If you plan to refactor, get usages before refactoring'). It also mentions prerequisites ('IDE server running and modules loaded'), offering clear context for proper usage.

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

start_purs_ide_serverA

Start the PureScript IDE server for type checking, auto-completion, and error detection. Automatically stops any existing server to prevent conflicts. Only run one at a time. Required for all pursIde* tools to work. Automatically selects a random available port to avoid conflicts - the port number is returned in the response. Only accepts absolute paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
log_levelNonone
output_directoryNooutput/
project_pathYesAbsolute path to the PureScript project directory. Only absolute paths are supported.
source_globsNo

TDQS

A4.6/5.0
Behavior4/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 effectively describes several important behaviors: the automatic stopping of existing servers, the single-instance constraint, the random port selection with return value, and the absolute path requirement. It doesn't mention error handling, timeouts, or resource consumption, but covers the most critical operational aspects.

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 efficiently structured with five concise sentences, each delivering essential information. It's front-loaded with the primary purpose, followed by operational constraints, prerequisites, port behavior, and path requirements. There's no redundant or unnecessary content - every sentence earns its place.

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 server initialization tool with no annotations and no output schema, the description provides strong coverage of the critical behaviors and constraints. It explains the prerequisite relationship with other tools, the singleton nature of the server, the automatic conflict resolution, and the port selection behavior. The main gap is the lack of information about what the response contains beyond the port number.

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?

With only 25% schema description coverage (only 'project_path' has a description), the description compensates by emphasizing the absolute path requirement for the critical 'project_path' parameter. While it doesn't detail the other three parameters, it establishes the core constraint that applies to the most important required parameter, adding meaningful context beyond the sparse schema documentation.

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

Purpose5/5

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

The description clearly states the specific action ('Start the PureScript IDE server') and its primary functions ('type checking, auto-completion, and error detection'). It distinguishes this tool from its sibling 'stop_purs_ide_server' by being the complementary start operation, and from other pursIde* tools by being the prerequisite server initialization.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: 'Required for all pursIde* tools to work' establishes it as a prerequisite. It also specifies when-not scenarios: 'Only run one at a time' and 'Automatically stops any existing server to prevent conflicts' tells the agent to avoid redundant invocations. The context of sibling tools reinforces this positioning.

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

stop_purs_ide_serverA

Stop the PureScript IDE server to free up system resources. Use when you're done with type checking or want to switch projects. All pursIde* tools will stop working after this.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/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 effectively communicates that this is a destructive action (server stops, other tools become unavailable) and implies it's a system resource management operation. However, it doesn't mention potential side effects like unsaved state loss or restart procedures.

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 perfectly concise with three tightly focused sentences: purpose statement, usage guidance, and consequence disclosure. Every sentence earns its place with no wasted words, and the information is front-loaded with the core action.

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 tool with no annotations or output schema, the description provides excellent context about purpose, usage scenarios, and consequences. It could potentially mention restart procedures or confirmatory feedback, but covers the essential information needed for safe invocation.

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 with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, maintaining focus on the tool's purpose and usage context.

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

Purpose5/5

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

The description clearly states the specific action ('Stop') and target resource ('PureScript IDE server'), distinguishing it from siblings like 'start_purs_ide_server' and 'get_server_status'. It explicitly mentions the purpose of freeing system resources, which adds meaningful context beyond just the tool name.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('when you're done with type checking or want to switch projects') and clearly states the consequences ('All pursIde* tools will stop working after this'), helping the agent understand the trade-offs and when alternatives might be appropriate.

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

Tool Schema Changelog

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

  1. 19 tool updatesv1.0.0
    • First observedecho
    • First observedgenerate_dependency_graph
    • First observedget_server_status
    • First observedgetFunctionNames
    • First observedgetImports
    • First observedgetModuleName
    • First observedgetTopLevelDeclarationNames
    • First observedgetTopLevelDeclarations
    • First observedgetWhereBindings
    • First observedpursIdeCwd
    • First observedpursIdeList
    • First observedpursIdeLoad
    • First observedpursIdeQuit
    • First observedpursIdeRebuild
    • First observedpursIdeReset
    • First observedpursIdeType
    • First observedpursIdeUsages
    • First observedstart_purs_ide_server
    • First observedstop_purs_ide_server

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between getTopLevelDeclarationNames and getTopLevelDeclarations, where the latter is a more detailed version of the former, which could cause confusion. Other tools like getFunctionNames and getTopLevelDeclarationNames also have overlapping scopes, but descriptions help clarify differences.

Naming Consistency2/5

Naming is inconsistent with mixed conventions: snake_case (e.g., get_server_status, start_purs_ide_server), camelCase (e.g., getFunctionNames, pursIdeCwd), and verb_noun patterns vary (e.g., generate_dependency_graph vs. pursIdeList). This lack of a predictable pattern makes the tool set harder to navigate.

Tool Count3/5

With 19 tools, the count is borderline high for a PureScript server, leaning towards heavy but not extreme. It covers both IDE server management and code analysis, which justifies some bulk, but it could be streamlined for better coherence.

Completeness5/5

The tool set provides comprehensive coverage for PureScript development, including IDE server lifecycle management (start, stop, status), code analysis (dependencies, imports, types, usages), and module operations (load, rebuild, reset). No obvious gaps exist for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • A Model Context Protocol server for Wix AI tools

  • The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.

  • The Telnyx MCP server is an official implementation of the Model Context Protocol that enables AI clients (like Claude Desktop, Cursor, and OpenAI Agents) to interact with Telnyx's telephony, messaging, and AI assistant APIs. It provides comprehensive capabilities including making and managing phone calls, sending SMS/MMS messages, purchasing and configuring phone numbers, creating AI assistants with custom instructions, managing cloud storage buckets, scraping and embedding website content, and handling integration secrets. The server exists as both a local implementation and a remotely hosted version, allowing developers to integrate real-world communication infrastructure directly into AI applications.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A TypeScript implementation of a Model Context Protocol server that provides a frictionless framework for developers to build and deploy AI tools and prompts, focusing on developer experience with zero boilerplate and automatic tool registration.
    2,013
    14
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that helps AI code editors locate TypeScript symbol definitions in codebases, particularly useful for finding original definitions of imported symbols and classes.
    1
    16
    -
  • A
    license
    B
    quality
    D
    maintenance
    A TypeScript-based Model Context Protocol server that enables AI assistants to perform secure database operations on PostgreSQL databases through structured tool interfaces.
    8
    30
    MIT

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/avi892nash/purescript-mcp-tools'

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