Gemalli B2B Trade
Server Details
Global B2B trade: verified manufacturers, product search, sanctions screening, HS codes.
- Status
- Healthy
- Uptime
- 99.4% over 41 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 14 tools
Each tool targets a distinct resource or action: compliance checks for goods vs parties, product search vs product detail, and separate contact/join/partnership flows. Even similar-looking tools like list_categories and list_manufacturers are clearly separated by entity type, so an agent can reliably select the right one.
Most tools follow a verb_noun pattern (check_dual_use, get_product, list_manufacturers, search_products) in consistent snake_case. The one exception is partnership_inquiry, which uses a noun phrase instead of a verb, creating a minor deviation but not a major readability issue.
With 14 tools, the server is well-scoped for a B2B trade platform: it covers catalog browsing, product details, manufacturer info, compliance checks, quote requests, and platform-related inquiries. Each tool serves a distinct purpose without bloat.
The surface covers the full buyer/seller journey: search and explore (list_categories, search_products, list_manufacturers), get details (get_product, get_manufacturer), compliance (lookup_hs_code, check_dual_use, check_sanctions), and actions (request_quote, submit_join_request). No obvious dead ends or missing operations for the stated purpose.
Available Tools
21 toolsadd_feedback_messageAdd to a requestInspect
Add a message to an existing feedback ticket of the current visitor — when they remember a detail ("only in Chrome") after the ticket was created. Do NOT create a second ticket for the same problem. Identity comes from the visitor pass; a ticket that is not theirs is simply not found.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | What the person wants to add | |
| ticket_id | Yes | ticket_id returned by create_feedback_ticket |
check_dual_useDual-use checkARead-onlyInspect
Check whether an HS customs code falls under EU dual-use export controls (Regulation 2021/821 and equivalents), optionally for a specific destination country. A match means the goods may need an export licence. Use it after lookup_hs_code, before the person commits to a shipment.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | ||
| hs_code | Yes | HS code from lookup_hs_code. | |
| destination | No | Destination country (ISO-2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only and non-destructive, lowering the burden. The description adds useful behavioral context by stating the regulatory basis and clarifying that a match means 'the goods may need an export licence.'
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 only two sentences with no filler. The core purpose is front-loaded, and the usage guidance is included efficiently.
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, non-destructive tool with three parameters and clear workflow placement, the description covers the essential semantics. It omits explicit return-format or error behavior, but that is not critical given the self-explanatory check behavior.
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 schema already documents hs_code and destination, and the description reinforces destination as optional with legal context. However, the locale parameter is not explained beyond its enum values, and the description does not significantly add meaning beyond the schema.
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 states an explicit action and resource: 'Check whether an HS customs code falls under EU dual-use export controls (Regulation 2021/821 and equivalents)'. It also mentions optional destination filtering and distinguishes this from related siblings like check_sanctions and lookup_hs_code.
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 gives clear usage context: 'Use it after lookup_hs_code, before the person commits to a shipment.' This tells the agent when to invoke it in a workflow, though it does not explicitly name exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_sanctionsSanctions screeningARead-onlyInspect
Screen a company or a person against consolidated sanctions, politically-exposed-person and law-enforcement lists (EU, US, UK, UN, Ukraine), sourced from OpenSanctions. Returns possible matches with a similarity score. Use it before the person commits to a counterparty. Treat a match as a reason to verify further, not as proof.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Defaults to 10. | |
| query | Yes | Name, alias, or company string to screen. | |
| topic | No | ||
| country | No | ISO 3166-1 alpha-2. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe, read-only operation. The description adds meaningful behavioral context beyond that: it returns possible matches with a similarity score, and it warns that matches require further verification rather than being definitive. This helps the agent set expectations without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences cover purpose, result, and usage guidance. The most important information is front-loaded, and every sentence earns its place without redundancy.
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 screening tool with annotations covering safety and a schema covering parameters, the description is mostly complete: it explains what it screens, the source, the output nature, and the follow-up action. The only minor gap is that it does not describe how topic/country filtering affects screening, but the schema provides those options.
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 coverage is 75%, so the schema already documents most parameters. The description adds some semantic value by clarifying that the query can be a company or person and that screening covers multiple list types, but it does not add meaningful detail about limit, topic, or country beyond what the schema provides.
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 states a specific verb ('Screen'), the target resource ('a company or a person'), and the domain (consolidated sanctions, PEP, and law-enforcement lists). It clearly distinguishes itself from siblings like check_dual_use by naming the exact list types and the OpenSanctions source.
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 gives a concrete use case: 'Use it before the person commits to a counterparty.' It also clarifies how to interpret results ('Treat a match as a reason to verify further, not as proof'). It does not explicitly mention when not to use it or point to alternatives like check_dual_use, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_feedback_ticketClose a requestInspect
Close a feedback ticket of the current visitor when they say it is no longer relevant or they worked it out. A ticket the team already finished (fixed or declined) is NOT closed — say so instead. Identity comes from the visitor pass.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional: why they close it | |
| ticket_id | Yes | ticket_id returned by create_feedback_ticket |
create_feedback_ticketSend feedbackInspect
Record a feedback ticket for the Gemalli team: a question, a problem or a suggestion. Call it ONCE, only after the person confirmed the wording you read back to them. Identity is taken from the visitor pass — never pass a user id. For a visitor who is not signed in, contact_email is required: without it there is no way to tell them it was fixed.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | question = asks something · bug = something is broken · idea = suggestion | |
| locale | Yes | Language to answer in, e.g. ru / uk / en | |
| message | Yes | The request in the person’s own words | |
| subject | Yes | Short summary as you understood it | |
| page_url | No | Platform page the person was on | |
| transcript | No | Last turns of the conversation (max 20 turns / 8000 chars; longer is trimmed, not rejected) | |
| contact_email | No | Required when the visitor is not signed in |
get_buyer_search_offerBuyer-search packages and pricesRead-onlyInspect
Read the buyer-search package offer — what the person buys in the «find buyers» order window: plans with prices in USD, company quotas, country limits, top-up rules, roles, the order stages and — for an HS code — the clarifying question and the buyer segments that fit each answer. These are prices of the BUYER-SEARCH PACKAGE, shown openly in the order window; they are not Gemalli subscription plans, so the get_subscription_plans rule about never stating prices does not apply here. Use it in the sales chat to answer questions and to suggest a plan and segments. You only suggest: the person chooses and pays in the order window, never through you. Right now it is a demo — payment is a test with no charge, company search and emails are switched off — say so plainly and never promise buyers: a company becomes a buyer only by answering. Texts come in the call locale (uk, ru, en; others fall back to en).
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Language of the texts: uk, ru or en (others fall back to en). | |
| hs_code | No | HS code of the product from the page context (2 to 10 digits) — picks the clarifying question and the segments. |
get_feedback_reasonsFeedback reasonsRead-onlyInspect
Reasons a person can pick after rating the agent, already translated into their language. Call it once when the widget opens and cache it; re-read when the platform says the dictionary changed, or lazily by the rev value. Two lists: reasons are the live ones to draw in the window, retired are switched off and are only there so old feedback stays readable. If this door is silent, show the free-text field anyway and still count the thumb — never drop a rating.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Language of the person, e.g. ru / uk / de-AT. Falls back exact → base → English, never Russian. |
get_feedback_threadOpen a requestRead-onlyInspect
Read one feedback ticket of the current visitor with its whole conversation: the original request, what they added later and what the team answered. Use it to SHOW the ticket, not to decide anything — the team answers, the agent does not answer on their behalf. Identity comes from the visitor pass.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes | ticket_id returned by create_feedback_ticket |
get_manufacturerProducer profileARead-onlyInspect
Fetch one manufacturer's full profile: company description, country, certifications, and the identifiers of the same profile in other languages. Use it after list_manufacturers or search_products, when the person wants to know who the supplier is.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Manufacturer slug (per-locale or base). | |
| locale | No | Locale for the returned translation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it returns a full profile and mentions per-locale identifiers, which is useful. It doesn't disclose behavior like whether locale is optional or how missing locales are handled, but the schema covers the locale parameter.
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?
Two sentences, front-loaded with the action and resource, followed by usage context. No wasted words.
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 single-resource fetch with full schema coverage and safety annotations, the description is nearly complete. It could mention what happens if the slug doesn't exist or how locale affects the response, but those are minor gaps given the annotations and 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 already documents both parameters. The description adds context that the profile is per-manufacturer and that identifiers are for the same profile in other languages, but doesn't add syntax or format details beyond the schema. Baseline 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 states a specific verb ('Fetch') and resource ('one manufacturer's full profile'), and enumerates the profile contents (company description, country, certifications, identifiers in other languages). It also distinguishes itself from siblings by naming list_manufacturers and search_products as prior steps.
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 says when to use it: after list_manufacturers or search_products, when the person wants to know who the supplier is. This gives clear context and implies the alternative tools are for discovery, not profile detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productProduct detailsARead-onlyInspect
Fetch one product's trade terms: minimum order quantity, lead time, Incoterms, HS code, packaging, price range, photos and the supplier it belongs to. delivery_terms lists the delivery bases the seller confirmed as {incoterm, place_kind, place_city}: place_kind is seller_site | port | border | buyer_site (null when not stated), place_city is the city name in the requested language (English fallback) or null; an empty list means Incoterms on request. Use it once the person has picked a product from search_products and wants the terms.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Product slug (per-locale or base). | |
| locale | No | Locale for the returned translation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral context by explaining the structure of the delivery_terms field (enum values, null handling, empty-list meaning) – information not present in annotations or schema. This goes beyond the baseline, though it doesn't address rate limits or error 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 a single paragraph that leads with the main purpose and available fields, then details the delivery_terms structure. While somewhat long, each clause earns its place – the delivery_terms explanation is essential for correct usage. It could be tightened slightly, but it's well organized and front-loaded.
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 is a simple read operation with annotations covering safety and full schema coverage, the description is largely complete. It explains the nuanced delivery_terms format and usage trigger. However, it doesn't mention potential edge cases (e.g., product not found) or the full return shape, which would be useful. Still, it's sufficient for correct invocation.
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%: both 'slug' and 'locale' have descriptive text. The tool description does mention 'requested language' which maps to locale, but it doesn't add any syntax or format details beyond the schema. This meets the baseline but does not elevate it.
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 states a specific verb ('Fetch'), a clear resource ('one product'), and enumerates the exact data fields returned (MOQ, lead time, Incoterms, HS code, etc.). It implicitly distinguishes from siblings like search_products (search vs. fetch) and get_manufacturer (supplier only vs. full terms).
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 final sentence explicitly instructs when to use the tool: 'Use it once the person has picked a product from search_products and wants the terms.' This gives a clear trigger and preconditions, routing the agent appropriately without needing to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subscription_plansPlans and pricesARead-onlyInspect
Explain how to get Gemalli pricing. Gemalli does NOT publish plan prices through this API: quotes are given by the sales desk, because what a manufacturer pays depends on their catalogue, languages and markets. Call this when the person asks what Gemalli costs, then give them the contacts you get back and offer to introduce them. Do NOT state, estimate, guess or recall any price, plan tier, discount or limit for Gemalli itself — you do not have that information, and inventing it misleads the person. Prices of goods listed BY manufacturers are a different thing and stay available through the catalogue tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint, the description adds meaningful behavioral context: quotes come from the sales desk, pricing depends on catalogue/languages/markets, and the tool returns contacts ('contacts you get back'). It also warns against inventing pricing information, which is valuable for an AI agent. It does not detail the exact return structure, but the no-param, read-only context lowers that burden.
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 front-loaded with purpose and then explains context. It is somewhat verbose, especially the prohibition list ('state, estimate, guess or recall'), but each sentence adds safety or use-case value. It is longer than necessary for a zero-param tool, but not padded with irrelevant detail.
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?
Despite lacking an output schema, the description tells the agent what will happen (gets contacts back) and the correct follow-up action ('offer to introduce them'). It covers the central use case and guards against misuse. Minor gaps remain about the exact contact format, but overall the description is complete enough for safe, correct invocation.
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 tool has zero parameters and the schema coverage is 100% (vacuous), so the baseline is 4. The description's focus on when and how to use the tool is sufficient; there are no parameter meanings to clarify beyond the empty schema.
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 states a specific action with resource: 'Explain how to get Gemalli pricing.' It clearly distinguishes itself from catalogue tools by noting manufacturer goods prices 'stay available through the catalogue tools,' which separates it from siblings like search_products or get_product. Despite the tool name 'get_subscription_plans,' the description unambiguously frames its purpose as explaining pricing access, not returning plan data.
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 explicitly states when to call: 'Call this when the person asks what Gemalli costs.' It provides a clear exclusion: 'Do NOT state, estimate, guess or recall any price...' and points to alternatives for manufacturer goods prices via 'catalogue tools.' This is direct when/when-not guidance with an alternative category, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewerWho you areRead-onlyInspect
Report who the person is currently acting for on Gemalli: role, interface language and, when signed in, the company they represent and their plan. An anonymous person is a valid answer and comes back as a guest, not an error. If the person signed in after talking to you anonymously, previous_guest carries the identifier of that earlier conversation so you can carry the history over, and linked_at separates a link you have not seen before from one you have already handled. credits tells whether platform credits are on (enabled), the balance and total granted when signed in, buy_url (null means no payment page yet: send the person to Office Live) and action_costs, the only map from a tool to its action and price: call something free only when its credits is 0, never offer an action whose credits is null. wallets carries one entry per credit kind with its balance and low: low true means that kind is running out and the panel should show the remaining-credits note. Every paid answer carries the same wallets, freshly counted after the charge — prefer those over this first reading. Never returns another party's data and never returns secrets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_categoriesProduct categoriesARead-onlyInspect
List the product categories on Gemalli with their names in the requested language. Use it to offer the person a choice of category before searching, or to turn a category name into the identifier search_products expects.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Locale for the returned names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, so the description's main contribution is behavioral. It reveals that names are returned in the requested locale and that the output maps to the identifier search_products expects, which goes beyond the schema.
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?
Two sentences with no filler. The first states what the tool lists and for whom; the second states why and how to use it. Every sentence earns its place.
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 one-parameter list tool with safety annotations and an explicit integration with search_products, nothing essential is missing. The absence of an output schema is mitigated by the description's explanation of the category-name-to-identifier relationship.
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 single parameter locale is fully documented in the schema with an enum and a description. The description's 'requested language' phrasing reinforces the schema but adds no new semantics, so baseline 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 opens with a specific verb and resource: "List the product categories on Gemalli" and clarifies that names are localized. This clearly distinguishes it from sibling tools like list_manufacturers and explicitly ties it to search_products' expected identifier.
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?
It names two concrete use cases: offering a pre-search category choice and converting a category name into the identifier search_products expects. It does not explicitly exclude alternatives, but the context is clear and sufficient for a simple list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_manufacturersBrowse producersARead-onlyInspect
List verified manufacturers published on Gemalli. Returns each producer's name, country, certifications and profile identifier in the requested language, newest first. Use it to show what the platform carries; to find a specific product or filter by country, use search_products.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (1–50). Defaults to 12. | |
| locale | No | Preferred locale for returned text. Defaults to "en". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=true and destructiveHint=false. On top of that, the description adds genuinely useful behavior: results are limited to verified manufacturers, include specific fields, are localized, and are sorted newest first. No contradictory behavioral claims.
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?
Two sentences with no filler: the first front-loads the action, return shape, localization, and ordering; the second gives routing guidance. Every sentence earns its place.
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 list operation with two optional, fully documented parameters and read-only annotations, the description is complete: it states scope, returned fields, ordering, and the appropriate alternative. The lack of an output schema is compensated by listing the returned fields in prose.
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 limit and locale. The description only restates language localization and adds no new semantics beyond the schema.
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 opens with a specific verb and resource: 'List verified manufacturers published on Gemalli.' It also names the returned fields and ordering, and its scope ('verified', platform-level) distinguishes it from search_products and get_manufacturer.
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 gives explicit when-to-use guidance: 'Use it to show what the platform carries' and directs filtering/search use cases to 'search_products'. This clearly differentiates the tool from its closest sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_feedbackMy feedbackRead-onlyInspect
List the feedback tickets of the current visitor for the Workspace tab. Identity comes from the visitor pass; a guest is matched by the conversation label, so the same person on another device sees nothing — that is expected, not a fault.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_site_sectionsSite sectionsARead-onlyInspect
List the pages of gemalli.com you can direct this person to, with the label in their language and the address. Use it before offering a link, so you point at a page that exists rather than guessing. Which pages appear depends on whether the person is signed in.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Language for the labels. Defaults to English. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds meaningful behavioral context: which pages appear depends on whether the person is signed in, and labels come in the requested locale. 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?
Three sentences, each earning its place: what the tool returns, when to use it, and a behavioral caveat. The key purpose is front-loaded and there is no filler.
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 simple read-only list tool with one optional parameter and no output schema, the description covers the trigger, the data returned, and the signed-in dependency. It does not describe a structured return shape, but the description's mention of 'label' and 'address' is sufficient for this simple case.
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 coverage is 100%, so the locale parameter is fully documented in the schema. The description adds a small amount of context by linking the locale to output labels ('in their language'), but does not need to compensate for any schema gaps.
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 names a specific verb ('List') and resource ('the pages of gemalli.com'), and states the output content ('label in their language and the address'). It is clearly distinct from the sibling commerce tools, which are about products, manufacturers, and inquiries.
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 gives explicit guidance: 'Use it before offering a link, so you point at a page that exists rather than guessing.' It does not name alternatives or state when not to use it, but the intended call context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_hs_codeHS code lookupARead-onlyInspect
Find the Harmonised System (HS) customs code for a product, by description or by code prefix. Returns matching codes with their official names in the requested language, the chapter they belong to, and a similarity score. Use it when the person needs a customs classification for an import, an export or a quote, then pass the code to check_dual_use.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Defaults to 10. | |
| query | Yes | Product description or HS code prefix. | |
| locale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true and destructiveHint=false, so safe read-only behavior is covered. The description adds valuable context on return contents: official names in the requested language, chapter, and similarity score. This goes beyond the annotations without contradicting them.
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?
Two tightly written sentences with no filler. The purpose, input variants, return contents, and downstream usage are all packed into a compact description that is easy to scan.
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 lookup tool with one required parameter and no output schema, the description gives enough context: what inputs are accepted, what the response includes, and how the result should be used next. The schema covers length and default constraints, so nothing essential is missing.
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 coverage is 67%, so the schema already documents query and limit, and the locale enum is self-explanatory. The description reuses 'by description or by code prefix' from the schema and refers to 'requested language' for locale, but adds little new parameter-specific meaning. It does not explain limit further, but that is already covered by the schema.
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?
States a specific verb ('Find') and resource ('Harmonised System (HS) customs code'), and clarifies the two accepted input forms: product description or code prefix. It also distinguishes itself from sibling tools by tying its output to the follow-up use of check_dual_use, so an agent can select it without opening schemas.
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 tells the agent when to use this tool ('when the person needs a customs classification for an import, an export or a quote') and what to do next ('then pass the code to check_dual_use'). This gives clear selection and chaining guidance beyond just describing the function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partnership_inquiryPartnership & investmentARead-onlyInspect
Return Gemalli's partnership and investment terms and the founder's direct contact. Use it when the person represents a company that would work with a trade platform rather than buy on it — for example logistics, customs, trade finance, insurance, inspection, an ERP vendor or an investor. It returns information only and sends nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Company or platform the person represents, if known. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'It returns information only and sends nothing,' which goes beyond the readOnlyHint annotation by ruling out side effects like sending an email or triggering an outreach action. This is valuable context not present in annotations alone.
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 two sentences, front-loading the key result and then giving usage guidance. Every sentence contributes meaning, with no filler or repeated schema 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 simple read-only tool with one optional parameter and no output schema, the description is complete: it states what is returned, who should use it, example scenarios, and confirms no side effects. No critical information is missing for correct invocation.
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 coverage is 100%, and the single optional parameter 'from' is already described in the schema as the company or platform the person represents. The description reinforces this through examples like logistics and investor, but does not add substantial new meaning beyond the schema.
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 uses a specific action ('Return') and names the exact resource returned: Gemalli's partnership/investment terms and the founder's direct contact. It also clarifies who the tool is for, which distinguishes it from buyer-facing tools like request_quote.
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?
It explicitly states when to use the tool: when the person represents a company that would work with a trade platform rather than buy on it, with concrete examples. It implies a buyer scenario should use a different tool, but does not name an alternative explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_quoteRequest a quoteAInspect
Send a request for prices, samples or terms to a manufacturer on the person's behalf. Requires the person's own name and email — ask them and pass exactly what they give you, never invent an address. The manufacturer receives the request; the person receives an email with a sign-in link where the reply and the supplier's contacts appear. No account is needed beforehand. Use it once they have chosen a supplier.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | ||
| message | Yes | What they need: specs, volumes, target price, delivery terms. | |
| quantity | No | Desired quantity. | |
| agent_name | No | Name of the agent or platform sending this, e.g. "Claude" — recorded as the source. | |
| buyer_name | Yes | The person's name, as they gave it. | |
| product_id | No | Product the request is about, if one was chosen. | |
| buyer_email | Yes | The person's real email — the reply and the sign-in link go there. | |
| variant_key | No | Version of that product the person chose, when get_product lists `variants` (e.g. "400v"). Requires product_id. The manufacturer sees the version and its model code in the request. | |
| operation_id | No | Optional idempotency key for this attempt. Retrying with the SAME operation_id returns the original result instead of creating a second RFQ — send one if your transport can retry. No token needed: an anonymous person is scoped by the buyer_email you pass. | |
| buyer_company | No | Their company name, if known. | |
| buyer_country | No | ISO 3166-1 alpha-2 country of the buyer. | |
| manufacturer_slug | Yes | Target manufacturer slug, from search_products or list_manufacturers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the description usefully fills in what actually happens: the manufacturer receives the request, the person receives an email with a sign-in link, and no account is required first. It also warns against inventing an email address, which is a real behavioral constraint. It doesn't cover retry/rate-limit behavior in the description, though idempotency is covered in the schema.
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?
Five sentences, each carrying distinct information (purpose, contact-input constraint, recipient behavior, no-account prerequisite, usage trigger), with the core action front-loaded. Dense but not padded.
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 12-parameter mutation tool with no output schema, the description covers the essential context: what is sent, who receives what, and the no-account prerequisite. Idempotency and field-level semantics live in the schema, so nothing critical is missing, though a note on the response the caller sees would round it out.
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 coverage is already 92%, so the baseline is 3. The description adds meaningful value on top: 'ask them and pass exactly what they give you, never invent an address' constrains how buyer_name and buyer_email should be populated, which the schema alone does not convey.
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 opens with a specific verb+resource ('Send a request for prices, samples or terms to a manufacturer') and clarifies the on-behalf-of framing. This clearly separates it from sibling write tools like partnership_inquiry or submit_join_request, which have different targets and purposes.
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?
It gives a clear trigger ('Use it once they have chosen a supplier') and notes 'No account is needed beforehand.' It stops short of explicitly naming alternative tools or when NOT to use this one, but the preconditions are clear enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch productsARead-onlyInspect
Search wholesale products published on Gemalli. Narrow by free text, category, manufacturer, country of origin, maximum minimum-order quantity, maximum price or delivery basis (Incoterms 2020 codes the seller confirmed). Returns product cards in the requested language with price range, minimum order and the supplier. Use it when the person is looking for goods to buy or source.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search across name + description (FTS via migration 0016 with ILIKE fallback). | |
| limit | No | Max results (1–50). Defaults to 12. | |
| locale | No | Preferred locale for returned text. | |
| moqMax | No | Max minimum-order-quantity threshold (inclusive). | |
| offset | No | Pagination offset. | |
| country | No | ISO 3166-1 alpha-2 country code (e.g. "UA"). | |
| category | No | Category slug filter (categories.slug). | |
| priceMax | No | Max `price_from` threshold (inclusive). | |
| incoterms | No | Delivery basis filter, Incoterms 2020 codes (e.g. ["FCA","DAP"]). A product matches when the seller confirmed ANY of the listed codes. Products without confirmed terms ("Incoterms on request") never match. | |
| manufacturer | No | Manufacturer slug filter (manufacturers.slug). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No contradiction with annotations: readOnlyHint=true and destructiveHint=false align with the non-mutating 'Search' action. Beyond the annotations, the description adds behavioral context — results are localized product cards limited to seller-confirmed Incoterms and include price range, MOQ, and supplier. Pagination and limit behavior are left to the schema, which is a minor gap.
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?
Four sentences, each earning its place: scope, filter dimensions, return shape, and usage trigger. The purpose is front-loaded in the first sentence. The filter list partially overlaps with schema descriptions, but the description stays compact and free of filler.
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 search tool with all-optional parameters, full schema coverage, and no output schema, the description covers the essentials: what is searched, what filters exist, what results contain, and when to use it. Pagination defaults and locale mechanics are not mentioned, but those are already documented in the schema's parameter descriptions.
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 10 optional parameters. The description's filter enumeration (free text, category, manufacturer, country, MOQ max, price max, Incoterms) summarizes the parameters but adds no meaning beyond what the schema already provides, meriting the baseline 3.
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 opens with a specific verb and resource ('Search wholesale products published on Gemalli') and states the output shape ('product cards in the requested language with price range, minimum order and the supplier'). It is clearly distinct from siblings like get_product, check_dual_use, or request_quote, though it never explicitly names the alternative.
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 final sentence gives explicit usage context: 'Use it when the person is looking for goods to buy or source.' This is clear when-to-use guidance, but there are no when-not-to-use conditions or named alternatives, so it does not reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_join_requestRequest to joinAInspect
Send the platform team a request to join Gemalli — for a manufacturer, trader, sales agent, logistics or customs operator, broker or finance provider who wants to work with the platform rather than buy on it. Requires their name, email and phone: the team follows up by phone, so a number is needed. Ask them and pass exactly what they give you, never invent contact details. Use it only when the person has asked to be contacted, never to record someone you are merely discussing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The person's name, as they gave it. | |
| Yes | Their real email. Required. | ||
| phone | Yes | Their phone in international format. Required. | |
| locale | No | Two-letter language the person speaks, for the follow-up. | |
| source | No | Where this lead came from, e.g. your agent name — recorded for the sales team. | |
| company | No | Their company, if known. | |
| country | No | ISO 3166-1 alpha-2 country of the person. | |
| message | No | What they are looking for, in their own words where possible. | |
| operation_id | No | Optional idempotency key. Retrying with the SAME operation_id returns the original lead instead of creating a duplicate. | |
| applicant_role | No | What they do: producer, trader, sales_agent, logistics, broker or finance. | |
| trade_direction | No | What they buy or sell, short free text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare this is a non-read-only, open-world, non-destructive write; the description adds meaningful context beyond that: the team follows up by phone, contact details must be captured verbatim and never invented, and consent is required. It does not discuss duplicate handling, though the schema's operation_id covers idempotency.
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?
Three sentences, front-loaded with the action, then sourcing rules, then the consent restriction. Dense but every sentence carries a distinct constraint; no filler.
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 an 11-parameter write tool with no output schema and only safety-related annotations, the description supplies the operational essentials: required contact data, data-sourcing discipline, and the consent gate. Return/duplicate behavior is delegated to the schema, which is acceptable.
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 coverage is 100%, so the baseline is 3. The description reasserts the three required fields and supplies a rationale for phone ('the team follows up by phone'), but adds little beyond what the per-field schema descriptions already say about name, email, locale, source, and operation_id.
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?
States a specific verb and resource ('send the platform team a request to join Gemalli') and scopes the audience to manufacturer/trader/agent/logistics/broker/finance roles. The phrase 'rather than buy on it' implicitly separates it from buyer-side siblings like request_quote, though no sibling is named outright.
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?
Gives a clear when-not rule: 'Use it only when the person has asked to be contacted, never to record someone you are merely discussing.' It also constrains who qualifies (non-buyer roles). It stops short of naming an alternative tool such as partnership_inquiry, so routing between the two still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- Added
add_feedback_message - Added
close_feedback_ticket - Added
create_feedback_ticket - Added
get_buyer_search_offer - Added
get_feedback_reasons - Added
get_feedback_thread - Added
list_my_feedback
1 tool update
- Changed
search_products1 field changed- added
Input schema / properties / incotermsAdded value: +{ + "description": "Delivery basis filter, Incoterms 2020 codes (e.g. [\"FCA\",\"DAP\"]). A product matches when the seller confirmed ANY of the listed codes. Products without confirmed terms (\"Incoterms on request\") never match.", + "items": { + "enum": [ + "EXW", + "FCA", + "FAS", + "FOB", + "CFR", + "CIF", + "CPT", + "CIP", + "DAP", + "DPU", + "DDP" + ], + "type": "string" + }, + "maxItems": 11, + "minItems": 1, + "type": "array" +}
1 tool update
- Changed
request_quote2 fields changed- added
Input schema / properties / variant_key / maxLengthAdded value: +40 - added
Input schema / properties / variant_key / patternAdded value: +"^[a-z0-9][a-z0-9-]{0,39}$"
1 tool update
- Changed
request_quote1 field changed- added
Input schema / properties / variant_keyAdded value: +{ + "description": "Version of that product the person chose, when get_product lists `variants` (e.g. \"400v\"). Requires product_id. The manufacturer sees the version and its model code in the request.", + "type": "string" +}
6 tool updates
- Added
get_subscription_plans - Removed
get_tariff_catalog - Changed
partnership_inquiry1 field changed- changed
Input schema / properties / from / descriptionPrevious value: -"Company or platform your principal represents, if known."New value: +"Company or platform the person represents, if known."
- Changed
request_quote3 fields changed- changed
Input schema / properties / buyer_email / descriptionPrevious value: -"Your principal's real email — the reply and the sign-in link go there."New value: +"The person's real email — the reply and the sign-in link go there." - changed
Input schema / properties / buyer_name / descriptionPrevious value: -"Your principal's name, as they gave it."New value: +"The person's name, as they gave it." - changed
Input schema / properties / operation_id / descriptionPrevious value: -"Optional idempotency key for this attempt. Retrying with the SAME operation_id returns the original result instead of creating a second RFQ — send one if your transport can retry. No token needed: an anonymous caller is scoped by the buyer_email you pass."New value: +"Optional idempotency key for this attempt. Retrying with the SAME operation_id returns the original result instead of creating a second RFQ — send one if your transport can retry. No token needed: an anonymous person is scoped by the buyer_email you pass."
- Removed
save_lead_to_crm - Added
submit_join_request
1 tool update
- Added
list_site_sections
4 tool updates
- Added
get_tariff_catalog - Added
get_viewer - Changed
request_quote1 field changed- added
Input schema / properties / operation_idAdded value: +{ + "description": "Optional idempotency key for this attempt. Retrying with the SAME operation_id returns the original result instead of creating a second RFQ — send one if your transport can retry. No token needed: an anonymous caller is scoped by the buyer_email you pass.", + "type": "string" +}
- Added
save_lead_to_crm
1 tool update
- Added
request_quote
9 tool updates
- First observed
check_dual_use - First observed
check_sanctions - First observed
get_manufacturer - First observed
get_product - First observed
list_categories - First observed
list_manufacturers - First observed
lookup_hs_code - First observed
partnership_inquiry - First observed
search_products
Related MCP Connectors
Find verified global B2B buyers by category & country. Free anonymous discovery. SGX-listed.
Search 160k+ Russian B2B products from 8,900+ verified manufacturers (EN/RU).
Global customs trade data and company registry. Search shipments, and look up legal entities.
Search 4.8M verified Chinese factories: profiles, contacts, AI deep-dives, agentic sourcing.
Related MCP Servers
AlicenseBqualityDmaintenance提供全球238个国家/地区的进出口贸易数据查询,支持按企业名称、产品关键字、HS编码等多维度联合搜索。1MIT- AlicenseNot gradedqualityDmaintenanceMCP server for global B2B buyer intelligence. Find verified importers & distributors by product category & country. Free anonymous discovery via find_buyers. Contact unlock & company intelligence require a zk_ API key. SGX-listed data provider, PDPA compliant, bilingual EN/ZH.10 npmMIT
- FlicenseNot gradedqualityDmaintenanceProvides comprehensive import/export trade data queries including export trends, product category statistics, order geographic distribution, and overseas certification information to help users understand enterprises' international trade situations.14-
- AlicenseNot gradedqualityDmaintenance全球海关贸易数据MCP服务器,支持按企业名称、产品关键字、HS编码等多维度查询238个国家/地区的进出口贸易数据。1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.