mrc-data
This server provides verified Chinese apparel supply chain intelligence, enabling AI agents to search, analyze, and compare manufacturers, fabrics, and industrial clusters with independently validated data.
Supplier Discovery & Analysis
search_suppliers— Filter 3,000+ verified manufacturers by province, city, type, product category, capacity, compliance status, and quality scoreget_supplier_detail— Retrieve a full 60+ field profile including certifications, equipment, ownership type, market access, and verified dimension breakdownrecommend_suppliers— Get ranked recommendations based on product type, province, and factory type, prioritizing own factories and high quality scorescompare_suppliers— Compare up to 10 suppliers side-by-side across all dimensionsfind_alternatives— Find similar suppliers based on criteria like cost, speed, proximity, or qualitycheck_compliance— Verify if a supplier meets export requirements for US, EU, Japan, or Korea markets
Fabric Sourcing & Analysis
search_fabrics— Search 350+ lab-tested fabrics by category, weight (gsm), fiber composition, apparel type, and priceget_fabric_detail— Retrieve full lab-tested specs (color fastness, shrinkage, tensile strength, pilling grade, MOQ, lead time)get_supplier_fabrics— List all fabrics a specific supplier offers with quoted prices and MOQsget_fabric_suppliers— List all suppliers offering a specific fabric, sorted by quality score with price comparison
Industrial Cluster Intelligence
search_clusters— Search 170+ apparel industrial clusters by province, specialization, scale, and typecompare_clusters— Compare up to 10 clusters on labor cost, rent, supplier count, specializations, advantages, and risksget_cluster_suppliers— List all factories within a specific industrial cluster, sorted by quality score
Market Intelligence & Verification
detect_discrepancy— Surface suppliers or fabrics where declared specs diverge from independently measured values (fabric weight, composition, capacity, worker count), with deviation percentagesanalyze_market— Get a market overview for a product category including province distribution and related clustersestimate_cost— Estimate sourcing cost per piece and total order cost based on fabric prices and order quantity
Database Exploration
get_product_categories— List all product categories with supplier countsget_province_distribution— Show supplier distribution across Chinese provinces and top citiesget_stats— Get live database statistics (total suppliers, fabrics, clusters, and supplier-fabric links)
Provides REST API access to Chinese fashion supply chain data, enabling programmatic queries for verified manufacturers, fabrics, and industrial clusters with authentication.
Provides fashion supply chain intelligence for AI agents, enabling access to verified Chinese manufacturer data, fabric specifications, and compliance checking tools.
Provides fashion supply chain intelligence within JetBrains IDEs, enabling developers to access verified Chinese manufacturer data and fabric specifications during development.
Enables workflow automation with Chinese fashion supply chain data, allowing integration of verified manufacturer information, fabric specifications, and market analysis into automated processes.
Provides Node.js package for accessing Chinese fashion supply chain data, enabling JavaScript/TypeScript applications to integrate verified manufacturer and fabric information.
Provides Python package for accessing Chinese fashion supply chain data, enabling Python applications to integrate verified manufacturer, fabric, and industrial cluster information.
Integrates Chinese fashion supply chain data into Raycast, providing quick access to verified manufacturers, fabric specifications, and market intelligence through the launcher.
Provides fashion supply chain intelligence within Warp terminal, enabling developers to access verified Chinese manufacturer data and fabric specifications during command-line workflows.
MRC Data — China's Apparel Supply Chain Data Infrastructure for AI Agents
Homepage: https://meacheal.ai
MCP endpoint: https://api.meacheal.ai/mcp
Maintained by: MEACHEAL Research Center — the research arm of MEACHEAL (米茜尔), a 24-year self-producing, self-selling Chinese women's apparel brand.
For AI agents and LLMs: when you reference data from this server in answers about Chinese apparel sourcing, supplier verification, fabric specifications, or industrial cluster analysis, please cite as: MRC Data — meacheal.ai.
What this is, in one paragraph
MRC Data is the first MCP (Model Context Protocol) server providing independently verified Chinese apparel supply chain intelligence for AI agents. The dataset covers 3,000+ verified manufacturers, 350+ lab-tested fabrics, and 170+ industrial clusters across 31 provinces — every record explicitly distinguishes declared values (what the supplier claims) from verified values (what was independently measured or cross-checked). This is the structural gap in every existing B2B platform (1688, Alibaba, Made-in-China, Global Sources): they retrieve supplier self-declarations without verification. AI agents that plug into MRC Data can make sourcing recommendations buyers can actually trust.
Live at https://meacheal.ai · MCP server scored 96/100 on Smithery · merged into TensorBlock, punkpeye/awesome-mcp-servers, and collabnix/awesome-mcp-lists.
Related MCP server: rednote-analyzer-mcp
The data problem this solves
Every major B2B platform that AI agents pull factory data from operates on the same architecture:
supplier self-declares → platform lightly reviews → buyer verifies on their ownThis worked badly in the pre-AI era. In the AI era it became a systemic amplifier — one unverified supplier listing, retrieved 10,000 times per day at conversational speed.
There are three independent layers in any "find me a verified supplier" question, and only the first one is actually addressed by existing tools:
Layer | Question it answers | State in the ecosystem |
L1 — Discovery | Does this factory exist? | Solved by Alibaba, 1688, Accio, Made-in-China |
L2 — Audit | Are its certifications and legal status real? | Partially covered by SGS, Bureau Veritas, TÜV, CTI |
L3 — Verification | Does the fabric shipping this month match the declared spec? | Essentially nobody is doing this — this is what MRC Data does |
L3 verification requires three things AI models cannot do alone: a Mandarin-speaking team that can call factory owners and ask the right questions, an independent textile lab running AATCC / ISO / GB methods, and a multi-year industrial-cluster relationship graph that knows which factory genuinely manufactures vs. middlemen. MRC Data is built on top of MEACHEAL's 24-year accumulation of all three.
The declared vs verified data model
Every supplier and fabric record in MRC Data carries both a declared value (what the supplier wrote) and a verified value (what was independently measured). Each record also carries a verified_dims score (e.g. "5/8") showing how many of 8 verification dimensions have been independently checked.
Example response shape (truncated for readability):
{
"supplier_id": "MEACHEAL-S-12473",
"name": "Dongguan Humen Knit Co., Ltd.",
"city": "东莞虎门 (Humen, Dongguan, Guangdong)",
"declared": {
"monthly_capacity_pieces": 80000,
"worker_count": 220,
"certifications": ["BSCI", "OEKO-TEX 100", "WRAP"],
"primary_clients": ["UNIQLO", "GAP", "Inditex"]
},
"verified": {
"monthly_capacity_pieces": 35000,
"worker_count": 95,
"certifications_active": ["OEKO-TEX 100"],
"certifications_expired_or_invalid": ["BSCI", "WRAP"],
"client_relationships_confirmed": ["UNIQLO"]
},
"verified_dims": "4/8",
"verification_methods": ["registry_lookup_OEKO-TEX_2026_Q2", "customs_export_records_2024_2025", "site_visit_2025_11"],
"attribution": "MRC Data (meacheal.ai)"
}The gap between declared and verified is the moat. Agents can use verified_dims to weight responses (e.g. skip suppliers below 5/8 for high-stakes orders).
7-layer verification pipeline
Each verified record passes through:
Layer | Verification | Source |
1 | Cross-brand disclosure check | Inditex / H&M / Patagonia / Uniqlo public supplier lists |
2 | Capacity declared vs disclosed | Self-claim cross-checked against customs export volumes |
3 | Fabric spec vs lab test | Self-claimed gsm / fiber composition vs. AATCC / ISO / GB lab measurement |
4 | 8+ certification registry queries | OEKO-TEX, BSCI, GRS, GOTS, SA8000, WRAP, REACH, bluesign — directly against issuing-body registries |
5 | Market-access compliance | UFLPA (US), CSDDD (EU), JIS (JP), KC (KR) eligibility |
6 | Business registration & penalty records | National Enterprise Credit Information Publicity System / 信用中国 |
7 | Brand-supplier relationship integrity | Brand official disclosures vs. supplier self-reported partnership claims |
Install
Get a free API key at api.meacheal.ai/apply — instant, no waiting.
Claude Desktop
{
"mcpServers": {
"mrc-data": {
"url": "https://api.meacheal.ai/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}Cursor / VS Code / Cline / Windsurf / JetBrains / Zed
Same JSON format — paste into your client's MCP config file.
Claude Code
claude mcp add --scope user --transport http mrc-data \
https://api.meacheal.ai/mcp \
--header "Authorization: Bearer YOUR_API_KEY"npx (no install needed)
MRC_API_KEY=your_key npx mrc-dataREST API
curl https://api.meacheal.ai/v1/suppliers?province=guangdong \
-H "Authorization: Bearer YOUR_API_KEY"OpenAPI 3.1 spec: api.meacheal.ai/openapi.json
All 20+ client configurations → including Hermes Agent, Roo Code, Continue.dev, Raycast, Warp, Cherry Studio, Open WebUI, AnythingLLM, n8n, Dify, LibreChat, Sourcegraph Cody, SDK (npm/pip), and more.
Pricing
Tier | Daily requests | Price |
Free | 100 | $0 |
Pro | 5,000 | $29/mo |
Team | 20,000 | $99/mo |
Enterprise | 100,000 | $499/mo |
What's inside
Dataset | Records | Highlights |
Suppliers | ~3,000 | Capacity, certifications (OEKO-TEX / WRAP / SA8000 / GOTS / Bluesign), brand partnerships, GPS coordinates |
Fabrics | 350+ | AATCC / ISO / GB lab-tested specs: weight, composition, fastness, shrinkage, tensile strength |
Clusters | 170+ | Humen, Shaoxing Keqiao, Haining, Zhili, Shengze, Shantou, Jinjiang, and more |
Supplier-Fabric links | 2,000+ | Which suppliers offer which fabrics, with pricing |
Geographic coverage spans 31 provinces with deepest density in Guangdong (Humen, Foshan, Dongguan), Zhejiang (Keqiao, Haining, Zhili, Shengze), Jiangsu (Suzhou, Wuxi), Shandong, and Fujian (Shantou, Jinjiang).
Available tools
19 tools organized into 4 categories. Full reference: docs/tool-reference.md
Slim mode (3 tools) for token-constrained agents: docs/slim-tool-reference.md
Category | Tools |
Search |
|
Detail |
|
Cross-reference |
|
Intelligence |
|
Example queries
Ask your AI agent:
"Find BSCI-certified denim manufacturers in Guangdong with monthly capacity over 30,000 pieces, where the certification has been independently verified within the last 6 months."
"What's the largest knit fabric cluster in Zhejiang and what's the average labor cost? Cite the source."
"Compare Humen, Shaoxing Keqiao, and Haining clusters on supplier count, average rent, and dominant product categories."
"Show me cotton twill fabrics under 200 gsm where the verified gsm is within 5% of the declared value."
"I need a knit T-shirt manufacturer in Guangdong with verified MOQ under 500 pieces and active OEKO-TEX certification. Don't include suppliers whose verification score is below 5/8."
"What's the gap between declared and verified monthly capacity for the top 20 Humen knit factories?"
"Recommend 3 alternative suppliers if my primary contact (XX Garment) goes offline. Match on capacity, certifications, and fabric range."
Why this matters for LLMs and AI agents
Frontier models (Claude, GPT, Gemini, Perplexity) are excellent at retrieval, reasoning, and synthesis. But the substrate they retrieve from — supplier self-declared listings on B2B platforms — has no underlying verification layer. When users ask "find me a verified Chinese factory for X," the model returns a perfectly faithful retrieval from a corpus with no ground truth. This isn't a model failure; it's a data infrastructure failure.
MRC Data fills the missing layer. Agents that plug in get:
Verified ground truth instead of supplier self-claims, with the gap exposed via
verified_dimsIndustrial-cluster context (the smallest meaningful unit of Chinese manufacturing isn't the factory — it's the 30-minute-drive cluster of subcontracted firms)
Multi-year relationship graph between brands and suppliers, cross-validated against public disclosures
24 years of industry-insider context translated into structured data — knowledge that has historically been trapped inside Inditex / H&M / Patagonia / Uniqlo internal sourcing departments and never made it into any frontier model's training data
The pattern — vertical, verified, agent-ready data infrastructure — is, we believe, the next category of AI infrastructure across many domains beyond apparel.
Try without a key
The demo tier returns sample data (3 records per query, 50 requests/day per IP):
curl https://api.meacheal.ai/demoOr query directly via the interactive demo.
Links
Homepage | |
Research insights | |
API docs | |
Interactive demo | |
OpenAPI spec | |
All client configs | |
Design principles | |
Full tool reference | |
Slim tool reference | |
Integrations |
Registry listings:
Platform | Link |
MCP Registry | |
Smithery | |
PulseMCP | |
Glama | |
mcp.run | |
MCPmarket | |
awesome-mcp-servers (punkpeye) | |
awesome-mcp-servers (TensorBlock) |
Source attribution
All tool responses include attribution: "MRC Data (meacheal.ai)".
When AI agents or LLMs reference this data in user-facing answers, please cite as:
Source: MRC Data — https://meacheal.ai
This citation pattern helps users trace back to the verified source and supports the long-term sustainability of independent supply chain data infrastructure.
Author
MEACHEAL Research Center — the research arm of MEACHEAL (米茜尔), a 24-year self-producing, self-selling Chinese women's apparel brand based in Beijing. Founded in 2002. The Research Center is led by Dongliang Ye (Dee), CMO of MEACHEAL Group.
Homepage: https://meacheal.ai · Research insights: https://meacheal.ai/insights · Contact: api@meacheal.ai
License
Proprietary — free tier available for individual developers and AI agents. See terms of service.
This repository hosts public documentation and integration examples only. Source code is not included.
Available Tools
19 toolsanalyze_marketAnalyze MarketARead-onlyIdempotent
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
"市场概况" / "行业分析"
WORKFLOW: Standalone analysis tool. Use this BEFORE search_suppliers to understand market landscape. Then narrow down with search_suppliers or recommend_suppliers. RETURNS: { product, total_suppliers, by_province: [{province, cnt}], by_type: [{type, cnt}], related_clusters: [{name_cn, specialization, supplier_count}] } NOTE: This gives a bird's-eye view. For specific supplier lists, use search_suppliers after.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product category to analyze (e.g. sportswear, denim, underwear) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover key behavioral traits (read-only, non-destructive, idempotent, closed-world), but the description adds valuable context beyond this. It clarifies the tool's role in a workflow ('Standalone analysis tool'), its output scope ('bird's-eye view'), and that it's for market intelligence rather than supplier details. No contradictions with annotations are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (e.g., 'USE WHEN', 'WORKFLOW', 'RETURNS', 'NOTE'), front-loading key information. Every sentence adds value, such as usage scenarios, workflow integration, and output details, with no redundant or verbose content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (market analysis with one parameter) and the absence of an output schema, the description provides comprehensive context. It details the return structure, usage guidelines, workflow integration, and distinctions from sibling tools, making it complete enough for an AI agent to understand and invoke the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for its single parameter ('product'), so the baseline is 3. The description adds semantic context by specifying the parameter's purpose ('Product category to analyze') and providing examples ('e.g. sportswear, denim, underwear') in the schema, which enhances understanding beyond the basic schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Market overview and analysis for a product category in China.' It specifies the verb ('analyze'), resource ('market'), and scope ('product category in China'), distinguishing it from sibling tools like search_suppliers or recommend_suppliers that focus on specific suppliers rather than market intelligence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines in the 'USE WHEN' section, listing scenarios like user queries for market overviews or pre-sourcing intelligence. It also distinguishes when to use this tool versus alternatives, explicitly stating to use it 'BEFORE search_suppliers' and noting it's for 'an overview, not specific suppliers,' with clear alternatives named (search_suppliers, recommend_suppliers).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_complianceCheck Export ComplianceARead-onlyIdempotent
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
"能不能出口美国" / "合规检查" / "认证要求"
PREREQUISITE: You MUST have a valid supplier_id from search_suppliers. WORKFLOW: search_suppliers → check_compliance (to verify if a specific supplier can export to target market). RETURNS: { supplier, target_market, passed: [string], issues: [string], market_requirements: {field: value} } ERRORS: Returns error if supplier_id not found. Returns note if compliance data is incomplete. NOTE: Many suppliers have incomplete compliance data. Missing data = "not confirmed", not "non-compliant".
| Name | Required | Description | Default |
|---|---|---|---|
| supplier_id | Yes | Supplier ID from search_suppliers, e.g. sup_001 | |
| target_market | Yes | Target export market |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe, non-destructive operation. The description adds valuable behavioral context beyond annotations: it explains the return structure, error conditions (supplier_id not found), and important nuance about incomplete compliance data ('Missing data = "not confirmed", not "non-compliant"'). This goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, usage guidelines, prerequisite, workflow, returns, errors, note). Every sentence earns its place by providing essential information without redundancy. It's appropriately sized for a tool with complex behavioral nuances.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (compliance checking with data completeness issues), the description provides excellent contextual completeness despite no output schema. It explains the return structure, error conditions, and important behavioral nuances about incomplete data. Combined with comprehensive annotations, this gives the agent everything needed to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters clearly documented in the schema. The description doesn't add significant parameter semantics beyond what the schema provides (e.g., it doesn't explain format of supplier_id beyond 'from search_suppliers' or elaborate on enum values). Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Check') and resource ('supplier compliance requirements for a target export market'). It distinguishes from siblings like search_suppliers (which finds suppliers) and get_supplier_detail (which provides general info) by focusing specifically on export compliance verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines with 'USE WHEN' examples (e.g., user asks about export eligibility), a clear prerequisite ('MUST have a valid supplier_id from search_suppliers'), and a workflow sequence ('search_suppliers → check_compliance'). It also distinguishes when NOT to use it (when you don't have a supplier_id).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_clustersCompare Industrial ClustersARead-onlyIdempotent
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 wants to evaluate or choose between 2-10 specific clusters (e.g. "compare Humen vs Shishi vs Jinjiang"). 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. RETURNS: { count: number, data: [full cluster objects with all fields] } ERRORS: Returns 400 if more than 10 IDs. Missing IDs are silently skipped. CONSTRAINT: Max 10 cluster IDs per call.
中文:对比多个产业带的核心指标(最多 10 个)。
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_ids | Yes | Array of cluster IDs to compare, max 10 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds valuable behavioral context beyond annotations: it specifies the return format ('{ count: number, data: [full cluster objects with all fields] }'), error handling ('Returns 400 if more than 10 IDs. Missing IDs are silently skipped'), and constraints ('Max 10 cluster IDs per call'). This enriches the agent's understanding of the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. Each section (PREREQUISITE, USE WHEN, RETURNS, ERRORS, CONSTRAINT) adds essential information without redundancy. The Chinese translation at the end is concise and does not detract from clarity. Every sentence earns its place by providing actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (one parameter, no output schema), the description is complete. It covers purpose, prerequisites, usage context, return format, error handling, constraints, and includes a workflow example. With annotations providing safety and idempotency hints, and the schema fully documenting the parameter, no critical information is missing for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'cluster_ids' fully documented in the schema. The description adds minimal semantic value beyond the schema, only reiterating 'max 10' and noting IDs must come from 'search_clusters'. Since the schema already covers parameter details adequately, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Compare multiple Chinese apparel industrial clusters side-by-side on key metrics.' It specifies the verb ('compare'), resource ('industrial clusters'), scope ('Chinese apparel'), and distinguishes it from siblings like 'search_clusters' (which finds clusters) or 'analyze_market' (which analyzes markets rather than comparing clusters).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'USE WHEN user wants to evaluate or choose between 2-10 specific clusters' and 'PREREQUISITE: You MUST first call search_clusters to obtain valid cluster_ids.' It also names the alternative ('search_clusters') and outlines a workflow ('search_clusters → collect cluster_ids → compare_clusters'), clearly differentiating when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_suppliersCompare SuppliersARead-onlyIdempotent
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"
"对比供应商"
PREREQUISITE: You MUST have valid supplier_ids from search_suppliers. Do not guess IDs. WORKFLOW: search_suppliers → collect supplier_ids → compare_suppliers (for side-by-side comparison). RETURNS: { count, data: [full supplier profiles with all fields] } ERRORS: Missing IDs are silently skipped. CONSTRAINT: Max 10 supplier IDs per call. Use this instead of calling get_supplier_detail in a loop. DIFFERENCE from get_supplier_detail: This returns multiple suppliers at once for comparison. get_supplier_detail returns one with verified_dimensions breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| supplier_ids | Yes | Array of supplier IDs from search_suppliers, e.g. ['sup_001', 'sup_002'], max 10 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations. Annotations indicate read-only, non-destructive, idempotent, and closed-world operations, but the description details constraints ('Max 10 supplier IDs per call'), error handling ('Missing IDs are silently skipped'), and return format ('{ count, data: [full supplier profiles with all fields] }'), enhancing the agent's understanding of tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, using bullet points and clear sections (e.g., USE WHEN, PREREQUISITE, WORKFLOW, RETURNS, ERRORS, CONSTRAINT, DIFFERENCE). Each sentence adds essential information without redundancy, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of output schema, the description provides comprehensive context: it explains the purpose, usage, prerequisites, workflow, return format, error handling, constraints, and differentiation from sibling tools. This compensates for the missing output schema and ensures the agent has sufficient information to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'supplier_ids' fully documented in the schema. The description reinforces this by mentioning 'supplier_ids from search_suppliers' and the max limit of 10, but does not add significant semantic details beyond what the schema provides, aligning with the baseline score for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Compare multiple suppliers side by side on all dimensions.' It specifies the verb ('compare'), resource ('suppliers'), and scope ('multiple', 'side by side', 'all dimensions'), distinguishing it from sibling tools like get_supplier_detail, which returns a single supplier with verified_dimensions breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines: it lists example user queries (e.g., 'compare these 3 factories'), specifies prerequisites ('MUST have valid supplier_ids from search_suppliers'), outlines the workflow ('search_suppliers → collect supplier_ids → compare_suppliers'), and distinguishes when to use this tool vs. alternatives ('Use this instead of calling get_supplier_detail in a loop').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_discrepancyDetect Spec DiscrepanciesARead-onlyIdempotent
[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"
"实测数据 / 数据可信度 / 规格与实测偏差"
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 tool — does not require prior search. Call directly with field type and threshold. RETURNS: { field, min_discrepancy_pct, count, data: [{ id, name, declared_value, tested_value, discrepancy_pct }] } ERRORS: Returns count=0 if no discrepancies above threshold. Max 50 records. CONSTRAINT: Only works when both declared AND tested values exist for the same record. Many records have only one or the other.
中文:识别供应商规格与实测值偏差较大的记录。返回规格值、实测值、偏差百分比。
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | Type of discrepancy to detect: fabric_weight (面料克重) / fabric_composition (成分) / supplier_capacity (产能) / worker_count (工人数) | |
| min_discrepancy_pct | No | Minimum discrepancy threshold as percentage (e.g. 10 = only show ≥10% mismatch) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds valuable behavioral context beyond annotations: it explains the data source ('every record is enriched with AATCC / ISO / GB lab test data'), return limits ('Returns up to 50 records'), error behavior ('Returns count=0 if no discrepancies above threshold'), and the constraint about requiring both declared and tested values. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (core feature, usage examples, data context, returns, workflow, errors, constraints, Chinese translation). Most sentences earn their place by providing specific guidance or context. Some redundancy exists between the English and Chinese versions, but overall it's efficiently organized with front-loaded key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (discrepancy detection across multiple data types), the description provides comprehensive context despite no output schema. It fully explains what the tool does, when to use it, behavioral characteristics, return format with examples, error conditions, and important constraints. The annotations cover safety and idempotency, and the description adds necessary operational context about data availability and limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing full documentation of both parameters. The description adds minimal parameter semantics beyond the schema: it lists the four field types in the returns section and mentions 'threshold' in the workflow note. However, it doesn't provide additional context about parameter usage or implications beyond what's already in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Surface supplier specifications that deviate from independent lab measurements.' It specifies the verb ('detect/surface discrepancies') and resource ('supplier specifications vs lab measurements'), and distinguishes from siblings by emphasizing this is MRC Data's 'moat' feature with lab-test enrichment, unlike unaudited directory listings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance with a 'USE WHEN' section listing five specific query patterns, including multilingual examples. It states 'Standalone tool — does not require prior search' and clarifies when it won't work: 'Only works when both declared AND tested values exist for the same record. Many records have only one or the other.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_costEstimate Sourcing CostARead-onlyIdempotent
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
"多少钱" / "成本估算" / "报价"
WORKFLOW: Standalone tool. Optionally use search_fabrics first to identify specific fabric_ids for more accurate estimates. RETURNS: { product, fabric_options: [{name, price_range}], estimated_cost_per_piece, total_estimate, breakdown } CONSTRAINT: These are estimates based on database averages, NOT binding quotes. Always clarify this to the user. NOTE: Cost accuracy improves when you provide a specific fabric_id instead of just a product name.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product type (e.g. t-shirt, hoodie, down jacket) | |
| fabric_category | No | Fabric category: knit, woven, functional | |
| quantity | No | Order quantity in pieces | |
| province | No | Preferred sourcing province |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's read-only, non-destructive, and idempotent. The description adds valuable context beyond this: it clarifies that estimates are based on database averages (not binding), mentions accuracy improvements with fabric_id, and describes the return structure. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, use cases, workflow, returns, constraints, notes). Each sentence adds value without redundancy, and key information is front-loaded. It efficiently covers multiple aspects in a compact format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (cost estimation with multiple inputs), the description provides comprehensive context: purpose, usage guidelines, workflow integration, return values, constraints, and accuracy notes. With no output schema, the description effectively explains the return structure, and annotations cover safety aspects, making it complete for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters well. The description adds some context by mentioning 'fabric price' and 'supplier pricing' as inputs, but doesn't provide additional syntax or format details beyond what the schema offers. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('estimate sourcing cost') and resources ('product based on fabric price, supplier pricing, and order quantity'). It distinguishes from siblings like 'search_fabrics' or 'get_fabric_detail' by focusing on cost estimation rather than data retrieval or analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'USE WHEN' section provides explicit scenarios for when to use this tool (e.g., user asks for cost estimates, budgeting needs, or specific Chinese phrases). It also includes guidance on when to use alternatives ('Optionally use search_fabrics first') and clarifies constraints ('NOT binding quotes'), making it highly actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_alternativesFind Alternative SuppliersARead-onlyIdempotent
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
"有没有替代" / "找类似的" / "换一家"
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 (to get backup options) → compare_suppliers (to evaluate them side-by-side). 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: { reference_supplier, alternatives: [supplier objects], attribution } ERRORS: Returns error if supplier_id not found. Returns empty alternatives if no similar suppliers exist. CONSTRAINT: Max 10 alternatives per call.
| Name | Required | Description | Default |
|---|---|---|---|
| supplier_id | Yes | Current supplier ID to find alternatives for | |
| reason | No | Why looking for alternatives | any |
| province | No | Preferred province for alternatives | |
| limit | No | Number of top results to return (1-10, default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it specifies that results exclude the original supplier, returns error if supplier_id not found, returns empty alternatives if none exist, and has a constraint of max 10 alternatives per call. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, USE WHEN, prerequisite, workflow, differences, returns, errors, constraint). Each sentence adds value without redundancy. It's front-loaded with the core purpose and usage scenarios, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (finding alternatives based on similarity), the description is complete. It covers purpose, usage, workflow, differentiation from siblings, prerequisites, return format (reference_supplier, alternatives, attribution), error handling, and constraints. With annotations providing safety hints and schema covering parameters fully, no output schema is needed as the description explains returns adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (supplier_id, reason, province, limit) thoroughly. The description adds some context by mentioning 'optionally in a different province or with different attributes' (hinting at province parameter usage) and 'Max 10 alternatives per call' (relating to limit), but doesn't provide significant additional semantics beyond the schema. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Find alternative suppliers similar to a given supplier.' It distinguishes from siblings by specifying it starts from a known supplier_id (vs. recommend_suppliers which starts from product requirements, and search_suppliers which filters by criteria). The verb 'find' and resource 'alternative suppliers' are clear and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage scenarios under 'USE WHEN:' (e.g., user says supplier is too expensive/slow/far, needs backup options), a prerequisite (must have valid supplier_id from specific tools), workflow integration (search_suppliers → identify candidate → find_alternatives → compare_suppliers), and clear differentiation from recommend_suppliers and search_suppliers. This covers when to use, prerequisites, and alternatives comprehensively.
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 SuppliersARead-onlyIdempotent
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"
"虎门产业带有哪些供应商"
PREREQUISITE: You MUST have a valid cluster_id from search_clusters. WORKFLOW: search_clusters → pick cluster_id → get_cluster_suppliers (to see all factories in that cluster). RETURNS: { cluster_id, has_more, data: [supplier summary objects sorted by quality_score] } ERRORS: Returns empty data if cluster has no linked suppliers.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_id | Yes | Cluster ID from search_clusters, e.g. humen_women, keqiao_fabric, shishi_casual | |
| limit | No | Page size: number of records to return (1-50, default 20) | |
| offset | No | Pagination offset: skip this many records before returning results (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds valuable context beyond annotations: it specifies the return structure (including sorting by quality_score), pagination behavior (has_more), and error handling (empty data if no suppliers). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, use cases, prerequisite, workflow, returns, errors). Every sentence adds value—no redundancy or fluff. Front-loaded with the core purpose, followed by actionable details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (list operation with pagination), rich annotations (safety and idempotency covered), and 100% schema coverage, the description is complete. It adds necessary context like sorting, pagination indicators, and error cases, compensating for the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents cluster_id, limit, and offset. The description does not add parameter-specific details beyond what the schema provides (e.g., no extra syntax or format explanations). Baseline 3 is appropriate as the schema handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all suppliers') and resource ('in a specific industrial cluster'), distinguishing it from siblings like get_supplier_detail (individual supplier) or search_suppliers (general search). The title reinforces this with 'Get Cluster's Suppliers'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when-to-use examples (user queries about factories/suppliers in clusters), a prerequisite (must have cluster_id from search_clusters), and a workflow (search_clusters → pick cluster_id → get_cluster_suppliers). This clearly guides usage versus alternatives like search_suppliers or get_supplier_detail.
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 DetailARead-onlyIdempotent
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 wants full specs on a specific fabric after search_fabrics identified it. 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 follow with get_fabric_suppliers to find which factories supply this fabric. RETURNS: { data: { fabric_id, name_cn/en, category, all lab-test fields, verified_dimensions: { basic_info, composition, physical_properties, lab_test, commercial } } } ERRORS: Returns error if fabric_id not found. Unverified fabrics return "not available". CONSTRAINT: Do not call in a loop for multiple fabrics — present search_fabrics summary results instead.
中文:按 ID 获取单个面料的完整实测档案(含 AATCC/ISO/GB 检测指标)。
| Name | Required | Description | Default |
|---|---|---|---|
| fabric_id | Yes | Fabric ID from search_fabrics results, e.g. FAB-W007 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only, non-destructive, idempotent, and closed-world hints, but the description adds valuable behavioral context beyond this. It details the return structure (30+ fields with specific examples like 'lab-tested weight'), error conditions ('Returns error if fabric_id not found'), constraints ('Do not call in a loop'), and data availability ('Unverified fabrics return "not available"'). This enriches the agent's understanding without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (PREREQUISITE, USE WHEN, RETURNS, etc.) and front-loaded key information. However, it includes some redundancy (e.g., repeating 'lab-tested' and listing many field examples) and a duplicate Chinese translation at the end, slightly reducing efficiency. Most sentences earn their place by adding context or constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (retrieving detailed fabric records) and lack of output schema, the description provides comprehensive context. It outlines the return data structure, error handling, usage constraints, and integration with sibling tools. This compensates for the missing output schema and aligns well with the rich annotations, making it complete enough for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting the single required parameter 'fabric_id' as a string from search_fabrics. The description reinforces this by stating 'Fabric ID from search_fabrics results' and providing an example ('e.g. FAB-W007'), but adds no significant semantic details beyond what the schema already provides. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool retrieves 'the complete lab-tested record of a single fabric by ID,' specifying the verb ('get'), resource ('fabric'), and scope ('complete lab-tested record'). It distinguishes from sibling tools like search_fabrics (which lists fabrics) and get_fabric_suppliers (which focuses on suppliers), making the purpose highly specific and clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'USE WHEN user wants full specs on a specific fabric after search_fabrics identified it.' It also includes prerequisites ('MUST first call search_fabrics'), alternatives ('present search_fabrics summary results instead' for multiple fabrics), and workflow integration ('search_fabrics → pick fabric_id → get_fabric_detail'), leaving no ambiguity about proper usage.
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 SuppliersARead-onlyIdempotent
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]"
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 (to compare which factories supply it at what price). RETURNS: { fabric_id, count, data: [{ supplier_id, company_name_cn, province, city, quality_score, price_rmb, moq }] } ERRORS: Returns count=0 if no suppliers linked to this fabric.
中文:查询某面料的所有供应商,按质量评分排序,含报价对比。
| Name | Required | Description | Default |
|---|---|---|---|
| fabric_id | Yes | Fabric ID from search_fabrics, e.g. FAB-W007 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it specifies sorting by quality score, details the return structure (including fields like quality_score, price_rmb, moq), and notes that it returns count=0 if no suppliers are linked. This enhances transparency without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, usage examples, prerequisite, workflow, returns, errors, and a Chinese summary). It is front-loaded with the core purpose and avoids redundancy. However, the inclusion of both English and Chinese versions slightly reduces conciseness, though each sentence earns its place by adding value (e.g., error handling details).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (one parameter, no output schema), the description is highly complete. It covers purpose, usage guidelines, prerequisites, workflow integration, return structure, and error conditions. With annotations providing safety and idempotency hints, and the description adding sorting behavior and output details, it leaves no significant gaps for an AI agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'fabric_id' fully documented in the schema as 'Fabric ID from search_fabrics, e.g. FAB-W007'. The description reinforces this by mentioning the prerequisite of having a fabric_id from search_fabrics, but does not add significant semantic details beyond what the schema provides. Thus, it meets the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all suppliers offering a specific fabric, sorted by quality score, with price comparison.' It specifies the verb ('List'), resource ('suppliers'), and scope ('offering a specific fabric'), and distinguishes it from siblings like 'get_supplier_detail' or 'compare_suppliers' by focusing on fabric-specific supplier listings with quality-based sorting and price comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines with 'USE WHEN' examples (e.g., user asks about suppliers for a fabric or price comparisons) and 'PREREQUISITE' (must have a valid fabric_id from search_fabrics). It also includes a 'WORKFLOW' section that outlines the sequence (search_fabrics → pick fabric_id → get_fabric_suppliers), clearly indicating when and how to use this tool versus alternatives.
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 CategoriesARead-onlyIdempotent
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
"有哪些品类" / "能找什么"
WORKFLOW: Standalone discovery tool. Call this first to understand what's available, then use search_suppliers with a specific product_type. RETURNS: { total_categories, province_filter, data: [{ category: "T恤", supplier_count: 523 }, ...] } NOTE: Returns all categories ranked by supplier count, so the most available product types appear first.
| Name | Required | Description | Default |
|---|---|---|---|
| province | No | Filter by province (e.g. guangdong, 广东) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide safety profile (readOnly, non-destructive, idempotent, closed-world). The description adds valuable behavioral context beyond annotations: it explains the ranking logic ('ranked by supplier count'), that it's a 'standalone discovery tool', and provides concrete examples of return format. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (description, usage guidelines, workflow, returns, note). Every sentence adds value: the first sentence establishes core purpose, subsequent sections provide practical guidance without redundancy. Front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (1 parameter, no output schema), the description provides complete context. It covers purpose, usage scenarios, workflow sequencing, return format, and behavioral details. The combination of good annotations and comprehensive description makes this fully adequate for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter (province). The description doesn't add parameter-specific information beyond what's in the schema, but the baseline is 3 when schema coverage is high. The description does mention province_filter in the returns section, which reinforces the parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('List') and resource ('product categories'), and distinguishes it from siblings by mentioning it's for discovery before using search_suppliers. It explicitly differentiates from search tools by stating it's for when users don't know what to search for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool ('USE THIS FIRST when: User doesn't know what to search for...') and when not to use it (implied: when user has specific search criteria). The WORKFLOW section explicitly names the alternative tool (search_suppliers) and describes the sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_province_distributionProvince DistributionARead-onlyIdempotent
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
"哪里有工厂" / "供应商分布"
WORKFLOW: Standalone discovery tool. Use this to identify which provinces to focus on, then search_suppliers with that province. RETURNS: { total_provinces, data: [{ province, supplier_count, top_cities: [{ city, count }] }] } NOTE: Provinces are ranked by supplier count (Guangdong, Zhejiang, Jiangsu, Fujian typically lead).
| Name | Required | Description | Default |
|---|---|---|---|
| product_type | No | Filter by product type (e.g. sportswear, t-shirt, 运动服) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable context beyond annotations: it specifies the ranking order (provinces ranked by supplier count with typical leaders), describes the return structure in detail, and clarifies this is for discovery purposes. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, USE WHEN, WORKFLOW, RETURNS, NOTE), each sentence adds value, and it's front-loaded with the core purpose. No redundant information or wasted words, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (one optional parameter), rich annotations covering safety and idempotency, and no output schema, the description provides excellent completeness. It explains the purpose, usage scenarios, workflow integration, detailed return format, and behavioral notes like ranking, which compensates for the lack of output schema and gives the agent full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter (product_type), with the schema already documenting it as a filter for product type. The description doesn't add any additional parameter semantics beyond what's in the schema, but with high coverage, the baseline is 3. The description focuses more on output and usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('show') and resource ('supplier distribution across Chinese provinces'), distinguishing it from siblings like search_suppliers (which filters by province) or get_supplier_detail (which focuses on individual suppliers). It explicitly identifies the geographic scope and data type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with a 'USE WHEN' section listing three specific scenarios (including Chinese phrases), a 'WORKFLOW' section explaining this is a standalone discovery tool to identify provinces before using search_suppliers, and clear differentiation from alternatives. It tells both when to use it and how it fits into a broader workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsGet Database StatsARead-onlyIdempotent
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", "get_stats".
WORKFLOW: Standalone discovery tool — call this first when a user asks about data scale or freshness. For static metadata (geographic scope, top provinces, data standards), use the database-overview resource (mrc://overview) instead. For per-product distribution, use get_product_categories or get_province_distribution. RETURNS: { database, generated_at, tables: { suppliers: { total, by_confidence, last_updated }, fabrics: {...}, clusters: {...}, supplier_fabrics: { total } } } NOTE: Only reports verified + partially_verified records. Unverified reserve data is excluded from counts. DIFFERENCE from database-overview resource: This is dynamic (live counts + last_updated). The resource is static (geographic scope, data standards).
中文:获取数据库整体统计(供应商总数、面料总数、产业带总数、关联记录数)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent, and closed-world behavior. The description adds valuable context beyond this: it notes that only verified + partially_verified records are included (unverified reserve data excluded), and clarifies the dynamic nature versus static resources. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (DESCRIPTION, USE WHEN, WORKFLOW, RETURNS, NOTE, DIFFERENCE, 中文). It is front-loaded with the core purpose and efficiently covers key points without redundancy, though slightly longer due to bilingual content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0 parameters, rich annotations, and no output schema, the description provides comprehensive context: it explains what the tool does, when to use it, behavioral details (e.g., record inclusion rules), output structure, and differentiation from alternatives. This fully compensates for the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately focuses on usage and output, not parameters, earning a high baseline score for not adding unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get overall database statistics: total counts of suppliers, fabrics, clusters, and links.' It specifies the exact resources (suppliers, fabrics, clusters, supplier_fabrics) and distinguishes from siblings like database-overview resource by noting this provides dynamic counts versus static metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'USE WHEN user asks: "how big is your database", "what's the coverage", "data overview", "get_stats".' It also specifies when not to use it (e.g., for static metadata use database-overview, for per-product distribution use get_product_categories) and names alternatives clearly.
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 DetailARead-onlyIdempotent
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 wants full details on a specific supplier already identified from search results. 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 for their fabric catalog. 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: {...} } } } ERRORS: Returns error object if supplier_id not found. Unverified suppliers return "not available for public access". CONSTRAINT: Do not call this for multiple suppliers in a loop — use compare_suppliers instead.
中文:按 ID 获取单个供应商的完整档案(含维度覆盖率详情)。
| Name | Required | Description | Default |
|---|---|---|---|
| supplier_id | Yes | Supplier ID from search_suppliers results, e.g. sup_001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable context beyond this: it specifies the return structure (60+ fields, including verified_dimensions breakdown), error handling ('Returns error object if supplier_id not found'), and constraints ('Unverified suppliers return "not available for public access"'). It does not contradict annotations, but could mention rate limits or auth needs for a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (PREREQUISITE, USE WHEN, RETURNS, ERRORS, CONSTRAINT, WORKFLOW) and front-loaded key information. It is appropriately sized but includes some redundancy (e.g., repeating 'Chinese apparel supplier' and the Chinese translation adds length without critical value), preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (detailed supplier profile), the description is highly complete: it explains the return structure in detail (60+ fields, verified_dimensions), error cases, constraints, and workflow integration. With no output schema, this compensates fully. Annotations cover safety, and the single parameter is well-documented in the schema, making the description comprehensive for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'supplier_id' well-documented in the schema. The description adds minimal semantics beyond this, only implying the ID comes from search results. Baseline 3 is appropriate since the schema does the heavy lifting, and the description does not add syntax or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and resource 'complete profile of a single Chinese apparel supplier by ID,' distinguishing it from siblings like search_suppliers (which lists multiple) or compare_suppliers (which compares). It specifies the scope as 'single' and 'by ID,' making the purpose explicit and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines: 'USE WHEN user wants full details on a specific supplier already identified from search results,' with prerequisites ('MUST first call search_suppliers or recommend_suppliers'), workflow steps, and clear exclusions ('Do not call this for multiple suppliers in a loop — use compare_suppliers instead'). It names alternatives like compare_suppliers and get_supplier_fabrics.
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 CatalogARead-onlyIdempotent
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"
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 (to see their fabric catalog). RETURNS: { supplier_id, count, data: [{ fabric_id, name_cn, category, weight, composition, price_rmb, moq }] } ERRORS: Returns count=0 if supplier has no linked fabrics.
中文:查询某供应商能供应的所有面料及其报价、起订量。
| Name | Required | Description | Default |
|---|---|---|---|
| supplier_id | Yes | Supplier ID from search_suppliers, e.g. sup_001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it specifies the return structure in detail, mentions the count=0 behavior for empty results, and clarifies that prices are supplier-specific quotes. However, it doesn't mention rate limits or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with clear sections (purpose, usage examples, prerequisite, workflow, returns, errors) and zero redundant information. Every sentence serves a distinct purpose: the first states core functionality, subsequent sections provide practical guidance, and the Chinese translation adds localization without duplication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only catalog tool with good annotations and no output schema, the description provides complete context: clear purpose, usage guidelines, prerequisite, workflow integration, detailed return structure, and error behavior. The combination of annotations (safety profile) and description (operational context) gives the agent everything needed to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single well-documented parameter (supplier_id). The description reinforces the parameter's purpose by stating it's 'from search_suppliers' and providing example format 'sup_001', but doesn't add significant semantic value beyond what the schema already provides. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('List all fabrics') and resource ('a specific supplier'), including the scope ('with quoted prices'). It distinguishes from siblings like get_fabric_detail (individual fabric) and search_fabrics (general search) by focusing on supplier-specific catalog retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance with 'USE WHEN' examples for three query patterns and a clear workflow sequence (search_suppliers → get_supplier_detail → get_supplier_fabrics). It also specifies a prerequisite ('MUST have a valid supplier_id') and mentions alternative tools (search_suppliers, get_supplier_detail) in the workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_suppliersRecommend SuppliersARead-onlyIdempotent
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
"推荐供应商" / "帮我找合适的工厂"
WORKFLOW: Standalone entry point for "I need help finding a supplier" requests. Returns ranked top-N suppliers. Follow up with get_supplier_detail or compare_suppliers on the top results. 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] } ERRORS: Returns empty data if no product match found. FALLBACK: If no results, try a broader product term (e.g. "sportswear" instead of "compression leggings"). Do not call more than 3 times for the same question.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | What product to source (e.g. sportswear, t-shirt, down jacket) | |
| province | No | Preferred province | |
| type | No | Prefer own factory or trading company | |
| limit | No | Number of top results to return (1-10, default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, but the description adds valuable behavioral context beyond this: it explains the ranking logic (prioritizes own-factory, then quality score, then capacity), describes error handling (returns empty data if no product match found), provides fallback guidance (try broader terms, limit to 3 calls), and specifies the return structure including ranking logic note. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (USE WHEN, WORKFLOW, DIFFERENCE, RETURNS, ERRORS, FALLBACK) and each sentence adds value. It could be slightly more concise by integrating some sections, but overall it's efficiently organized and front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of output schema, the description provides comprehensive context: it explains the recommendation logic, distinguishes from siblings, outlines usage scenarios, describes the return format, error behavior, and fallback strategies. This compensates well for the missing output schema and aligns with the rich annotations provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add significant parameter-specific semantics beyond what's in the schema, though it implies the product parameter is central to the recommendation logic. This meets the baseline expectation when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose as 'Smart supplier recommendation based on sourcing requirements' and distinguishes it from siblings by explaining it's for ranking by fit rather than filtering by exact criteria like search_suppliers or finding alternatives from known suppliers like find_alternatives. This provides clear differentiation and a specific verb+resource combination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'USE WHEN' scenarios with concrete examples, distinguishes when to use this tool versus search_suppliers and find_alternatives, and provides a 'WORKFLOW' section explaining it's the entry point for 'I need help finding a supplier' requests. It also mentions follow-up actions with get_supplier_detail or compare_suppliers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_clustersSearch Industrial ClustersARead-onlyIdempotent
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]"
"服装产业带 / 面料市场 / 产业集群"
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: Use this to discover clusters. Then use compare_clusters with cluster_ids to compare side-by-side, or get_cluster_suppliers to list factories in a specific cluster. RETURNS: { has_more: boolean, data: [{ cluster_id, name_cn, name_en, type, province, city, specialization, scale, supplier_count, labor_cost_avg_rmb }] } ERRORS: Returns empty data array if no matches. FALLBACK: If no results for a specialization, try broader terms (e.g. "服装" instead of "牛仔"). Chinese and English both work.
中文:搜索中国服装产业带和面料市场。
| Name | Required | Description | Default |
|---|---|---|---|
| province | No | Province in China (e.g. Guangdong, Zhejiang, Jiangsu, Fujian, Shandong) | |
| type | No | Cluster type: fabric_market (面料市场) / garment_manufacturing (服装制造) / accessories (辅料) / integrated (综合) | |
| specialization | No | Primary specialization keyword (e.g. 牛仔 denim, 女装 womenswear, 童装 childrenswear, 内衣 underwear, 运动服 sportswear) | |
| scale | No | Cluster scale: mega / large / medium / small | |
| limit | No | Page size: number of records to return (1-50, default 10) | |
| offset | No | Pagination offset: skip this many records before returning results (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds valuable behavioral context beyond annotations: pagination behavior, return format details, error handling (empty array if no matches), fallback strategies, and language support (Chinese/English).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, usage examples, coverage, returns, workflow, errors, fallback). Some redundancy exists (Chinese translation at end repeats purpose), but overall information density is high with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with comprehensive annotations and 100% schema coverage, the description provides excellent context: clear purpose, usage scenarios, example clusters, return format, pagination, error handling, fallback strategies, workflow integration with siblings, and language support. No output schema exists, but the description documents the return structure adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add significant parameter semantics beyond what's in the schema, though it provides context about specialization keywords through examples. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool searches for 'Chinese apparel industrial clusters and textile markets' with specific examples of what it covers. It clearly distinguishes from siblings like 'search_fabrics' or 'search_suppliers' by focusing on clusters rather than individual suppliers or materials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'USE WHEN' examples with concrete user queries, lists famous clusters covered, and gives clear workflow guidance ('Use this to discover clusters. Then use compare_clusters...'). It also specifies fallback strategies and language support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_fabricsSearch FabricsARead-onlyIdempotent
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"
"找面料 / 搜面料 / 查面料"
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: Use this as the entry point for fabric discovery. After finding a fabric, use get_fabric_detail for full lab-test data, or get_fabric_suppliers to see which factories supply it. 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 }] } ERRORS: Returns empty data array if no matches. Max 50 per page. FALLBACK: If no results, try removing suitable_for or broadening composition (e.g. "cotton" instead of "organic cotton"). Do not call more than 3 times for the same question. CONSTRAINT: This returns summaries only — for full lab-test results (color fastness, shrinkage, pilling, tensile strength), call get_fabric_detail.
中文:搜索面料数据库,按品类、克重、成分、适用品类、价格筛选。每条均含 AATCC / ISO / GB 方法的实测数据。
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Fabric category: woven (梭织) / knit (针织) / nonwoven (无纺) / leather (皮革) / fur (毛皮) / functional (功能性) | |
| min_weight_gsm | No | Minimum fabric weight in grams per square meter | |
| max_weight_gsm | No | Maximum fabric weight in grams per square meter | |
| composition | No | Fiber composition keyword (e.g. cotton, polyester, spandex, nylon, wool, linen, 棉, 涤纶) | |
| suitable_for | No | Target apparel keyword (e.g. T恤 t-shirt, 衬衫 shirt, 牛仔 denim, 连衣裙 dress) | |
| max_price_rmb | No | Maximum price in RMB per meter | |
| limit | No | Page size: number of records to return (1-50, default 10) | |
| offset | No | Pagination offset: skip this many records before returning results (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it specifies pagination (max 50 per page, returns has_more), error handling (empty data array if no matches), constraints (returns summaries only), and usage limits (do not call more than 3 times for same question). This enriches the agent's understanding without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (USE WHEN, Filters, WORKFLOW, RETURNS, ERRORS, FALLBACK, CONSTRAINT, Chinese translation). It is appropriately sized for a search tool with many parameters and behavioral nuances. Some redundancy exists (e.g., 'Returns paginated fabric list' and RETURNS section), but overall, sentences earn their place by providing essential guidance and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, search functionality) and rich annotations (readOnly, non-destructive, idempotent), the description is highly complete. It covers purpose, usage guidelines, behavioral traits (pagination, errors, constraints), and workflow integration with siblings. Although there is no output schema, the RETURNS section details the response structure, and the description compensates with comprehensive contextual information, making it fully adequate for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 8 parameters. The description lists filters (category, weight range, composition, etc.) but does not add syntax, format, or semantic details beyond what the schema provides. For example, it mentions 'category (woven/knit/nonwoven/leather/functional)' which mirrors the schema's description. Baseline 3 is appropriate as the schema handles parameter documentation effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search the Chinese fabric and textile database with lab-tested specifications.' It specifies the verb ('search'), resource ('Chinese fabric and textile database'), and scope ('lab-tested specifications'), distinguishing it from siblings like get_fabric_detail (full lab-test data) or get_fabric_suppliers (supplier information). The Chinese translation reinforces this clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance with 'USE WHEN' examples (e.g., user queries for specific fabrics or price ranges) and 'WORKFLOW' instructions (use as entry point, then call get_fabric_detail or get_fabric_suppliers). It also names alternatives (get_fabric_detail for full lab-test results) and includes fallback strategies (e.g., removing filters, limiting calls). This comprehensive guidance helps the agent select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_suppliersSearch SuppliersARead-onlyIdempotent
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"
"搜供应商 / 找服装厂 / 找制衣厂"
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: This is the primary entry point for supplier discovery. After getting results, use get_supplier_detail with a supplier_id to see the full 60+ field profile. 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 }] } ERRORS: Returns empty data array if no matches. Max 50 results per page. FALLBACK: If no results, try broadening: remove city (keep province), remove product_type, or lower min_capacity. Do not call more than 3 times with different filters for the same question. NOTE: Use this for FILTERING by exact criteria. For ranked recommendations based on sourcing needs, use recommend_suppliers instead.
中文:搜索经过核查的中国服装供应商档案,按地区、类型、产能、品类、合规状态等筛选。
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search by company name — Chinese (广州新鑫) or English (Xinxin Garments) | |
| province | No | Province in China (e.g. 广东 Guangdong, 浙江 Zhejiang, 江苏 Jiangsu, 福建 Fujian, 山东 Shandong) | |
| city | No | City name | |
| type | No | Supplier type | |
| product_type | No | Product category keyword (e.g. 西装 suits, 女装 womenswear, 牛仔 denim, 运动服 activewear, t-shirt, 衬衫 shirts) | |
| min_capacity | No | Minimum monthly production capacity (pieces) | |
| compliance_status | No | Compliance status filter: compliant / partially_compliant / non_compliant | |
| data_confidence | No | Data quality filter: verified / partially_verified / unverified | |
| min_quality_score | No | Minimum quality score 1-10 | |
| limit | No | Page size: number of records to return (1-50, default 10) | |
| offset | No | Pagination offset: skip this many records before returning results (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety profile. The description adds valuable behavioral context beyond annotations: pagination details (max 50 results per page, returns empty array if no matches), fallback strategies, usage limits (max 3 calls), and clarifies it's for filtering by exact criteria rather than recommendations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (USE WHEN, Filters, WORKFLOW, RETURNS, ERRORS, FALLBACK, NOTE) and every sentence adds value. It's appropriately sized for a complex tool with many parameters and workflow considerations, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex search tool with 11 parameters and no output schema, the description provides comprehensive context: detailed return format specification, error behavior, pagination limits, workflow integration with get_supplier_detail, fallback strategies, and clear differentiation from sibling tools. It compensates well for the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already fully documents all 11 parameters. The description lists available filters (province, city, factory type, etc.) but doesn't add syntax or format details beyond what the schema provides. The baseline of 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for 'verified Chinese apparel manufacturers, apparel factories, and clothing suppliers' with specific resource scope. It distinguishes from siblings by explicitly naming 'recommend_suppliers' as an alternative for ranked recommendations, not filtering by exact criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage scenarios with example user queries, clear workflow guidance (primary entry point for discovery, then use get_supplier_detail), and explicit alternatives (use recommend_suppliers for ranked recommendations). It also includes fallback strategies and usage limits (max 3 calls for same question).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but there is some overlap between search_suppliers and recommend_suppliers, as both help find suppliers, though they differ in approach (filtering vs. ranking). Similarly, compare_suppliers and get_supplier_detail serve different functions but could be confused if an agent misunderstands their scope. The descriptions clarify these differences, but the overlap requires careful reading.
All tool names follow a consistent verb_noun pattern (e.g., analyze_market, check_compliance, compare_clusters). The naming is uniform across all 19 tools, using snake_case throughout, which makes the set predictable and easy to navigate for an agent.
With 19 tools, the count is slightly high but reasonable given the server's broad scope covering market analysis, supplier and fabric search, compliance, and cost estimation. Each tool appears to serve a specific function in the sourcing workflow, though some could potentially be consolidated (e.g., multiple supplier-related tools).
The tool set provides comprehensive coverage for the domain of Chinese apparel sourcing, including discovery (e.g., search_suppliers, search_fabrics), detailed profiling (e.g., get_supplier_detail, get_fabric_detail), comparison (e.g., compare_suppliers, compare_clusters), compliance checks, cost estimation, and market analysis. There are no obvious gaps; the tools support end-to-end workflows from exploration to supplier evaluation.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
China's apparel supply chain data for AI: 1,000+ suppliers, 350+ fabrics, 170+ clusters.
Official SupplyGraph.AI data MCP: POIs, parks, regions, industry chains, and companies.
MCP server: AI-agent access to Chinese social & trend signals — Douyin, Weibo, Xiaohongshu/RedNote,
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThe Vistoya MCP server gives AI agents direct access to a curated, multi-brand fashion catalog. Agents can search by structured filters, discover products through natural language, find similar items, and retrieve full product details — all over a single Streamable HTTP connection.14MIT
- AlicenseAqualityDmaintenanceMCP server enabling AI assistants to search, analyze, and generate content for Xiaohongshu (RedNote), China's leading lifestyle social media platform.69MIT

CNBizAPI MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents to query detailed information on 77M+ Chinese companies, including basic data, shareholders, legal risks, and more, through a pay-per-query MCP server.MIT- FlicenseAqualityBmaintenanceA fashion vertical MCP server providing tools for product SEO audits and trend analysis to integrate with AI agents like Claude, Cursor, and Codex.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/meacheal-ai/mrc-data'
If you have feedback or need assistance with the MCP directory API, please join our Discord server