Overview
UMCP uses a three-segment naming system to expose unified tools from multiple providers without naming conflicts. Every tool exposed by UMCP follows the pattern:Naming Structure
Segment Requirements
Each segment in the three-part name must match the pattern[a-zA-Z0-9_-]+:
- Allowed: Letters (a-z, A-Z), numbers (0-9), underscores (
_), and hyphens (-) - Not allowed: Dots (
.), spaces, or special characters
config.ts:9:
Example Names
brave and tavily can expose a search tool without conflict because they’re in different provider namespaces.
Configuration Validation
Category Names
Category names are validated as namespace segments. Fromconfig.ts:90-100:
Provider Names
Provider names must also follow the namespace segment rules. Fromconfig.ts:30-36:
Tool Aliases
When you create tool mappings with aliases, those aliases must also be valid namespace segments. Fromconfig.ts:16-23:
Tool Discovery and Naming
UMCP discovers tools from upstream providers and applies namespacing automatically.Auto-Discovery Mode
When notools array is specified in a provider configuration, UMCP auto-discovers all tools. From toolRegistry.ts:79-96:
Explicit Mapping Mode
When you provide atools array, you can control which tools are exposed and use aliases. From toolRegistry.ts:41-77:
Collision Detection
UMCP enforces unique tool names across all providers. FromtoolRegistry.ts:118-128:
How Collisions Occur
A collision happens when two providers generate the same final tool name. This can occur if:- Two providers in the same category have the same
name - Two tools in different providers have identical category, provider name, and tool segment combinations
Error Message
When a collision is detected:Segment Validation Errors
TheensureToolSegment function validates all namespace segments. From toolRegistry.ts:21-39:
Invalid Segment Examples
my.tool- Contains a dotmy tool- Contains a spacemy@tool- Contains a special character- “ - Empty string
Best Practices
- Use descriptive categories: Group related providers together (e.g.,
web_search,project_mgmt,data_analysis) - Keep provider names simple: Use the service name (e.g.,
brave,linear,github) - Use aliases for clarity: If an upstream tool name is unclear or invalid, provide a better alias
- Avoid collisions: Ensure each provider in a category has a unique name