midnight-nextjs-mcp
Provides tools for Next.js development including documentation search, runtime diagnostic tools, browser automation, Next.js 16 upgrade guidance, and cache components migration.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@midnight-nextjs-mcpwhat's my Midnight wallet balance?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 contextmidnight_compile_contract- Compile Compact contracts to TypeScript/ZK artifactsmidnight_analyze_contract- Static analysis for contractsmidnight_deploy_contract- Deploy contracts to the networkmidnight_call_contract- Execute circuit calls on deployed contractsmidnight_scaffold_project- Create new dApp projects from templates
Wallet & Tokens
midnight_create_wallet- Generate new wallet with seed phrasemidnight_wallet_state- Get detailed wallet state and balancesmidnight_transfer_tokens- Transfer tDUST tokensmidnight_get_balance- Query token balances
Network & Queries
midnight_network_status- Check network health (Indexer, Proof Server, Node)midnight_get_block- Query blockchain blocksmidnight_get_transaction- Query transaction detailsmidnight_check_versions- Check for Midnight package updates
Documentation
midnight_search_docs- Search Midnight documentationmidnight-fetch-docs- Fetch specific documentation pagesmidnight-sync-docs- Sync documentation from official repomidnight-docs-status- Check documentation sync statusmidnight-list-docs- List available documentation sources
Next.js DevTools
init- Initialize Next.js development contextnextjs_docs- Search Next.js documentationnextjs_index- Discover running dev serversnextjs_call- Execute runtime diagnostic toolsbrowser_eval- Browser automation with Playwrightupgrade_nextjs_16- Next.js 16 upgrade guideenable_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-mcpThen 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.networkNetwork 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 introductionmidnight://compact/reference- Complete syntax referencemidnight://sdk/overview- Midnight.js SDK guide
Next.js Resources
nextjs-docs://llms-index- Documentation indexcache-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 toolsbrowser_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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | The action to perform using browser automation | |
| browser | No | ||
| headless | No | ||
| url | No | ||
| element | No | ||
| ref | No | ||
| doubleClick | No | ||
| button | No | ||
| modifiers | No | ||
| text | No | ||
| fields | No | ||
| script | No | ||
| fullPage | No | ||
| errorsOnly | No | ||
| startElement | No | ||
| startRef | No | ||
| endElement | No | ||
| endRef | No | ||
| files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| toolset | No | The name of the toolset to disable |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| toolset | No | The name of the toolset to enable |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| toolset | No | The name of the toolset you want to get the tools for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Compact contract source code to analyze | |
| check_security | No | ||
| check_gas | No |
TDQS
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.
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.
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.
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.
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.
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:
Load contract at specified address
Prepare circuit arguments
Generate ZK proof (if required)
Submit transaction
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
}
})| Name | Required | Description | Default |
|---|---|---|---|
| contract_address | No | Address of the deployed contract | |
| circuit_name | No | Name of the circuit to call | |
| arguments | No | ||
| private_state_id | No | ||
| network | No | Target network | |
| wallet_seed | No | ||
| simulate | No | Simulate the call without submitting transaction |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| packages | No | ||
| include_alpha | No | ||
| refresh | No | ||
| format | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Compact contract source code or file path | |
| output_dir | No | ||
| contract_name | No |
TDQS
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.
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.
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.
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.
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.
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:
Save your seed phrase securely
Get testnet tDUST from the faucet
Use wallet for contract deployment
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Target network for the wallet | |
| seed_words | No | Number of seed words (12 or 24) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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:
Contract must be compiled first using
midnight_compile_contractWallet with sufficient tDUST balance for deployment
Network connectivity to target environment
Deployment Process:
Load compiled contract artifacts
Initialize contract private state (if any)
Create deployment transaction
Generate ZK proof for deployment
Submit transaction to the network
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
| Name | Required | Description | Default |
|---|---|---|---|
| contract_name | No | Name of the contract to deploy | |
| compiled_path | No | ||
| initial_state | No | ||
| network | No | Target network for deployment | |
| wallet_seed | No | ||
| gas_limit | No | ||
| dry_run | No | Simulate deployment without submitting transaction |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | The Midnight address to check balance for | |
| network | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| height | No | ||
| network | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| hash | No | Transaction hash to query | |
| network | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | ||
| indexer_url | No | ||
| proof_server_url | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | ||
| indexer_url | No | ||
| proof_server_url | No | ||
| node_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Project name (will be used as directory name) | |
| template | No | ||
| include_ui | No | ||
| package_manager | No | ||
| output_dir | No | ||
| use_cli | No | ||
| create_files | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for Midnight documentation | |
| category | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Recipient address | |
| amount | No | Amount of tDUST to transfer | |
| network | No | Target network | |
| memo | No | ||
| shielded | No | Use shielded (private) transfer |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | ||
| network | No | Target network |
TDQS
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.
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.
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.
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.
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.
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:
Call 'nextjs_index' to see servers and tools
Call 'nextjs_call' with port=3000, toolName="get_errors" to get errors from server on port 3000
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number of the Next.js dev server (required). | |
| toolName | No | Name of the Next.js MCP tool to call (required). Use 'nextjs_index' first to discover available tool names. | |
| args | No |
TDQS
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.
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.
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.
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.
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.
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:
Read the
nextjs-docs://llms-indexresource to get the documentation indexFind the relevant path in the index for what you're looking for
Call this tool with that exact path
Example: nextjs_docs({ path: "/docs/app/api-reference/functions/refresh" })
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | ||
| query | No | ||
| path | No | ||
| anchor | No |
TDQS
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.
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.
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.
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.
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.
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:
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.
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
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:
Ask the user which port their Next.js dev server is running on
Call this tool again with the 'port' parameter set to the user-provided port
If the MCP endpoint is not available:
Ensure you're running Next.js 16 or later (use the 'upgrade-nextjs-16' prompt to upgrade)
Verify the dev server is running (npm run dev)
Check that the dev server started successfully without errors
| Name | Required | Description | Default |
|---|---|---|---|
| port | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No |
TDQS
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.
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.
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.
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.
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.
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.
35 tool updates
v0.4.1- First observed
browser_eval - First observed
disable_toolset - First observed
enable_cache_components - First observed
enable_toolset - First observed
get_environment_info - First observed
get_server_status - First observed
get_session_info - First observed
get_toolset_tools - First observed
init - First observed
list_available_toolsets - First observed
list_enabled_features - First observed
midnight_analyze_contract - First observed
midnight_call_contract - First observed
midnight_check_versions - First observed
midnight_compile_contract - First observed
midnight_create_wallet - First observed
midnight_deploy_contract - First observed
midnight_get_balance - First observed
midnight_get_block - First observed
midnight_get_transaction - First observed
midnight_init - First observed
midnight_network_status - First observed
midnight_scaffold_project - First observed
midnight_search_docs - First observed
midnight_transfer_tokens - First observed
midnight_wallet_state - First observed
midnight-docs-status - First observed
midnight-fetch-docs - First observed
midnight-list-docs - First observed
midnight-search-docs - First observed
midnight-sync-docs - First observed
nextjs_call - First observed
nextjs_docs - First observed
nextjs_index - First observed
upgrade_nextjs_16
TDQS
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 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.
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.
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
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
Manage your blockchain infrastructure across 80+ chains with your agents.
Non-custodial Solana toolkit: rug-checks, swaps, portfolios, token minting, multisig, Arweave.
Visual DeFi workflow automation on Base + Ethereum mainnet.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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.18MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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
- FlicenseNot gradedqualityDmaintenanceProvides 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.131-

Next.js DevTools MCPofficial
AlicenseAqualityBmaintenanceProvides 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.488,644817MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DaJo-Code/midnight-nextjs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server