MCP tool-name rules (2025-11-25): do Sume's tool ids comply?
The MCP 2025-11-25 spec says tool names should be 1-128 characters from A-Z, a-z, 0-9, underscore, hyphen and dot. Sume's longest documented id is 36.

Yes. The MCP 2025-11-25 tools page says names SHOULD be 1 to 128 characters and SHOULD use only ASCII letters, digits, underscore, hyphen and dot. Sume's live ids use letters, digits, underscores and a few hyphens, and the longest one in the documented inventory, avatar-video-previews_generate_video, is 36 characters.
What the spec says
The rules are SHOULD, not MUST, and the spec adds that names are case-sensitive, should not contain spaces, commas or other special characters, and should be unique within a server. Its valid examples include getUser, DATA_EXPORT_v2 and admin.tools.list.
How Sume's ids line up
Sume's hosted MCP uses underscore ids such as tools_list and generate_image. The server canonicalizes a dot to an underscore on each call, so dotted aliases like tools.list also work. A hyphen appears inside a resource prefix, as in image-models_list.
I counted the longest id from the tools-and-gates inventory; call tools_list on a live session for the current set, because that page tells you not to assume parity with the HTTP API.
| Rule | Spec 2025-11-25 | Sume example |
|---|---|---|
| Length | 1 to 128 characters | avatar-video-previews_generate_video, 36 |
| Letters and digits | A-Z, a-z, 0-9 | generate_image |
| Separators | underscore, hyphen, dot | image-models_list, tools.list alias |
| Case | Case-sensitive | Use lowercase ids as listed |
What this does not prove
Passing the spec's name rules does not mean every client accepts every name. Clients can add their own limits. If a client rejects or truncates a name, the failing client is the thing to check, not the Sume id.
Sources
Related posts
More in Developers
- Measure softening and colour creep across AI edit passes in Pillow
Test the no-drift claim on your own photos: edge sharpness and a white-patch colour reading for each pass of an edit chain, in short Python with Pillow.
- Migrate a real-time avatar prototype to Sume async jobs: what changes
Moving from a live avatar session to Sume means replacing a stream with submit, poll and fetch. The code changes, the UX changes, and a Node example that runs.
- Model an AI generation job as a state machine in your database
A schema and update rule for tracking Sume jobs: five statuses, sticky terminal states, a separate webhook delivery column, and the idempotency key on the row.
- Move captions on an avatar video: design.placement and anchor_ratio
Inline avatar captions take no design overrides. To lift the caption line off the platform buttons, re-burn with the standalone job. Fields, price, example.
Written by Sume