Sume MCP tool_name_typo: avatar_image_to_video_create is a typo

avatar_image_to_video_create gives tool_not_found; the real name is avatar-image-to-video_create. Sume sends did_you_mean and a tools_schema next_step.

4 min readSume
All posts

Sume tool names are matched literally, and only a dot is folded to an underscore. Some tools carry hyphens, such as avatar-image-to-video_create, so a model that writes avatar_image_to_video_create gets tool_not_found. The error now carries did_you_mean and a next_step calling tools_schema with the correct name; it is a spelling miss, not a missing capability.

What the error contains

When the requested name differs from a catalog name only in hyphen or underscore punctuation, the server enriches the error. You get the suggested name, three next steps, a next_step pointing at tools_schema for the suggested tool, an adjustments entry with the from and to names, and a recovery object with the code tool_name_typo. The hint reads: call the suggested tool instead of the requested one.

Tool-name errors on hosted Sume MCP (read 2026-10-05 against the Sume codebase)
SituationWhat you getAction
Name differs only by hyphen or underscoretool_not_found, did_you_mean, recovery tool_name_typocall the suggested name
Name does not existtool_not_foundread tools_list for the real catalog
Tool hidden by scopeinsufficient_scope, required_scope mcp:writegrant write or use a different credential

Why the model gets it wrong

Names in Sume's catalog follow the resource, so a tool for image-to-video on avatars is avatar-image-to-video_create: hyphens inside the resource, one underscore before the verb. Models normalize toward snake case, and some clients add their own prefix on top. Pin the spelling by reading tools_list at session start, as the progressive discovery post describes, and give the agent that list as its only source of names.

Handle it in the client

Follow the suggestion once, then continue. This works on any error that carries did_you_mean.

def corrected_name(error: dict):
    names = error.get('did_you_mean') or []
    return names[0] if names else None

err = {'code': 'tool_not_found',
       'did_you_mean': ['avatar-image-to-video_create']}
print(corrected_name(err))
print(corrected_name({'code': 'tool_not_found'}))

Limits

The suggestion only covers punctuation differences. A name that is wrong in other ways gets the plain error, and for that the answer is tools_list. Do not claim that a capability is missing before you have read the catalog; the Agents SDK post shows another client that surfaces the hint.

The failure this prevents

A bare tool_not_found reads the same as a product that does not exist, and that is the reading that ends runs. The code comment records a case where a probe for avatar_image_to_video_create came back not found, the agent wrote that the run was blocked, and it had already fetched the correct hyphenated schema a few seconds earlier. Nothing was down. The tool had been in the catalog for weeks. The fix was to ship the correction inside the error the agent reads.

Checklist before you ship

  • Take tool names from tools_list, never from memory or from a similar product.
  • Follow did_you_mean and next_step before writing anything about a missing tool.
  • Remember that only a dot is folded to an underscore, not a hyphen.
  • Do not report a run blocked on a spelling miss.

Sources

Related posts

More in Agents

All Agents posts

Written by Sume