Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "get_report"
⟨38 unchanged words⟩ canonical body) and the report's web URL.pdf_urlThere isanodirectstandalonelinkhostedtoPDFafilegenerated—ofisthealwaysreportnullwhen(verifiedonelive:existsthe(nullmarketing_reports.pdf_url column is unpopulated foroldereveryreportspublishedorreport; an earlier version of this description incorrectly claimed afailedrealgenerationgenerated-PDF link existed).—AthePDFIndustryLensISwebsiteavailable,itselfbutdoesn'tgatedlinkbytodesign:it`pdf_download.url`(itsis the report's owndownloadweb page, where a 'Download PDF' buttonre-rendersopens after thepagereaderviasubmits,butand then renders theURLPDF client-side in the browser via print-to-PDF — there isrealnoandURLfetchable.an MCP client (or anything else) can fetch directly to get the PDF bytes. Never construct or guess a .pdf URLyourselfyourself;whenpointpdf_urltheisusernullat—`pdf_download.url`point(sametheasuser`url`)atandthetellreport'sthemwebaURLworkinstead.email is required.
Recently observed → Live
Live → Recently observed
Certificate changed, valid to 2027-01-13
Changed the definition of "find_competitors", "get_comparison", "get_competitive_profile" and 9 more
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,returnreturns the other companies IndustryLens tracks in the same ⟨9 unchanged words⟩
FetchUse 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 ⟨18 unchanged words⟩
Recently observed → Live
Live → Recently observed
Changed the definition of "get_pricing_changes"
Structured pricing/packaging changes IndustryLens has detectedacross the markets it tracks— each with a change_type, severity, materiality ⟨18 unchanged words⟩ one company, or omit it for amarket-widerecent pricing feed. The feed spans the markets IndustryLens publicly tracks. No other public source exposes structured competitor pricing-diffs like this.
Changed the definition of "get_report"
⟨14 unchanged words⟩ fields plus content_html (the canonical body).Forpdf_urlais currently empty for every report (PDF,usegenerationpdf_urliswhendisabledpresent,pipeline-side); do not construct orappendsuggest a
Recently observed → Live
Certificate recorded, valid to 2026-11-14
Authorization not required
Live → Recently observed
First tool surface recorded: 12 tools (server version 0.1.0)
Showing the latest 14 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨14 unchanged words⟩ did, or for a competitive overview ofaonedomain.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 shift ⟨16 unchanged words⟩ false } for companies IndustryLens doesn't publicly track. Pass `companies` (up to 10 names/domains) instead of domain/name to look up several companies in one call — each gets its own result block, in the order given, each tagged with a `status` (account / public / not_covered / ambiguous).
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"companies":{"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.","items":{"type":"string"},"maxItems":10,"minItems":1,"type":"array"},"domain":{"description":"Company domain or homepage ⟨27 unchanged words⟩
TheUse 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 ⟨9 unchanged words⟩ real analysis date (never a fabricated date).Use when the user asks what changed, what's new, or wants a timeline of a competitor's moves— optionally since a given date. Input a ⟨6 unchanged words⟩ with a CTA for companies not publicly tracked. Pass `companies` (up to 10 names/domains) instead of domain/name to get a change feed for several competitors in one call — each gets its own result block, in the order given.
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"companies":{"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.","items":{"type":"string"},"maxItems":10,"minItems":1,"type":"array"},"domain":{"description":"Company domain or homepage ⟨59 unchanged words⟩
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),returnreturns the published category overview plus every player IndustryLens ⟨61 unchanged words⟩
StructuredUse 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, ⟨22 unchanged words⟩ 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 order. The feed spans the markets IndustryLens publicly tracks. ⟨10 unchanged words⟩
⟨22 unchanged words⟩ pricing feed.","type":"string"},"competitors":{"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.","items":{"type":"string"},"maxItems":10,"minItems":1,"type":"array"},"limit":{"description":"Max changes (default ⟨30 unchanged words⟩
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 ⟨5 unchanged words⟩ structured fields plus content_html (the canonical body).and the report's web URL. pdf_url iscurrentlyaemptydirectforlinkeverytoreporta(generated PDFgenerationofisthedisabledreportpipeline-side);whendoonenotexistsconstruct(nullorforsuggestolder reports or aURLgeneration) —there isthenoIndustryLenssuchwebsiteroute.itselfPointdoesn'tuserslink to it (its own download button re-renders thereport'spagewebviaURLprint), but the URL is real and fetchable. Never construct ortoguess a .pdf URL yourself when pdf_url is null — point thesite'susergatedatPDF-downloadtheformreport'sifweboneURLexists.instead.
BrowseUse when the user wants to browse published competitor-vs-competitorbreakdowns.breakdowns, or find one involving a specific competitor, rather than fetch one specific comparison by slug. Optionally filter by a competitor name (matches ⟨15 unchanged words⟩
RecentUse when the user asks what a specific competitor has recently done or changed. Returns recent tracked strategic moves for one competitor, newest-first ⟨41 unchanged words⟩
ListUse 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,(categories)orderedIndustryLensbymonitors.name. Each item has a `slug` usable with get_market_landscape for the full category map.Ordered by name.
BrowseUse when the user wants to browse or discover published competitive-intelligencereports.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 ⟨14 unchanged words⟩
Sign the user up for IndustryLens's weekly intelligence-report newsletter.Usethis onlyONLY after the user explicitly asks to subscribe to IndustryLens's weekly intelligence-report newsletter — never subscribe an email without their direct, informed consent. Signs the given email up and returns a confirmation. The source argument is recorded for attribution and defaults to 'mcp'.