detect_discrepancy
[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=0 → no records above threshold. Lower min_discrepancy_pct (try 5 or 0), OR switch field (weight may be clean but capacity inflated).
• Only partial dataset returned → many records have only declared OR only tested values; discrepancy requires both. This is a data coverage limit, not a bug.
• Rate limit 429 → wait 60 seconds; do not retry immediately.
AVOID: Do not present discrepancy data as proof of fraud — call it out as "declared vs lab-measured delta". Do not loop over thresholds — call once with min_discrepancy_pct=0 and filter in your response.
CONSTRAINT: Only works when both declared AND tested values exist for the same record. Many records have only one or the other. Max 50 records per call.
NOTE: Source: MRC Data (meacheal.ai). Methods: AATCC / ISO / GB per field.
中文:识别供应商规格与实测值偏差较大的记录。返回规格值、实测值、偏差百分比。
get_supplier_fabrics
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 to compare prices across suppliers for the SAME fabric — use get_fabric_suppliers instead.
NOTE: Source: MRC Data (meacheal.ai). Prices are supplier-quoted, not binding offers.
中文:查询某供应商能供应的所有面料及其报价、起订量。
get_fabric_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_fabrics.
NOTE: Source: MRC Data (meacheal.ai). Sorted by supplier quality_score DESC.
中文:查询某面料的所有供应商,按质量评分排序,含报价对比。
get_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).
中文:列出数据库中所有品类及其供应商数量,按数量排序。可按省份筛选。
get_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 城市。可按品类筛选。
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 normalizeProductType → use the Chinese term or the parent category.
• Rate limit 429 → wait 60 seconds; do not retry immediately.
• Empty after 3 retries → tell user: "I don't see verified suppliers matching [product] in [province]. Want me to broaden to nationwide, or try a sibling category?"
AVOID: Do not call this when the user wants exact filtering — use search_suppliers. Do not call repeatedly for different limit values — request max once then slice in your response. Do not use for cluster recommendations — use search_clusters.
NOTE: Ranking: own_factory > quality_score > declared_capacity_monthly. Source: MRC Data (meacheal.ai).
中文:基于采购需求智能推荐供应商,按 自有工厂 > 质量分 > 产能 排序。
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).
中文:单个品类的市场总览(总供应商数、省份分布、类型分布、相关产业带)。
estimate_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 database averages, NOT binding quotes. Always clarify this to the user. Fabric cost is per meter (typical usage: 1-3m per piece).
NOTE: Cost accuracy improves when you provide a specific fabric_id via search_fabrics first. Source: MRC Data (meacheal.ai).
中文:按面料均价 + 供应商供货能力估算 [品类] 的生产成本区间。仅供参考,非正式报价。
check_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_status="compliant" to filter upfront.
• Rate limit 429 → wait 60 seconds; do not retry immediately.
AVOID: Do not call this in a loop across all suppliers — instead pre-filter via search_suppliers({ compliance_status: "compliant" }). Do not treat missing fields as non-compliant — report them as "not confirmed". Do not use for general supplier info — use get_supplier_detail.
NOTE: Many suppliers have incomplete compliance data. Missing data = "not confirmed", not "non-compliant". Source: MRC Data (meacheal.ai). Market requirements cover UFLPA/Xinjiang (US), REACH/CSDDD/Forced Labor Reg (EU), formaldehyde/azo/JIS (Japan), KC (Korea).
中文:检查某供应商是否满足目标出口市场(美/欧/日/韩)的合规要求。
find_alternatives
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 supplier has no product types listed" → the reference supplier has no product_types field. Use recommend_suppliers with the product category the user actually wants instead.
• Empty alternatives → the product type is rare OR province filter is too narrow. Drop province filter first, then try broader product search via recommend_suppliers.
• Rate limit 429 → wait 60 seconds; do not retry immediately.
AVOID: Do not call this without first knowing the user's complaint (cheaper/faster/closer/quality) — without reason, results are generic. Do not call to find a supplier from scratch — use recommend_suppliers or search_suppliers. Do not compare via this tool — use compare_suppliers after.
CONSTRAINT: Max 10 alternatives per call. Query matches up to 3 product types from the reference supplier.
NOTE: Source: MRC Data (meacheal.ai). Sorting: "faster" uses lead_time_days.bulk_min ASC; others use quality_score DESC.
中文:基于已知 supplier_id 查找同品类的备选供应商(支持按 便宜/快/近/质量 排序,可限定省份)。
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_suppliers first.
CONSTRAINT: Max 10 supplier IDs per call.
NOTE: Source: MRC Data (meacheal.ai). Returns full 60+ field profile per supplier.
中文:横向对比多个供应商的全部字段(最多 10 个 ID)。
get_cluster_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 条/页。
get_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).
中文:获取数据库整体统计(供应商总数、面料总数、产业带总数、关联记录数)。动态快照,含生成时间戳。