Skip to main content
Glama
Jem-HR
by Jem-HR

send_template

Send pre-approved WhatsApp template messages with customizable parameters for consistent business communication.

Instructions

Send a WhatsApp template message.

Args: to: Phone number or WhatsApp ID name: Template name/ID language: Template language code (default: en) params: Optional template parameters (header, body, button components) reply_to_message_id: Message ID to reply to

Returns: Dictionary with success status and message ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYes
nameYes
languageNoen
paramsNo
reply_to_message_idNo

Implementation Reference

  • The main handler function for send_template tool. This async function sends WhatsApp template messages with parameters for recipient phone number, template name, language code, optional template parameters, and reply-to message ID. It calls the underlying pywa library's send_template method and returns a success/failure response with message details.
    async def send_template(
        to: str,
        name: str,
        language: str = "en",
        params: Optional[List[Dict[str, Any]]] = None,
        *,
        reply_to_message_id: Optional[str] = None,
    ) -> dict:
        """
        Send a WhatsApp template message.
        
        Args:
            to: Phone number or WhatsApp ID
            name: Template name/ID
            language: Template language code (default: en)
            params: Optional template parameters (header, body, button components)
            reply_to_message_id: Message ID to reply to
        
        Returns:
            Dictionary with success status and message ID
        """
        try:
            result = wa_client.send_template(
                to=to,
                name=name,
                language=language,
                params=params or [],
                reply_to_message_id=reply_to_message_id,
            )
            
            logger.info(f"Template '{name}' sent to {to}")
            message_id = getattr(result, 'id', str(result)) if result else None
            return {
                "success": True,
                "message_id": message_id,
                "template": name,
                "to": to,
            }
        except Exception as e:
            logger.error(f"Failed to send template: {str(e)}")
            return {"success": False, "error": str(e)}
  • The registration function that creates and registers the send_template tool with the MCP server. This function defines the tool's schema via function signature and decorators, making it available for use by the MCP client.
    def register_template_tools(mcp, wa_client: WhatsApp):
        """Register template-related tools."""
        
        @mcp.tool()
        async def send_template(
            to: str,
            name: str,
            language: str = "en",
            params: Optional[List[Dict[str, Any]]] = None,
            *,
            reply_to_message_id: Optional[str] = None,
        ) -> dict:
            """
            Send a WhatsApp template message.
            
            Args:
                to: Phone number or WhatsApp ID
                name: Template name/ID
                language: Template language code (default: en)
                params: Optional template parameters (header, body, button components)
                reply_to_message_id: Message ID to reply to
            
            Returns:
                Dictionary with success status and message ID
            """
            try:
                result = wa_client.send_template(
                    to=to,
                    name=name,
                    language=language,
                    params=params or [],
                    reply_to_message_id=reply_to_message_id,
                )
                
                logger.info(f"Template '{name}' sent to {to}")
                message_id = getattr(result, 'id', str(result)) if result else None
                return {
                    "success": True,
                    "message_id": message_id,
                    "template": name,
                    "to": to,
                }
            except Exception as e:
                logger.error(f"Failed to send template: {str(e)}")
                return {"success": False, "error": str(e)}
  • The schema/type definition for the send_template tool. Defined through Python type hints in the function signature, specifying that it takes a required string 'to' and 'name', an optional string 'language' with default 'en', optional list of dicts for 'params', and optional 'reply_to_message_id'. Returns a dictionary.
        to: str,
        name: str,
        language: str = "en",
        params: Optional[List[Dict[str, Any]]] = None,
        *,
        reply_to_message_id: Optional[str] = None,
    ) -> dict:

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/Jem-HR/pywa-mcp-server'

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