{"ok":true,"site":{"host":"taams-sourcing-desk.netlify.app","url":"https://taams-sourcing-desk.netlify.app/","type":"live","desc":"Search verified Korean food-import suppliers, priced from real customs clearance data -- usable by hand, and by any WebMCP-enabled agent.","tools":[{"name":"search_import_products","kind":"answer","impl":"imperative","description":"Search for an imported food product by name (English or Korean) and get the exact product name used in Korean customs clearance records. Call this FIRST whenever the user names any food product (\"frozen mango\", \"olive oil\", \"kimchi\"). The other tools need the exact name returned here, not the user's wording — passing free-form text to them returns an empty result rather than an error, so do not skip this step. Returns matching products with their 2025 clearance counts. If several match, take the one with the highest count unless the user's wording clearly points at another. If nothing matches, say so and ask the user to rephrase — do not guess a name and pass it on, because the other tools answer a wrong name with an empty result, not an error, and that reads as \"this product is never imported\" when it is not.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Product name in English or Korean. Partial match is fine, e.g. \"mango\"."}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_import_price_trend","kind":"act","impl":"imperative","description":"Get the average import unit price (USD/kg) for a product, plus how that price breaks down by exporting country. This is the landed customs price actually paid by Korean importers, not a retail or listing price. Renders a price card on screen for the user as a side effect. Use it when the user asks what something costs to import, whether a price is reasonable, or which country is cheapest. Requires the exact product name from search_import_products.","inputSchema":{"type":"object","properties":{"product_name":{"type":"string","description":"Exact product name from search_import_products, e.g. \"망고\"."},"month":{"type":"integer","description":"Month, 1-12. Omit this to get the most recent month that has data, which is what you want unless the user named a month."}},"required":["product_name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_top_exporters","kind":"answer","impl":"imperative","description":"List the overseas manufacturers and exporters actually shipping a product into Korea. Returns named companies — one row per exporting company, with its country and clearance count — plus a per-country total. These are real registered suppliers from clearance records, not a directory listing. Renders a supplier table on screen. Use it when the user asks who supplies a product, where it comes from, or wants to find a source. For a country-versus-country decision, call get_import_price_trend first for the price side, then this tool for the supplier side. Requires the exact product name from search_import_products.","inputSchema":{"type":"object","properties":{"product_name":{"type":"string","description":"Exact product name."},"country":{"type":"string","description":"Optional. Restrict to one exporting country, e.g. \"베트남\" or \"Vietnam\"."}},"required":["product_name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_active_importers","kind":"answer","impl":"imperative","description":"List Korean companies already importing this product, with clearance counts and which country they buy from. Useful for gauging whether a product has an established market, who the incumbent buyers are, and how concentrated the trade is. When the user is choosing between two sourcing countries this is the proof check: a country established Korean buyers already import from is a proven lane, one with no active buyers is not — so call it after get_top_exporters whenever the user asks who to buy from. Renders on screen. Requires the exact product name from search_import_products.","inputSchema":{"type":"object","properties":{"product_name":{"type":"string","description":"Exact product name."}},"required":["product_name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"pin_to_comparison_board","kind":"act","impl":"imperative","description":"Pin one card onto the on-screen comparison board, up to three. A card is a product, optionally narrowed to a single sourcing country — so {product_name:\"망고\", country:\"Thailand\"} and {product_name:\"망고\", country:\"Brazil\"} are two different cards, each showing that country's own price, trend and supplier count. Call this whenever the user weighs two or more named options against each other, even if they never say the word \"compare\" — \"A or B?\", \"which is better\", \"should I go with X or Y\" all mean compare. Pin each option as its own card BEFORE you give your recommendation, so the user can see what you are weighing. This changes the user's screen and fetches nothing; it reuses data already loaded. Call get_import_price_trend for the product first if it is not on screen yet.","inputSchema":{"type":"object","properties":{"product_name":{"type":"string","description":"Exact product name, already loaded on screen this session."},"country":{"type":"string","description":"Optional. Narrow this card to one sourcing country, English or Korean, e.g. \"Thailand\". Omit for a card covering every country."}},"required":["product_name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"highlight_supplier_country","kind":"act","impl":"imperative","description":"Filter and visually highlight the supplier table already on screen down to one exporting country, so the user immediately sees that country's suppliers instead of re-reading the whole list. This only restyles what is already displayed — it fetches nothing, and the other countries are dimmed rather than removed. Call it when the user asks to focus on, highlight, or \"just show me\" one country. ALSO call it on your own, without being asked, once you have settled on a recommendation: highlight the country you are recommending so the user is looking at those suppliers while you explain why. If no supplier table is on screen yet, call get_top_exporters first. Use get_top_exporters with a country only for the first fetch; use this tool for every narrowing after that. Pass an empty string to clear the highlight.","inputSchema":{"type":"object","properties":{"country":{"type":"string","description":"Country name, English or Korean, e.g. \"Vietnam\" or \"베트남\". Empty string clears the highlight."}},"required":["country"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"draft_sourcing_request","kind":"act","impl":"imperative","description":"Fill in a sourcing inquiry (RFQ) on screen for a product and supplier, then stop and ask the user to approve it. This tool NEVER sends anything on its own: it opens an approval dialog showing the draft, and only if the user clicks Approve does the page open a pre-filled email. If the user cancels, nothing happens. Call it when the user asks to contact a supplier, request a quote, or draft an inquiry about something already on screen. Tell the user you are preparing a draft for their approval — do not claim anything was sent.","inputSchema":{"type":"object","properties":{"product_name":{"type":"string","description":"Exact product name."},"supplier_name":{"type":"string","description":"The exporting company name exactly as get_top_exporters returned it — a company, not a country. If the user asked you to pick one, use the top exporter from that list and say in your reply which one you chose and why. Leave empty only when the user has explicitly said they want to decide later."},"quantity":{"type":"string","description":"Quantity in the user's own words, e.g. \"2 x 20ft containers\"."},"notes":{"type":"string","description":"Target price, delivery timing, certification needs, and so on."}},"required":["product_name","quantity"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","favicon":"/favicons/taams-sourcing-desk.netlify.app.ico","apiSurface":"spec","toolCount":7}}