← Tool reference

search_shop_policies_and_faqs

A WebMCP tool distributed by Shopify. 99,664 of the sites we crawled carry a tool set that includes it (99.7% of vendor-distributed detections). This is a documented platform feature, not a vulnerability. Individual sites did not each choose it one by one.

What the tool declares

The description below is quoted as Shopify publishes it, in the distributed bundle:

Used to get facts about the store's policies, FAQ, or contact details. When the question is about specific policy kinds, set policy_types to those kinds; leave it unset for general FAQ questions. Some examples of questions you can ask are: - What is your return policy? (policy_types: ["refund"]) - What is your shipping policy? (policy_types: ["shipping"]) - What is your phone number? (policy_types: ["contact"]) - What are your hours of operation? (policy_types: ["contact"]) - Do you offer gift wrapping? (general FAQ, no specific policy kind — leave policy_types unset)
VendorShopify
Sites99,664 in 3 tool sets (64,429 + 31,153 + 4,082)
Declared by bundle versions0.1.0, 0.1.1, 1cd8a9f0, f427de6a
Read-only hintreadOnlyHint: true (the tool declares itself read-only)
Other hintsuntrustedContentHint: true

The wording of this description differs between bundle versions; the one above is from the newest version that declares the tool (f427de6a).

The input it asks for

FieldTypeRequiredDescription
querystringyesA natural language query. Searches FAQ pages and articles, and routes policies by keyword when policy_types is omitted.
policy_typesarraynoPolicy kinds to fetch, chosen from the user's question — e.g. ["refund"] for returns/exchanges, ["contact"] for phone/hours/address. Include every kind the question touches. Omit when no specific policy is relevant (e.g. a general FAQ question).

The full input schema, as declared:

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "A natural language query. Searches FAQ pages and articles, and routes policies by keyword when policy_types is omitted."
    },
    "policy_types": {
      "type": "array",
      "description": "Policy kinds to fetch, chosen from the user's question — e.g. [\"refund\"] for returns/exchanges, [\"contact\"] for phone/hours/address. Include every kind the question touches. Omit when no specific policy is relevant (e.g. a general FAQ question).",
      "items": {
        "type": "string",
        "enum": [
          "refund",
          "shipping",
          "privacy",
          "terms_of_service",
          "terms_of_sale",
          "subscription",
          "legal_notice",
          "contact"
        ]
      }
    }
  },
  "required": [
    "query"
  ]
}

What we checked

We read the tool set the page declares and we never invoke a tool. We fetched and analysed the distributed bundle that declares this tool, so these copies carry no unverified-implementation signal. What a tool does is inferred from its name and description, and we have not yet published an accuracy measurement for that inference. These are measured indicators, not audits. The crawl is a sample, not a census.

Vendor documentation: https://shopify.dev/docs/api/web-mcp

Other tools in the same sets

Source

Counts: sealed file 2026-10-11, sha256 25d8fb700a3a3e973ea18e6ac678d15762cce58a46690334defa5b05b9142e13. Declarations: captured from the vendor's distributed bundles, each checked against a recorded sha256. See the Shopify tool sets and what a tool declares and what a crawler cannot see.