Find verified global B2B buyers by category & country. Free anonymous discovery. SGX-listed.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Deep company intelligence for a buyer: corporate registry verification, customs import records, supply chain mapping, decision-maker profiling, risk flags. Returns 0-100 score with evidence chain.
Buyer's website domain
ISO 3166-1 alpha-2 country code
Buyer's company name
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Deep company intelligence for a buyer: corporate registry verification, customs import records, supply chain mapping, decision-maker profiling, risk flags. Returns 0-100 score with evidence chain.
| Argument | Type | Description |
|---|---|---|
| country_iso | string | ISO 3166-1 alpha-2 country code |
| target_domain* | string | Buyer's website domain |
| target_company_name | string | Buyer's company name |
{
"type": "object",
"required": [
"target_domain"
],
"properties": {
"country_iso": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code"
},
"target_domain": {
"type": "string",
"description": "Buyer's website domain"
},
"target_company_name": {
"type": "string",
"description": "Buyer's company name"
}
}
}Poll a background buyer-discovery task created by find_buyers (acquisition.task_id) or submit_discovery_job. Returns status (working | completed | failed); when completed, includes the freshly gathered buyers. Use exponential backoff (start ~20s) and stop polling once status is completed or failed. Free.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max buyers to return when completed (default 50, max 100) |
| task_id* | string | The task_id returned in find_buyers' acquisition field, or a discovery job_id |
{
"type": "object",
"required": [
"task_id"
],
"properties": {
"limit": {
"type": "number",
"description": "Max buyers to return when completed (default 50, max 100)"
},
"task_id": {
"type": "string",
"description": "The task_id returned in find_buyers' acquisition field, or a discovery job_id"
}
}
}Create an AP2 payment mandate: a pre-authorization that lets your agent place orders autonomously (human-not-present) within strict limits — total budget, optional per-order cap, currency, optional seller/category scope, and expiry. Returns a mandate_id to pass to place_order. Each order authorized against it is recorded as a verifiable intent and decrements the budget. Requires authentication.
| Argument | Type | Description |
|---|---|---|
| currency | string | Currency, e.g. USD (default USD). Must match the order currency to authorize. |
| expires_at | string | Optional ISO timestamp after which the mandate is no longer valid. |
| seller_scope | array | Optional list of allowed seller_user_id UUIDs. Omit = any seller. |
| category_scope | array | Optional list of allowed category codes (mall_category_code). Omit = any category. |
| max_total_amount* | number | Total spend budget for this mandate (required, > 0) |
| max_per_order_amount | number | Optional per-order cap |
{
"type": "object",
"required": [
"max_total_amount"
],
"properties": {
"currency": {
"type": "string",
"description": "Currency, e.g. USD (default USD). Must match the order currency to authorize."
},
"expires_at": {
"type": "string",
"description": "Optional ISO timestamp after which the mandate is no longer valid."
},
"seller_scope": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of allowed seller_user_id UUIDs. Omit = any seller."
},
"category_scope": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of allowed category codes (mall_category_code). Omit = any category."
},
"max_total_amount": {
"type": "number",
"description": "Total spend budget for this mandate (required, > 0)"
},
"max_per_order_amount": {
"type": "number",
"description": "Optional per-order cap"
}
}
}Run 6-layer contact enrichment for a buyer: direct website scraping → proxy retry → BFS contact pages → LLM text extraction → vision screenshot → Serper fallback. Returns email, phone, WhatsApp, decision-maker names. Costs Zhimao Points.
| Argument | Type | Description |
|---|---|---|
| target_domain* | string | Buyer's website domain (e.g. 'example-importer.com') |
| target_company_name | string | Buyer's company name |
{
"type": "object",
"required": [
"target_domain"
],
"properties": {
"target_domain": {
"type": "string",
"description": "Buyer's website domain (e.g. 'example-importer.com')"
},
"target_company_name": {
"type": "string",
"description": "Buyer's company name"
}
}
}Search 500,000+ verified importers and distributors by product category and target country. Returns company profiles + a `coverage` object. When in-database coverage is thin (empty/partial), the response includes an `acquisition` task (task_id) — a background crawl is started automatically (free). Poll it with check_discovery_task until status=completed to get freshly gathered buyers. Contact details are not included — use enrich_buyer_contact to get them.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max results to return (default 20, max 100) |
| category* | string | Product category (e.g. 'flour', 'stainless steel tableware', 'LED lighting') |
| country_iso | string | ISO 3166-1 alpha-2 country code (e.g. MY, ID, KE, AE, GB) |
| quality_grade | string | Filter by data quality. 'premium' = verified contact + multi-source evidence. |
{
"type": "object",
"required": [
"category"
],
"properties": {
"limit": {
"type": "number",
"description": "Max results to return (default 20, max 100)"
},
"category": {
"type": "string",
"description": "Product category (e.g. 'flour', 'stainless steel tableware', 'LED lighting')"
},
"country_iso": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code (e.g. MY, ID, KE, AE, GB)"
},
"quality_grade": {
"enum": [
"premium",
"qualified"
],
"type": "string",
"description": "Filter by data quality. 'premium' = verified contact + multi-source evidence."
}
}
}List open collective sourcing projects (联拼宝 / Lianpinbao). Multiple suppliers co-sell into shared buyer pools, reducing per-supplier MOQ. Find pools where you can join to access existing buyer demand.
| Argument | Type | Description |
|---|---|---|
| status | string | Pool status (default: open) |
| category | string | Filter by product category keyword (optional) |
{
"type": "object",
"properties": {
"status": {
"enum": [
"open",
"filling"
],
"type": "string",
"description": "Pool status (default: open)"
},
"category": {
"type": "string",
"description": "Filter by product category keyword (optional)"
}
}
}List your AP2 payment mandates with status, currency, total/per-order limits, consumed and remaining budget, scope and expiry. Requires authentication.
No arguments.
{
"type": "object",
"properties": {}
}List the supplier quotes submitted for one of your inquiries (from request_quote). Returns each quote's id, unit price, total, MOQ, lead time and validity, plus acceptable_quote_ids you can pass to place_order. Requires authentication; only the inquiry's buyer (or the product's supplier) may read it.
| Argument | Type | Description |
|---|---|---|
| inquiry_id* | string | The inquiry_id returned by request_quote |
{
"type": "object",
"required": [
"inquiry_id"
],
"properties": {
"inquiry_id": {
"type": "string",
"description": "The inquiry_id returned by request_quote"
}
}
}Accept a supplier quote and create an order (status pending_payment) for one of your inquiries. Pass the inquiry_id and the chosen quote_id (from list_quotes' acceptable_quote_ids). Optionally pass a mandate_id (from create_payment_mandate) to auto-authorize the order against an AP2 payment mandate within its limits — the response then includes mandate_authorization (authorized/declined + reason). Returns the order id, order_no and a payment next_step. Idempotent per inquiry: re-calling returns the existing order. Requires authentication.
| Argument | Type | Description |
|---|---|---|
| quote_id* | string | The quote_id to accept (from list_quotes' acceptable_quote_ids) |
| inquiry_id* | string | The inquiry_id (from request_quote / list_quotes) |
| mandate_id | string | Optional AP2 payment mandate id (from create_payment_mandate) to auto-authorize this order within pre-approved limits. |
{
"type": "object",
"required": [
"inquiry_id",
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"description": "The quote_id to accept (from list_quotes' acceptable_quote_ids)"
},
"inquiry_id": {
"type": "string",
"description": "The inquiry_id (from request_quote / list_quotes)"
},
"mandate_id": {
"type": "string",
"description": "Optional AP2 payment mandate id (from create_payment_mandate) to auto-authorize this order within pre-approved limits."
}
}
}Start a transaction by sending a quote request (inquiry) to a supplier for a specific product_id (get one from search_products). Returns an inquiry_id. Requires authentication — the inquiry is owned by the authenticated buyer. The supplier then submits a quote; poll it with list_quotes.
| Argument | Type | Description |
|---|---|---|
| quantity | number | Desired quantity (optional) |
| buyer_note | string | Free-text note to the supplier (optional) |
| product_id* | string | Product id to request a quote for (from search_products) |
| quantity_unit | string | Unit for the quantity, e.g. 'pcs', 'kg' (optional) |
| destination_city | string | Destination city (optional) |
| destination_country | string | Destination country ISO2 (optional) |
{
"type": "object",
"required": [
"product_id"
],
"properties": {
"quantity": {
"type": "number",
"description": "Desired quantity (optional)"
},
"buyer_note": {
"type": "string",
"description": "Free-text note to the supplier (optional)"
},
"product_id": {
"type": "string",
"description": "Product id to request a quote for (from search_products)"
},
"quantity_unit": {
"type": "string",
"description": "Unit for the quantity, e.g. 'pcs', 'kg' (optional)"
},
"destination_city": {
"type": "string",
"description": "Destination city (optional)"
},
"destination_country": {
"type": "string",
"description": "Destination country ISO2 (optional)"
}
}
}Search live products listed by ProcureRadar suppliers by keyword, destination country, supplier country, or category. Returns product_id values needed to request a quote. Free & anonymous (IP rate-limited). This is the first step of the buyer-side transaction loop: search_products → request_quote → list_quotes → place_order.
| Argument | Type | Description |
|---|---|---|
| q | string | Keyword (product title / SKU / supplier name) |
| limit | number | Max results (default 20, max 50) |
| category | string | Category code (mall_category_code), optional |
| country_iso | string | Destination country ISO2 (filters by deliverable SKUs) |
| supplier_country | string | Supplier origin country ISO2 |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Keyword (product title / SKU / supplier name)"
},
"limit": {
"type": "number",
"description": "Max results (default 20, max 50)"
},
"category": {
"type": "string",
"description": "Category code (mall_category_code), optional"
},
"country_iso": {
"type": "string",
"description": "Destination country ISO2 (filters by deliverable SKUs)"
},
"supplier_country": {
"type": "string",
"description": "Supplier origin country ISO2"
}
}
}Discover verified supplier storefronts (supply nodes) on ProcureRadar by target-market country and industry. Each store groups multiple products from one verified supplier and returns sample_product_ids you can quote on. Use this to find a supplier store first, then search_products / request_quote. Free & anonymous (IP rate-limited). Organizing principle: country × industry matrix.
| Argument | Type | Description |
|---|---|---|
| q | string | Store name keyword (optional) |
| limit | number | Max results (default 20, max 50) |
| country | string | Target-market country ISO2 the store operates/sells into (e.g. MY, VN, JP) |
| industry | string | Industry key (85-industry taxonomy, aligns with product category codes, e.g. 'beauty_personal_care') |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Store name keyword (optional)"
},
"limit": {
"type": "number",
"description": "Max results (default 20, max 50)"
},
"country": {
"type": "string",
"description": "Target-market country ISO2 the store operates/sells into (e.g. MY, VN, JP)"
},
"industry": {
"type": "string",
"description": "Industry key (85-industry taxonomy, aligns with product category codes, e.g. 'beauty_personal_care')"
}
}
}Explicitly submit an async batch buyer discovery job for a category + country. Returns a job_id; poll it with check_discovery_task until status=completed. Note: find_buyers already auto-starts a background crawl when coverage is thin, so usually you only need this for a forced/fresh deep crawl.
| Argument | Type | Description |
|---|---|---|
| category* | string | Product category to discover buyers for |
| keywords | array | Additional keywords to refine the search |
| country_iso* | string | Target country ISO code |
{
"type": "object",
"required": [
"category",
"country_iso"
],
"properties": {
"category": {
"type": "string",
"description": "Product category to discover buyers for"
},
"keywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Additional keywords to refine the search"
},
"country_iso": {
"type": "string",
"description": "Target country ISO code"
}
}
}