curl examples assume export WM_KEY="wm_…". With an OAuth token, replace -H "X-WorldMonitor-Key: $WM_KEY" with -H "Authorization: Bearer $TOKEN".
get_wto_trade_flows
WTO merchandise trade flows for one reporting country versus the World, over a configurable year window. Data comes from the WTO ITS_MTV_AX (exports) and ITS_MTV_AM (imports) indicators, seeded on a 6-hour cadence; the tool reads the same seeded snapshot the dashboard serves — it never calls WTO per request.
Parameters (tool-specific):
Response distinctions:
unavailableReason is the closed TradeFlowUnavailableReason enum from the RPC. TRADE_FLOW_UNAVAILABLE_REASON_NOT_COVERED is a contract answer — the combination is simply outside seeded coverage, a retry cannot help. Every other non-UNSPECIFIED reason names a fault (seed_missing, coverage_unknown, cache_unavailable), with upstreamUnavailable: true.
- API endpoint:
GET /api/trade/v1/get-trade-flows - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: RPC proxy over the canonical trade-flows route (the handler owns window slicing and miss classification).
- Freshness budget: up to 7 h before
stale(6 h seeder cadence plus one hour of grace).
get_tariff_averages
Average tariff a country applies by year: schedule rates through 2023, no Section 301/232 duties. With no partner and no product group it returns the WTO MFN average over all products (TP_A_0010) for any reporter, the United States (840) included. With a partner other than World, or a product group, it returns the effectively applied average from UNCTAD TRAINS via World Bank WITS:
tariffRateis the simple average (AHS-SMPL-AVRG), counting preferences the partner qualifies for.weightedRateis the import-weighted average (AHS-WGHTD-AVRG).
get_us_import_duty.
Parameters (tool-specific):
Response distinctions:
indicatorCode, partnerCountry and productSector on each datapoint say which series answered. TARIFF_TREND_UNAVAILABLE_REASON_NOT_COVERED is a coverage answer (WITS has no such series). TARIFF_TREND_UNAVAILABLE_REASON_UPSTREAM_UNAVAILABLE is a fault, with upstreamUnavailable: true; retry later.
Coverage: every answer except an upstream outage carries a coverage object, added by the MCP server. An outage (upstreamUnavailable: true) answers nothing, so it carries none. dataset names the dataset consulted; check unavailableReason before trusting the rates. It is WTO_MFN with no partner other than World and no product group, else WITS_TRAINS. rateBasis is SCHEDULE, includesUnilateralDuties is false, and excludedDutyTypes lists SECTION_301, SECTION_232, IEEPA, ANTI_DUMPING and COUNTERVAILING. latestYear is coverageEndYear, else the newest datapoint year, and is absent when no year answered. When the reporter is the United States, seeAlso names get_us_import_duty and says why.
- API endpoint:
GET /api/trade/v1/get-tariff-trends - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: RPC proxy over the canonical route. Partner and product-group series are read from WITS on a cache miss and cached for 7 days.
get_bilateral_tariff
Tariff on one HS6 product between two countries: schedule rate through 2023, no Section 301/232 duties. The rate one country applies to one 6-digit HS product from one partner, for one year, from UNCTAD TRAINS via World Bank WITS. appliedRate is what the partner pays: the best preferential rate it qualifies for, else MFN. basis says which. mfnRate, preferentialRate and the per-agreement groupPreferences are reported separately. mfnAveRate is an ad valorem equivalent where the MFN duty is specific. EU members answer from the EU schedule (filingReporter 918).
Schedule rates only: Section 301, 232, anti-dumping and other unilateral duties are not included. TRAINS has no US preferences after 2021 and no US data after 2023, so for the US use get_us_import_duty.
Parameters (tool-specific):
Response distinctions:
BILATERAL_TARIFF_UNAVAILABLE_REASON_NOT_COVERED is a coverage answer. BILATERAL_TARIFF_UNAVAILABLE_REASON_UPSTREAM_UNAVAILABLE is a fault, with upstreamUnavailable: true.
Coverage: every answer except an upstream outage carries a coverage object, added by the MCP server. An outage (upstreamUnavailable: true) answers nothing, so it carries none. dataset names the dataset consulted; check unavailableReason before trusting the rates. It is always WITS_TRAINS. rateBasis is SCHEDULE, includesUnilateralDuties is false, and excludedDutyTypes lists SECTION_301, SECTION_232, IEEPA, ANTI_DUMPING and COUNTERVAILING. latestYear is the year that answered, and is absent on a NOT_COVERED answer. When the reporter is the United States, seeAlso names get_us_import_duty and says why.
- API endpoint:
GET /api/trade/v1/get-bilateral-tariff - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: RPC proxy over the canonical route, which reads WITS on a cache miss. A cold read can take several seconds.
get_us_import_duty
Current US duty on one product from one country: live HTS rates plus any Section 301 and 232 duties in force. For each 8-digit line under hs_code it returns the live USITC Harmonized Tariff Schedule rates and a basis (MFN, PREFERENTIAL with preferenceProgram, or COLUMN_2). It also returns the chapter 99 Section 301 and 232 duties in force, each with a status:
APPLIESCONDITIONAL, with aconditionsaying what decides itEXEMPTSCHEDULED
estimatedRate adds only APPLIES duties to the base rate. estimateComplete is false when a specific duty, a condition or an unresolved preference program leaves it open. IEEPA duties are not collected and not reported. Anti-dumping and countervailing duties are not included. additionalDutiesLoaded: false means only the base rates were available.
Parameters (tool-specific):
Coverage: every answer except an upstream outage carries a
coverage object, added by the MCP server. An outage (upstreamUnavailable: true) answers nothing, so it carries none. dataset names the dataset consulted; check unavailableReason before trusting the rates. It is USITC_HTS and rateBasis is CURRENT_DUTY. includesUnilateralDuties is true only when additionalDutiesLoaded is true, and excludedDutyTypes then lists IEEPA, ANTI_DUMPING and COUNTERVAILING. Otherwise the answer is base rates only: includesUnilateralDuties is false and excludedDutyTypes also lists SECTION_301 and SECTION_232. asOf is the HTS release that answered.
- API endpoint:
GET /api/trade/v1/get-us-import-duty - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: RPC proxy over the canonical route: a live HTS line read joined with the seeded chapter 99 catalog (
trade:us-hts:catalog:v1).
get_consumer_prices
Per-country consumer-prices intelligence: 30-day overview, category-level inflation, retailer spread (essentials basket), top movers, and source freshness. Requires country_code (currently only ‘ae’ is seeded).
Parameters:
- API endpoints:
GET /api/consumer-prices/v1/get-consumer-price-freshness,GET /api/consumer-prices/v1/get-consumer-price-overview,GET /api/consumer-prices/v1/list-consumer-price-categories,GET /api/consumer-prices/v1/list-consumer-price-movers,GET /api/consumer-prices/v1/list-retailer-price-spreads - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: RPC tool that reads Upstash directly (sub-second) — requires an input parameter to select the slice. Despite the cache-speed reads, it is an
_executetool, which is why its access class issubscriptionand it takes nosummaryargument. - Freshness budget: up to 25 h per slice (24 h cron + 1 h grace) before
stale: trueis flagged.
get_food_stocks
USDA PSD cereal stocks-to-use by marketing year. Ask for a country plus optional commodity (wheat, corn, rice, soybeans, barley, palmOil), or country_code=WORLD for the global balance. Marketing years are stored verbatim and must not be treated as calendar years.
Parameters:
- API endpoints:
GET /api/resilience/v1/get-food-stocks - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: RPC proxy — the MCP layer resolves the country to ISO-2; the handler owns WORLD vs ISO-2 and commodity filtering.
- Freshness budget: oldest world marketing year present (WASDE monthly cycle; 60-day fetch-age / 120-day content-age).
hasStocksToUse before reporting stocksToUse, and
hasEndingStocks before reporting endingStocksTmt. Proto3 has no presence for a
bare number, so an unmeasured value arrives as 0 — and USDA estimates ending
stocks for selected countries only, so a real producer routinely reports
production and consumption with no stocks series at all. When the flag is false
the zero is a placeholder; treat it as “not measured”, never as 0%.
For PSD country rows, totalUseTmt is consumption plus exports. For WORLD, it
is consumption only because world exports are internal transfers. A row with
source: "faostat" carries a same-year Food Balances production and domestic-
supply pair. The row has no stock measurement, so both stock flags are false.
get_procurement_opportunities
Search active global public-procurement opportunities through the canonical Pro-gated tender API. The tool never reads Upstash directly. It returns a compact projection of the canonical records: official notice URL, source, title, buyer, timing, money, categories, sectors, participationMode, and compact automationFit; it deliberately omits descriptions, eligibility requirements, and submission URLs.
Parameters (tool-specific):
- API endpoint:
GET /api/economic/v1/list-global-tenders - Access:
subscription— requires a Pro subscription. RPC tool: nosummaryargument (usejmespathto trim the response). - Kind: bounded canonical-route proxy — Pro entitlement remains enforced by the downstream route; no bootstrap or direct-cache exposure.
- Output budget: 10 compact records by default, at most 25. The result retains
nextCursor,total,appliedFilters,countryCoverage,availability, snapshot time, and per-source health summaries. An emptynextCursormeans there are no further pages.
min_automation_score is never implied. automationFit is keyword relevance evidence only, never a legal determination of whether an agent or vendor may bid. participationMode: "unknown" means exactly that — no participation mode was established upstream.
