Skip to main content
Glama

Midnight + Next.js Development MCP Server

A Model Context Protocol (MCP) server combining Midnight Network blockchain development tools with Next.js DevTools for building decentralized applications.

Compatible with all MCP-enabled AI assistants: Claude, GitHub Copilot, Cursor, Windsurf, Codeium, Continue.dev, Zed, Sourcegraph Cody, and more.

๐Ÿค– Supported AI Assistants

This MCP server works with any AI assistant that supports the Model Context Protocol:

AI Assistant

Platform

Configuration

Claude

Desktop App, VS Code

Native MCP support

GitHub Copilot

VS Code, JetBrains

MCP extension

Cursor

IDE

Built-in MCP support

Windsurf

IDE

Built-in MCP support

Codeium

VS Code, JetBrains

MCP integration

Continue.dev

VS Code, JetBrains

MCP config file

Zed

IDE

MCP support

Sourcegraph Cody

VS Code

MCP extension

Related MCP server: Next.js MCP Server

๐ŸŒ™ Features

Midnight Network Tools

Contract Development

  • midnight_init - Initialize development context

  • midnight_compile_contract - Compile Compact contracts to TypeScript/ZK artifacts

  • midnight_analyze_contract - Static analysis for contracts

  • midnight_deploy_contract - Deploy contracts to the network

  • midnight_call_contract - Execute circuit calls on deployed contracts

  • midnight_scaffold_project - Create new dApp projects from templates

Wallet & Tokens

  • midnight_create_wallet - Generate new wallet with seed phrase

  • midnight_wallet_state - Get detailed wallet state and balances

  • midnight_transfer_tokens - Transfer tDUST tokens

  • midnight_get_balance - Query token balances

Network & Queries

  • midnight_network_status - Check network health (Indexer, Proof Server, Node)

  • midnight_get_block - Query blockchain blocks

  • midnight_get_transaction - Query transaction details

  • midnight_check_versions - Check for Midnight package updates

Documentation

  • midnight_search_docs - Search Midnight documentation

  • midnight-fetch-docs - Fetch specific documentation pages

  • midnight-sync-docs - Sync documentation from official repo

  • midnight-docs-status - Check documentation sync status

  • midnight-list-docs - List available documentation sources

Next.js DevTools

  • init - Initialize Next.js development context

  • nextjs_docs - Search Next.js documentation

  • nextjs_index - Discover running dev servers

  • nextjs_call - Execute runtime diagnostic tools

  • browser_eval - Browser automation with Playwright

  • upgrade_nextjs_16 - Next.js 16 upgrade guide

  • enable_cache_components - Cache Components migration

๐Ÿ“ฆ Installation

# Clone the repository
git clone https://github.com/your-username/midnight-nextjs-mcp.git
cd midnight-nextjs-mcp

# Install dependencies
pnpm install

# Build
pnpm build

๐Ÿš€ Usage

Quick Start with npx

The easiest way to use this MCP server is via npx โ€” no installation required:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Configuration Examples

The MCP configuration format is standardized across most AI assistants. Below are platform-specific examples:


Universal MCP Configuration

Most MCP clients use this standard JSON format. Add to your client's MCP configuration file:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

VS Code (GitHub Copilot / Claude Extension)

Add to your VS Code settings.json or workspace .vscode/mcp.json:

{
  "mcp.servers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Or for Claude extension specifically:

{
  "claude.mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Claude Desktop (macOS)

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Claude Desktop (Windows)

Edit %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Claude Desktop (Linux)

Edit ~/.config/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Cursor IDE

Add to your Cursor MCP configuration (.cursor/mcp.json in your project or global settings):

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Windsurf / Codeium

Add to your Windsurf MCP settings:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Continue.dev (VS Code / JetBrains)

Add to ~/.continue/config.json or your project's .continue/config.json:

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "name": "midnight-nextjs-mcp",
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": ["-y", "midnight-nextjs-mcp@latest"]
        }
      }
    ]
  }
}

Zed Editor

Add to your Zed settings (~/.config/zed/settings.json on Linux, ~/Library/Application Support/Zed/settings.json on macOS):

{
  "context_servers": {
    "midnight-nextjs-mcp": {
      "command": {
        "path": "npx",
        "args": ["-y", "midnight-nextjs-mcp@latest"]
      }
    }
  }
}

Sourcegraph Cody

Add to your Cody MCP configuration:

{
  "cody.experimental.mcp.servers": {
    "midnight-nextjs-mcp": {
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

JetBrains IDEs (IntelliJ, WebStorm, etc.)

For AI assistants in JetBrains IDEs that support MCP, add to your MCP configuration:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"]
    }
  }
}

Using Global Installation

If you prefer a global install instead of npx:

npm install -g midnight-nextjs-mcp

Then configure:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "midnight-nextjs-mcp"
    }
  }
}

Local Development / From Source

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/midnight-nextjs-mcp/dist/index.js"]
    }
  }
}

Docker

Run the MCP server in a Docker container:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "fractionestate/midnight-nextjs-mcp:latest"]
    }
  }
}

CLI Flags

# Enable both tool categories (default)
npx midnight-nextjs-mcp@latest

# Disable Midnight tools (Next.js only)
npx midnight-nextjs-mcp@latest --no-midnight

# Disable Next.js tools (Midnight only)
npx midnight-nextjs-mcp@latest --no-nextjs

# Check package versions on startup
npx midnight-nextjs-mcp@latest --check-versions

# Set version polling interval (default 24 hours)
npx midnight-nextjs-mcp@latest --poll-interval=12

๐Ÿ—๏ธ Project Structure

midnight-nextjs-mcp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts                    # Server entry point
โ”‚   โ”œโ”€โ”€ tools/
โ”‚   โ”‚   โ”œโ”€โ”€ index.ts                # Unified tool registry
โ”‚   โ”‚   โ”œโ”€โ”€ midnight/               # Midnight Network tools
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ init.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ network-status.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ get-balance.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ get-block.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ get-transaction.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ search-docs.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ scaffold-project.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ compile-contract.ts
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ analyze-contract.ts
โ”‚   โ”‚   โ””โ”€โ”€ nextjs/                 # Next.js DevTools
โ”‚   โ”‚       โ”œโ”€โ”€ init.ts
โ”‚   โ”‚       โ”œโ”€โ”€ nextjs-docs.ts
โ”‚   โ”‚       โ”œโ”€โ”€ nextjs_index.ts
โ”‚   โ”‚       โ”œโ”€โ”€ nextjs_call.ts
โ”‚   โ”‚       โ”œโ”€โ”€ browser-eval.ts
โ”‚   โ”‚       โ”œโ”€โ”€ upgrade-nextjs-16.ts
โ”‚   โ”‚       โ””โ”€โ”€ enable-cache-components.ts
โ”‚   โ”œโ”€โ”€ providers/                  # Midnight API providers
โ”‚   โ”‚   โ”œโ”€โ”€ index.ts
โ”‚   โ”‚   โ”œโ”€โ”€ indexer.ts              # GraphQL indexer client
โ”‚   โ”‚   โ”œโ”€โ”€ proof-server.ts         # Proof generation client
โ”‚   โ”‚   โ””โ”€โ”€ node.ts                 # Node RPC client
โ”‚   โ”œโ”€โ”€ resources/                  # MCP resources
โ”‚   โ”‚   โ”œโ”€โ”€ (midnight-compact)/     # Compact language docs
โ”‚   โ”‚   โ”œโ”€โ”€ (midnight-sdk)/         # SDK documentation
โ”‚   โ”‚   โ”œโ”€โ”€ (cache-components)/     # Next.js cache docs
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ prompts/                    # MCP prompts
โ”‚   โ”‚   โ”œโ”€โ”€ create-midnight-contract.ts
โ”‚   โ”‚   โ”œโ”€โ”€ upgrade-nextjs-16.ts
โ”‚   โ”‚   โ””โ”€โ”€ enable-cache-components.ts
โ”‚   โ””โ”€โ”€ types/                      # TypeScript definitions
โ”‚       โ”œโ”€โ”€ midnight.ts
โ”‚       โ””โ”€โ”€ mcp.ts
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ README.md

๐Ÿ”ง Configuration

Environment Variables

You can pass environment variables to the MCP server in your configuration:

{
  "mcpServers": {
    "midnight-nextjs-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "midnight-nextjs-mcp@latest"],
      "env": {
        "MIDNIGHT_NETWORK": "testnet",
        "MIDNIGHT_INDEXER_URL": "https://indexer.testnet.midnight.network/graphql"
      }
    }
  }
}

Available Environment Variables

# Midnight Network (optional, defaults to testnet)
MIDNIGHT_NETWORK=testnet
MIDNIGHT_INDEXER_URL=https://indexer.testnet.midnight.network/graphql
MIDNIGHT_PROOF_SERVER_URL=https://proof-server.testnet.midnight.network
MIDNIGHT_NODE_URL=https://rpc.testnet.midnight.network

Network Configurations

Network

Indexer

Proof Server

Testnet

indexer.testnet.midnight.network

proof-server.testnet.midnight.network

Devnet

localhost:8080

localhost:6300

๐Ÿ“š Resources

The server exposes documentation resources:

Midnight Resources

  • midnight://compact/overview - Compact language introduction

  • midnight://compact/reference - Complete syntax reference

  • midnight://sdk/overview - Midnight.js SDK guide

Next.js Resources

  • nextjs-docs://llms-index - Documentation index

  • cache-components://overview - Cache Components guide

๐Ÿงช Development

# Watch mode
pnpm dev

# Type check
pnpm typecheck

# Run tests
pnpm test

# Build
pnpm build

๐Ÿ“– Documentation

Client-Specific MCP Documentation

๐Ÿค Contributing

Contributions welcome! Please read the contributing guidelines first.

๐Ÿ“„ License

MIT License - see LICENSE for details.


Built with โค๏ธ for the Midnight and Next.js communities.

Available Tools

35 tools
browser_evalA

Automate and test web applications using Playwright browser automation. This tool connects to playwright-mcp server and provides access to all Playwright capabilities.

CRITICAL FOR PAGE VERIFICATION: When verifying pages in Next.js projects (especially during upgrades or testing), you MUST use browser automation to load pages in a real browser instead of curl or simple HTTP requests. This is because:

  • Browser automation actually renders the page and executes JavaScript (curl only fetches HTML)

  • Detects runtime errors, hydration issues, and client-side problems that curl cannot catch

  • Verifies the full user experience, not just HTTP status codes

  • Captures browser console errors and warnings via console_messages action

IMPORTANT FOR NEXT.JS PROJECTS: If working with a Next.js application, PRIORITIZE using the 'nextjs_index' and 'nextjs_call' tools instead of browser console log forwarding. Next.js has built-in MCP integration that provides superior error reporting, build diagnostics, and runtime information directly from the Next.js dev server. Only use browser_eval's console_messages action as a fallback when these Next.js tools are not available or when you specifically need to test client-side browser behavior that Next.js runtime cannot capture.

Available actions:

  • start: Start browser automation (automatically installs if needed). Verbose logging is always enabled.

  • navigate: Navigate to a URL

  • click: Click on an element

  • type: Type text into an element

  • fill_form: Fill multiple form fields at once

  • evaluate: Execute JavaScript in browser context

  • screenshot: Take a screenshot of the page

  • console_messages: Get browser console messages (for Next.js, prefer nextjs_index/nextjs_call tools instead)

  • close: Close the browser

  • drag: Perform drag and drop

  • upload_file: Upload files

  • list_tools: List all available browser automation tools from the server

Note: The playwright-mcp server will be automatically installed if not present.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoThe action to perform using browser automation
browserNo
headlessNo
urlNo
elementNo
refNo
doubleClickNo
buttonNo
modifiersNo
textNo
fieldsNo
scriptNo
fullPageNo
errorsOnlyNo
startElementNo
startRefNo
endElementNo
endRefNo
filesNo

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 auto-installation, verbose logging, and that the tool renders JavaScript. However, it fails to mention that actions like click, type, and upload_file can modify application state (destructive nature), which 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.

Conciseness3/5

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

The description is well-structured with bold headings, but it is longer than necessary, especially the Next.js sections which repeat similar points. The list of actions is redundant with the input schema enum.

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 complexity (19 parameters, no output schema), the description covers overall purpose and usage but lacks details on return values for each action, error handling, or expected outputs like screenshot URLs or navigation results.

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

Parameters2/5

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

With only 5% schema description coverage and 19 parameters, the description does not explain individual parameters beyond listing actions. It does not map actions to required parameters or clarify how parameters like 'element', 'ref', or 'fields' are used for specific actions.

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 automates and tests web applications using Playwright, with a specific verb and resource. It distinguishes from sibling tools like nextjs_call by advising when to prefer them for Next.js console logging.

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 this tool (page verification over curl) and when not to (prefer nextjs_index/nextjs_call for console logging). It names alternative tools and gives context for Next.js projects.

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

disable_toolsetA

Disable a toolset that was previously enabled. The tools in this toolset will no longer be available.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsetNoThe name of the toolset to disable

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It states the core effect (tools unavailable) but does not disclose any side effects, permissions required, reversibility, or impact on other toolsets. Minimal behavioral context provided.

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 with no fluff. It front-loads the action and immediately explains the consequence. Every sentence is necessary and efficiently written.

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 tool with one parameter, the description provides the essential information. However, given the lack of annotations, the description could benefit from mentioning prerequisites (e.g., the toolset must exist and be enabled) and any output or confirmation. It is adequate 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?

The schema covers the parameter with a description ('The name of the toolset to disable'), and the tool description does not add additional meaning beyond what is already in the schema. Baseline 3 is appropriate since schema coverage is 100%.

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 disables a toolset that was previously enabled, and explains the consequence (tools no longer available). This distinguishes it from the sibling 'enable_toolset' and is specific about the action and resource.

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 context (only for previously enabled toolsets) but does not explicitly state when to use or when not to use, nor does it mention alternatives like enable_toolset. Some guidance is present but not thorough.

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

enable_cache_componentsB

Migrate Next.js applications to Cache Components mode and complete setup for Next.js 16.

Use this tool when you need to:

  • Migrate to Cache Components mode

  • Migrate to cache components

  • Enable Cache Components

  • Set up Cache Components

  • Convert to Cache Components

This tool handles ALL steps for migrating and enabling Cache Components:

  • Configuration: Updates cacheComponents flag (experimental in 16.0.0, stable in canary > 16), removes incompatible flags

  • Dev Server: Starts dev server (MCP is enabled by default in Next.js 16+)

  • Error Detection: Loads all routes via browser automation, collects errors using Next.js MCP

  • Automated Fixing: Adds Suspense boundaries, "use cache" directives, generateStaticParams, cacheLife profiles, cache tags

  • Verification: Validates all routes work with zero errors

Key Features:

  • One-time dev server start (no restarts needed)

  • Automated error detection using Next.js MCP tools

  • Browser-based testing with browser automation

  • Fast Refresh applies fixes instantly

  • Comprehensive fix strategies for all error types

  • Support for "use cache", "use cache: private", Suspense boundaries

  • Cache invalidation with cacheTag() and cacheLife() configuration

Requires:

  • Next.js 16.0.0+ (stable or canary only - beta versions are NOT supported)

  • Clean working directory preferred

  • Browser automation installed (auto-installed if needed)

This tool embeds complete knowledge base for:

  • Cache Components mechanics

  • Error patterns and solutions

  • Caching strategies (static vs dynamic)

  • Advanced patterns (cacheLife, cacheTag, draft mode)

  • Build behavior and prefetching

  • Test-driven patterns from 125+ fixtures

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNo

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose all behavioral traits. It describes actions (configuration changes, dev server start, automated fixing) that imply file modifications but does not explicitly state side effects, reversibility, or safety concerns. This is adequate but incomplete.

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

Conciseness3/5

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

The description is front-loaded with purpose but contains redundant phrases (e.g., two nearly identical 'Migrate to Cache Components' lines) and a long features list that partly restates steps. It is adequately organized but not optimally concise.

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

Completeness2/5

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

Given one parameter and no output schema, the description should explain the parameter and result. It fails to document the parameter and does not describe the return value or success state, leaving significant gaps.

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

Parameters1/5

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

The description does not explain the sole parameter 'project_path'. With 0% schema description coverage, the parameter is entirely undocumented, leaving the agent unable to determine what value to provide.

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 migrates Next.js apps to Cache Components mode for Next.js 16, a specific verb+resource. However, it does not explicitly distinguish from siblings like upgrade_nextjs_16, lacking differentiation.

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 lists explicit use cases ('when you need to: ...'), providing clear context. However, it omits when not to use the tool and does not mention alternatives, 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.

enable_toolsetA

Enable one of the sets of tools the MCP server provides. Use get_toolset_tools and list_available_toolsets first to see what this will enable.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsetNoThe name of the toolset to enable

TDQS

A3.9/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits. It only states the action 'enable' and the prerequisite, but omits details on side effects, reversibility, permissions, or what changes occur (e.g., new tools appear, session impact). This leaves significant ambiguity.

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: the first states the purpose, the second provides usage guidance. It is front-loaded and contains no unnecessary words, earning 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 simple tool with one parameter and no output schema, the description covers purpose and prerequisite. However, it lacks details on what enabling entails (e.g., persistence, session scope, return value), making it marginally complete but not fully informative.

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 covers the parameter with a description. The tool description adds value by referencing get_toolset_tools and list_available_toolsets, guiding users on where to find valid toolset names. This cross-reference enhances the semantic meaning beyond the schema.

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 enables a toolset, using the verb 'enable' and the resource 'one of the sets of tools'. It also mentions prerequisite tools (get_toolset_tools, list_available_toolsets), which distinguishes it from related tools like disable_toolset.

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 explicitly instructs users to first use get_toolset_tools and list_available_toolsets, providing clear context for when to use this tool. However, it does not mention when not to use it or alternative tools beyond the implied disable_toolset.

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

get_environment_infoA

Get information about the runtime environment including Node.js version, platform, and system resources.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

No annotations provided, so description carries burden. Lists return content (Node.js version, platform, system resources) implying read-only behavior, but does not explicitly state safety or lack of side effects. Adequate for a simple info 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?

Single sentence, front-loaded with verb and resource, no fluff. Every word earns its place.

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

Completeness2/5

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

No output schema, but description only gives vague list of data types (Node.js version, platform, system resources). Lacks structure, format, or specific field names. Agent may not know how to parse response.

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?

No parameters; schema coverage is 100%. With zero parameters, description needs no param info, meriting a baseline of 4.

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?

Clearly states the tool retrieves runtime environment info including Node.js version, platform, and system resources. Distinct from siblings like get_server_status and get_session_info.

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 vs alternatives like get_server_status or get_session_info. The description only states function without context.

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

get_server_statusA

Get the current server status including health, active connections, and resource usage. Use this to diagnose server issues.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description must carry full burden. It discloses return contents (health, connections, resource usage) but does not mention side effects, auth requirements, or rate limits. Implies read-only, but not explicit.

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

Conciseness5/5

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

Two sentences, front-loaded with action, 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?

No output schema, but description adequately covers return type. Could mention error states or format, but sufficient for a simple status 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?

No parameters in schema, so description need not add meaning. Baseline 4 for zero parameters 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?

Clearly states it gets server status including health, connections, and resource usage. Distinct from sibling tools like get_environment_info or get_session_info.

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?

Explicitly says 'use this to diagnose server issues', providing a clear use case. However, no guidance on when not to use or alternatives among sibling tools.

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

get_session_infoA

Get information about the current MCP session including server version, enabled toolsets, and environment. Use this to understand the current context.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description must carry the burden. It honestly describes a read-only operation returning session details. While it does not cover permissions or rate limits, the behavioral traits are sufficiently disclosed for a simple getter.

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 no redundant information. It front-loads the purpose and provides immediate value.

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 output schema, the description adequately lists what it returns (server version, enabled toolsets, environment). It is complete enough for the intended use, though it could mention data format or typical response structure.

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 schema coverage is 100%. Per guidelines, baseline is 4. The description adds no parameter-specific insight, which is acceptable given the absence of parameters.

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

Purpose4/5

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

The description uses a specific verb 'Get' and resource 'current MCP session', listing fields like server version, enabled toolsets, and environment. It is clear but does not fully distinguish from siblings like get_environment_info or get_server_status, which may return overlapping data.

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 advises 'Use this to understand the current context,' providing a straightforward usage hint. However, it lacks explicit guidance on when not to use it or alternatives, leaving room for ambiguity.

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

get_toolset_toolsA

Lists all the capabilities that are enabled with the specified toolset. Use this to get clarity on whether enabling a toolset would help you to complete a task.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsetNoThe name of the toolset you want to get the tools for

TDQS

A4/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 a read-only operation (listing capabilities) but does not mention any behavioral details such as auth requirements, rate limits, or return format. The description is adequate for a simple list 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 two short sentences, no wasted words, and the purpose is front-loaded. Every sentence adds value.

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 (1 parameter, no output schema), the description is fairly complete. It explains the purpose and usage. However, it could mention the return format (e.g., a list of tool names or objects) since no output schema is provided.

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% (1 parameter with a description). The description adds no new meaning beyond the schema; it simply restates 'enabled with the specified toolset.' Baseline 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 the action (lists capabilities/tools) and the resource (specified toolset). It distinguishes itself from sibling tools like list_available_toolsets, which lists toolsets, not tools within a toolset.

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 explicitly says when to use this tool: 'to get clarity on whether enabling a toolset would help you to complete a task.' It lacks explicit exclusions or alternative tools, but the usage context is clear.

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

initA

โš ๏ธ CALL THIS FIRST - Initialize Next.js DevTools MCP context and establish MANDATORY documentation requirements.

IMPORTANT: This tool MUST be called at the START of every Next.js development session.

This tool:

  • Establishes MANDATORY requirement to use nextjs_docs for ALL Next.js-related queries

  • Instructs AI to forget any prior Next.js knowledge and always query docs

  • Documents all available MCP tools (nextjs_docs, nextjs_index, nextjs_call, browser_eval, upgrade_nextjs_16, enable_cache_components)

Use this tool at the beginning of a Next.js session to:

  • Reset AI's Next.js knowledge baseline

  • Ensure 100% documentation-first approach with no exceptions

  • Understand available tools and their use cases

  • Follow best practices for Next.js development

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNo

TDQS

A3.6/5.0
Behavior4/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 that the tool resets AI's Next.js knowledge baseline, enforces a documentation-first approach, and documents available tools. It does not mention any side effects or destructive actions, but the described behaviors are non-destructive and well-explained.

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

Conciseness3/5

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

The description is fairly long and uses formatting (bold, emoji, bullet points) which aids readability. However, it is somewhat verbose and repeats the importance of calling it first. It is structured well but could be more concise.

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 simplicity of the tool (one optional param, no output schema), the description explains the overall purpose and usage well but fails to describe the single parameter. Without the parameter explanation, the description is incomplete for an AI to correctly invoke the tool with appropriate input.

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

Parameters1/5

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

The schema has one parameter (project_path) with 0% schema description coverage, and the description does not mention this parameter at all. It adds no meaning beyond what the schema provides (just a name and type). For a single-parameter tool, this is a significant gap.

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 init initializes the Next.js DevTools MCP context and establishes mandatory documentation requirements. It uses a strong verb ('Initialize') and specifies the resource ('Next.js DevTools MCP context'). The warning 'CALL THIS FIRST' distinguishes it from sibling tools that have different purposes.

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 explicitly instructs that this must be called at the start of every Next.js session and provides a list of what it does. It gives clear when-to-use guidance, though it doesn't explicitly mention when not to use or alternatives.

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

list_available_toolsetsA

List all available toolsets this MCP server can offer, providing the enabled status of each. Use this when a task could be achieved with a tool and the currently available tools aren't enough. Call get_toolset_tools with these toolset names to discover specific tools you can call.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool returns a list with enabled status, which is sufficient for a simple read operation. However, it does not mention potential edge cases like empty results or error handling, but given the simplicity, the transparency is high.

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 concise at three sentences, with the main purpose front-loaded. Every sentence adds value: purpose, when-to-use, and next step. No unnecessary information.

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

Completeness5/5

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

Given the tool has no parameters, no output schema, no annotations, and low complexity, the description is fully complete. It covers purpose, usage context, and follow-up action, leaving no ambiguity.

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 no parameters and schema coverage is 100%. With zero parameters, the description does not need to add parameter semantics. Baseline of 4 is appropriate as there is nothing to improve.

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 explicitly states the verb 'list' and the resource 'toolsets', and specifies that it returns 'the enabled status of each'. This clearly distinguishes it from sibling tools like 'get_toolset_tools' which drills down into a specific toolset.

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 clear when-to-use guidance: 'Use this when a task could be achieved with a tool and the currently available tools aren't enough.' It also suggests the next step: calling 'get_toolset_tools' to discover specific tools, giving the agent a logical workflow.

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

list_enabled_featuresA

List all currently enabled features and feature flags. Use this to understand what capabilities are available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/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 burden. It implies a read-only operation by saying 'list,' but it does not explicitly state it is non-destructive or safe. The description adds minimal behavioral context beyond the obvious.

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 short sentences with zero waste. Every sentence adds value: the first states the action and object, the second provides usage guidance.

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

Completeness5/5

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

Given no parameters and no output schema, the description fully covers what the tool does and when to use it. There are no missing details about scope or side effects.

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?

There are no parameters (0 params), so schema coverage is trivially 100%. The description does not need to add parameter details. Per guidelines, baseline for 0 params is 4.

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 verb 'list' and the resource 'enabled features and feature flags'. It distinguishes from sibling tools like list_available_toolsets by focusing on feature flags rather than toolsets.

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 explicitly says 'Use this to understand what capabilities are available,' which gives clear context. However, it does not mention when not to use it or compare to alternatives explicitly.

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

midnight_analyze_contractA

Perform static analysis on a Compact smart contract.

Analyzes:

  • Contract structure and patterns

  • Potential security issues

  • Gas/complexity estimates

  • Best practice violations

  • Privacy considerations

Use this tool to:

  • Review contracts before deployment

  • Identify potential issues

  • Learn Compact best practices

  • Optimize contract design

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoCompact contract source code to analyze
check_securityNo
check_gasNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It describes the tool as performing static analysis, implying no side effects, but does not explicitly confirm read-only behavior or disclose any constraints, rate limits, or required permissions.

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 moderately sized with a clear structure: a one-line purpose, a bulleted list of analysis areas, and a bulleted list of use cases. It is front-loaded but could be slightly more concise by removing redundancy.

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

Completeness2/5

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

For a complex static analysis tool with no output schema and low parameter coverage, the description lacks details on output format, result interpretation, and how parameters control analysis. It feels incomplete for an agent to invoke effectively.

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

Parameters2/5

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

Schema description coverage is only 33% (only 'source' has a description). The description lists analysis categories but does not explain how parameters like 'check_security' or 'check_gas' affect analysis, missing an opportunity to compensate for the low 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 performs static analysis on Compact smart contracts, listing specific analysis areas (structure, security, gas, best practices, privacy) and use cases, which distinguishes it from sibling tools like compile or call.

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 explicit use cases (review before deployment, identify issues, learn best practices, optimize design), which guides when to use. While it does not explicitly state when not to use or alternatives, the sibling context makes it clear.

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

midnight_call_contractA

Execute a circuit call on a deployed Midnight smart contract.

Circuit Types:

  • Public circuits: Read-only operations that don't modify state

  • Private circuits: Operations with private witnesses and ZK proofs

  • State-changing circuits: Modify ledger state (requires wallet)

Call Process:

  1. Load contract at specified address

  2. Prepare circuit arguments

  3. Generate ZK proof (if required)

  4. Submit transaction

  5. Return result or state changes

Privacy Features:

  • Private inputs are never revealed on-chain

  • ZK proofs validate computation without exposing data

  • Private state is stored locally with private_state_id

Example:

midnight_call_contract({
  contract_address: "0x123...",
  circuit_name: "transfer",
  arguments: {
    to: "0xabc...",
    amount: 100
  }
})
ParametersJSON Schema
NameRequiredDescriptionDefault
contract_addressNoAddress of the deployed contract
circuit_nameNoName of the circuit to call
argumentsNo
private_state_idNo
networkNoTarget network
wallet_seedNo
simulateNoSimulate the call without submitting transaction

TDQS

A4.4/5.0
Behavior4/5

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

Given no annotations, the description fully discloses the call process (load contract, prepare args, generate proof, submit), privacy features (private inputs hidden, ZK proofs), and that state-changing requires wallet. It also mentions simulation via the simulate parameter. However, it does not cover error handling, rate limits, or prerequisites like network connection.

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?

Concise and well-structured with bullet points for circuit types, numbered call process, privacy features, and a clear example. Every sentence adds value, no redundancy. Approximately 150 words, appropriate 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?

Covers purpose, circuit types, process, privacy, and example. Mentions return values (result or state changes). Lacks details on error scenarios, network-specific usage, or parameter constraints. With 7 params and no output schema, this is adequate but could be more complete (e.g., simulate behavior details).

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?

Adds meaning beyond schema by explaining circuit types and the rationale behind parameters like arguments and private_state_id. The example shows how to structure contract_address, circuit_name, and arguments. However, parameters private_state_id, wallet_seed, and simulate are only mentioned in schema without detailed description, and schema coverage is 57%.

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?

Clearly states 'Execute a circuit call on a deployed Midnight smart contract.' Distinguishes circuit types (public, private, state-changing) and implicitly differentiates from sibling tools like midnight_compile_contract or midnight_deploy_contract by focusing on calling an existing contract. The example reinforces the action.

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?

Provides explicit guidance on when to use each circuit type: public for read-only, private for private witnesses, state-changing for modifications (requires wallet). However, it does not explicitly exclude alternatives or state when not to use this tool (e.g., for deploying contracts). Clear context but no direct exclusions.

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

midnight_check_versionsA

Check for updates to @midnight-ntwrk npm packages.

Compares installed versions against the latest available on npm. Supports both stable and alpha/beta version tracking.

Use this tool to:

  • Check if dependencies are outdated

  • Find available updates for Midnight SDK

  • Get upgrade commands

  • Track alpha/beta releases for early testing

ParametersJSON Schema
NameRequiredDescriptionDefault
packagesNo
include_alphaNo
refreshNo
formatNo

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 must disclose behavior. It states it compares installed vs latest npm versions and supports alpha/beta tracking. However, it does not mention network calls, rate limits, or that it is read-only, which could be inferred but not explicit.

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

Conciseness4/5

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

The description is concise with about 6 sentences and a bullet list of use cases. It front-loads the main purpose. However, the bullet list contains some redundancy (e.g., 'Check if dependencies are outdated' is similar to the first sentence).

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 4 parameters, no output schema, and no annotations, the description provides moderate completeness. It explains the tool's overall function and use cases but lacks details on return values or how parameters affect behavior.

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

Parameters2/5

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

The input schema has 4 parameters with 0% schema description coverage. The description does not explain what each parameter does (e.g., packages, include_alpha, refresh, format). The use case list is generic and does not map to parameters.

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 checks for updates to @midnight-ntwrk npm packages, with specific verb and resource. It distinguishes itself from sibling tools that deal with contracts, wallets, and docs.

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 lists specific use cases such as checking outdated dependencies and finding updates. It implies when to use but does not explicitly exclude scenarios or name alternatives, though no alternatives exist among siblings.

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

midnight_compile_contractA

Compile a Compact smart contract to TypeScript bindings and ZK artifacts.

Generates:

  • TypeScript type definitions

  • Contract interaction code

  • Circuit metadata

  • ZK proving/verifying keys (references)

Use this tool to:

  • Compile Compact source code

  • Generate TypeScript bindings for SDK

  • Prepare contracts for deployment

Note: Full compilation requires the compactc compiler installed locally.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoCompact contract source code or file path
output_dirNo
contract_nameNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses generated output types and a prerequisite ('Requires the compactc compiler installed locally'). It does not mention side effects, but for a compilation tool, destructive actions are unlikely. The description adds useful context beyond what annotations would provide.

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

Conciseness3/5

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

The description is adequately sized but has some redundancy (e.g., repeating generated items in the bullet list). It front-loads the main action but could be more streamlined. Overall, it is functional with minimal fluff.

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 compilation complexity, the description covers key outputs and a prerequisite but omits details like error handling, overwrite behavior, and output file naming. For a tool with no output schema and minimal parameter descriptions, it is moderately complete but has gaps.

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

Parameters2/5

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

Schema coverage is only 33% (only source has a description). The description does not explain output_dir or contract_name beyond the implicit context of compilation. It adds some value by stating the overall process, but does not sufficiently detail parameter usage or constraints.

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: 'Compile a Compact smart contract to TypeScript bindings and ZK artifacts.' It lists specific generated outputs and distinguishes from sibling tools like midnight_deploy_contract and midnight_analyze_contract by focusing on compilation and binding generation.

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 explicitly lists use cases: 'Use this tool to: - Compile Compact source code - Generate TypeScript bindings for SDK - Prepare contracts for deployment.' It provides clear context but does not explicitly exclude cases or mention alternative tools for similar tasks.

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

midnight_create_walletA

Create a new Midnight wallet with a fresh seed phrase.

Security Warning:

  • The seed phrase will be displayed ONCE

  • Store it securely offline

  • Never share your seed phrase

  • Loss of seed phrase = loss of funds

Wallet Features:

  • Native tDUST balance management

  • Private and shielded transactions

  • Contract interaction support

  • Multiple address derivation

After Creation:

  1. Save your seed phrase securely

  2. Get testnet tDUST from the faucet

  3. Use wallet for contract deployment

Faucet: https://faucet.testnet.midnight.network

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNoTarget network for the wallet
seed_wordsNoNumber of seed words (12 or 24)

TDQS

A4.4/5.0
Behavior5/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 thoroughly discloses critical behaviors: seed phrase shown once, security warnings, wallet features (private transactions, contract interaction), and the irreversible nature of seed phrase loss. No contradictions with annotations.

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 multi-paragraph but well-structured: purpose first, then security warning, features, and after-creation steps. It is front-loaded and each section adds value. Could be slightly more concise, but it remains helpful and organized.

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

Completeness5/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 fully explains what to expect after creation (seed phrase display, faucet link). It covers security, features, and follow-up steps, making it complete for a wallet creation tool.

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 baseline is 3. The description does not add significant meaning beyond the schema for the two parameters. It mentions seed phrase generation which relates to 'seed_words', but the schema already documents both parameters adequately.

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

Purpose5/5

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

The description clearly states the tool creates a new Midnight wallet with a fresh seed phrase. It uses a specific verb ('Create') and resource ('Midnight wallet'). Among sibling tools, no other wallet creation tool exists, so it is well differentiated.

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 includes after-creation steps (save seed phrase, get testnet tDUST, use for deployment) and security warnings, implying the use case. However, it does not explicitly state when to use this tool versus other Midnight tools, nor does it provide exclusions.

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

midnight_deploy_contractA

Deploy a compiled Compact smart contract to the Midnight Network.

Prerequisites:

  1. Contract must be compiled first using midnight_compile_contract

  2. Wallet with sufficient tDUST balance for deployment

  3. Network connectivity to target environment

Deployment Process:

  1. Load compiled contract artifacts

  2. Initialize contract private state (if any)

  3. Create deployment transaction

  4. Generate ZK proof for deployment

  5. Submit transaction to the network

  6. Wait for confirmation

Returns:

  • Contract address

  • Transaction hash

  • Block height

  • Deployment cost

Security: Use MIDNIGHT_WALLET_SEED environment variable for wallet credentials.

Testnet Faucet: Get free tDUST at https://faucet.testnet.midnight.network

ParametersJSON Schema
NameRequiredDescriptionDefault
contract_nameNoName of the contract to deploy
compiled_pathNo
initial_stateNo
networkNoTarget network for deployment
wallet_seedNo
gas_limitNo
dry_runNoSimulate deployment without submitting transaction

TDQS

A4/5.0
Behavior4/5

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

The description details the deployment steps (load, initialize, create tx, generate proof, submit, wait), mentions security via environment variable, and lists return fields. It also hints at a dry-run capability through the parameter, but doesn't disclose potential costs 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.

Conciseness4/5

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

The description is well-structured with clear sections (Prerequisites, Deployment Process, Returns, Security). It is informative without excessive verbosity, though the inclusion of the testnet faucet link is slightly tangential.

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 seven parameters and no output schema, the description provides a solid overview including prerequisites, steps, and return fields. However, it lacks details on error handling, parameter validation, and return value types or examples, which would enhance 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?

With only 43% schema description coverage, the description adds context by explaining the deployment process and mentions parameters like compiled_path and initial_state indirectly. However, it does not explicitly describe all seven parameters or clarify their formats, leaving gaps for parameters like gas_limit and wallet_seed.

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 'Deploy a compiled Compact smart contract to the Midnight Network', providing a specific verb and resource. It effectively distinguishes from sibling tools like midnight_compile_contract (compilation) and midnight_call_contract (contract interaction).

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 lists prerequisites, including prior compilation via midnight_compile_contract, and outlines the deployment process. However, it doesn't explicitly state scenarios where this tool should not be used or suggest alternatives for other operations like contract interaction.

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

midnight-docs-statusB

Get the current status of documentation sync, including cache age and available updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNo

TDQS

B3.4/5.0
Behavior3/5

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

The description discloses that the tool returns cache age and available updates, implying it is a read-only operation with no side effects. However, without annotations, the description does not explicitly state that it is non-destructive or that it requires no authentication, leaving some behavioral uncertainty.

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, efficient sentence that directly states the tool's purpose. It wastes no words, though it could be slightly more structured if broken into separate points for cache age and updates.

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 simple status-check tool with no output schema, the description adequately conveys the key information returned (cache age and available updates). It meets the needs for an agent to understand what to expect, though it could mention the return format or any error conditions.

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

Parameters2/5

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

The input schema has one parameter 'input' which is an empty object with no properties. Schema description coverage is 0%, and the description does not clarify the purpose of this parameter. Since the parameter adds no meaningful input, the description fails to explain why it exists or whether it is optional.

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 'Get' and the resource 'status of documentation sync', including specific details like cache age and available updates. It distinguishes from sibling tools such as 'midnight-sync-docs' (which performs sync) and 'midnight-fetch-docs' (which fetches docs), making its purpose 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?

No guidance is provided on when to use this tool versus alternatives. For example, it does not explain when a user should check status before calling sync or fetch. The description lacks any usage context such as prerequisites or typical workflow.

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

midnight-fetch-docsB

Fetch documentation directly from the official Midnight docs. Use when you know the specific path or need the full content of a documentation page.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNo

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 does not disclose behavioral traits such as error handling, authentication requirements, or response format. It only repeats the core purpose, leaving the agent with insufficient context about what happens during execution.

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 concise, consisting of two sentences with the primary action and usage condition front-loaded. No unnecessary words or repetition.

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

Completeness2/5

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

Given the lack of annotations, output schema, and parameter elaboration, the description is insufficient for an agent to fully understand the tool's behavior, return values, or error conditions. It omits critical details needed for complex usage.

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

Parameters1/5

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

Schema description coverage is 0% for all parameters except path (which has a brief example in schema). The description does not mention the 'extractSection' parameter at all, failing to add semantic meaning beyond the bare schema.

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 verb 'Fetch', resource 'documentation', and specifies 'from the official Midnight docs'. It distinguishes from sibling tools like midnight-list-docs and midnight-search-docs by indicating it retrieves full content for a known path.

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 explicit guidance to use the tool when the specific path is known or full content is needed. It implicitly suggests alternatives (e.g., search) but does not name them directly, missing the 'when-not' aspect for a perfect 5.

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

midnight_get_balanceA

Query token balance for a Midnight Network address.

Returns:

  • tDUST (native token) balance

  • Address information

Use this tool to:

  • Check wallet balances

  • Verify transaction results

  • Monitor account funds

Note: For testnet, you can get free tDUST from the faucet.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoThe Midnight address to check balance for
networkNo

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 must cover behavioral traits. It implies a read-only query (balance retrieval) but doesn't explicitly state no side effects, permissions needed, or rate limits. The description is adequate but not fully transparent.

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

Conciseness4/5

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

The description is fairly concise (8 lines) with bullet points and a note. It could be slightly tighter, but it's well-structured and front-loaded with the main purpose.

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 (2 parameters, no output schema), the description provides sufficient context for a balance query. It covers what it returns and use cases. No missing critical information for typical usage.

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

Parameters2/5

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

Schema coverage is 50% (network parameter lacks a description). The main description adds no additional meaning to either parameter beyond what's in the schema. For a tool with 2 parameters, the description should compensate for the schema gap but fails to do so.

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 queries token balance for a Midnight Network address, specifying it returns tDUST balance and address information. It distinguishes itself from sibling tools like midnight_transfer_tokens or midnight_get_transaction.

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 lists explicit use cases: checking wallet balances, verifying transaction results, and monitoring account funds. It also mentions the faucet for testnet. However, it doesn't explicitly state when not to use or alternatives.

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

midnight_get_blockB

Query block information from the Midnight blockchain.

Returns:

  • Block height

  • Block hash

  • Timestamp

  • Transaction count

Use this tool to:

  • Get current block height (omit height parameter)

  • Inspect specific blocks

  • Monitor chain progress

ParametersJSON Schema
NameRequiredDescriptionDefault
heightNo
networkNo

TDQS

B3.4/5.0
Behavior3/5

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

Since no annotations are provided, the description carries full burden. It indicates it's a read operation (query) and lists what it returns, but does not disclose potential behaviors like rate limits, permissions, or error handling.

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?

Concise and well-structured: purpose first, then return fields, then usage scenarios. No unnecessary 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?

With no output schema and two parameters (one undocumented), the description covers most essential aspects but misses the 'network' parameter and does not address error conditions or parameter formats.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It partially describes the 'height' parameter (omit for current block) but does not describe the 'network' parameter at all, leaving ambiguity for a crucial field.

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 it queries block information and lists specific return fields. It distinguishes from sibling tools like midnight_get_transaction by focusing on blocks, but does not explicitly differentiate itself.

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?

Provides explicit use cases: get current block height (omit height), inspect specific blocks, monitor chain progress. However, no when-not-to-use or alternatives are mentioned.

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

midnight_get_transactionA

Query transaction details from the Midnight blockchain.

Returns:

  • Transaction hash

  • Block height

  • Status (pending/confirmed/failed)

  • Contract address (if applicable)

  • Circuit name (if contract call)

Use this tool to:

  • Check transaction status

  • Debug failed transactions

  • Inspect contract interactions

ParametersJSON Schema
NameRequiredDescriptionDefault
hashNoTransaction hash to query
networkNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden. It states 'query' and lists return values, implying read-only, but does not explicitly confirm no side effects or discuss auth/rate limits. The return value list adds some 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 short, front-loaded with purpose, uses bullet lists for returns and use cases, and contains no 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?

With 2 parameters and no output schema, the description covers purpose, returns, and uses. However, it does not mention that network is optional (required=0) or provide error handling context. Adequate but not complete.

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

Parameters2/5

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

Schema coverage is 50% (only hash has a description). The tool description does not add any explanation for the 'network' parameter beyond its enum. The use-case list implies hash is needed but does not clarify required vs optional.

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 it queries transaction details from the Midnight blockchain, listing return fields and specific use cases. It distinguishes from sibling tools like midnight_get_block and midnight_get_balance by focusing on transactions.

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?

Explicitly lists use cases: check status, debug failures, inspect interactions. No when-not-to-use or alternatives are provided, but the context is clear.

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

midnight_initA

โš ๏ธ CALL THIS FIRST - Initialize Midnight Network development context.

IMPORTANT: This tool MUST be called at the START of every Midnight development session.

This tool:

  • Establishes network configuration (testnet, devnet, or mainnet)

  • Documents all available Midnight MCP tools

  • Provides guidance on Compact smart contract development

  • Sets up provider connections for blockchain queries

Use this tool to:

  • Configure which Midnight network to connect to

  • Understand available tools for contract development

  • Learn about Compact language basics

  • Get started with Midnight dApp development

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNo
indexer_urlNo
proof_server_urlNo

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 must cover behavioral traits. It mentions establishing network configuration, documenting tools, and setting up provider connections, but does not detail side effects, idempotency, or what happens if called multiple times. The behavior is partially transparent 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.

Conciseness4/5

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

The description is concise, uses bullet points and a warning symbol for emphasis. It front-loads the critical 'CALL THIS FIRST' message and is well-structured, though there is some 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?

Given no annotations or output schema, the description should be more complete. It covers purpose and usage but lacks details on return values, error scenarios, parameter defaults, and idempotency. The tool appears complex, and the description doesn't fully address agent needs.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should explain parameters. It references 'network configuration' and 'provider connections', but does not explicitly describe the meaning or usage of 'indexer_url' or 'proof_server_url'. The parameter semantics are inadequately explained.

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 'Initialize Midnight Network development context' and emphasizes it must be called first. It distinguishes itself from sibling tools by being the initialization prerequisite.

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?

Explicitly says 'CALL THIS FIRST' and 'MUST be called at the START of every session.' It lists specific use cases like configuring network and understanding tools, providing clear context for when it should be used.

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

midnight-list-docsC

List all available documentation sources with their sync status.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided. The description implies a read operation but does not disclose whether authentication is required, if all sources are always returned, or any side effects. Minimal behavioral context beyond the basic action.

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 concise sentence. However, it could be slightly improved by mentioning the optional filter. It is not overly 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?

Given the complexity (optional nested parameter, no output schema), the description is too sparse. It omits the return format and parameter details, making it incomplete for the agent to reliably use.

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

Parameters1/5

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

The optional 'category' parameter is not mentioned in the description. With 0% schema description coverage, the agent has no information about the parameter's purpose, enum values, or how filtering works, severely limiting proper invocation.

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 lists all available documentation sources and includes their sync status, which distinguishes it from sibling tools like 'midnight-search-docs' (search) and 'midnight-fetch-docs' (fetch specific).

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 such as 'midnight-docs-status' or 'midnight-search-docs'. The description does not specify prerequisites or exclusions.

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

midnight_network_statusB

Check the health status of Midnight Network services.

Returns the status of:

  • Indexer (GraphQL API for blockchain data)

  • Proof Server (ZK proof generation)

  • Node RPC (transaction submission)

  • Current block height

  • Network ID

Use this tool to:

  • Verify network connectivity before operations

  • Debug connection issues

  • Check service latency

ParametersJSON Schema
NameRequiredDescriptionDefault
networkNo
indexer_urlNo
proof_server_urlNo
node_urlNo

TDQS

B3.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 return values but does not explicitly state that the tool is read-only or has no side effects. It is adequate but lacks details on auth or latency implications.

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 front-loaded with a clear summary, followed by a bullet list of returned items and then usage guidelines. It is well-structured and concise, though not extremely tight.

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

Completeness2/5

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

Given the lack of parameter descriptions and no output schema, the description is incomplete. It does not explain how to use the parameters or handle errors, which are essential for a network status tool.

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

Parameters1/5

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

Schema description coverage is 0% and the tool description does not explain the parameters (network, indexer_url, etc.). Users are left to guess their purpose and usage. This is a critical gap for a tool with 4 parameters.

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 it checks health status of Midnight Network services and lists specific components (Indexer, Proof Server, Node RPC, block height, Network ID). It distinguishes from sibling tools like midnight_compile_contract or midnight_transfer_tokens, and from the generic get_server_status sibling by being Midnight-specific.

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 explicitly states use cases: 'Verify network connectivity before operations', 'Debug connection issues', 'Check service latency'. It does not provide when-not or alternatives, but the context is clear for a simple health check.

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

midnight_scaffold_projectA

Scaffold a new Midnight dApp project from a template.

Templates available:

  • counter: Simple counter contract (great for learning)

  • token: Private token with transfers and balances

  • voting: Privacy-preserving voting system

  • blank: Empty project structure

Generates:

  • Compact contract files

  • TypeScript SDK integration

  • React UI (optional)

  • Build and test configuration

Use this tool to:

  • Start a new Midnight project quickly

  • Learn from example contracts

  • Set up proper project structure

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoProject name (will be used as directory name)
templateNo
include_uiNo
package_managerNo
output_dirNo
use_cliNo
create_filesNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must fully convey behavior. It mentions file generation but omits details like overwrite behavior, error handling, or network requirements. Transparency is adequate but could be more explicit.

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 well-structured with bullet points and sections, and is fairly concise. Some redundancy exists (e.g., repeated 'Use this tool to' list), but overall 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?

Given the complexity (7 parameters, no output schema, no annotations), the description provides a good overview but lacks details on parameter semantics and behavioral specifics for a complete contextual 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 coverage is low (14%). The description adds meaning for the 'template' parameter by listing options with brief descriptions, but does not explain other parameters like package_manager, output_dir, use_cli, or create_files. Partial compensation.

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 scaffolds a new Midnight dApp project from a template, lists available templates and generated files, and distinguishes itself from siblings like compile, deploy, and analyze 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 explicitly states use cases like starting a new project and learning from examples. It implicitly avoids alternative tools by focusing on initial setup, but does not provide explicit when-not-to-use or alternative tool recommendations.

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

midnight-search-docsB

Search Midnight documentation content. Use for finding guides, API docs, and conceptual explanations about the Midnight blockchain and Compact language.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states the tool searches content, but does not mention pagination, result format, search capabilities (e.g., fuzzy search), or limitations. This leaves significant gaps 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.

Conciseness4/5

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

The description is a single concise sentence that front-loads the action. However, it could be slightly more structured by separating usage guidance, but current length is appropriate.

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

Completeness2/5

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

Given the nested schema, three parameters, and the presence of multiple sibling doc tools, the description is too minimal. It does not explain return values (no output schema) or how parameters like category and limit affect results, leaving the agent underinformed.

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

Parameters2/5

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

The input schema has three parameters (query, category, limit) with only the query having a description. The description adds no additional meaning or examples for any parameter, failing to compensate for the low schema coverage (0% per 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 it searches Midnight documentation content for guides, API docs, and conceptual explanations, providing a specific verb and resource. It distinguishes from sibling doc tools (like fetch, list, sync) by focusing on search functionality.

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 with 'Use for finding...' but does not provide explicit guidance on when not to use or alternatives. Sibling tools exist (e.g., midnight-fetch-docs, midnight-list-docs) but are not mentioned.

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

midnight_search_docsA

Search Midnight Network official documentation.

Searches across:

  • Compact language reference

  • SDK/API documentation

  • Tutorials and guides

  • Example code

Use this tool to:

  • Find how to use specific features

  • Look up Compact syntax

  • Find code examples

  • Learn Midnight concepts

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query for Midnight documentation
categoryNo

TDQS

A4.2/5.0
Behavior4/5

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

The description is straightforward about being a search tool with no destructive hints. It could be more explicit about being read-only, but the name and purpose imply safety. No annotations are present, so the description carries the burden, and it does so adequately.

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 concise (about 100 words), uses bullet points for readability, and front-loads the core purpose. Every sentence adds value without redundancy.

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 search tool with no output schema, the description covers purpose, scope, and usage. It does not describe return format or pagination, which would be helpful but isn't critical given the tool's simplicity.

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 two parameters (query, category) with 50% description coverage (query described, category only as enum). The description lists categories in natural language but doesn't explicitly link to the parameter or explain how to use it effectively. This is adequate but not enhanced.

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 it searches official Midnight documentation, lists specific categories (Compact, SDK, tutorials, API, examples), and provides usage examples. It distinguishes from sibling tools like midnight-fetch-docs and midnight-list-docs, which handle fetching or listing specific docs, by focusing on search.

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 lists explicit use cases (find features, syntax, examples, concepts), which guides when to use this tool. It does not explicitly mention alternatives or when not to use it, but the context of sibling tools makes it clear.

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

midnight-sync-docsB

Sync documentation from the official Midnight repository. Use to ensure documentation is up to date.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNo

TDQS

B3/5.0
Behavior2/5

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

No annotations provided; description only says 'sync documentation' without detailing what gets overwritten, authentication needs, or rate limits. With no annotations, description carries full burden but fails to disclose behavioral traits.

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?

Two sentences, front-loaded with action, no redundant words. Slightly too minimal for a tool with nested parameters.

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?

Tool has nested input with enum and boolean, no output schema, and no annotations. Description fails to explain parameter effects or the syncing process, leaving it incomplete for confident invocation.

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

Parameters1/5

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

Schema has two parameters (force and category) but description provides no explanation of their meaning. Schema description coverage is 0% and description adds no new detail, leaving the agent guessing.

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?

Description states 'Sync documentation from the official Midnight repository' with a clear verb and resource, and 'Use to ensure documentation is up to date' clarifies its role. It distinguishes from sibling tools like midnight-docs-status or midnight-fetch-docs.

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?

It suggests using the tool to keep docs up to date, but does not explicitly state when not to use it or mention alternatives like midnight-fetch-docs. The guidance is present but minimal.

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

midnight_transfer_tokensA

Transfer tDUST tokens to another address.

Transfer Types:

  • Standard: Public transfer visible on-chain

  • Shielded: Private transfer using ZK proofs

Requirements:

  • Wallet with sufficient balance

  • Network connectivity

  • Gas for transaction fees

Fees:

  • Standard transfer: ~0.001 tDUST

  • Shielded transfer: ~0.005 tDUST (proof generation)

Security: Use MIDNIGHT_WALLET_SEED environment variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoRecipient address
amountNoAmount of tDUST to transfer
networkNoTarget network
memoNo
shieldedNoUse shielded (private) transfer

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 transfer types, fees, and security via environment variable, which is good. However, it does not explain return values, error handling, or whether operations are reversible โ€“ leaving gaps in behavioral 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 very concise, using bullet points and sections to present transfer types, requirements, fees, and security. Every sentence adds value, and the structure is front-loaded with the main purpose. No unnecessary text.

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 5 parameters, no output schema, and no annotations, the description covers key aspects (purpose, types, fees, requirements) but lacks details on return value, error conditions, and specific usage of parameters like 'network' and 'shielded'. Some gaps remain, making it adequate 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 coverage is 80% (4 of 5 params have descriptions), so the schema already covers most parameters. The description does not add significant meaning beyond the schema; for example, the 'shielded' parameter is only mentioned in the description as a type but its allowed values are not clarified. The 'memo' parameter lacks description in both schema and tool description, so the description does not compensate.

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 transfers tDUST tokens, with specific verb 'Transfer' and resource 'tDUST tokens'. It distinguishes from sibling tools like midnight_get_balance by focusing on transfers and even detailing transfer types (Standard/Shielded), making its purpose unambiguous.

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, including requirements (sufficient balance, network, gas) and fees. It does not explicitly state when not to use or offer alternatives, but the context implies appropriate scenarios. Sibling tools do not overlap in functionality, so exclusion is less critical.

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

midnight_wallet_stateA

Get detailed wallet state including balances, coins, and sync status.

Returns:

  • tDUST balance (total and available)

  • Individual coin details

  • Pending transactions

  • Sync status with network

Coin Types:

  • Unshielded: Publicly visible balance

  • Shielded: Private balance (ZK protected)

  • Pending: Awaiting confirmation

Use for:

  • Checking available funds before operations

  • Debugging transaction issues

  • Monitoring wallet health

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNo
networkNoTarget network

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It correctly indicates it returns wallet state without mentioning side effects, which is appropriate for a read operation, but could be clearer about whether it queries the network or local state.

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 well-structured with sections and bullet points, each adding value. It could be slightly more concise by avoiding repetition, but overall it's 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?

It covers return values well given no output schema, listing key categories. However, it omits details on individual coin structure and doesn't address the unusual fact that no parameters are required, weakening completeness.

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

Parameters2/5

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

The schema already describes 'network' as 'Target network', but 'address' lacks description. The tool description does not add meaning for either parameter, missing an opportunity to clarify address format or optionality.

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 gets detailed wallet state, enumerates specific components (balances, coins, pending transactions, sync status), and distinguishes it from siblings like midnight_get_balance by emphasizing comprehensiveness.

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 'Use for' section lists three concrete scenarios (checking funds, debugging, monitoring health), guiding when to invoke. However, it doesn't explicitly state when not to use or name alternative tools.

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

nextjs_callA

Call a specific MCP tool on a running Next.js development server.

REQUIREMENTS:

  • Port number of the target Next.js dev server

  • Tool name to execute

  • Optional arguments object (if the tool requires parameters)

Use 'nextjs_index' first to discover available servers, tools, and their input schemas. If 'nextjs_index' auto-discovery fails, ask the user for the port and call 'nextjs_index' again with the 'port' parameter.

IMPORTANT: When calling tools:

  • The 'args' parameter MUST be an object (e.g., {key: "value"}), NOT a string

  • If a tool doesn't require arguments, OMIT the 'args' parameter entirely - do NOT pass {} or "{}"

  • Check the tool's inputSchema from 'nextjs_index' to see what arguments are required

Common Next.js MCP tools include:

  • Error diagnostics (get compilation/runtime errors)

  • Route information (list all routes)

  • Build status (check compilation state)

  • Cache management (clear caches)

  • And more (varies by Next.js version)

Example usage:

  1. Call 'nextjs_index' to see servers and tools

  2. Call 'nextjs_call' with port=3000, toolName="get_errors" to get errors from server on port 3000

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoPort number of the Next.js dev server (required).
toolNameNoName of the Next.js MCP tool to call (required). Use 'nextjs_index' first to discover available tool names.
argsNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided. The description discloses the requirement for a running server, but does not detail side effects, error behavior, or permissions. It adds some behavioral context (args must be object, omit if unused) but lacks comprehensive transparency.

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 well-structured with sections, front-loaded with purpose. However, it includes a list of common tools that is not necessary for using this tool, adding some redundancy. Overall 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?

While the description covers usage flow and parameter details, it does not explain the return value or error handling. For a proxy tool, the return is implied but not stated. The description is adequate for basic usage 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?

Schema coverage is 67%, and the description adds meaning beyond schema by specifying that 'args' must be an object and should be omitted if not required, and that 'toolName' should be discovered via 'nextjs_index'. This enhances parameter understanding.

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 function: 'Call a specific MCP tool on a running Next.js development server.' It uses a specific verb and resource, and distinguishes from sibling 'nextjs_index' which is for discovery.

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 instructs to use 'nextjs_index' first to discover tools, and provides fallback if auto-discovery fails. Also provides important usage notes about the 'args' parameter.

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

nextjs_docsB

Fetch Next.js official documentation by path.

IMPORTANT: You MUST first read the nextjs-docs://llms-index MCP resource to get the correct path. Do NOT guess paths.

Workflow:

  1. Read the nextjs-docs://llms-index resource to get the documentation index

  2. Find the relevant path in the index for what you're looking for

  3. Call this tool with that exact path

Example: nextjs_docs({ path: "/docs/app/api-reference/functions/refresh" })

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo
queryNo
pathNo
anchorNo

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 must disclose behavioral traits. It only states the tool fetches documentation by path, missing details on authentication, rate limits, side effects, or error handling. The read-only nature is implied but not explicit.

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

Conciseness4/5

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

The description is well-structured: a one-line purpose, a crucial prerequisite notice, a numbered workflow, and an example. It is front-loaded but slightly repetitive. Minor improvements could make it more concise.

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 4 parameters, no output schema, and no annotations, the description should provide comprehensive context. It explains the path parameter and workflow but omits details on other parameters, return values, and behavior. Incomplete for a fetch tool.

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

Parameters2/5

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

Schema description coverage is 0%. The description explains the 'path' parameter with an example and workflow, but does not explain 'action', 'query', or 'anchor'. This leaves three parameters undocumented beyond the schema.

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 fetches Next.js official documentation by path, with a specific verb and resource. It provides a workflow and example, distinguishing it from siblings like nextjs_index and nextjs_call.

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 explicitly instructs users to first read the nextjs-docs://llms-index resource and provides a workflow. It does not mention when to avoid this tool or suggest alternatives, but the prerequisite guidance is strong.

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

nextjs_indexA

Discover all running Next.js development servers and list their available MCP tools.

WHEN TO USE THIS TOOL - Use proactively in these scenarios:

  1. Before implementing ANY changes to the app: When asked to add, modify, or fix anything in the application:

    • "Add a loading state" โ†’ Check current component structure and routes first

    • "Fix the navigation" โ†’ Inspect existing routes and components

    • "Update the API endpoint" โ†’ Query current routes and data flows

    • "Add error handling" โ†’ Check runtime errors and component hierarchy

    • "Refactor the auth logic" โ†’ Inspect current auth implementation and routes

    • "Optimize performance" โ†’ Check runtime diagnostics and component tree Use this to understand where changes should be made and what currently exists.

  2. For diagnostic and investigation questions:

    • "What's happening?" / "What's going on?" / "Why isn't this working?"

    • "Check the errors" / "See what's wrong"

    • "What routes are available?" / "Show me the routes"

    • "Clear the cache" / "Reset everything"

    • Questions about build status, compilation errors, or runtime diagnostics

  3. For agentic codebase search: Use this as FIRST CHOICE for searching the currently running app. If not found, fallback to static codebase search tools.

KEY PRINCIPLE: If the request involves the running Next.js application (whether to investigate OR modify it), query the runtime FIRST to understand current state before proceeding.

REQUIREMENTS:

  • Next.js 16 or later (MCP support was added in v16)

  • If you're on Next.js 15 or earlier, use the 'upgrade-nextjs-16' MCP prompt to upgrade first

Next.js 16+ exposes an MCP (Model Context Protocol) endpoint at /_next/mcp automatically when the dev server starts. No configuration needed - MCP is enabled by default in Next.js 16 and later.

This tool discovers all running Next.js servers and returns:

  • Server port, PID, and URL

  • Complete list of available MCP tools for each server

  • Tool descriptions and input schemas

After calling this tool, use 'nextjs_call' to execute specific tools.

[IMPORTANT] If auto-discovery returns no servers:

  1. Ask the user which port their Next.js dev server is running on

  2. Call this tool again with the 'port' parameter set to the user-provided port

If the MCP endpoint is not available:

  1. Ensure you're running Next.js 16 or later (use the 'upgrade-nextjs-16' prompt to upgrade)

  2. Verify the dev server is running (npm run dev)

  3. Check that the dev server started successfully without errors

ParametersJSON Schema
NameRequiredDescriptionDefault
portNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: what it returns (server port, PID, URL, list of tools), requirements (Next.js 16+), troubleshooting steps, and the auto-discovery vs manual port mechanism. No contradictions.

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?

Well-structured with sections, bullet points, and bold headings. The length is justified given the complexity and importance. Front-loads purpose and usage. Every sentence adds value.

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

Completeness5/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 thoroughly explains return values and error scenarios. It covers all necessary context for an AI agent to use the tool effectively, including links to related tools.

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?

Schema has one optional 'port' parameter with no description (0% coverage). The description compensates by explaining its use in manual specification when auto-discovery fails. It adds meaning beyond the schema, though it could specify format constraints.

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: 'Discover all running Next.js development servers and list their available MCP tools.' It uses specific verbs and resources, and distinguishes from sibling tools like nextjs_call and upgrade_nextjs_16.

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?

Provides extensive guidance on when to use, including three detailed scenarios (before implementing changes, for diagnostics, for agentic codebase search), a key principle, and fallback instructions. Also explains what to do if no servers are found.

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

upgrade_nextjs_16A

Guide through upgrading Next.js to version 16.

CRITICAL: Runs the official codemod FIRST (requires clean git state) for automatic upgrades and fixes, then handles remaining issues manually. The codemod upgrades Next.js, React, and React DOM automatically.

Covers:

  • Next.js version upgrade to 16

  • Async API changes (params, searchParams, cookies, headers)

  • Config migration (next.config changes)

  • Image defaults and optimization

  • Parallel routes and dynamic segments

  • Deprecated API removals

  • React 19 compatibility

The codemod requires:

  • Clean git working directory (commit or stash changes first)

  • Node.js 18+

  • npm/pnpm/yarn/bun installed

After codemod runs, provides manual guidance for any remaining issues not covered by the codemod.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNo

TDQS

A4/5.0
Behavior4/5

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

Reveals key behavior: runs codemod first, requires clean git state, covers multiple upgrade aspects, and handles remaining issues manually. No annotations provided, so description carries burden adequately.

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?

Well-structured with bullet points for coverage and requirements. Front-loaded critical info like the codemod requirement. Slightly long but 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?

Given one parameter and no output schema, description covers the process, prerequisites, and scope of upgrade. Lacks explicit mention of output/result but is sufficient for understanding.

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

Parameters2/5

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

Input schema has one parameter 'project_path' with no description. The description implies it's the project path but does not explicitly explain its purpose or format. With 0% schema coverage, description should compensate but falls short.

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?

Clear verb 'Guide through upgrading' and specific resource 'Next.js to version 16'. Distinct from sibling tools which are for other Next.js operations or unrelated tasks.

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?

Explicitly states when to use (upgrading Next.js to v16) and prerequisites (clean git state, Node 18+, package manager). Does not explicitly mention when not to use, but context makes it clear.

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. 35 tool updatesv0.4.1
    • First observedbrowser_eval
    • First observeddisable_toolset
    • First observedenable_cache_components
    • First observedenable_toolset
    • First observedget_environment_info
    • First observedget_server_status
    • First observedget_session_info
    • First observedget_toolset_tools
    • First observedinit
    • First observedlist_available_toolsets
    • First observedlist_enabled_features
    • First observedmidnight_analyze_contract
    • First observedmidnight_call_contract
    • First observedmidnight_check_versions
    • First observedmidnight_compile_contract
    • First observedmidnight_create_wallet
    • First observedmidnight_deploy_contract
    • First observedmidnight_get_balance
    • First observedmidnight_get_block
    • First observedmidnight_get_transaction
    • First observedmidnight_init
    • First observedmidnight_network_status
    • First observedmidnight_scaffold_project
    • First observedmidnight_search_docs
    • First observedmidnight_transfer_tokens
    • First observedmidnight_wallet_state
    • First observedmidnight-docs-status
    • First observedmidnight-fetch-docs
    • First observedmidnight-list-docs
    • First observedmidnight-search-docs
    • First observedmidnight-sync-docs
    • First observednextjs_call
    • First observednextjs_docs
    • First observednextjs_index
    • First observedupgrade_nextjs_16

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is direct overlap between midnight-search-docs and midnight_search_docs, which ambiguously serve the same function. Additionally, the mix of Next.js and Midnight tools with similar prefixes (init vs midnight_init) could cause confusion.

Naming Consistency3/5

Naming conventions are inconsistent: some Midnight tools use underscores (midnight_analyze_contract) while others use hyphens (midnight-docs-status). Next.js tools use underscores, and general tools also use underscores. This mix of patterns reduces predictability.

Tool Count2/5

With 35 tools covering two distinct domains (Next.js and Midnight), the count exceeds the recommended upper bound of 25. While each domain individually has a reasonable number, the combined surface is too large for a single server.

Completeness3/5

The Next.js tools cover common workflows (indexing, calling, docs, upgrade) and the Midnight tools cover contract lifecycle and network queries. However, there are notable gaps like missing contract deletion or event log retrieval, and the duplicate search tool suggests incomplete rationalization.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A powerful toolkit that enables seamless interaction with EVM-compatible networks through natural language processing and AI assistance, allowing users to manage wallets, launch tokens, and interact with blockchain networks.
    18
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to automate Next.js development including project scaffolding, React component generation, API route creation, and full-stack application workflows with TypeScript and Tailwind CSS support.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time debugging, code quality monitoring, and performance insights for React/Next.js applications with features including Chrome DevTools integration, breakpoint management, complexity analysis, and live error streaming.
    13
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    Provides specialized development tools and utilities for Next.js, allowing AI agents to perform runtime diagnostics and access official documentation. It enables automated context initialization and real-time interaction with Next.js development servers to query application state.
    4
    88,644
    817
    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/DaJo-Code/midnight-nextjs-mcp'

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