Skip to main content
Glama

MRC Data — China's Apparel Supply Chain Infrastructure

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.8/5 across 20 of 20 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose. For example, compare_suppliers vs get_supplier_detail serve different needs (comparison vs single profile), and search_suppliers vs recommend_suppliers address filtering vs ranking. No two tools do the same thing.

Naming Consistency4/5

Names follow a verb_noun pattern (e.g., search_suppliers, compare_clusters), but verbs vary (analyze, assess, check, detect, estimate, find). Most use 'get_' for retrieval, which is consistent. A few (assess_supplier_credibility, detect_discrepancy) are slightly less conventional but still clear.

Tool Count5/5

20 tools is well-scoped for a supply chain data platform covering market analysis, supplier/fabric/cluster search, comparison, compliance, cost estimation, and statistics. Each tool serves a distinct role without bloat or redundancy.

Completeness5/5

The set covers the full lifecycle: market research, supplier discovery, fabric search, comparison, credibility checks, compliance verification, cost estimation, and alternative sourcing. No obvious gaps for the stated purpose of supply chain intelligence.

Available Tools

20 tools
analyze_marketAnalyze MarketA
Read-onlyIdempotent
Inspect

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).

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

ParametersJSON Schema
NameRequiredDescriptionDefault
productYesProduct category to analyze (e.g. sportswear, denim, underwear)
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds valuable context: bird's-eye view, error handling (retries for 0 results, rate limit), and data source (MRC Data). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (USE WHEN, WORKFLOW, RETURNS, etc.), front-loaded with main purpose. Every sentence earns its place; no wasted words.

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?

Despite no output schema, the description fully compensates by detailing the return structure (product, breakdowns, related_clusters). It covers prerequisites, errors, workflow, and links to other tools, making it complete for an analysis tool.

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

Parameters5/5

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

Both parameters are documented in the schema with 100% coverage. The description reinforces meaning with examples (e.g., 'sportswear') and demonstrates usage in examples. It adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides 'Market overview and analysis for a product category in China' and distinguishes from siblings by warning against using for specific supplier lists or cluster details. It specifies the verb 'analyze' and resource 'market,' with explicit scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers explicit 'USE WHEN' conditions, examples of user queries (including Chinese), and clear 'AVOID' instructions. It also suggests alternative tools like recommend_suppliers and search_clusters for different contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assess_supplier_credibilityAssess Supplier CredibilityA
Read-onlyIdempotent
Inspect

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 可信度分,并按数据覆盖度给出该分数的置信度。红旗为疑似不一致,非定性结论。

ParametersJSON Schema
NameRequiredDescriptionDefault
supplier_idYesSupplier ID from search_suppliers, e.g. sup_001
Behavior5/5

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

Annotations already indicate the tool is read-only and idempotent. The description adds significant behavioral context: it explains the fusion of up to 5 weighted signals, confidence propagation, and clarifies that red flags are suspected inconsistencies, not definitive fraud findings, recommending human confirmation. This goes well beyond what 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?

The description is well-structured with sections for USE WHEN, PREREQUISITE, RETURNS, and HOW IT WORKS. The inclusion of both English and Chinese adds length but serves multilingual users. While slightly long, every sentence provides necessary context, earning a 4.

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

Completeness4/5

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

Given the single parameter and no output schema, the description adequately details the return object including fields like trust_score, confidence, signals, and red_flags. It explains the methodology and output interpretation. A score of 4 reflects that while not exhaustive, it covers the essential context for an AI agent.

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?

With only one parameter and 100% schema description coverage, the schema already covers the basic meaning. The description adds value by specifying that the supplier_id must come from specific other tools (search_suppliers, etc.), providing context beyond the schema. A score of 4 is appropriate as it adds useful nuance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states that the tool assesses supplier credibility by fusing multiple signals into a 0-100 trust score, with checks for physical plausibility. It clearly distinguishes this from sibling tools like 'detect_discrepancy' or 'compare_suppliers' by specifying the fusion of multiple signals into a single score, making its unique purpose clear.

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?

The description provides a detailed 'USE WHEN' list with English and Chinese examples, and includes a prerequisite specifying where to obtain a valid supplier_id. However, it does not explicitly state when not to use this tool or compare it to sibling alternatives beyond the prerequisite, which prevents a score of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_complianceCheck Export ComplianceA
Read-onlyIdempotent
Inspect

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).

中文:检查某供应商是否满足目标出口市场(美/欧/日/韩)的合规要求。

ParametersJSON Schema
NameRequiredDescriptionDefault
supplier_idYesSupplier ID from search_suppliers, e.g. sup_001
target_marketYesTarget export market
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), description adds critical behavioral context: return structure, data source (MRC Data), meaning of missing fields ('not confirmed' ≠ 'non-compliant'), rate limiting (429), and interpretation of incomplete data. All consistent with annotations.

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?

Well-structured with clear sections and front-loaded purpose. Slightly verbose due to many example queries and error scenarios, but every section adds value for an AI agent. Concise enough given the tool's complexity (multiple markets, error cases).

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?

Despite no output schema, description explicitly lists return fields (supplier_id, company_name, overall_ready, etc.). Covers prerequisites, workflow, error handling, data limitations, and multi-language support. Complete for an evaluative compliance tool.

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

Parameters5/5

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

Schema coverage is 100% (3 parameters all documented). Description reinforces each parameter with examples: supplier_id (pattern sup_001), target_market (enumerates us/eu/japan/korea with specific markets), verbose_hints (explains behavior). Go beyond schema by showing exact invocation examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks whether a supplier meets compliance requirements for a target export market, with specific verbs and resources. It lists exact use cases (US/EU/Japan/Korea) and distinguishes from sibling tools like get_supplier_detail and find_alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides extensive when-to-use guidance, including specific user queries and Chinese examples. Clearly states prerequisite (supplier_id from search_suppliers/get_supplier_detail/recommend_suppliers), workflow, and explicit avoidance instructions. Also covers error self-correction patterns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_clustersCompare Industrial ClustersA
Read-onlyIdempotent
Inspect

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 one call.

CONSTRAINT: Max 10 cluster IDs per call.

NOTE: Source: MRC Data (meacheal.ai).

中文:对比多个产业带的核心指标(最多 10 个)。

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idsYesArray of cluster IDs to compare, max 10
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Discloses behavioral traits: returns full records, error handling for too many IDs, silent skips for invalid IDs, rate limit handling. Annotations (readOnlyHint, idempotentHint, destructiveHint) are consistent and description adds extra context beyond annotations.

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 purpose, but lengthy with many examples and error handling. Every section is useful, but could be slightly more concise. However, the structure is logical and well-organized.

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?

Given no output schema, description explains return format (full cluster objects with all fields), workflow, error handling, and constraints. Completely covers what an AI agent needs to use the tool correctly.

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%, but description adds example values for cluster_ids and explains verbose_hints parameter. Provides enough extra meaning beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it compares multiple Chinese apparel industrial clusters side-by-side on key metrics. Distinguishes from siblings like search_clusters (for getting IDs) and get_cluster_suppliers (for listing factories).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says prerequisite to call search_clusters first, provides many example queries (English and Chinese), outlines a workflow, and states when not to use (e.g., don't guess IDs, don't use to list factories).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_suppliersCompare SuppliersA
Read-onlyIdempotent
Inspect

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)。

ParametersJSON Schema
NameRequiredDescriptionDefault
supplier_idsYesArray of supplier IDs from search_suppliers, e.g. ['sup_001', 'sup_002'], max 10
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior4/5

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

Annotations declare readOnlyHint, idempotentHint, destructiveHint. Description adds that invalid IDs are silently skipped, rate limit handling, max 10 IDs, and source of data, but does not contradict annotations.

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?

Description is comprehensive but well-structured with clear sections (USE WHEN, PREREQUISITE, etc.). Some redundancy in examples, but front-loaded with purpose.

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 prerequisites, workflow, error scenarios, constraints, and even includes Chinese examples. No output schema needed as response is described as full profiles.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are well-described in schema. Description adds examples and error handling but does not significantly augment the semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Compare multiple suppliers side by side on all dimensions' with extensive examples and explicitly distinguishes from get_supplier_detail which returns a single supplier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides prerequisite (valid IDs from specific tools), workflow order, difference from get_supplier_detail, and explicit alternatives for finding new suppliers (search_suppliers).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_discrepancyDetect Spec DiscrepanciesA
Read-onlyIdempotent
Inspect

[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.

中文:识别供应商规格与实测值偏差较大的记录。返回规格值、实测值、偏差百分比。

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYesType of discrepancy to detect: fabric_weight (面料克重) / fabric_composition (成分) / supplier_capacity (产能) / worker_count (工人数)
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
min_discrepancy_pctNoMinimum discrepancy threshold as percentage (e.g. 10 = only show ≥10% mismatch)
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations, which already indicate read-only, idempotent, and non-destructive nature. It explains data constraints (requires both declared and tested values), limits (max 50 records), error handling (count=0, rate limit 429), and the underlying data source (MRC Data with AATCC/ISO/GB methods). No contradiction with annotations.

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?

The description is lengthy but well-structured with clear section headers, making it easy to navigate. While some repetition exists (e.g., constraint on both values exists in multiple places), every sentence adds value. It could be slightly more concise, but the structure compensates.

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?

Given no output schema, the description thoroughly explains the return format with field names and deviation percentage. It covers edge cases (no records, partial data) and provides example calls. It also includes source attribution and methods, leaving no significant gaps for an AI agent to use the tool correctly.

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?

The input schema has 100% description coverage, but the description enriches parameter understanding with examples (e.g., composition is exact-match), default behavior (min_discrepancy_pct defaults to 0), and field enumeration with Chinese translations. It goes beyond schema descriptions by providing context for each parameter's usage in queries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's core function: surfacing supplier specifications that deviate from independent lab measurements. It lists specific fields and provides numerous example user queries, differentiating it from sibling tools like search_fabrics and get_supplier_detail by emphasizing its role as a standalone audit tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive usage guidance, including a detailed 'USE WHEN' section with user query examples, a 'WORKFLOW' section explaining how to use the tool in sequence with others, an 'EXAMPLES' section with concrete calls, and an 'AVOID' section cautioning against common mistakes. It explicitly states that the tool does not require prior search and directs users to alternatives like get_supplier_detail.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_costEstimate Sourcing CostA
Read-onlyIdempotent
Inspect

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).

中文:按面料均价 + 供应商供货能力估算 [品类] 的生产成本区间。仅供参考,非正式报价。

ParametersJSON Schema
NameRequiredDescriptionDefault
productYesProduct type (e.g. t-shirt, hoodie, down jacket)
provinceNoPreferred sourcing province
quantityNoOrder quantity in pieces
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
fabric_categoryNoFabric category: knit, woven, functional
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description discloses important behavioral traits: estimates are non-binding, sourced from MRC Data, clarify fabric cost per meter, and handle rate limits with wait time. No contradiction with annotations.

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?

The description is lengthy but well-organized with clear sections (USE WHEN, WORKFLOW, RETURNS, EXAMPLES, ERRORS, AVOID, CONSTRAINT, NOTE). Every section adds value, but it could be slightly more concise.

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?

Despite no output schema, the description includes a detailed 'RETURNS' structure. It covers workflow integration, error handling, multilingual support, constraints, and self-correction. It is complete for the intended use case.

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?

All 5 parameters are described in the schema (100% coverage). The description adds context like default quantity, fabric category options, and the note about fabric cost per meter (1-3m per piece). Examples show how parameters map to user queries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: 'Estimate sourcing cost for a product based on fabric price, supplier pricing, and order quantity.' It provides numerous use cases and distinguishes from siblings via the workflow hint ('estimate_cost → optionally search_fabrics first → then recommend_suppliers').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Includes an explicit 'USE WHEN' section with specific query patterns, an 'AVOID' section, and guidance on when to use alternatives (e.g., 'search_fabrics first for accuracy'). Also provides error handling steps and self-correction strategies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_alternativesFind Alternative SuppliersA
Read-onlyIdempotent
Inspect

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 查找同品类的备选供应商(支持按 便宜/快/近/质量 排序,可限定省份)。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of top results to return (1-10, default 5)
reasonNoWhy looking for alternativesany
provinceNoPreferred province for alternatives
supplier_idYesCurrent supplier ID to find alternatives for
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds significant behavioral detail: return structure {original_supplier, reason, alternatives, attribution}, sorting behavior by reason, max 10 alternatives, matches up to 3 product types, source attribution, and specific error handling. No contradictions with annotations.

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?

The description is long but well-structured with clear sections (USE WHEN, PREREQUISITE, WORKFLOW, DIFFERENCE, RETURNS, EXAMPLES, ERRORS, AVOID, CONSTRAINT, NOTE, Chinese translation). Every section adds value. It is front-loaded with a concise summary. While verbose, the complexity of the tool justifies the length.

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?

Given no output schema, the description explicitly states the return structure. It covers all aspects: purpose, usage guidelines, parameter semantics, behavioral details, error handling, examples, and even Chinese localization. The tool has 5 parameters (1 required) and moderate complexity; the description is thorough enough to enable correct agent invocation without ambiguity.

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

Parameters5/5

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

Schema description coverage is 100% (all parameters have descriptions in the schema). However, the description adds substantial value beyond schema: it explains the reason enum values in context (e.g., 'faster' sorts by lead_time_days.bulk_min ASC), provides examples mapping user complaints to parameter values, and clarifies constraints (limit max 10, province optional but narrows). This enriches understanding beyond raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find alternative suppliers similar to a given supplier.' It specifies the verb 'find alternatives' and resource 'suppliers similar to a given supplier'. It explicitly distinguishes from sibling tools recommend_suppliers and search_suppliers by explaining differences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive guidelines: it lists specific user utterances that trigger use, prerequisites (must have a valid supplier_id), workflow (search_suppliers → identify → find_alternatives → compare/check), differences from siblings, examples of correct invocation with parameter mappings, errors and self-correction steps, and explicit 'AVOID' instructions. This is exemplary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cluster_suppliersGet Cluster's SuppliersA
Read-onlyIdempotent
Inspect

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 条/页。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size: number of records to return (1-50, default 20)
offsetNoPagination offset: skip this many records before returning results (default 0)
cluster_idYesCluster ID from search_clusters, e.g. humen_women, keqiao_fabric, shishi_casual
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Beyond annotations (readOnly, idempotent, not destructive), the description details sorting (quality_score DESC), pagination behavior, return structure (cluster_id, has_more, data), and source (MRC Data). It also covers error scenarios and rate limiting, providing comprehensive behavioral context.

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?

The description is front-loaded with the primary purpose and well-organized into clear sections (use cases, workflow, examples, errors). While fairly long, each section serves a distinct purpose and enhances usability without unnecessary redundancy.

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?

Given the lack of an output schema, the description adequately specifies the return shape (cluster_id, has_more, data sorted by quality_score). It also addresses error handling, prerequisites, workflow integration, and multilingual support (Chinese), leaving no critical gaps for an AI agent to correctly invoke the tool.

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

Parameters3/5

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

With 100% schema description coverage, the schema already fully describes all four parameters. The description adds marginal value through usage examples that illustrate typical values for limit, offset, and cluster_id, but does not significantly deepen understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all suppliers in a specific industrial cluster' and explicitly distinguishes from sibling tools like search_suppliers and compare_clusters, making its unique purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'USE WHEN' and 'AVOID' sections provide explicit usage contexts, common query patterns, and specific alternatives (e.g., search_suppliers for global search, compare_clusters for cluster comparison). The WORKFLOW guidance further clarifies its place in a multi-step process.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fabric_detailGet Fabric DetailA
Read-onlyIdempotent
Inspect

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: "" }) • 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 reserve pool. Filter search_fabrics for higher data_confidence. • Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call in a loop for multiple fabrics — if user wants to compare fabrics, present the search_fabrics summary list instead. Do not call to browse — use search_fabrics with filters.

NOTE: Source: MRC Data (meacheal.ai). AATCC/ISO/GB methods cited per field.

中文:按 ID 获取单个面料的完整实测档案(含 AATCC/ISO/GB 检测指标)。

ParametersJSON Schema
NameRequiredDescriptionDefault
fabric_idYesFabric ID from search_fabrics results, e.g. FAB-W007
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds extensive context: returns 30+ fields, error handling for 'Fabric not found', null fields, rate limiting (429 with 60s wait), and source details. This goes well beyond the annotations.

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?

The description is well-structured with clear sections (PREREQUISITE, USE WHEN, WORKFLOW, RETURNS, EXAMPLES, ERRORS, AVOID, NOTE, 中文). While comprehensive, some redundancy exists (e.g., repeated mentions of field types). It is front-loaded with the core purpose.

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?

Given the complexity of the tool (returns 30+ fields, no output schema), the description compensates by listing the categories of returned fields, describing the response structure, covering error states, and providing a workflow context. It is fully adequate for an agent to understand and use the tool correctly.

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% with clear parameter descriptions. The description adds value by explaining the prerequisite for fabric_id (must come from search_fabrics), providing example IDs, and elaborating on verbose_hints with usage context. This justifies a score above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves the complete lab-tested record of a single fabric by ID. It distinguishes itself from sibling tools like search_fabrics and get_fabric_suppliers by specifying its unique role in the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the prerequisite to call search_fabrics first, provides a detailed list of user queries that trigger this tool, and outlines a workflow (search_fabrics → get_fabric_detail → optionally get_fabric_suppliers or detect_discrepancy). It also includes clear 'AVOID' guidance on when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fabric_suppliersGet Fabric's SuppliersA
Read-onlyIdempotent
Inspect

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.

中文:查询某面料的所有供应商,按质量评分排序,含报价对比。

ParametersJSON Schema
NameRequiredDescriptionDefault
fabric_idYesFabric ID from search_fabrics, e.g. FAB-W007
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Discloses sorting behavior, return structure, error handling, rate limiting, and self-correction strategies, adding context beyond annotations that already declare readOnlyHint and idempotentHint.

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?

Well-structured with sections like USE WHEN, PREREQUISITE, EXAMPLES; front-loaded with core action. Slightly lengthy but all content earns its place.

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?

Despite no output schema, description explains return format, prerequisites, workflow, error handling, and provides examples, making it self-contained for correct invocation.

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

Parameters5/5

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

Schema coverage is 100%, and description adds examples, meaning, and usage hints for both parameters (fabric_id with example, verbose_hints with explanation), enriching semantic understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'List all suppliers offering a specific fabric, sorted by quality score, with price comparison' and distinguishes from sibling tools like search_suppliers and get_supplier_fabrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists use cases, prerequisites (fabric_id from search_fabrics), workflow, and what to avoid, providing strong guidance for agent decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_product_categoriesList Product CategoriesA
Read-onlyIdempotent
Inspect

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).

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

ParametersJSON Schema
NameRequiredDescriptionDefault
provinceNoFilter by province (e.g. guangdong, 广东)
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds that results are ranked by supplier count, data source is MRC Data, and includes error handling for empty data, invalid province, and rate limits.

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?

Well-structured with clear sections (main description, USE THIS FIRST, WORKFLOW, etc.) and front-loaded key purpose. Slightly verbose but each section earns its place.

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?

Completely describes return format (total_categories, province_filter, data array), ordering, error handling, data source, and provides sufficient examples. No output schema, so description carries full burden.

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 baseline is 3. Description adds value by explaining that province accepts English or Chinese (normalizeProvince handles both), and provides multiple examples showing parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all product categories available in the database with supplier counts', uses a specific verb and resource, and distinguishes from siblings like get_province_distribution (geographic insight) and search_suppliers (follow-up).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly specifies when to use ('USE THIS FIRST when: ...'), what to avoid ('Do not call this before every search'), and provides workflow alternatives (get_province_distribution, analyze_market).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_province_distributionProvince DistributionA
Read-onlyIdempotent
Inspect

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 城市。可按品类筛选。

ParametersJSON Schema
NameRequiredDescriptionDefault
product_typeNoFilter by product type (e.g. sportswear, t-shirt, 运动服)
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations already indicate read-only and idempotent. Description adds return structure, ranking criteria, data source, error handling (rate limits, empty data, sparse results), and self-correction strategies. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with headers like USE WHEN, WORKFLOW, RETURNS, EXAMPLES, ERRORS & SELF-CORRECTION, AVOID, NOTE. Front-loaded with purpose. Every section adds value, no wasted words.

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?

Despite no output schema, description provides return structure. Covers usage, errors, examples, and notes. Complete for a read-only discovery tool with good annotations and comprehensive description.

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

Parameters5/5

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

Schema coverage is 100% with descriptions for both parameters. Description enriches meaning with examples, how to use product_type, and explains verbose_hints effect. Goes well beyond schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it shows supplier distribution across Chinese provinces. It distinguishes from siblings like search_clusters and provides specific use cases with examples.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'USE WHEN' list with concrete user queries, 'AVOID' section for when not to use, and workflow suggestions for follow-up tools. This provides excellent guidance for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statsGet Database StatsA
Read-onlyIdempotent
Inspect

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).

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

ParametersJSON Schema
NameRequiredDescriptionDefault
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds context: returns dynamic live counts with generated_at, only includes verified/partially_verified records, and specifies error behavior (retry on zero counts, wait on 429). No contradiction with annotations.

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?

Description is well-structured with clear sections (USE WHEN, WORKFLOW, DIFFERENCE, RETURNS, EXAMPLES, ERRORS, AVOID, NOTE) but is quite verbose, including a long list of query examples and Chinese translation. Each sentence earns its place, but could be more concise.

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?

Despite no output schema and only one optional param, the description covers returns format, examples, error handling, data scope (verified only), and relationship to other tools. It is fully complete for an agent to use this tool effectively.

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

Parameters3/5

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

Schema coverage is 100% (one optional param 'verbose_hints' fully described). Description does not add further parameter meaning beyond the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets overall database statistics (total counts of suppliers, fabrics, clusters, links). It lists many user query patterns and distinguishes from the database-overview resource and other tools like get_product_categories, making the purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides explicit USE WHEN scenarios, AVOID instructions, WORKFLOW guidance (call first for scale questions, then deeper tools), and ERROR handling with retry logic. This is comprehensive guidance for when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supplier_detailGet Supplier DetailA
Read-onlyIdempotent
Inspect

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 with check_compliance for formal verification • User: "我要看 sup_123 的完整档案" → get_supplier_detail({ supplier_id: "sup_123" })

ERRORS & SELF-CORRECTION: • "Supplier not found" → the supplier_id is invalid or outside free-tier access. Re-run search_suppliers to obtain a fresh valid ID. Do not guess sequential IDs. • Field returns null → that dimension is unverified for this supplier. Check verified_dimensions.coverage_pct before asserting data. If coverage_pct < 50, warn the user: "This supplier's record has limited verified data (X/8 dimensions). Consider find_alternatives for better-documented options." • "not available for public access" → this supplier is in the reserve pool (paid tier only). Use search_suppliers filters data_confidence=verified to stay in public tier. • Rate limit 429 → wait 60 seconds; do not retry immediately.

AVOID: Do not call this for multiple suppliers in a loop — use compare_suppliers with up to 10 IDs at once. Do not call to browse the database — use search_suppliers or get_province_distribution for discovery.

NOTE: Source: MRC Data (meacheal.ai). Every numeric field shows both declared and lab-verified values where available.

中文:按 ID 获取单个供应商的完整档案(含维度覆盖率详情)。

ParametersJSON Schema
NameRequiredDescriptionDefault
supplier_idYesSupplier ID from search_suppliers results, e.g. sup_001
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations already indicate readOnly, idempotent, non-destructive. Description adds significant behavioral context: workflow, error handling and self-correction (e.g., 'Supplier not found' → re-run search_suppliers), rate limiting (429 → wait 60s), data sourcing (MRC Data), and field meanings. No contradictions.

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?

The description is long but well-structured with clear sections (USE WHEN, RETURNS, EXAMPLES, ERRORS & SELF-CORRECTION, AVOID, NOTE, 中文). Every sentence adds value. Could be slightly more concise, but the organization compensates. Front-loaded with purpose.

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?

Given the tool's complexity (60+ fields, many sibling tools), the description is remarkably complete. Covers prerequisites, use cases, examples, error handling, workflow, language support, and data provenance. Output schema is missing but description explains return structure with example fields. No gaps identified.

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% (both parameters described in schema). Description adds value beyond schema: explains supplier_id must come from prior search results, and verbose_hints adds interpretation annotations. Also describes rich return structure (60+ fields). Baseline 3 exceeded by adding usage context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets the complete profile of a single Chinese apparel supplier by ID. It distinguishes from sibling tools like search_suppliers (which returns a list) and compare_suppliers (which does side-by-side comparison). It lists specific user intents and example queries, reinforcing purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states prerequisite: must first call search_suppliers or recommend_suppliers. Provides detailed when-to-use scenarios (e.g., 'tell me more about supplier', 'what certifications'). Also includes when-not-to-use: avoid looping, browsing, or guessing IDs. Workflow and alternatives are clearly outlined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supplier_fabricsGet Supplier's Fabric CatalogA
Read-onlyIdempotent
Inspect

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.

中文:查询某供应商能供应的所有面料及其报价、起订量。

ParametersJSON Schema
NameRequiredDescriptionDefault
supplier_idYesSupplier ID from search_suppliers, e.g. sup_001
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds: returns data structure, possible errors (count=0, supplier not found, rate limit 429) with self-correction guidance, data source note, and that prices are not binding offers.

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?

Well-structured with sections: overview, usage triggers, prerequisites, workflow, examples, errors, avoidance, note. Slightly long but each part earns its place. Front-loaded with purpose.

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?

No output schema, but description provides full return structure and error handling. With 2 params and complex error cases, the description is comprehensive and leaves little ambiguity.

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% with both parameters described. Description provides examples and clarifies supplier_id origin, and explains verbose_hints effect. Baseline 3, but added value justifies 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists fabrics a supplier can provide with quoted prices. It specifies the resource (supplier's fabric catalog) and verb (list). Explicitly distinguishes from siblings like search_fabrics and get_fabric_suppliers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Includes extensive guidance: when to use (with specific user queries), prerequisite (must have supplier_id), workflow (search_suppliers → get_supplier_detail → get_supplier_fabrics), and when NOT to use (avoid for general fabric search or cross-supplier comparison, with alternatives named).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recommend_suppliersRecommend SuppliersA
Read-onlyIdempotent
Inspect

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).

中文:基于采购需求智能推荐供应商,按 自有工厂 > 质量分 > 产能 排序。

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoPrefer own factory or trading company
limitNoNumber of top results to return (1-10, default 5)
productYesWhat product to source (e.g. sportswear, t-shirt, down jacket)
provinceNoPreferred province
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
Behavior5/5

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

Annotations indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the tool is safe. Description adds significant behavioral context: ranking logic (own_factory > quality_score > declared_capacity_monthly), data source (MRC Data), return structure including 'note: ranking logic', error/self-correction strategies (e.g., drop province, broaden product), rate limit handling (429 wait 60 seconds), and empty result fallback. No contradiction with annotations.

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?

The description is long but well-structured with headings (USE WHEN, WORKFLOW, DIFFERENCE, RETURNS, EXAMPLES, ERRORS & SELF-CORRECTION, AVOID, NOTE). Each section serves a clear purpose. While not concise, the structure makes it scannable and the content earns its length. Minor redundancy (ranking mentioned in two places) could be trimmed.

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?

Despite no output schema, the description explicitly states the return structure: '{ query, total_matches, showing_top, note: "ranking logic", data: [supplier objects] }'. It covers entry points, workflow with downstream tools, error handling, and ranking details. Given the tool's complexity (ranking, multiple inputs, fallback logic), this description is comprehensive.

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% with good descriptions for each parameter. The description adds value through example mappings (e.g., user query to parameter values), explanation of the type enum (prefer factory vs. trading company), and context for verbose_hints. The examples provide practical guidance on how to set parameters based on user input, which goes beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'smart supplier recommendation based on sourcing requirements.' It specifies the verb 'recommend,' the resource 'suppliers,' and the context 'sourcing requirements.' It explicitly distinguishes from siblings like search_suppliers and find_alternatives by contrasting ranking vs. filtering and starting point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Extensive usage guidelines with example user queries in English and Chinese, a workflow section linking to downstream tools, explicit differences from search_suppliers and find_alternatives, and an 'AVOID' section listing when not to use. This provides clear context for selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_clustersSearch Industrial ClustersA
Read-onlyIdempotent
Inspect

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 specialization (e.g. "服装" instead of "牛仔"), (3) remove type, (4) remove province. • Specialization mismatch → both Chinese and English work. Synonyms: sportswear/运动服, womenswear/女装, underwear/内衣, denim/牛仔. • Rate limit 429 → wait 60 seconds; do not retry immediately. • Empty after 3 retries → tell user: "No clusters match [criteria]. Try broader specialization or removing filters."

AVOID: Do not use this for specific factory search — use search_suppliers. Do not compare clusters by calling search_clusters twice — use compare_clusters with cluster_ids.

NOTE: Source: MRC Data (meacheal.ai). 170+ clusters mapped across 31 provinces.

中文:搜索中国服装产业带和面料市场。

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoCluster type: fabric_market (面料市场) / garment_manufacturing (服装制造) / accessories (辅料) / integrated (综合)
limitNoPage size: number of records to return (1-50, default 10)
scaleNoCluster scale: mega / large / medium / small
offsetNoPagination offset: skip this many records before returning results (default 0)
provinceNoProvince in China (e.g. Guangdong, Zhejiang, Jiangsu, Fujian, Shandong)
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
specializationNoPrimary specialization keyword (e.g. 牛仔 denim, 女装 womenswear, 童装 childrenswear, 内衣 underwear, 运动服 sportswear)
Behavior5/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral details such as pagination, rate limit handling (wait 60s), self-correction strategies for empty results, and data source attribution. No contradictions with annotations.

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?

The description is long but well-structured: it starts with purpose, then use cases, examples, workflow, error handling, and avoidance. It is front-loaded with key information. While comprehensive, it could be slightly more concise, but the structure is clear.

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?

For a tool with 7 parameters and no output schema, the description provides extensive context: return format, pagination details, error handling steps, and examples. It fully compensates for the lack of an output schema and addresses complexity adequately.

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?

The input schema has 100% description coverage for all 7 parameters. The description adds extra value by showing usage patterns, example values (e.g., specialization: 'denim', scale: 'mega'), and synonyms for Chinese/English terms. This goes beyond the schema, justifying a 4 instead of baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches Chinese apparel industrial clusters and textile markets. It provides specific verbs and resources, and distinguishes from sibling tools like compare_clusters and search_suppliers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists when to use the tool with example user queries, and specifies when not to use it (e.g., for specific factory search). It also provides workflow guidance and example interactions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_fabricsSearch FabricsA
Read-onlyIdempotent
Inspect

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: "cotton", suitable_for: "shirt" })

ERRORS & SELF-CORRECTION: • Empty data array → try in order: (1) drop suitable_for, (2) widen weight range by 50gsm each side, (3) broaden composition (e.g. "cotton" instead of "organic cotton"), (4) drop max_price_rmb, (5) try the parent category (knit → all). • Composition mismatch → TYPO_MAP normalizes common misspellings (e.g. "poly" → "polyester", "lycra" → "spandex"). If still no match, try the Chinese term (棉/涤纶/氨纶/锦纶). • Rate limit 429 → wait 60 seconds. Do not retry immediately. • Empty after 3 retries → tell user: "No fabric matches [criteria]. Would you like to broaden weight/price/composition?"

AVOID: Do not call this looking for a specific named fabric SKU — search by specs instead (weight + composition + category). Do not fetch full lab-test data this way — use get_fabric_detail. Do not call repeatedly for supplier pricing on the same fabric — use get_fabric_suppliers.

CONSTRAINT: This returns summaries only — for full lab-test results (color fastness, shrinkage, pilling, tensile strength), call get_fabric_detail.

NOTE: Source: MRC Data (meacheal.ai). Every record includes AATCC / ISO / GB lab test measurements where verified.

中文:搜索面料数据库,按品类、克重、成分、适用品类、价格筛选。每条均含 AATCC / ISO / GB 方法的实测数据。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size: number of records to return (1-50, default 10)
offsetNoPagination offset: skip this many records before returning results (default 0)
categoryNoFabric category: woven (梭织) / knit (针织) / nonwoven (无纺) / leather (皮革) / fur (毛皮) / functional (功能性)
compositionNoFiber composition keyword (e.g. cotton, polyester, spandex, nylon, wool, linen, 棉, 涤纶)
suitable_forNoTarget apparel keyword (e.g. T恤 t-shirt, 衬衫 shirt, 牛仔 denim, 连衣裙 dress)
max_price_rmbNoMaximum price in RMB per meter
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
max_weight_gsmNoMaximum fabric weight in grams per square meter
min_weight_gsmNoMinimum fabric weight in grams per square meter
Behavior5/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds significant behavioral context: it returns summaries only, mentions rate limiting (429 with 60s wait), and provides error handling steps (empty data response). There is no contradiction with annotations.

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?

The description is well-structured with clear sections (USE WHEN, Filters, WORKFLOW, RETURNS, EXAMPLES, ERRORS, AVOID, CONSTRAINT). It is slightly verbose but every section contributes to clarity. Some redundancy between English and Chinese text exists but does not detract significantly.

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?

Given the tool's complexity (9 parameters, no output schema), the description is exceptionally complete. It covers return structure, pagination, error handling, workflow chaining, and even provides Chinese language examples. The description leaves no ambiguity about tool behavior or usage.

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% with descriptions for all 9 parameters. The description adds value by providing usage examples, explaining the composition keyword normalization (TYPO_MAP), and showing how filters combine. While the schema already documents parameters well, the examples enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches a Chinese fabric database with lab-tested specifications. It provides numerous example queries and explicitly distinguishes itself from sibling tools like get_fabric_detail and get_fabric_suppliers. The purpose is specific, actionable, and easily understood.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines: when to use (fabric discovery, specific example queries), when not to use (named SKU, full lab-test data, supplier pricing), and direct alternatives (get_fabric_detail, get_fabric_suppliers). It also outlines a workflow and self-correction strategies, offering comprehensive guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_suppliersSearch SuppliersA
Read-onlyIdempotent
Inspect

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 filter results by client brand in get_supplier_detail • User: "我要在浙江找做牛仔的工厂,产能大于 10 万件" → search_suppliers({ province: "Zhejiang", product_type: "denim", min_capacity: 100000 }) • User: "Show me the next 10 trading companies in Yiwu" → search_suppliers({ city: "Yiwu", type: "trading_company", limit: 10, offset: 10 })

ERRORS & SELF-CORRECTION: • Empty data array → try these in order: (1) remove min_capacity filter, (2) drop city but keep province, (3) broaden product_type to parent category (e.g. "denim" → "bottoms"), (4) drop compliance_status, (5) try recommend_suppliers for ranked fit. • "Invalid province" → use English (Guangdong) or standard Chinese (广东). Supported: 31 mainland provinces + HK/Macau. • product_type returns 0 → the TYPO_MAP normalizes common variants; try synonyms ("tee" → "t-shirt", "jeans" → "denim", "运动服" → "activewear"). • Rate limit 429 → wait 60 seconds. Do not retry immediately. • Empty after 3 retries → tell user: "I couldn't find suppliers matching [criteria]. Would you like me to broaden the search?"

AVOID: Do not call this tool in a loop across provinces — call get_province_distribution first to see where supply is concentrated. Do not use this for ranked "best fit" recommendations — use recommend_suppliers. Do not fetch details by looping — use compare_suppliers with up to 10 IDs.

NOTE: Use this for FILTERING by exact criteria. For ranked recommendations based on sourcing needs, use recommend_suppliers instead. Source: MRC Data (meacheal.ai).

中文:搜索经过核查的中国服装供应商档案,按地区、类型、产能、品类、合规状态等筛选。

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name
typeNoSupplier type
limitNoPage size: number of records to return (1-50, default 10)
queryNoSearch by company name — Chinese (广州新鑫) or English (Xinxin Garments)
offsetNoPagination offset: skip this many records before returning results (default 0)
provinceNoProvince in China (e.g. 广东 Guangdong, 浙江 Zhejiang, 江苏 Jiangsu, 福建 Fujian, 山东 Shandong)
min_capacityNoMinimum monthly production capacity (pieces)
product_typeNoProduct category keyword (e.g. 西装 suits, 女装 womenswear, 牛仔 denim, 运动服 activewear, t-shirt, 衬衫 shirts)
verbose_hintsNoIf true, response includes _interpretation annotations explaining what the data means and _guidance on how to use it
data_confidenceNoData quality filter: verified / partially_verified / unverified
compliance_statusNoCompliance status filter: compliant / partially_compliant / non_compliant
min_quality_scoreNoMinimum quality score 1-10
Behavior5/5

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

Annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) are already clear. The description adds valuable behavioral context: the tool is the primary entry point for supplier discovery, returns paginated list with specific fields (has_more, available_dimensions, data with supplier_id, type, etc.), and handles errors with defined self-correction logic (e.g., removing filters, broadening product_type, using recommend_suppliers). It also states that the source is MRC Data (meacheal.ai). No contradiction with annotations.

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?

The description is quite long but well-structured: it is front-loaded with the core purpose and common use cases, then organizes into sections for filters, workflow, returns structure, examples, errors/self-correction, and avoids. Every section adds value; there is no repetition. The length is justified given the tool's complexity (12 parameters, multiple sibling tools, error cases). A slight deduction for not being more compact, but still concise for the content.

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?

Given the complexity (12 parameters, many siblings, no output schema), the description is extremely complete. It covers purpose, all relevant use cases, filters, workflow with sibling tools, return structure (has_more, available_dimensions, data fields), error handling and self-correction for multiple scenarios, rate limiting, and bilingual examples. It also includes a note distinguishing from recommend_suppliers. The absence of an output schema is compensated by the described return structure.

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

Parameters5/5

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

Schema coverage is 100% (all 12 parameters described). The description goes beyond the schema by providing extensive examples that show how to use parameters together (e.g., province + product_type + compliance_status + limit, with MOQ example). It also explains behavior of product_type (typo normalization map for synonyms like 'tee'→'t-shirt', 'jeans'→'denim'). The 'AVOID' section clarifies when not to use certain parameters (e.g., do not loop across provinces).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear action verb ('Search') and resource ('verified Chinese apparel manufacturers'), immediately stating the tool's purpose. It then lists numerous example user queries covering filters, locations, products, and compliance, making the scope explicit. It also distinguishes from sibling tools like recommend_suppliers (ranked vs filtered) and get_supplier_detail (detail vs list).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive usage guidance: an 'AVOID' section warns against looping across provinces (use get_province_distribution instead), using for ranked recommendations (use recommend_suppliers), or fetching details in a loop (use compare_suppliers). It also gives a workflow: search_suppliers → get_supplier_detail/compare_suppliers/find_alternatives/check_compliance/get_supplier_fabrics. Additionally, it includes error self-correction steps for empty results, invalid provinces, and rate limits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources