Skip to main content
Glama

MyHairMail Agent Tools

Check wig stock by colour

check_stock
Read-onlyIdempotent

Live availability of one wig or hairpiece style at MyHairMail, per colour, from the manufacturer's factory feed (not a nightly sync). Distinguishes backordered and discontinued colours, which the Shopify catalog reports as 'available' or omits. available_quantity is the exact number of units available now (0 when none). availability is one of in_stock | backordered (orderable now, ships when restocked; restock_eta_week given when known) | preorder (new style taking pre-orders: ships when it arrives; available_quantity is 0) | out_of_stock | discontinued (will not restock). Returns price_usd, compare_at_price_usd and a product_url to buy on myhairmail.com. With color: one product; without color: up to 12 colours (has_more=true means query a specific colour). Not found: did_you_mean styles, or supported_brands if the brand is not carried. When a colour is not buyable now, the response includes next_step naming the tool that finds an equivalent. Terms: https://mcp.myhairmailtools.com/terms

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": {
      "brand": "<brand>",
      "style": "<style>"
    },
    "name": "check_stock"
  }
}

Input Schema

NameRequiredDescriptionDefault
brandYesBrand name, e.g. 'Jon Renau', 'Raquel Welch', 'Belle Tress'
colorNoColor code or name, e.g. '12FS8' or 'Shaded Praline'. Optional; if omitted, returns per-color availability for up to 12 colors.
styleYesStyle name, e.g. 'Luna', 'Vesper'

Output Schema

NameRequiredDescriptionDefault
noteNo
matchYes
colorsNo
productNo
has_moreNo
retailerYes
next_stepNo
did_you_meanNo
supported_brandsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / colors / items / properties / availability / enum
      Previous value: -[
      -  "in_stock",
      -  "out_of_stock",
      -  "backordered",
      -  "discontinued"
      -]New value: +[
      +  "in_stock",
      +  "out_of_stock",
      +  "backordered",
      +  "discontinued",
      +  "preorder"
      +]
    • changedOutput schema / properties / product / properties / availability / enum
      Previous value: -[
      -  "in_stock",
      -  "out_of_stock",
      -  "backordered",
      -  "discontinued"
      -]New value: +[
      +  "in_stock",
      +  "out_of_stock",
      +  "backordered",
      +  "discontinued",
      +  "preorder"
      +]
  2. Changed2 schema fields changed
    • addedOutput schema / properties / colors / items / properties / available_quantity
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / product / properties / available_quantity
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "colors": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "availability": {
      +            "enum": [
      +              "in_stock",
      +              "out_of_stock",
      +              "backordered",
      +              "discontinued"
      +            ],
      +            "type": "string"
      +          },
      +          "brand": {
      +            "type": "string"
      +          },
      +          "color": {
      +            "type": "string"
      +          },
      +          "compare_at_price_usd": {
      +            "type": "number"
      +          },
      +          "eta_display": {
      +            "type": "string"
      +          },
      +          "price_usd": {
      +            "type": "number"
      +          },
      +          "product_url": {
      +            "type": "string"
      +          },
      +          "restock_eta_week": {
      +            "type": "string"
      +          },
      +          "ships_today_cutoff": {
      +            "type": "string"
      +          },
      +          "style": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "brand",
      +          "style",
      +          "availability",
      +          "price_usd",
      +          "product_url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "did_you_mean": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "brand": {
      +            "type": "string"
      +          },
      +          "color": {
      +            "type": "string"
      +          },
      +          "style": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "brand",
      +          "style"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "has_more": {
      +      "type": "boolean"
      +    },
      +    "match": {
      +      "type": "boolean"
      +    },
      +    "next_step": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "type": "string"
      +        },
      +        "tool": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tool",
      +        "reason"
      +      ],
      +      "type": "object"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "product": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "availability": {
      +          "enum": [
      +            "in_stock",
      +            "out_of_stock",
      +            "backordered",
      +            "discontinued"
      +          ],
      +          "type": "string"
      +        },
      +        "brand": {
      +          "type": "string"
      +        },
      +        "color": {
      +          "type": "string"
      +        },
      +        "compare_at_price_usd": {
      +          "type": "number"
      +        },
      +        "eta_display": {
      +          "type": "string"
      +        },
      +        "price_usd": {
      +          "type": "number"
      +        },
      +        "product_url": {
      +          "type": "string"
      +        },
      +        "restock_eta_week": {
      +          "type": "string"
      +        },
      +        "ships_today_cutoff": {
      +          "type": "string"
      +        },
      +        "style": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "brand",
      +        "style",
      +        "availability",
      +        "price_usd",
      +        "product_url"
      +      ],
      +      "type": "object"
      +    },
      +    "retailer": {
      +      "type": "string"
      +    },
      +    "supported_brands": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "match",
      +    "retailer"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description still adds real behavioral detail: data freshness versus catalog sync, the exact meaning of available_quantity, the full availability enum including backorder/preorder/discontinued semantics, and the 12-colour cap with has_more signalling. That is materially more than the annotations provide.

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?

Front-loaded with the core purpose and data-source caveat, and nearly every sentence carries information the agent needs. It is dense to the point of being a wall of text, and the return-field enumeration overlaps the output schema, but there is little outright waste.

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

Completeness5/5

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

Covers what an agent needs to call this correctly and interpret the result: freshness caveat, enum meanings, colour-scoping behavior, pagination via has_more, and the fallback when a style or brand is not found. The presence of an output schema makes the return-value description a bonus rather than a gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns a bump by explaining the branching semantics of color: one product when supplied, up to 12 colours when omitted, and has_more=true meaning the caller must re-query a specific colour. It also describes the not-found path (did_you_mean, supported_brands).

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?

States a specific verb, resource and scope: live per-colour availability of one wig/hairpiece style at MyHairMail, sourced from the manufacturer's factory feed rather than a nightly sync. The scope is unambiguous, but it never names its siblings (color_crossmatch, get_restock_eta) to draw the boundary, which is what separates a 4 from a 5.

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?

Gives strong context for when this tool is the right choice: it is live feed data that corrects the Shopify catalog's false 'available' and omissions, so an agent knows to prefer it when accuracy matters. It stops short of explicit exclusions or naming the alternative tool for restock ETAs or cross-brand matching.

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