# MRC Data — China's Apparel Supply Chain Infrastructure (remote · api.meacheal.ai)

China's apparel supply chain data for AI: 1,000+ suppliers, 350+ fabrics, 170+ clusters.

- Trust score: 75/100 (medium)
- Change this week: +8
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `api.meacheal.ai`: 75/100 (this document), [markdown](https://verifymcp.io/servers/ai-meacheal-mrc-data/api.md), [page](https://verifymcp.io/servers/ai-meacheal-mrc-data/api)

## Channel facts

- Endpoint: `https://api.meacheal.ai/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `2.2.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 62/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 15160 tokens (~583/item across 26 items; 20 tools + 6 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http ai-meacheal-mrc-data https://api.meacheal.ai/mcp
```

### Codex

```toml
[mcp_servers.ai-meacheal-mrc-data]
url = "https://api.meacheal.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-meacheal-mrc-data": {
      "type": "remote",
      "url": "https://api.meacheal.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-meacheal-mrc-data --url https://api.meacheal.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-meacheal-mrc-data:
    url: "https://api.meacheal.ai/mcp"
```

### Other

```json
{
  "mcpServers": {
    "ai-meacheal-mrc-data": {
      "type": "http",
      "url": "https://api.meacheal.ai/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 73, +4)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 69, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 67, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 66)

First indexed and scored.

## MCP tools (20)

### `search_suppliers` (~1208 tokens)

Search Suppliers

Search verified Chinese apparel manufacturers, apparel factories, and clothing suppliers.

USE WHEN user asks:
\- "find me a clothing manufacturer in China / Guangdong / Zhejiang"
\- "who makes [t-shirts / suits / denim / activewear] in China"
\- "I need a BSCI / OEKO-TEX certified apparel factory"
\- "looking for OEM / ODM apparel supplier with MOQ < N"
\- "find factories with production capacity > N pieces/month"
\- "list factories that export to the US / EU / Japan"
\- "show me trading companies in Yiwu / Shenzhen / Shanghai"
\- "which suppliers in [province] make [product]" (follow-up drill-down)
\- "give me another page of suppliers" (pagination via offset)
\- "who can produce knit tops under 300 MOQ"
\- "search by company name 新鑫 / Xinxin / Texhong"
\- "find workshop-scale suppliers for small batch sampling"
\- "搜供应商 / 找服装厂 / 找制衣厂 / 找代工厂 / 找外贸公司"
\- "帮我在[省份]找[品类]工厂，产能至少 N 件/月"

Filters: province, city, factory type (factory/trading_company/workshop), product category,
minimum monthly capacity, compliance status, quality score. Returns paginated supplier list
with company name, location, monthly capacity (lab-verified), compliance, quality score.

WORKFLOW: Primary entry point for supplier discovery. search_suppliers → get_supplier_detail (for full 60+ field profile) OR compare_suppliers (side-by-side for up to 10 IDs) OR find_alternatives (diversify the pool) OR check_compliance (verify export readiness) OR get_supplier_fabrics (see their fabric catalog).
RETURNS: { has_more: boolean, available_dimensions: string[], data: [{ supplier_id, company_name_cn, company_name_en, type, province, city, product_types, quality_score, verified_dims: "5/8", coverage_pct }] }

EXAMPLES:
• User: "Find BSCI-certified denim factories in Guangdong with MOQ under 500"
  → search_suppliers({ province: "Guangdong", product_type: "denim", compliance_status: "compliant", limit: 10 })
• User: "Who makes activewear for Lululemon in China?"
  → search_suppliers({ product_type: "activewear" }) — then…

Input parameters:

- `city` (string): City name
- `compliance_status` (string): Compliance status filter: compliant / partially_compliant / non_compliant
- `data_confidence` (string): Data quality filter: verified / partially_verified / unverified
- `limit` (integer): Page size: number of records to return (1-50, default 10)
- `min_capacity` (integer): Minimum monthly production capacity (pieces)
- `min_quality_score` (number): Minimum quality score 1-10
- `offset` (integer): Pagination offset: skip this many records before returning results (default 0)
- `product_type` (string): Product category keyword (e.g. 西装 suits, 女装 womenswear, 牛仔 denim, 运动服 activewear, t-shirt, 衬衫 shirts)
- `province` (string): Province in China (e.g. 广东 Guangdong, 浙江 Zhejiang, 江苏 Jiangsu, 福建 Fujian, 山东 Shandong)
- `query` (string): Search by company name — Chinese (广州新鑫) or English (Xinxin Garments)
- `type` (string): Supplier type
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `get_supplier_detail` (~848 tokens)

Get Supplier Detail

Get the complete profile of a single Chinese apparel supplier by ID.

PREREQUISITE: You MUST first call search_suppliers or recommend_suppliers to obtain a valid supplier_id. Do not guess IDs.

USE WHEN user asks:
\- "tell me more about [supplier]" / "show full details for sup_XXX"
\- "what certifications does this factory hold"
\- "what's their monthly capacity / worker count / equipment list"
\- "can [supplier] export to US / EU / Japan / Korea"
\- "give me the full profile / dossier / fact sheet for [supplier]"
\- "how verified is this supplier's data" (returns coverage_pct + 8 dimensions)
\- "what's their ownership type — own factory or broker"
\- "show payment terms / lead time / sample turnaround for sup_XXX"
\- "这家供应商具体情况 / 详细资料 / 工厂档案"
\- "[供应商] 的合规 / 认证 / 出口资质"

Returns 60+ fields including: monthly capacity (lab-verified), equipment list, certifications (BSCI/OEKO-TEX/GRS/SA8000), ownership type (own factory vs subcontractor vs broker), market access (US/EU/JP/KR), chemical compliance (ZDHC/MRSL), traceability depth, and verified_dimensions breakdown showing exactly which of the 8 dimensions (basic_info, geo_location, production, compliance, market_access, export, financial, contact) have data.

WORKFLOW: search_suppliers → pick supplier_id → get_supplier_detail → optionally get_supplier_fabrics (fabric catalog) OR check_compliance (market export readiness) OR find_alternatives (backup pool) OR compare_suppliers (side-by-side evaluation).
RETURNS: { data: { supplier_id, company_name_cn/en, type, province, city, product_types, worker_count, certifications, compliance_status, quality_score, verified_dimensions: { verified_dims: "5/8", coverage_pct, dimensions: {...} } } }

EXAMPLES:
• User: "Show me the full profile for sup_001"
  → get_supplier_detail({ supplier_id: "sup_001" })
• User: "What certifications does Texhong hold and can they export to EU?"
  → get_supplier_detail({ supplier_id: "sup_texhong_042" }) — then inspect certifications + eu_market_ready; follow…

Input parameters:

- `supplier_id` (string, required): Supplier ID from search_suppliers results, e.g. sup_001
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `search_fabrics` (~1161 tokens)

Search Fabrics

Search the Chinese fabric and textile database with lab-tested specifications.

USE WHEN user asks:
\- "find me a [cotton / polyester / nylon / wool / linen] fabric for [t-shirts / jeans / suits]"
\- "I need 180gsm jersey knit with verified composition"
\- "fabrics under N RMB/meter for womenswear"
\- "compare lab-tested fabric weight across suppliers"
\- "show me functional fabrics for activewear / sportswear"
\- "what woven fabrics work for shirting"
\- "list organic / GOTS / recycled fabrics"
\- "I want heavyweight denim above 12 oz"
\- "fabrics with stretch / spandex content 2-5%"
\- "give me another page" (pagination via offset)
\- "lab-verified composition for [product]" (quality check)
\- "找面料 / 搜面料 / 查面料 / 找布料 / 打样面料"
\- "我要做 T 恤，帮我找克重 180-220 的针织面料"

Filters: category (woven/knit/nonwoven/leather/functional), weight range (gsm),
composition keyword, target apparel type, max price. Returns paginated fabric list
with name, lab-tested weight, lab-tested composition, price range, suitable
apparel, and data confidence level.

WORKFLOW: Primary entry point for fabric discovery. search_fabrics → get_fabric_detail (full 30+ lab-test fields) OR get_fabric_suppliers (compare supplier prices for same fabric) OR estimate_cost (budget the product).
RETURNS: { has_more: boolean, available_dimensions: ["basic_info","composition","physical_properties","lab_test","commercial"], data: [{ fabric_id, name_cn, category, subcategory, declared_weight_gsm, declared_composition, price_range_rmb, suitable_for, verified_dims: "4/5", coverage_pct }] }

EXAMPLES:
• User: "Find 180-220gsm cotton jersey for t-shirts under 35 RMB/m"
  → search_fabrics({ category: "knit", min_weight_gsm: 180, max_weight_gsm: 220, composition: "cotton", suitable_for: "t-shirt", max_price_rmb: 35 })
• User: "I need stretch denim for women's jeans"
  → search_fabrics({ category: "woven", composition: "spandex", suitable_for: "denim" })
• User: "帮我找适合做衬衫的梭织面料，棉 60% 以上"
  → search_fabrics({ category: "woven", composition:…

Input parameters:

- `category` (string): Fabric category: woven (梭织) / knit (针织) / nonwoven (无纺) / leather (皮革) / fur (毛皮) / functional (功能性)
- `composition` (string): Fiber composition keyword (e.g. cotton, polyester, spandex, nylon, wool, linen, 棉, 涤纶)
- `limit` (integer): Page size: number of records to return (1-50, default 10)
- `max_price_rmb` (number): Maximum price in RMB per meter
- `max_weight_gsm` (number): Maximum fabric weight in grams per square meter
- `min_weight_gsm` (number): Minimum fabric weight in grams per square meter
- `offset` (integer): Pagination offset: skip this many records before returning results (default 0)
- `suitable_for` (string): Target apparel keyword (e.g. T恤 t-shirt, 衬衫 shirt, 牛仔 denim, 连衣裙 dress)
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `get_fabric_detail` (~741 tokens)

Get Fabric Detail

Get the complete lab-tested record of a single fabric by ID.

PREREQUISITE: You MUST first call search_fabrics to obtain a valid fabric_id. Do not guess IDs.

USE WHEN user asks:
\- "show me the full specs for fabric FAB-W007"
\- "what's the color fastness / shrinkage / pilling grade on [fabric]"
\- "lab-test data for [fabric]" / "实测数据"
\- "compare declared vs lab-measured weight for FAB-XXX"
\- "what's the MOQ / lead time / price for this fabric"
\- "tensile strength / tear strength / hand feel / drape / stretch recovery"
\- "can you confirm composition % on lab test for FAB-XXX"
\- "详细参数 / 完整档案 / AATCC 数据 / 检测报告"
\- "这块面料的缩水率 / 色牢度 / 起球等级"
\- "follow-up: 'show me the full record for the first fabric in that list'"

Returns 30+ fields: lab-tested weight, lab-tested composition, color fastness (wash/light/rub per AATCC 61/16/8), shrinkage (warp/weft per AATCC 135), tensile/tear strength, pilling grade, hand feel, drape, stretch/recovery, MOQ, lead time, price range.

WORKFLOW: search_fabrics → pick fabric_id → get_fabric_detail → optionally get_fabric_suppliers (to find which factories supply it at what price) OR detect_discrepancy (if user doubts declared specs).
RETURNS: { data: { fabric_id, name_cn/en, category, all lab-test fields, verified_dimensions: { basic_info, composition, physical_properties, lab_test, commercial } } }

EXAMPLES:
• User: "Show me all lab-test data for FAB-W007"
  → get_fabric_detail({ fabric_id: "FAB-W007" })
• User: "What's the shrinkage and pilling grade on the second fabric I just saw?"
  → get_fabric_detail({ fabric_id: "<the_id_from_search>" })
• User: "我要 FAB-K023 的完整实测档案"
  → get_fabric_detail({ fabric_id: "FAB-K023" })

ERRORS & SELF-CORRECTION:
• "Fabric not found" → the fabric_id is invalid. Re-run search_fabrics and use an ID from the fresh results.
• Field returns null → that test wasn't performed on this fabric. Check verified_dimensions.lab_test to see what IS tested before asserting anything.
• "not available" → unverified fabric in…

Input parameters:

- `fabric_id` (string, required): Fabric ID from search_fabrics results, e.g. FAB-W007
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `search_clusters` (~900 tokens)

Search Industrial Clusters

Search Chinese apparel industrial clusters and textile markets.

USE WHEN user asks:
\- "where is China's [denim / suit / women's wear / underwear] manufacturing concentrated"
\- "what is the largest [silk / cashmere / down jacket] industrial cluster in China"
\- "industrial cluster comparison Humen vs Shaoxing vs Haining vs Zhili"
\- "recommend an industrial cluster for sourcing [product]"
\- "where should I set up a sourcing office for [category]"
\- "list mega clusters for [category]"
\- "fabric markets in Zhejiang / Jiangsu"
\- "accessories / trim / zipper / button markets in China"
\- "which province dominates [category] exports"
\- "follow-up: 'tell me more about Humen's cluster scale'"
\- "服装产业带 / 面料市场 / 产业集群 / 纺织集群 / 辅料市场"
\- "做 [品类] 应该去哪个产业带 / 集群推荐"

Famous clusters this database covers include: Humen (Guangdong, womenswear), Shaoxing
Keqiao (Zhejiang, fabric mega-market), Haining (Zhejiang, leather), Zhili (Zhejiang,
children's wear), Shengze (Jiangsu, silk), Shantou (Guangdong, underwear), Puning
(Guangdong, jeans), Jinjiang (Fujian, sportswear), and more.

Returns paginated cluster list with name, location, specialization, scale, supplier
count, average rent and labor cost, and key advantages/risks.

WORKFLOW: Cluster discovery entry point. search_clusters → compare_clusters (side-by-side up to 10 cluster_ids) OR get_cluster_suppliers (list factories in that cluster) OR analyze_market (broader market view).
RETURNS: { has_more: boolean, data: [{ cluster_id, name_cn, name_en, type, province, city, specialization, scale, supplier_count, labor_cost_avg_rmb }] }

EXAMPLES:
• User: "Where are the biggest denim clusters in China?"
  → search_clusters({ specialization: "denim", scale: "mega" })
• User: "Show me fabric markets in Zhejiang"
  → search_clusters({ province: "Zhejiang", type: "fabric_market" })
• User: "童装产业带有哪些"
  → search_clusters({ specialization: "童装" })

ERRORS & SELF-CORRECTION:
• Empty data array → try in order: (1) drop scale filter, (2) broaden specia…

Input parameters:

- `limit` (integer): Page size: number of records to return (1-50, default 10)
- `offset` (integer): Pagination offset: skip this many records before returning results (default 0)
- `province` (string): Province in China (e.g. Guangdong, Zhejiang, Jiangsu, Fujian, Shandong)
- `scale` (string): Cluster scale: mega / large / medium / small
- `specialization` (string): Primary specialization keyword (e.g. 牛仔 denim, 女装 womenswear, 童装 childrenswear, 内衣 underwear, 运动服 sportswear)
- `type` (string): Cluster type: fabric_market (面料市场) / garment_manufacturing (服装制造) / accessories (辅料) / integrated (综合)
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `compare_clusters` (~612 tokens)

Compare Industrial Clusters

Compare multiple Chinese apparel industrial clusters side-by-side on key metrics.

PREREQUISITE: You MUST first call search_clusters to obtain valid cluster_ids. Do not guess IDs.

USE WHEN user asks:
\- "compare Humen vs Shishi vs Jinjiang"
\- "which cluster has lower labor cost — Humen or Dongguan"
\- "side-by-side: Haining vs Xintang for denim"
\- "evaluate 3 clusters for my sportswear line"
\- "对比 [产业带1] 和 [产业带2]" / "哪个集群更适合 [品类]"
\- "rank these clusters by supplier count"
\- "which cluster has the highest scale for womenswear"
\- "follow-up: 'now compare the top 3 clusters you just listed'"

Returns full records for each cluster so they can be compared on labor cost, rent, supplier count, scale, specializations, advantages, and risks.

WORKFLOW: search_clusters → collect cluster_ids → compare_clusters → optionally get_cluster_suppliers on the winner to list factories in that specific cluster.
RETURNS: { count: number, data: [full cluster objects with all fields] }

EXAMPLES:
• User: "Compare Humen, Shishi, and Jinjiang for sportswear sourcing"
  → compare_clusters({ cluster_ids: ["humen_women", "shishi_casual", "jinjiang_sportswear"] })
• User: "I want to evaluate Keqiao vs Zhili fabric markets"
  → compare_clusters({ cluster_ids: ["keqiao_fabric", "zhili_children"] })
• User: "对比虎门、石狮、晋江三个产业带"
  → compare_clusters({ cluster_ids: ["humen_women", "shishi_casual", "jinjiang_sportswear"] })

ERRORS & SELF-CORRECTION:
• "Too many IDs (>10)" → split into batches of 10 and aggregate results in your response.
• Fewer results than IDs sent → missing IDs were silently skipped (invalid cluster_id). Re-run search_clusters to verify IDs.
• Empty data → all IDs were invalid. Re-run search_clusters and try again with fresh IDs.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call with guessed cluster_ids — always resolve them via search_clusters first. Do not use to list factories in a cluster — use get_cluster_suppliers. Do not compare > 10 clusters in…

Input parameters:

- `cluster_ids` (array, required): Array of cluster IDs to compare, max 10
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `detect_discrepancy` (~820 tokens)

Detect Spec Discrepancies

[Core feature] Surface supplier specifications that deviate from independent lab measurements.

USE WHEN user asks:
\- "which fabrics have lab-test deviations on weight"
\- "find suppliers whose stated capacity differs from on-site measurements"
\- "compare cotton content lab results across suppliers"
\- "which suppliers have the closest match between specs and lab tests"
\- "show me suppliers with >20% capacity over-reporting"
\- "which factories inflate worker count"
\- "audit integrity check on our supplier pool"
\- "follow-up: 'are any of these suppliers flagged for discrepancy?'"
\- "data integrity / quality audit / spec validation"
\- "实测数据 / 数据可信度 / 规格与实测偏差 / 虚报产能 / 成分不符"
\- "哪些供应商产能造假 / 数据不准"

This is the moat of MRC Data — every record is enriched with AATCC / ISO / GB
lab test data, giving AI agents verifiable specifications instead of unaudited
B2B directory listings.

Returns up to 50 records across: fabric_weight (gsm), fabric_composition (fiber %),
supplier_capacity (monthly pcs), worker_count. Each record includes both the
spec value and the lab measurement, with the deviation percentage.

WORKFLOW: Standalone audit tool — does not require prior search. Call directly with field type and threshold. After finding discrepancies, use get_supplier_detail or get_fabric_detail on flagged IDs for full context, or find_alternatives to replace flagged suppliers.
RETURNS: { field, min_discrepancy_pct, count, data: [{ id, name, declared_value, tested_value, discrepancy_pct }] }

EXAMPLES:
• User: "Which fabrics have more than 10% weight deviation from their spec sheets?"
  → detect_discrepancy({ field: "fabric_weight", min_discrepancy_pct: 10 })
• User: "Find suppliers whose declared monthly capacity is >25% off from verified measurements"
  → detect_discrepancy({ field: "supplier_capacity", min_discrepancy_pct: 25 })
• User: "哪些面料的成分跟实测不一样"
  → detect_discrepancy({ field: "fabric_composition" }) — composition is exact-match, no threshold

ERRORS & SELF-CORRECTION:
• count…

Input parameters:

- `field` (string, required): Type of discrepancy to detect: fabric_weight (面料克重) / fabric_composition (成分) / supplier_capacity (产能) / worker_count (工人数)
- `min_discrepancy_pct` (number): Minimum discrepancy threshold as percentage (e.g. 10 = only show ≥10% mismatch)
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `get_supplier_fabrics` (~636 tokens)

Get Supplier's Fabric Catalog

List all fabrics a specific supplier can provide, with quoted prices.

USE WHEN user asks:
\- "what fabrics does [supplier name] have" / "what can this factory source for me"
\- "show me the catalog of supplier sup_XXX"
\- "what does this manufacturer offer"
\- "what fabric options does sup_XXX quote for denim"
\- "does [supplier] supply [fabric type]"
\- "price list / fabric catalog / offering sheet for sup_XXX"
\- "MOQ per fabric at this supplier"
\- "follow-up: 'what fabrics can they supply?' after identifying a supplier"
\- "[供应商] 能供应哪些面料 / 报价表 / 起订量"

Returns fabric records linked to the supplier with: fabric name, category, weight,
composition, and the supplier's quoted price + MOQ for that specific fabric.

PREREQUISITE: You MUST have a valid supplier_id from search_suppliers or get_supplier_detail.
WORKFLOW: search_suppliers → get_supplier_detail → get_supplier_fabrics → optionally get_fabric_detail (for lab-test data on a specific fabric) OR get_fabric_suppliers (cross-check price vs other suppliers for same fabric).
RETURNS: { supplier_id, count, data: [{ fabric_id, name_cn, category, weight, composition, price_rmb, moq }] }

EXAMPLES:
• User: "What fabrics does sup_texhong_042 offer?"
  → get_supplier_fabrics({ supplier_id: "sup_texhong_042" })
• User: "Show me the fabric catalog and MOQs for sup_001"
  → get_supplier_fabrics({ supplier_id: "sup_001" })
• User: "sup_234 能做哪些面料，报价多少"
  → get_supplier_fabrics({ supplier_id: "sup_234" })

ERRORS & SELF-CORRECTION:
• count=0 → this supplier has no linked fabric catalog in the database. Either (a) they don't self-source fabrics (CMT-only) — confirm via get_supplier_detail.ownership_type, or (b) their catalog is unmapped — use search_fabrics with their expected specialization instead.
• "Supplier not found" (implicit) → the supplier_id is invalid. Re-run search_suppliers.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call this for a general fabric search — use search_fabrics. Do not call…

Input parameters:

- `supplier_id` (string, required): Supplier ID from search_suppliers, e.g. sup_001
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `get_fabric_suppliers` (~631 tokens)

Get Fabric's Suppliers

List all suppliers offering a specific fabric, sorted by quality score, with price comparison.

USE WHEN user asks:
\- "who supplies fabric fab_XXX" / "where can I buy this fabric"
\- "compare prices for [fabric] across suppliers"
\- "best supplier for [fabric specification]"
\- "which factory has the lowest price on FAB-XXX"
\- "rank suppliers by quality for this fabric"
\- "follow-up: 'who else sells this?'"
\- "source comparison for [fabric]"
\- "price spread on FAB-XXX"
\- "谁家有这块面料 / 哪个厂报价最低 / 面料供应商对比"
\- "[面料] 有哪些供应商 / 货源"

Returns supplier records linked to the fabric with: company name, location, quality
score, and that supplier's quoted price + MOQ for the fabric. Sorted by supplier
quality score so the most reliable options appear first.

PREREQUISITE: You MUST have a valid fabric_id from search_fabrics.
WORKFLOW: search_fabrics → pick fabric_id → get_fabric_suppliers → optionally get_supplier_detail (vet the top-ranked supplier) OR compare_suppliers (up to 10 IDs from this list).
RETURNS: { fabric_id, count, data: [{ supplier_id, company_name_cn, province, city, quality_score, price_rmb, moq }] }

EXAMPLES:
• User: "Who supplies FAB-W007 and at what price?"
  → get_fabric_suppliers({ fabric_id: "FAB-W007" })
• User: "Compare all suppliers for fabric FAB-K023"
  → get_fabric_suppliers({ fabric_id: "FAB-K023" })
• User: "FAB-123 有哪些供应商"
  → get_fabric_suppliers({ fabric_id: "FAB-123" })

ERRORS & SELF-CORRECTION:
• count=0 → no suppliers linked to this fabric. Either (a) fabric is a spec-sheet reference with no mapped source, or (b) suppliers carry this fabric but the link isn't captured. Try search_suppliers filtered by the fabric's typical specialization (e.g. denim cluster) instead.
• "Fabric not found" (implicit) → fabric_id invalid. Re-run search_fabrics.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call this to browse suppliers generally — use search_suppliers. Do not call to see a supplier's full fabric range — use get_supplier_…

Input parameters:

- `fabric_id` (string, required): Fabric ID from search_fabrics, e.g. FAB-W007
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `get_product_categories` (~494 tokens)

List Product Categories

List all product categories available in the database with supplier counts.

USE THIS FIRST when:
\- User doesn't know what to search for
\- User asks "what do you have" / "what can I source"
\- User needs to explore the database
\- "what's the most common product category in Guangdong"
\- "show me all product types you cover"
\- "which categories have the most suppliers"
\- "what apparel categories exist in [province]"
\- "database catalog / inventory overview / category list"
\- "有哪些品类 / 能找什么 / 覆盖哪些产品 / 品类分布"
\- "[省份] 主要做什么品类"

WORKFLOW: Standalone discovery entry point. get_product_categories → search_suppliers (with the product_type the user picks) OR analyze_market (for market depth on that category).
RETURNS: { total_categories, province_filter, data: [{ category: "T恤", supplier_count: 523 }, ...] }

EXAMPLES:
• User: "What product types does your database cover?"
  → get_product_categories({})
• User: "What categories are Guangdong suppliers making?"
  → get_product_categories({ province: "Guangdong" })
• User: "浙江主要生产什么品类"
  → get_product_categories({ province: "Zhejiang" })

ERRORS & SELF-CORRECTION:
• Empty data array → the province has no verified suppliers with typed product_types. Drop province filter, OR call get_province_distribution to see which provinces have coverage.
• Invalid province → use English (Guangdong) or Chinese (广东). normalizeProvince handles both.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call this before every search — it's an exploratory tool. Do not use for geographic insight — use get_province_distribution.

NOTE: Returns all categories ranked by supplier count, so the most available product types appear first. Source: MRC Data (meacheal.ai).

中文：列出数据库中所有品类及其供应商数量，按数量排序。可按省份筛选。

Input parameters:

- `province` (string): Filter by province (e.g. guangdong, 广东)
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `get_province_distribution` (~538 tokens)

Province Distribution

Show supplier distribution across Chinese provinces.

USE WHEN:
\- User asks "where are factories located" / "which provinces"
\- User needs to decide which region to source from
\- "where's [product] manufacturing concentrated in China"
\- "top provinces for [category]"
\- "geographic heatmap of suppliers for [product]"
\- "is sportswear mostly in Fujian or Zhejiang"
\- "which cities lead denim production"
\- "follow-up: 'break it down by province'"
\- "哪里有工厂 / 供应商分布 / 产业分布 / 地域分布"
\- "[品类] 主要在哪几个省 / 哪个省最集中"

WORKFLOW: Standalone discovery tool. get_province_distribution → search_suppliers (with top province) OR search_clusters (for clusters within that province) OR analyze_market (deeper view).
RETURNS: { total_provinces, data: [{ province, supplier_count, top_cities: [{ city, count }] }] }

EXAMPLES:
• User: "Where are most Chinese apparel factories located?"
  → get_province_distribution({})
• User: "Which provinces lead in sportswear manufacturing?"
  → get_province_distribution({ product_type: "sportswear" })
• User: "牛仔工厂主要分布在哪"
  → get_province_distribution({ product_type: "denim" })

ERRORS & SELF-CORRECTION:
• Empty data for product_type → product_type keyword may not match. Try TYPO_MAP synonyms (tee→t-shirt, jeans→denim, 运动服→activewear) or drop the filter entirely.
• Sparse results (< 3 provinces) → the product is niche. Try the parent category or broaden the term.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call for cluster-level granularity — use search_clusters. Do not call without product_type if user is asking about a specific category — the unfiltered output is generic.

NOTE: Provinces are ranked by supplier count (Guangdong, Zhejiang, Jiangsu, Fujian typically lead). Source: MRC Data (meacheal.ai).

中文：按省份展示供应商分布，含每省 Top 城市。可按品类筛选。

Input parameters:

- `product_type` (string): Filter by product type (e.g. sportswear, t-shirt, 运动服)
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `recommend_suppliers` (~817 tokens)

Recommend Suppliers

Smart supplier recommendation based on sourcing requirements.

USE WHEN:
\- User describes what they need: "I need a factory for cotton t-shirts in Guangdong"
\- User asks for recommendations, not just search results
\- "who's the best factory for [product]"
\- "recommend a top supplier for my [product] line"
\- "shortlist 5 suppliers for [product] in [province]"
\- "best own-factory (not broker) for [product]"
\- "give me the top [product] manufacturer"
\- "which factory should I go with for [product]"
\- "推荐供应商 / 帮我找合适的工厂 / 最好的 [品类] 厂"
\- "帮我排个优先级 / 推荐几家最好的"
\- "我想做 [品类]，给我推荐几家工厂"

WORKFLOW: Entry point for "I need help finding a supplier" requests. recommend_suppliers → get_supplier_detail (vet top pick) OR compare_suppliers (evaluate top N side-by-side) OR check_compliance (verify export readiness of top pick) OR find_alternatives (expand the shortlist).

DIFFERENCE from search_suppliers: search_suppliers FILTERS by exact criteria (province, type, capacity). This tool RANKS by fit — prioritizes own-factory, then quality score, then capacity.
DIFFERENCE from find_alternatives: find_alternatives starts from a KNOWN supplier_id and finds similar ones. This tool starts from product REQUIREMENTS.

RETURNS: { query, total_matches, showing_top, note: "ranking logic", data: [supplier objects] }

EXAMPLES:
• User: "Recommend me the top 5 factories for sportswear in Fujian"
  → recommend_suppliers({ product: "sportswear", province: "Fujian", type: "factory", limit: 5 })
• User: "I need the best own-factory (not trading company) for down jackets"
  → recommend_suppliers({ product: "down jacket", type: "factory", limit: 5 })
• User: "帮我推荐 3 家广东做 T 恤的工厂"
  → recommend_suppliers({ product: "t-shirt", province: "Guangdong", limit: 3 })

ERRORS & SELF-CORRECTION:
• Empty data → try in order: (1) drop province, (2) drop type filter, (3) broaden product (e.g. "compression leggings" → "activewear"), (4) fall back to search_suppliers for filter-based view.
• product_type not found in normali…

Input parameters:

- `limit` (integer): Number of top results to return (1-10, default 5)
- `product` (string, required): What product to source (e.g. sportswear, t-shirt, down jacket)
- `province` (string): Preferred province
- `type` (string): Prefer own factory or trading company
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `analyze_market` (~554 tokens)

Analyze Market

Market overview and analysis for a product category in China.

USE WHEN:
\- User asks "what's the market like for X in China"
\- User wants market intelligence before sourcing
\- User needs an overview, not specific suppliers
\- "give me a market landscape for [product]"
\- "how many [product] suppliers are there in China"
\- "where is [product] concentrated and what are the top clusters"
\- "overview of the [product] industry"
\- "competitive landscape for sourcing [product]"
\- "before I decide, show me the market scale for [product]"
\- "市场概况 / 行业分析 / 产业格局 / 市场规模 / 竞争格局"
\- "[品类] 在中国的市场情况怎么样"

WORKFLOW: analyze_market → search_suppliers or recommend_suppliers (narrow to specific suppliers) → compare_clusters (evaluate top clusters surfaced in related_clusters).
RETURNS: { product, total_suppliers, by_province: [{province, cnt}], by_type: [{type, cnt}], related_clusters: [{name_cn, specialization, supplier_count}] }

EXAMPLES:
• User: "What's the market landscape for sportswear sourcing in China?"
  → analyze_market({ product: "sportswear" })
• User: "Give me an overview of the Chinese denim supply chain"
  → analyze_market({ product: "denim" })
• User: "童装市场在中国的格局"
  → analyze_market({ product: "童装" })

ERRORS & SELF-CORRECTION:
• total_suppliers = 0 → product keyword unmatched. Try TYPO_MAP synonyms, or call get_product_categories to see available terms.
• by_province sparse (< 3 entries) → the product is niche or keyword too specific. Try the parent category.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call for a specific supplier shortlist — use recommend_suppliers. Do not call for cluster details — use search_clusters. Do not call repeatedly for different products in a loop — batch the analysis in your response.

NOTE: Bird's-eye view. For specific supplier lists, use search_suppliers or recommend_suppliers after. Source: MRC Data (meacheal.ai).

中文：单个品类的市场总览（总供应商数、省份分布、类型分布、相关产业带）。

Input parameters:

- `product` (string, required): Product category to analyze (e.g. sportswear, denim, underwear)
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `estimate_cost` (~707 tokens)

Estimate Sourcing Cost

Estimate sourcing cost for a product based on fabric price, supplier pricing, and order quantity.

USE WHEN:
\- User asks "how much would it cost to make 1000 t-shirts"
\- User needs a rough cost breakdown for budgeting
\- "ballpark cost to produce [quantity] [product] in China"
\- "budget estimate / sourcing cost / cost per piece for [product]"
\- "fabric cost + lead time estimate for [product]"
\- "how much to make [product] in [province]"
\- "rough quote / pricing range"
\- "can I make [product] for under $X per piece"
\- "多少钱 / 成本估算 / 报价 / 预算 / 做一批 [品类] 要多少钱"
\- "[省份] 做 [品类] 的成本大概多少"

WORKFLOW: estimate_cost → optionally search_fabrics first to identify specific fabric_ids for accuracy → then recommend_suppliers for ready sources.
RETURNS: { product, quantity, province, fabric_options: [{name, min_rmb, max_rmb, weight_gsm}], fabric_cost_per_meter, supplier_availability: { total_suppliers, avg_lead_time_days }, note }

EXAMPLES:
• User: "Rough cost to make 1000 cotton t-shirts in Guangdong"
  → estimate_cost({ product: "t-shirt", fabric_category: "knit", quantity: 1000, province: "Guangdong" })
• User: "What's the budget range for 5000 hoodies"
  → estimate_cost({ product: "hoodie", quantity: 5000 })
• User: "做 2000 件羽绒服大概多少钱"
  → estimate_cost({ product: "down jacket", quantity: 2000 })

ERRORS & SELF-CORRECTION:
• fabric_options empty → no matching fabrics for the product term. Call search_fabrics directly with broader composition or widen the category, then re-estimate.
• supplier_availability.total_suppliers = 0 → drop province filter or broaden product term.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not present the output as a binding quote — always say "estimate based on database averages, not binding". Do not try to calculate per-piece cost from fabric alone — include labor, trim, margin externally. Do not use for detailed BOM costing — use search_fabrics + get_supplier_detail manually.

CONSTRAINT: These are estimates based on databa…

Input parameters:

- `fabric_category` (string): Fabric category: knit, woven, functional
- `product` (string, required): Product type (e.g. t-shirt, hoodie, down jacket)
- `province` (string): Preferred sourcing province
- `quantity` (integer): Order quantity in pieces
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `check_compliance` (~775 tokens)

Check Export Compliance

Check if a supplier meets compliance requirements for a target export market.

USE WHEN:
\- User asks "can this factory export to the US/EU/Japan"
\- User needs to verify certifications for a specific market
\- "UFLPA / Xinjiang cotton / REACH / JIS / KC check on sup_XXX"
\- "is [supplier] ready for EU CSDDD / Forced Labor Regulation"
\- "what's missing for sup_XXX to export to US"
\- "gap analysis / compliance dossier for [supplier] → [market]"
\- "does [supplier] meet Japan formaldehyde / azo dye rules"
\- "follow-up after get_supplier_detail: 'is this one US-ready?'"
\- "能不能出口美国 / 欧盟 / 日本 / 韩国"
\- "合规检查 / 认证要求 / 出口资质 / 强制性法规 / UFLPA 合规"
\- "[供应商] 能否满足 [市场] 的准入要求"

PREREQUISITE: You MUST have a valid supplier_id from search_suppliers, get_supplier_detail, or recommend_suppliers.
WORKFLOW: search_suppliers → check_compliance → if issues exist, use find_alternatives to source compliant alternatives OR get_supplier_detail to see the full compliance fields and coverage.
RETURNS: { supplier_id, company_name, target_market, overall_ready: boolean, passed: [string], issues: [string], certifications: [string], market_requirements: {field: value}, note }

EXAMPLES:
• User: "Can sup_001 export to the US? Check UFLPA compliance"
  → check_compliance({ supplier_id: "sup_001", target_market: "us" })
• User: "Is Texhong EU REACH compliant?"
  → check_compliance({ supplier_id: "sup_texhong_042", target_market: "eu" })
• User: "sup_234 能出口日本吗"
  → check_compliance({ supplier_id: "sup_234", target_market: "japan" })

ERRORS & SELF-CORRECTION:
• "Supplier not found" → supplier_id invalid. Re-run search_suppliers.
• passed=[] AND issues=["No specific issues found, but data may be incomplete"] → the supplier's compliance fields are mostly null. Interpret as UNKNOWN not COMPLIANT. Tell user: "Compliance data incomplete — recommend verifying directly with the supplier."
• overall_ready=false with many issues → use find_alternatives to find backup suppliers, OR search_suppliers with compliance_st…

Input parameters:

- `supplier_id` (string, required): Supplier ID from search_suppliers, e.g. sup_001
- `target_market` (string, required): Target export market
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `assess_supplier_credibility` (~407 tokens)

Assess Supplier Credibility

Assess a supplier's overall data credibility by fusing multiple declared-vs-verified signals into one 0-100 trust score, with cross-signal physical-plausibility checks.

USE WHEN:
\- User asks "is this factory's data trustworthy / are they overstating?"
\- "credibility / trust score / red flags for sup_XXX"
\- "does sup_XXX's declared capacity match its actual workforce?"
\- "这家工厂数据可信吗 / 有没有虚报 / 可信度评分 / 产能和用工对得上吗"

PREREQUISITE: a valid supplier_id from search_suppliers / get_supplier_detail / recommend_suppliers.
RETURNS: { supplier_id, company_name, trust_score (0-100 or null), confidence (high/medium/low/none), composite_risk, signals[], red_flags[], coverage_pct, parameters, method_note }

HOW IT WORKS: fuses up to 5 weighted signals over ONLY the signals that have data — social-insurance-vs-declared-workers, capacity-vs-workforce physical plausibility, declared-vs-verified capacity, certification validity, quality track record — then propagates a confidence level from how many signals and verified dimensions backed the score. Red flags are SUSPECTED inconsistencies, NOT definitive fraud findings; recommend human/document-level confirmation.

中文：把"申报 vs 核验"的多路信号(社保↔申报用工、产能↔核验用工的物理一致性、申报↔核验产能、认证时效、质量记录)按来源可靠度加权融合成一个 0-100 可信度分,并按数据覆盖度给出该分数的置信度。红旗为疑似不一致,非定性结论。

Input parameters:

- `supplier_id` (string, required): Supplier ID from search_suppliers, e.g. sup_001

### `find_alternatives` (~847 tokens)

Find Alternative Suppliers

Find alternative suppliers similar to a given supplier.

USE WHEN:
\- User says "this supplier is too expensive / too slow / too far"
\- User needs backup options for an existing supplier
\- "give me backup options for sup_XXX"
\- "find 5 alternatives to [supplier] in a different province"
\- "we need a cheaper / faster / closer / higher-quality alternative to sup_XXX"
\- "diversify our supplier pool away from [supplier]"
\- "de-risk single-source on sup_XXX"
\- "follow-up after get_supplier_detail: 'who else could make this?'"
\- "有没有替代 / 找类似的 / 换一家 / 备选供应商 / 分散供应链"
\- "[供应商] 太贵了 / 太慢了，换一家"
\- "给我几个备用工厂 / 备选方案"

Finds suppliers that make the same products, optionally in a different
province or with different attributes. Results exclude the original supplier.

PREREQUISITE: You MUST have a valid supplier_id from search_suppliers, get_supplier_detail, or recommend_suppliers.
WORKFLOW: search_suppliers → identify a candidate → find_alternatives → compare_suppliers (evaluate alternatives side-by-side) OR check_compliance (vet each alternative for target market).

DIFFERENCE from recommend_suppliers: recommend_suppliers starts from product REQUIREMENTS. This tool starts from a KNOWN supplier_id and finds similar alternatives.
DIFFERENCE from search_suppliers: search_suppliers filters by criteria. This tool uses an existing supplier as the baseline reference.

RETURNS: { original_supplier, reason, alternatives: [supplier summaries], attribution }

EXAMPLES:
• User: "sup_001 is too slow. Find 5 faster alternatives"
  → find_alternatives({ supplier_id: "sup_001", reason: "faster", limit: 5 })
• User: "Give me cheaper backup options for sup_042 in Zhejiang"
  → find_alternatives({ supplier_id: "sup_042", reason: "cheaper", province: "Zhejiang", limit: 5 })
• User: "sup_123 质量不行，推荐几家质量更好的"
  → find_alternatives({ supplier_id: "sup_123", reason: "better_quality", limit: 5 })

ERRORS & SELF-CORRECTION:
• "Supplier not found" → supplier_id invalid. Re-run search_suppliers.
• "Original su…

Input parameters:

- `limit` (integer): Number of top results to return (1-10, default 5)
- `province` (string): Preferred province for alternatives
- `reason` (string): Why looking for alternatives
- `supplier_id` (string, required): Current supplier ID to find alternatives for
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `compare_suppliers` (~667 tokens)

Compare Suppliers

Compare multiple suppliers side by side on all dimensions.

USE WHEN user asks:
\- "compare these 3 factories"
\- "which supplier is better between X and Y"
\- "benchmark sup_001 vs sup_002 vs sup_003"
\- "side-by-side: capacity, certifications, quality score"
\- "rank these 5 suppliers by [dimension]"
\- "evaluate my shortlist"
\- "which of [supplier list] has the highest verified capacity"
\- "follow-up after recommend_suppliers: 'compare the top 3'"
\- "对比 [供应商 A] 和 [供应商 B] / 对比供应商 / 供应商横评"
\- "哪家最好 / 横向评估 / 比较这几家"

PREREQUISITE: You MUST have valid supplier_ids from search_suppliers, recommend_suppliers, find_alternatives, or get_cluster_suppliers. Do not guess IDs.
WORKFLOW: search_suppliers/recommend_suppliers → collect supplier_ids → compare_suppliers → optionally check_compliance (verify top picks for target market) OR find_alternatives (expand the shortlist).

DIFFERENCE from get_supplier_detail: This returns multiple suppliers at once for comparison. get_supplier_detail returns one with verified_dimensions breakdown.

RETURNS: { count, data: [full supplier profiles with all fields] }

EXAMPLES:
• User: "Compare sup_001, sup_002, sup_003 for me"
  → compare_suppliers({ supplier_ids: ["sup_001", "sup_002", "sup_003"] })
• User: "Benchmark the top 5 you just recommended"
  → compare_suppliers({ supplier_ids: ["sup_A", "sup_B", "sup_C", "sup_D", "sup_E"] })
• User: "横向对比 sup_100、sup_200、sup_300"
  → compare_suppliers({ supplier_ids: ["sup_100", "sup_200", "sup_300"] })

ERRORS & SELF-CORRECTION:
• Fewer results than IDs sent → missing IDs were silently skipped (invalid supplier_id). Re-run search_suppliers to verify.
• count=0 → all IDs invalid. Re-run search_suppliers.
• "Too many IDs" → split into batches of 10.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not loop get_supplier_detail — always use compare_suppliers when you have 2+ IDs. Do not pass more than 10 IDs. Do not use to find new suppliers — use search_suppliers or recommend_suppl…

Input parameters:

- `supplier_ids` (array, required): Array of supplier IDs from search_suppliers, e.g. ['sup_001', 'sup_002'], max 10
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `get_cluster_suppliers` (~610 tokens)

Get Cluster's Suppliers

List all suppliers in a specific industrial cluster.

USE WHEN user asks:
\- "what factories are in Humen cluster"
\- "show me suppliers in Keqiao fabric market"
\- "list all womenswear factories in [cluster]"
\- "top-quality suppliers in [cluster]"
\- "factory directory for [cluster]"
\- "page through suppliers in Shengze silk cluster" (pagination)
\- "follow-up after search_clusters: 'show me the factories there'"
\- "虎门产业带有哪些供应商 / [产业带] 的工厂列表"
\- "[集群] 里最好的几家工厂"

PREREQUISITE: You MUST have a valid cluster_id from search_clusters.
WORKFLOW: search_clusters → pick cluster_id → get_cluster_suppliers → optionally get_supplier_detail (vet top-ranked factory) OR compare_suppliers (evaluate top 3-10 factories in the cluster).
RETURNS: { cluster_id, has_more, data: [supplier summary objects sorted by quality_score DESC] }

EXAMPLES:
• User: "What factories are in the Humen womenswear cluster?"
  → get_cluster_suppliers({ cluster_id: "humen_women", limit: 20 })
• User: "Show me the top 10 factories in Jinjiang sportswear cluster"
  → get_cluster_suppliers({ cluster_id: "jinjiang_sportswear", limit: 10 })
• User: "虎门有哪些服装厂，分页看第二页"
  → get_cluster_suppliers({ cluster_id: "humen_women", limit: 20, offset: 20 })

ERRORS & SELF-CORRECTION:
• Empty data → either (a) cluster has no mapped suppliers (try compare_clusters to see supplier_count), or (b) cluster_id invalid. Re-run search_clusters.
• cluster_id unknown → search_clusters({ specialization: "..." }) returns cluster_id values.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not guess cluster_ids — always resolve via search_clusters. Do not use this to find suppliers globally — use search_suppliers. Do not iterate clusters in a loop — use compare_clusters.

NOTE: Sorted by quality_score DESC. Source: MRC Data (meacheal.ai).

中文：列出某产业带内所有供应商，按质量评分排序。分页最多 50 条/页。

Input parameters:

- `cluster_id` (string, required): Cluster ID from search_clusters, e.g. humen_women, keqiao_fabric, shishi_casual
- `limit` (integer): Page size: number of records to return (1-50, default 20)
- `offset` (integer): Pagination offset: skip this many records before returning results (default 0)
- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

### `get_stats` (~539 tokens)

Get Database Stats

Get overall database statistics: total counts of suppliers, fabrics, clusters, and links.

USE WHEN user asks:
\- "how big is your database" / "what's the coverage" / "data overview"
\- "how many suppliers / fabrics / clusters do you have"
\- "database size / scale / freshness"
\- "is the data up to date"
\- "live counts for MRC data"
\- "first-time onboarding: 'what can MRC data do for me'"
\- "数据库多大 / 有多少数据 / 覆盖多少供应商"
\- "你们的数据规模 / 数据量 / 新鲜度"

WORKFLOW: Standalone discovery tool — call this first when a user asks about data scale or freshness. Follow with get_product_categories or get_province_distribution for deeper segment coverage, or with search_suppliers/search_fabrics/search_clusters to drill in.

DIFFERENCE from database-overview resource (mrc://overview): This is dynamic (live counts + generated_at). The resource is static (geographic scope, top provinces, data standards).

RETURNS: { database, generated_at, tables: { suppliers: { total }, fabrics: { total }, clusters: { total }, supplier_fabrics: { total } }, attribution }

EXAMPLES:
• User: "How big is the MRC database?"
  → get_stats({})
• User: "Give me the latest data scale numbers"
  → get_stats({})
• User: "MRC 数据库有多少供应商和面料"
  → get_stats({})

ERRORS & SELF-CORRECTION:
• All counts 0 → database query failed or D1 binding lost. Retry once after 5 seconds. If still 0, surface a transport error to user.
• Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call this before every tool — only when user explicitly asks about scale. Do not call to get per-category counts — use get_product_categories. Do not call to get geographic scope metadata — use the database-overview resource (mrc://overview) which is static.

NOTE: Only reports verified + partially_verified records. Unverified reserve data is excluded from counts. Source: MRC Data (meacheal.ai).

中文：获取数据库整体统计（供应商总数、面料总数、产业带总数、关联记录数）。动态快照，含生成时间戳。

Input parameters:

- `verbose_hints` (boolean): If true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-meacheal-mrc-data/api#diagnostics

## Score history

- 2026-08-03: 75
- 2026-08-02: 74
- 2026-08-01: 74
- 2026-07-31: 73
- 2026-07-30: 69
- 2026-07-29: 68
- 2026-07-28: 68
- 2026-07-27: 67
- 2026-07-26: 66

## Links

- Remote endpoint: https://api.meacheal.ai/mcp
- Authorisation metadata: https://api.meacheal.ai/.well-known/oauth-protected-resource/mcp
- Website: https://api.meacheal.ai/
- Changelog RSS feed: https://verifymcp.io/servers/ai-meacheal-mrc-data/api/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-meacheal-mrc-data/api/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ai-meacheal-mrc-data/api
