{"serverId":"mcp-registry/xyz.sputnikx/market","tools":[{"name":"daloopa_query","fixed":{"name":"daloopa_query","description":"Daloopa fundamentals lookup for commodity-exposed equities (read-only). Returns per-ticker structured fundamentals (revenue, opex, segment splits) sourced from issuer filings. Configure DALOOPA_API_URL + DALOOPA_API_KEY in .env; otherwise pass test_mode=true to receive deterministic mock fixtures suitable for CI and demos. No mutation — fail-open with mock if upstream is unreachable.","inputSchema":{"type":"object","required":["ticker"],"properties":{"metric":{"type":"string","description":"Optional metric filter (e.g. \"revenue\", \"segment_revenue\", \"opex\"). Omit to return all available metrics."},"ticker":{"type":"string","description":"Equity ticker symbol (e.g. \"CLF\", \"X\", \"FCX\"). 1..16 chars, uppercase recommended."},"periods":{"type":"number","default":4,"maximum":20,"minimum":1,"description":"How many fiscal periods to return (default 4, max 20)."},"test_mode":{"type":"boolean","default":false,"description":"When true, return deterministic mock fixtures and skip the external API call entirely."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":297,"tokensAfter":297},{"name":"front_run_watch","fixed":{"name":"front_run_watch","description":"Top-5 front-running signals (policy event + trade spike 30d prior). Updated weekly Mon 07:00 UTC. Returns signal_id, policy_date, hs_code, spike_multiple, confidence. FREE (lead magnet, public — signals delayed 7 days from detection).","inputSchema":{"type":"object","properties":{"limit":{"type":"number","default":5,"description":"Max signals to return (default: 5, max: 50)"},"since":{"type":"string","description":"Filter signals on/after date, YYYYMMDD"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"get_prices","fixed":{"name":"get_prices","description":"Get current product prices with calculated price_per_kg. Returns EUR pricing for all in-stock products.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"enum":["siltums","woodpoint"],"type":"string","description":"Tenant slug"},"product_slug":{"type":"string","description":"Specific product slug (optional — omit for all)"},"response_format":{"enum":["detailed","concise"],"type":"string","description":"Response detail level: \"concise\" (default, key fields only) or \"detailed\" (all fields)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":157,"tokensAfter":157},{"name":"mt_newswires_query","fixed":{"name":"mt_newswires_query","description":"MT Newswires commodity headlines (read-only). Pulls the configured RSS or JSON feed (MT_NEWSWIRES_RSS_URL / MT_NEWSWIRES_API_URL), parses up to `limit` items, and returns {title, pubDate, link, summary, source}. Use as a low-latency news ticker for commodity-trader agents. Pass test_mode=true for deterministic mock fixtures; the tool auto-falls back to mocks if the feed is unreachable.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","default":10,"maximum":50,"minimum":1,"description":"Max headlines to return (default 10, max 50)."},"since":{"type":"string","description":"Optional ISO 8601 cutoff (e.g. \"2026-05-16T00:00:00Z\"). Only items with pubDate >= since are returned."},"topic":{"type":"string","description":"Optional case-insensitive keyword filter applied to title+summary (e.g. \"oil\", \"copper\", \"wheat\"). Omit for unfiltered feed."},"test_mode":{"type":"boolean","default":false,"description":"When true, return deterministic mock fixtures and skip the external feed entirely."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":299,"tokensAfter":299},{"name":"query_trade","fixed":{"name":"query_trade","description":"Sputnik X EU trade intelligence — query 67.7M Eurostat COMEXT rows in the 2026-08-27 snapshot; EU27 reporters; monthly 2005-01–2026-06; HS2 only (97 distinct codes overall, but only 80 chapters in 2005–2021); historical chapter gaps verified 2026-10-23; consult current data_quality for recent periods. Query types: overview, countries, timeline, top_partners, top_products, balance, heatmap, macro_context (current global ECB/FRED snapshot). Supported filters depend on the REST view. EU-wide CN8 mu","inputSchema":{"type":"object","required":["query_type"],"properties":{"hs2":{"type":"string","description":"HS2 product code (e.g., \"44\" for wood)"},"flow":{"enum":["IMPORT","EXPORT"],"type":"string","description":"Trade flow"},"year":{"type":"number","description":"Year filter (e.g., 2025)"},"limit":{"type":"number","description":"Max results (default: 20)"},"years":{"type":"string","description":"Comma-separated years (e.g., \"2024,2025\")"},"partner":{"type":"string","description":"Partner country code"},"reporter":{"type":"string","description":"2-letter country code (e.g., LV, DE, FR)"},"query_type":{"enum":["overview","countries","timeline","top_partners","top_products","balance","heatmap","macro_context"],"type":"string","description":"Query type"},"response_format":{"enum":["detailed","concise"],"type":"string","description":"Response detail level: \"concise\" (default, key fields only) or \"detailed\" (all fields)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":412,"tokensAfter":412},{"name":"search_products","fixed":{"name":"search_products","description":"Search products in a tenant catalog. Returns safe columns only (no cost_price/markup). Filter by type, category, name, or in_stock status.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"enum":["siltums","woodpoint"],"type":"string","description":"Tenant slug"},"type":{"type":"string","description":"Product type filter (e.g., granulas, briketes, saplaksnis)"},"limit":{"type":"number","description":"Max results (default: 50, max: 100)"},"search":{"type":"string","description":"Search text (matches name, type, category)"},"in_stock_only":{"type":"boolean","description":"Only show in-stock products (default: true)"},"response_format":{"enum":["detailed","concise"],"type":"string","description":"Response detail level: \"concise\" (default, key fields only) or \"detailed\" (all fields)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240}],"toolsChanged":6,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}