{"serverId":"mcp-registry/com.industry-lens/mcp-public","tools":[{"name":"find_competitors","fixed":{"name":"find_competitors","description":"Use when the user asks who else competes in a company's market, or wants a peer/competitor set for a given company. Given a company domain or name, returns the other companies IndustryLens tracks in the same market. Returns { covered: false } for companies not publicly tracked.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"name":{"type":"string","description":"Company name (e.g. 'Apollo'). Used when no domain is given."},"limit":{"type":"integer","maximum":50,"minimum":1,"description":"Max competitors (default 10, max 50)."},"domain":{"type":"string","description":"Company domain or homepage URL (e.g. 'apollo.io'). Preferred."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Find who competes with a company"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":212,"tokensAfter":212},{"name":"get_comparison","fixed":{"name":"get_comparison","description":"Use when the user wants the full head-to-head detail for one published comparison (after finding its slug via list_comparisons). Fetches the full structured body of a published competitor comparison by slug. Returns content_json (the structured breakdown: pricing, recent moves, positioning, displacement signals, when-to-choose, etc.) plus metadata.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","minLength":1,"description":"Comparison slug from list_comparisons."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get a full IndustryLens comparison"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":177,"tokensAfter":177},{"name":"get_competitive_profile","fixed":{"name":"get_competitive_profile","description":"Use when the user asks who competes with a company, what a competitor recently did, or for a competitive overview of one or more domains. Input a company domain or name and get a privacy-safe profile: firmographics (business model, stage, HQ, plus `firmographics.funding_stage` / `last_raise` / `investors` / `employee_count` — these read `collected: false` with a plain 'not yet collected' note until that enrichment source is wired up, never a guess), recent strategic moves (the existence of a shi","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"name":{"type":"string","description":"Company name (e.g. 'Apollo'). Used when no domain is given."},"domain":{"type":"string","description":"Company domain or homepage URL (e.g. 'apollo.io'). Preferred — most precise."},"companies":{"type":"array","items":{"type":"string"},"maxItems":10,"minItems":1,"description":"Batch alternative to domain/name: up to 10 company names or domains. Omit domain/name when using this. Returns one profile per entry, in input order."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get a competitive profile for a company"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":319,"tokensAfter":319},{"name":"get_competitor_moves_diff","fixed":{"name":"get_competitor_moves_diff","description":"Use when the user asks what changed, what's new, or wants a timeline of a competitor's moves. Returns the dated CHANGE-FEED for one competitor: every real was→now strategic shift IndustryLens detected, newest-first, each stamped with its real analysis date (never a fabricated date) — optionally since a given date. Input a domain or name. Returns { covered: false } with a CTA for companies not publicly tracked. Pass `companies` (up to 10 names/domains) instead of domain/name to get a change feed ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"name":{"type":"string","description":"Company name (e.g. 'Apollo'). Used when no domain is given."},"limit":{"type":"integer","maximum":50,"minimum":1,"description":"Max moves (default 20, max 50)."},"since":{"type":"string","description":"Optional ISO date (YYYY-MM-DD). Only moves analyzed on/after this date are returned."},"domain":{"type":"string","description":"Company domain or homepage URL (e.g. 'apollo.io'). Preferred — most precise."},"companies":{"type":"array","items":{"type":"string"},"maxItems":10,"minItems":1,"description":"Batch alternative to domain/name: up to 10 company names or domains. Omit domain/name when using this. Returns one change feed per entry, in input order; `since`/`limit` apply to every entry."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get a competitor's dated change feed"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":395,"tokensAfter":395},{"name":"get_market_landscape","fixed":{"name":"get_market_landscape","description":"Use when the user wants an overview of a whole market/category — every player in it, not just a self-selected competitor set. Given a market (a vertical slug or name), returns the published category overview plus every player IndustryLens tracks in that market — the whole-CATEGORY map, not a self-selected competitor set. Returns the hub (title, abstract, tldr, hero_stats, url), the deduped list of players (name, domain, business_model), and `market_news` — the latest weekly market summary (narra","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["market"],"properties":{"market":{"type":"string","minLength":1,"description":"A vertical slug (exact) or market name (ILIKE), e.g. 'sales-intelligence' or 'sales intelligence'."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get the whole-category map for a market"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":238,"tokensAfter":238},{"name":"get_pricing_changes","fixed":{"name":"get_pricing_changes","description":"Use when the user asks about a competitor's pricing/packaging changes, or wants a recent pricing-change feed. Returns structured pricing/packaging changes IndustryLens has detected — each with a change_type, severity, materiality score, a plain-language summary, and the real detection date. Pass a `competitor` (name or domain) to scope to one company, or omit it for a recent pricing feed. Pass `competitors` (up to 10 names/domains) instead to get a feed per company in one call, each in input ord","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":50,"minimum":1,"description":"Max changes (default 20, max 50)."},"since":{"type":"string","description":"ISO date lower bound for detection (e.g. '2026-01-01'). Defaults to 90 days ago."},"competitor":{"type":"string","description":"Competitor name or domain (e.g. 'Apollo' or 'apollo.io'). Omit for a market-wide recent pricing feed."},"competitors":{"type":"array","items":{"type":"string"},"maxItems":10,"minItems":1,"description":"Batch alternative to `competitor`: up to 10 competitor names or domains. Omit `competitor` when using this. Returns one pricing feed per entry, in input order; `since`/`limit` apply to every entry."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get recent competitor pricing changes"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":375,"tokensAfter":375},{"name":"get_report","fixed":{"name":"get_report","description":"Use when the user wants the full text of one published IndustryLens report (after finding its slug via list_reports). Fetch the full body of a published report by slug. Returns the report's structured fields plus content_html (the canonical body) and the report's web URL. There is no standalone hosted PDF file — `pdf_url` is always null (verified live: the marketing_reports.pdf_url column is unpopulated for every published report; an earlier version of this description incorrectly claimed a real","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","minLength":1,"description":"Report slug from list_reports (e.g. '/devops-hiring-q1-2026' or 'devops-hiring-q1-2026')."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get a full IndustryLens report"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":231,"tokensAfter":231},{"name":"list_comparisons","fixed":{"name":"list_comparisons","description":"Use when the user wants to browse published competitor-vs-competitor breakdowns, or find one involving a specific competitor, rather than fetch one specific comparison by slug. Optionally filter by a competitor name (matches either side). Each item has a slug usable with get_comparison. URLs follow https://industry-lens.com/compare/<slug>.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":50,"minimum":1,"description":"Max results (default 10, max 50)."},"competitor":{"type":"string","description":"Competitor name filter (matches either side, ILIKE)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List IndustryLens head-to-head comparisons"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":199,"tokensAfter":199},{"name":"list_competitor_moves","fixed":{"name":"list_competitor_moves","description":"Use when the user asks what a specific competitor has recently done or changed. Returns recent tracked strategic moves for one competitor, newest-first — the existence of each shift plus a was→now summary and the real analysis date (never a fabricated date). Returns { covered: false } for companies IndustryLens doesn't publicly track, and an empty list for covered companies with no moves detected yet.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["competitor"],"properties":{"limit":{"type":"integer","maximum":50,"minimum":1,"description":"Max moves (default 10, max 50)."},"competitor":{"type":"string","minLength":1,"description":"Competitor name or domain (e.g. 'Apollo' or 'apollo.io')."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List a competitor's recent moves"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":230,"tokensAfter":230},{"name":"list_markets","fixed":{"name":"list_markets","description":"Use when the user wants to know which B2B SaaS markets/categories IndustryLens tracks, or needs a slug for get_market_landscape. Returns the list of markets, ordered by name. Each item has a `slug` usable with get_market_landscape for the full category map.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List the markets IndustryLens tracks"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":111,"tokensAfter":111},{"name":"list_reports","fixed":{"name":"list_reports","description":"Use when the user wants to browse or discover published competitive-intelligence reports (e.g. by topic, role, or industry) rather than fetch one specific report by slug. Filter by industry or target_role; results are ordered newest-first. Each returned item has a slug usable with get_report. URLs follow https://industry-lens.com/reports/<slug>.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":50,"minimum":1,"description":"Max results (default 10, max 50)."},"industry":{"type":"string","description":"Industry filter, ILIKE match (e.g. 'hr tech', 'devops', 'fintech')."},"target_role":{"type":"string","description":"Target role filter, ILIKE match (e.g. 'marketing', 'sales', 'product')."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List IndustryLens intelligence reports"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":237,"tokensAfter":237}],"toolsChanged":11,"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."}