Storefront MCP search_shop_catalog tool ignores category filter

## Issue Description

The `category` filter in Shopify’s MCP `search_shop_catalog` tool appears to be ignored or not working correctly. We’ve tested multiple ID formats and combinations, but the filter doesn’t seem to filter products as expected.

## What We’ve Tried

### 1. Collection ID Formats

**Test 1: Full Collection GID**

```json

{

“filters”: [

{

“category”: {

“id”: “gid://shopify/Collection/294971834481”

  }

}

]

}

```

**Result:** Returns 8 products, but includes products NOT in the collection (e.g., ASICS running shoes when filtering for “formal shoes” collection)

**Test 2: Collection ID Number Only**

```json

{

“filters”: [

{

“category”: {

“id”: “294971834481”

  }

}

]

}

```

**Result:** Returns 10 products (paginated), same as no filter - filter appears ignored

**Test 3: Collection as String (Invalid Format)**

```json

{

“filters”: [

{

“category”: “gid://shopify/Collection/294971834481”

}

]

}

```

**Result:** Error - “The property ‘#/filters/0/category’ of type string did not match the following type: object”

### 2. TaxonomyCategory ID Formats

**Test 4: Extracted TaxonomyCategory ID**

```json

{

“filters”: [

{

“category”: {

“id”: “aa-8-10”

  }

}

]

}

```

**Result:** Returns 20 products (should be 6), same as no filter - filter appears ignored

**Test 5: Full TaxonomyCategory GID**

```json

{

“filters”: [

{

“category”: {

“id”: “gid://shopify/TaxonomyCategory/aa-8-10”

  }

}

]

}

```

**Result:** Returns 20 products (should be 6), same as no filter - filter appears ignored

## Key Findings

1. **Filter Schema:** The tool schema shows `category` filter exists and expects `{“category”: {“id”: “string”}}` format

2. **Filter Ignored:** When query is empty, category filter appears to be completely ignored - returns same products as no filter

3. **Collection vs TaxonomyCategory:** Both Collection IDs and TaxonomyCategory IDs don’t work reliably

4. **Available Filters:** The `available_filters` response from MCP only includes “Availability” and “Price” - no category filters are returned

## Expected Behavior

When filtering by category, we expect:

- Products filtered to only those in the specified category/collection

- Consistent results regardless of query parameter

- Category filters to appear in `available_filters` response

## Actual Behavior

- Category filter is ignored when query is empty

- Category filter may have partial effect with query, but results are incorrect

- No category filters appear in `available_filters`

- Different ID formats return different (incorrect) results

Environment

- Shopify Storefront MCP endpoint: `https://{shop}.myshopify.com/api/mcp`

- Tool: `search_shop_catalog`

- Collection ID tested: `294971834481` (should contain 8 “formal shoes” products)

- TaxonomyCategory ID tested: `aa-8-10` (should contain 6 products)

## Questions

1. What is the correct format for category filter IDs?

2. Should Collections use a different filter type than TaxonomyCategory?

3. Why doesn’t the category filter work with empty queries?

4. Should category filters appear in `available_filters` response?

5. Is there a way to filter by Collection ID directly?

i’ve also hit this one in building an app recently and rounding back to it now as kinda ignored collections part of the app until today

we wanted to narrow context of the query to the collection we are in and was not getting what was expected using MCP

Is there a way to filter by Collection ID directly?
I didn’t find one which worked properly

what I’m going to test is

  1. Sitewide AI search → returns product handles

  2. Parallel fetch (all at once):
    /collections/{handle}/products/{handle}.json

    200 → in collection :white_check_mark: keep
    404 → not in collection :cross_mark: discard

  3. Render filtered products

In theory that works. I’m not building with filters aside from in-stock which behaves fine

the collection side of things is just a nice to have feature so not going to give too much thought but it was not doing what I expected and nothing I did was narrowing search to desired collection