Every MCPB package contains aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/superradcompany/tool-cli/llms.txt
Use this file to discover all available pages before exploring further.
manifest.json file at its root. It describes the server’s runtime, transport, configuration requirements, and metadata that the registry and MCP hosts use to install and launch the tool.
The manifest follows the MCPB spec with extensions added by tool-cli for HTTP transport, reference mode, OAuth, and host-managed system resources (documented under .mcpbx features).
Top-level fields
Spec version. Currently
"0.3".Machine-readable package name (e.g.,
"my-tool"). Defaults to the directory name during tool init.Semantic version of the package (e.g.,
"1.0.0"). Update this before each tool publish.Brief, single-line description shown in search results and the registry listing.
Author information.
Human-readable name shown in the registry UI. Can contain spaces and mixed case.
Extended Markdown description for the registry listing page.
SPDX license identifier (e.g.,
"MIT", "Apache-2.0").Path to a single icon file, relative to the package root (e.g.,
"icon.png").Multiple icon variants with size and theme metadata.
Project homepage URL.
Documentation URL.
Support URL (issue tracker, forum, etc.).
Source code repository.
Search keywords used by
tool search and the registry.server
Theserver object is required and describes the runtime, transport, and how to launch the server.
Server runtime type. Omit in reference mode.
| Value | Description |
|---|---|
"node" | Node.js runtime |
"python" | Python runtime |
"binary" | Pre-compiled binary (Rust, Go, C++, etc.) |
Transport protocol. Defaults to
"stdio" when omitted.| Value | Description |
|---|---|
"stdio" | Standard input/output (default) |
"http" | HTTP/SSE transport |
Path to the main file, relative to the package root (e.g.,
"server/index.js"). Absent in reference mode.Execution configuration passed to the MCP host.
Capabilities
Static list of tool declarations. Each entry has
name (string) and description (string). Used when the manifest is inspected without launching the server.Static list of prompt templates. Each entry has
name, description, and optional arguments and template fields.Set to
true when the server generates its tool list dynamically at runtime (i.e., the tools array cannot be known statically).Set to
true when the server generates its prompt list dynamically.user_config
user_config declares fields that the user must supply before the server can run — API keys, base URLs, preferences, etc. MCP hosts and tool config set use this schema to prompt users interactively.
Each key in the user_config map is a field name. The value is an object:
Field type. Determines validation and the UI widget shown to users.
| Value | Description |
|---|---|
"string" | Free-form text (use sensitive: true for secrets) |
"number" | Numeric value, with optional min/max |
"boolean" | True/false toggle |
"directory" | Local directory path, validated to exist |
"file" | Local file path, validated to exist |
Human-readable label shown in prompts and UIs.
Additional help text for the field.
Whether the field must be supplied before the server starts.
Default value used when the user does not supply one.
Mark as
true for API keys and tokens. The value will be encrypted at rest and masked in output.Restrict string fields to a fixed set of allowed values.
Allow the user to supply multiple values (string fields only).
Minimum value for
number fields.Maximum value for
number fields.mcp_config via the template ${user_config.FIELD_NAME}.
system_config
system_config declares resources that the host manages on behalf of the server — ports, temporary directories, and persistent data directories. The host allocates and injects these values; the user never configures them directly.
Each key in the system_config map is a field name. The value is an object:
System resource type.
| Value | Description |
|---|---|
"port" | An available TCP port, allocated by the host |
"temp_directory" | An ephemeral directory, cleaned up after the session |
"data_directory" | A persistent directory that survives restarts |
Human-readable label.
Additional context for host implementors.
Whether the field is required.
Default value (e.g.,
3000 for a port).mcp_config via the template ${system_config.FIELD_NAME}.
Using
system_config causes the package to be bundled as .mcpbx instead of .mcpb.compatibility
Platform and runtime version requirements.
_meta
The_meta field is a freeform extension namespace. tool-cli reads from the store.tool.mcpb key within it.
Shell command run by
tool build. Generated automatically by tool init based on the server type and package manager.Shell command run by
tool test.Any additional custom script name maps to
tool <script-name> (e.g., "lint" → tool lint).Registry category tags for discoverability.
Runtime identifier hint for the registry (e.g.,
"node20").Init modes: bundled vs. reference
A manifest operates in one of two modes determined by the presence ofserver.entry_point:
| Mode | entry_point | server.type | Bundle format |
|---|---|---|---|
| Bundled | Present | Required | .mcpb (or .mcpbx for HTTP) |
| Reference | Absent | Optional | .mcpbx |
mcp_config.command) or URL (mcp_config.url).