Path-based findings
Every structural issue points to the affected MCP field.
Start typing to search 227 tools.
Validate the core structure of one MCP tool definition, including its name, description, inputSchema, required fields, outputSchema, and annotations.
MCP Schema Validator checks the core structure of a single Model Context Protocol tool definition. It verifies that the root is an object, the tool has a non-empty name, inputSchema is a JSON Schema object with type: object, and common containers such as properties, required, outputSchema, and annotations have usable types.
The report separates errors from compatibility warnings. An invalid inputSchema is an error; a missing description or a tool name outside current interoperability guidance is a warning. This distinction prevents recommended metadata from being presented as a mandatory protocol failure.
Focused controls, predictable output, and a workflow designed around this exact transformation.
Every structural issue points to the affected MCP field.
Check inputSchema, properties, required, outputSchema, and annotations shapes.
Required structure is separated from recommended interoperability guidance.
Copy or download counts, findings, checks, and the documented validation scope.
Practical details about input, output, privacy, limits, and the best way to use this tool.
It checks one tool object, its name and optional description, the inputSchema object and common containers, plus optional outputSchema and annotations objects.
No. Paste one tool definition, not the surrounding JSON-RPC response or tools array.
MCP tool arguments are named parameters represented by a JSON object, so the input schema uses an object root.
The focused validator treats a missing or empty description as a warning. A precise description helps clients and models choose the correct tool.
Current MCP naming length and character guidance is expressed as interoperability guidance. The validator warns instead of turning every deviation into a protocol error.
No. It checks common containers and types but does not resolve references or fully evaluate Draft 2020-12 vocabularies.
No. The validator does not connect to a server, list tools, call the handler, validate permissions, or inspect returned content.
No. Clients should treat tool annotations as untrusted unless they come from a trusted server.
The required tool name and object input schema pass the focused structural check.
{
"name": "search_docs",
"description": "Search product documentation",
"inputSchema": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"],
"additionalProperties": false
}
}
valid: true error_count: 0 warning_count: 0 checks.inputSchema: true
MCP tool call arguments are represented by an object input schema.
{
"name": "search_docs",
"description": "Search product documentation",
"inputSchema": {
"type": "array",
"items": {"type": "string"}
}
}
$.inputSchema.type — MCP tool inputSchema.type must be object.
Errors and quality warnings are reported independently.
{
"name": "create_ticket",
"inputSchema": {
"type": "object",
"properties": {"subject": {"type": "string"}},
"required": ["subject", "subject"]
}
}
Error: $.inputSchema.required — required property names must be unique. Warning: $.description — Add a precise description so clients and models can choose the tool correctly.
The accepted input is a JSON object representing one tool, such as an item from the tools array returned by tools/list. Do not paste the outer JSON-RPC envelope. JSON syntax is parsed first, so missing commas, invalid quotes, comments, or trailing commas are reported before MCP-specific checks.
The root name identifies the tool. description explains its purpose, and inputSchema defines call arguments. Current MCP versions can also describe display metadata, icons, an outputSchema, annotations, execution behavior, and extension metadata; this focused validator does not require optional fields.
The root must be an object and name must be a non-empty string. If description is present, it must be a string. inputSchema must be a JSON object with type: object. When present, properties must be an object and required must be an array of unique strings.
An optional outputSchema must be a JSON Schema object, while optional annotations must be an object. These checks catch common serialization and container mistakes without claiming that every nested schema keyword has been evaluated.
A missing description does not make the basic object unparsable, but it gives a model less information for choosing among tools. The validator therefore reports it as a warning. Write an action-oriented description that states what the tool returns, the important inputs, and the situations in which another tool should be preferred.
Current MCP guidance recommends tool names between 1 and 128 characters using ASCII letters, digits, underscore, hyphen, or dot. It also treats names as case-sensitive and recommends uniqueness within a server. A name outside that profile receives a compatibility warning.
This tool does not fully evaluate JSON Schema Draft 2020-12. It does not resolve $ref, check every nested keyword, validate example arguments, verify output against outputSchema, inspect x-mcp-header constraints, or determine whether a client supports an extension. A valid structural report can still contain a logically incorrect or unsafe contract.
The validator also does not connect to an MCP server. It cannot verify authorization, user confirmation, rate limiting, side effects, tool-result errors, timeouts, or sanitization. Those behaviors must be tested at the protocol and handler layers.
Create a starting definition with MCP Tool Schema Generator, then run this structural check. Use JSON Schema Validator for supported data rules and compare provider-specific wrapping with JSON to OpenAI Function Schema. Finally list and call the tool through the actual MCP server and client, including invalid arguments and permission failures.
Review the current MCP tools specification and JSON Schema Draft 2020-12 for the complete requirements that a production implementation must satisfy.