Postal Developers
MCP server

Versioning

How the MCP server is versioned, where to read the version, and what changes between releases.

The MCP server is a hosted service, so you always talk to the latest release. Versioning exists so you can tell what changed, and so tool names and inputs you built a workflow on do not move under you without warning.

Semantic versions

The server carries a semantic version, currently 1.6.0. What each part means for a client:

BumpWhat it can containExample
Major (2.0.0)A tool removed or renamed; a required input added; a compact response field removed; a move to a new REST API versionget_track_count folded into another tool
Minor (1.6.0)New tools; new optional inputs; new fields in compact responses; new /health or /tools fieldsfive track-version tools added in 1.6.0
Patch (1.4.1)Fixes, description wording, deployment changes with no visible surface changeCompact track serializer gains tag groups

Within a major version a tool you call today keeps its name, its inputs keep their names and types, and the fields in its compact response stay present.

Where to read the version

On initialize. Every MCP client receives the version in serverInfo, along with an instructions string that names the version, the REST API it targets and this policy. Clients that show server instructions to the model show this too.

{
  "serverInfo": { "name": "postal", "version": "1.6.0" },
  "instructions": "Postal MCP server 1.6.0 (REST API v1). Tool names and input schemas are stable within a major version; …"
}

Health endpoint. No authentication.

curl https://mcp.postal.music/health
{ "status": "ok", "service": "postal-mcp", "version": "1.6.0", "apiVersion": "v1" }

Tool catalog. The same fields precede the list of tools.

curl https://mcp.postal.music/tools
{ "version": "1.6.0", "apiVersion": "v1", "count": 39, "tools": [  ] }

apiVersion is the REST API version the tools are written against. A change there is always a major release of the server.

Deprecated tools

MCP has no built-in deprecation flag, so a tool being retired says so in its description:

[Deprecated — removed in 2.0.0, use get_library_stats instead] Get the total number of tracks in your library

A deprecated tool keeps working exactly as before. It stays for at least one minor release before the major version that removes it, and both the deprecation and the removal are listed in the changelog. Prefer the named replacement as soon as you see the prefix; assistants reading the catalog are told the same in the server instructions.

Full responses follow the REST contract

Read tools return compact objects by default (see Compact mode). Fields in compact objects are governed by the server version above. Passing detail: "full" returns the REST API's own payload, which is governed by the REST versioning rules instead: fields are only ever added within /api/v1.

Protocol versions

The server speaks the Model Context Protocol through the official TypeScript SDK and negotiates the protocol version with each client on initialize. It currently accepts 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 and 2024-10-07. Dropping an old protocol version is a minor release, since maintained clients always negotiate the newest one they share with the server.

Pinning

There is no way to pin the hosted server to an older release. If a workflow needs a surface that does not move at all, call the REST API directly: /api/v1 is frozen by contract, the MCP server is not.

On this page