Skip to content

Publishing Servers

A publishable server must:

  • Implement the MCP handshake for at least one supported transport.
  • Declare every tool with a JSON Schema for its arguments and a sideEffect class of none, read or write.
  • Declare the credential scopes it needs. Servers that request scopes they never use are rejected at review.
  • Ship a velerion.mcp.json manifest at the package root.
{
"id": "acme/ticketing",
"version": "1.0.0",
"displayName": "Acme Ticketing",
"description": "Read and update tickets in Acme's internal ticketing system.",
"transport": "streamable-http",
"entry": "dist/server.js",
"scopes": ["tickets:read", "tickets:write"],
"tools": [
{ "name": "search_tickets", "sideEffect": "read" },
{ "name": "add_comment", "sideEffect": "write" },
{ "name": "close_ticket", "sideEffect": "write" }
]
}
Terminal window
velerion mcp validate .
velerion mcp inspect . --call search_tickets --args '{"query":"billing"}'

validate checks the manifest against the running server: a tool present in one but not the other is an error, not a warning. inspect starts the server with a temporary connection so you can exercise tools without deploying.

Terminal window
# Private to your workspace — no review required.
velerion mcp publish . --visibility workspace
# Submit for public listing — enters the review queue.
velerion mcp publish . --visibility public

Public submissions are reviewed for credential handling, prompt-injection surface and schema accuracy. Expect one to two weeks, and expect to be asked about any write tool that has no idempotency guarantee.

Change Required bump
New tool added minor
Tool argument made optional minor
Tool argument made required, or removed major
Tool removed or renamed major
Behaviour fix, no schema change patch