The manifest schema rejects inputSchema inside a tools entry, allowing only name and description. A registry that consumes the declared tools as MCP Tool objects therefore cannot accept them, because Tool requires inputSchema.
This is not hypothetical: Smithery's publish endpoint answers 400 with Invalid input: expected object, received undefined, once per tool, for a bundle whose manifest passes mcpb validate. The result is that a bundle can declare tools that no consumer expecting the MCP shape can use, and declaring them costs a publish rather than gaining anything.
Reproduction
npx @anthropic-ai/mcpb@2.1.2 validate manifest.json with manifest_version 0.3:
"tools": [
{
"name": "example",
"description": "An example tool",
"inputSchema": { "type": "object", "properties": {}, "required": [] }
}
]
ERROR: Manifest validation failed:
- tools.0: Unrecognized key(s) in object: 'inputSchema'
Removing inputSchema validates and packs, and is then rejected downstream.
Question
Is the omission deliberate — tools being a display hint rather than a capability declaration — or should the entry allow the full Tool shape? If it is deliberate, saying so in MANIFEST.md would help, since the natural reading of a tools array is that it carries what tools/list returns.
Filed the mirror of this at arcadeai-labs/smithery-cli#806; the two schemas contradict each other and I have no view on which side should move.
The manifest schema rejects
inputSchemainside atoolsentry, allowing onlynameanddescription. A registry that consumes the declared tools as MCPToolobjects therefore cannot accept them, becauseToolrequiresinputSchema.This is not hypothetical: Smithery's publish endpoint answers 400 with
Invalid input: expected object, received undefined, once per tool, for a bundle whose manifest passesmcpb validate. The result is that a bundle can declare tools that no consumer expecting the MCP shape can use, and declaring them costs a publish rather than gaining anything.Reproduction
npx @anthropic-ai/mcpb@2.1.2 validate manifest.jsonwithmanifest_version0.3:Removing
inputSchemavalidates and packs, and is then rejected downstream.Question
Is the omission deliberate —
toolsbeing a display hint rather than a capability declaration — or should the entry allow the fullToolshape? If it is deliberate, saying so in MANIFEST.md would help, since the natural reading of atoolsarray is that it carries whattools/listreturns.Filed the mirror of this at arcadeai-labs/smithery-cli#806; the two schemas contradict each other and I have no view on which side should move.