Skip to main content
Glama

Join the loyalty programme

join_loyalty

Loyalty sign-up for a guest. The guest must confirm their own e-mail, so joining happens on the restaurant's menu (My thmenu → Loyalty); this tool answers with that instruction and never reveals whether an e-mail or phone is already enrolled. Requires an active agent_session_id.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "agent_session_id": "<agent_session_id>"
    },
    "name": "join_loyalty"
  }
}

Input Schema

NameRequiredDescriptionDefault
emailNoNot used for a lookup; the guest confirms their e-mail on the menu.
phoneNoNot used for a lookup.
display_nameNoNot used.
agent_session_idYesActive session id from start_order_session.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / display_name / description
      Previous value: -"Optional display name shown in the loyalty dashboard."New value: +"Not used."
    • changedInput schema / properties / email / description
      Previous value: -"Customer email (either email or phone required)."New value: +"Not used for a lookup; the guest confirms their e-mail on the menu."
    • changedInput schema / properties / phone / description
      Previous value: -"Customer phone in E.164 format (either email or phone required)."New value: +"Not used for a lookup."
  2. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: no e-mail or phone lookup occurs, enrollment status is deliberately never disclosed, and the caller receives an instruction string instead of a state change. The only residual gap is that the annotations declare readOnlyHint=false and idempotentHint=false for what the description portrays as a side-effect-free response, a tension the description does not reconcile.

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?

Three tight sentences, front-loaded with the purpose and followed by the constraint and the prerequisite. No filler, though the privacy clause and the session requirement could be ordered slightly better for scanning.

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

Completeness4/5

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

With no output schema, the description does the necessary work of saying what comes back (an instruction to use the menu) and what will not come back (enrollment status). The exact response shape and any error behavior for an invalid session are left unspecified, but the agent has enough to call it correctly.

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% and the schema itself states that email, phone, and display_name are unused, so the schema already carries the parameter meaning. The description adds only the session prerequisite, which the schema also documents; baseline 3 applies.

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

Purpose4/5

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

The description names the resource (loyalty sign-up) and immediately discloses that the tool does not actually perform the sign-up, but instead returns an instruction pointing the guest to the restaurant menu. That is a specific and honest statement of what the tool does, though it never names the obvious sibling (check_loyalty) for the status-checking case.

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

Usage Guidelines4/5

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

It establishes the context in which this tool applies (a guest wants to join loyalty) and the prerequisite (an active agent_session_id). It does not explicitly state when NOT to use it or point to check_loyalty as the alternative for enrollment questions, so the routing signal is implied rather than spelled out.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources