Skip to main content
Glama

Register a UTCP Manual

register_manual

Register a new tool provider using a manual call template. This enables the provider to be discovered and called through the UTCP-MCP Bridge.

Instructions

Registers a new tool provider by providing its call template.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
manual_call_templateYesThe call template for the UTCP Manual endpoint.

Implementation Reference

  • index.ts:55-67 (handler)
    Handler for the register_manual MCP tool. Registers a new tool provider via UTCP client's registerManual method.
    mcp.registerTool("register_manual", {
        title: "Register a UTCP Manual",
        description: "Registers a new tool provider by providing its call template.",
        inputSchema: { manual_call_template: CallTemplateSchema.describe("The call template for the UTCP Manual endpoint.") },
    }, async (input) => {
        const client = await initializeUtcpClient();
        try {
            const result = await client.registerManual(input.manual_call_template as any);
            return { content: [{ type: "text", text: JSON.stringify(result) }] };
        } catch (e: any) {
            return { content: [{ type: "text", text: JSON.stringify({ success: false, error: e.message }) }] };
        }
    });
  • Handler for the register_manual MCP tool (alternate TS bridge). Registers a new tool provider via UTCP client's registerManual method.
    mcp.registerTool("register_manual", {
        title: "Register a UTCP Manual",
        description: "Registers a new tool provider by providing its call template.",
        inputSchema: { manual_call_template: CallTemplateSchema.describe("The call template for the UTCP Manual endpoint.") },
    }, async (input) => {
        const client = await initializeUtcpClient();
        try {
            const result = await client.registerManual(input.manual_call_template as any);
            return { content: [{ type: "text", text: JSON.stringify(result) }] };
        } catch (e: any) {
            return { content: [{ type: "text", text: JSON.stringify({ success: false, error: e.message }) }] };
        }
    });
  • Python FastMCP handler for register_manual tool. Registers a new tool provider via UTCP client's register_manual method.
    @mcp.tool()
    async def register_manual(manual_call_template: CallTemplate) -> Dict[str, Any]:
        """Register a new tool provider with the UTCP client.
        
        Args:
            manual_call_template: Call template to the endpoint of a UTCP Manual
            
        Returns:
            Dictionary with success status and list of registered tools
        """
        client = await initialize_utcp_client()
        
        try:
            tools = await client.register_manual(manual_call_template)
            
            return {
                "success": True,
                "manual_name": manual_call_template.name,
                "tools_registered": len(tools),
                "tool_names": [tool.name for tool in tools]
            }
        except Exception as e:
            return {
                "success": False,
                "error": str(e)
            }
  • Input schema for register_manual uses CallTemplateSchema for the manual_call_template parameter.
    inputSchema: { manual_call_template: CallTemplateSchema.describe("The call template for the UTCP Manual endpoint.") },
  • index.ts:55-55 (registration)
    Registration of the register_manual MCP tool using McpServer.registerTool.
    mcp.registerTool("register_manual", {
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as idempotency, side effects (e.g., overwriting existing registrations), or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded. However, it sacrifices detail; but for a simple tool, this is acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema or annotations, the description should provide more context (e.g., what happens on success, prerequisite steps). It only covers the bare minimum.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, so the bar is lower. The description adds no extra meaning beyond the schema's 'The call template for the UTCP Manual endpoint.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Registers a new tool provider' and specifies the mechanism 'by providing its call template'. This distinguishes it from sibling tools like deregister_manual (opposite) and list_tools (listing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives (e.g., when is registration needed? What about updating?). It only states the action without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/universal-tool-calling-protocol/utcp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server