Skip to main content
Glama
alsaltitop

customer-replies-mcp-server

by alsaltitop

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REPLIES_DATA_PATHNoPath to the templates JSON file. Defaults to ~/.customer-replies/templates.json

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
replies_list_categoriesA

List all reply categories with template counts per category and language.

Use this first to discover what kinds of customer replies exist (greeting, price_inquiry, repair_status, ready_for_pickup, warranty, complaint, etc.).

Returns: JSON array of { category, count, languages }.

replies_search_templatesA

Search customer reply templates by keyword, category, language, or tone.

Args:

  • query (string, optional): keyword matched against title, body, category, and tags (Arabic or English)

  • category (string, optional): exact category, e.g. 'repair_status', 'complaint'

  • language ('ar'|'en', optional)

  • tone ('formal'|'friendly', optional)

Returns: JSON array of template summaries { id, category, title, language, tone, variables, tags }. Use the id with replies_get_template or replies_compose_reply.

Examples:

  • "Find a reply for a delayed repair" -> category='delay_apology', language='ar'

  • "رد على شكوى" -> query='شكوى'

replies_get_templateA

Get one template by id, including the full body with {{variable}} placeholders.

Args:

  • id (string): template id from replies_search_templates

Returns: full template JSON { id, category, title, language, tone, body, variables, tags, createdAt, updatedAt }.

replies_compose_replyA

Render a ready-to-send customer reply by filling a template's {{variables}} with real values.

Args:

  • template_id (string): id from replies_search_templates

  • variables (object): map of variable name -> value, e.g. { "customer_name": "أحمد", "device_model": "iPhone 13", "status": "بانتظار قطعة الشاشة", "eta": "غداً الساعة 5 مساءً" }

Returns: { text, missingVariables }. If missingVariables is non-empty the reply still contains raw {{placeholders}} — fill them and call again, or ask the user for the values.

Example: compose a status update in Arabic for customer أحمد about his iPhone 13.

replies_whatsapp_linkA

Compose a reply (from a template + variables, or from raw text) and wrap it in a clickable https://wa.me deep link that opens WhatsApp with the message pre-filled, ready for a human to press send. Arabic and English text both work — the text is URL-encoded as UTF-8.

Args:

  • phone (string): customer's phone number, any formatting accepted (spaces, +, dashes) as long as it includes the country code, e.g. '+966 5x xxx xxxx'. Non-digit characters are stripped automatically.

  • template_id (string, optional): template id from replies_search_templates

  • variables (object, optional): variable name -> value map, used when template_id is given

  • text (string, optional): raw message text, used instead of template_id

Provide either template_id or text (not both, not neither).

Returns: { url, text, missingVariables }. This does NOT send anything — it only builds a link. Opening the link (or the human clicking it) still requires WhatsApp to be installed/logged in on that device; sending is a manual click, nothing is sent automatically.

replies_add_templateA

Create a new reply template. Placeholders in body use {{variable}} syntax; variables are auto-extracted from the body.

Args:

  • id (string): unique slug, e.g. 'promo-ar-1'

  • category (string): one of greeting, price_inquiry, diagnosis, repair_status, ready_for_pickup, delay_apology, warranty, complaint, unrepairable, data_disclaimer, part_unavailable, location_hours, payment, follow_up

  • title (string)

  • language ('ar'|'en')

  • tone ('formal'|'friendly')

  • body (string): reply text with {{placeholders}}

  • tags (string[], optional)

Returns: the created template JSON.

replies_update_templateA

Update fields of an existing template. Only provided fields change. If body changes, variables are re-extracted automatically.

Args:

  • id (string): existing template id

  • title, category, language, tone, body, tags: all optional

Returns: the updated template JSON.

replies_delete_templateA

Permanently delete a template by id. This cannot be undone.

Args:

  • id (string): template id

Returns: { deleted: boolean, id }.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/alsaltitop/customer-replies-mcp-server'

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