Search / com.industry-lens/mcp-public
IndustryLens
R0· no sign-inB2B SaaS competitor pricing changes, strategic moves, market landscapes, reports and comparisons.
v0.2.0 · active · repository · website · descriptor JSON · versions
Search / com.industry-lens/mcp-public
R0· no sign-inB2B SaaS competitor pricing changes, strategic moves, market landscapes, reports and comparisons.
v0.2.0 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"mcp-public": {
"type": "http",
"url": "https://api.industry-lens.com/mcp/public"
}
}
}claude mcp add --transport http mcp-public https://api.industry-lens.com/mcp/public[mcp_servers.mcp-public]
url = "https://api.industry-lens.com/mcp/public"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp-public": {
"type": "remote",
"url": "https://api.industry-lens.com/mcp/public",
"enabled": true
}
}
}{
"mcpServers": {
"mcp-public": {
"type": "http",
"url": "https://api.industry-lens.com/mcp/public"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=mcp-public&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLmluZHVzdHJ5LWxlbnMuY29tL21jcC9wdWJsaWMifQ%3D%3D"
}{
"servers": {
"mcp-public": {
"type": "http",
"url": "https://api.industry-lens.com/mcp/public"
}
}
}{
"mcpServers": {
"mcp-public": {
"httpUrl": "https://api.industry-lens.com/mcp/public"
}
}
}extensions:
"mcp-public":
enabled: true
name: "mcp-public"
type: streamable_http
uri: "https://api.industry-lens.com/mcp/public"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky onestools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_competitive_profile (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); list_competitor_moves (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); list_reports (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …tools.token_costabout 2,850 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes13 tool changes in 30 daysstability.rug_pull2 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageget_reportchangeddescriptionmeaning changedUse 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. pdf_url is a direct link to a generated PDF of the report when one exists (null for older reports or a failed generation) — the IndustryLens website itself doesn't link to it (its own download button re-renders the page via print), but the URL is real and fetchable. Never construct or guess a .pdf URL yourself when pdf_url is null — point the user at the report's web URL instead.
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 generated-PDF link existed). A PDF IS available, but gated by design: `pdf_download.url` is the report's own web page, where a 'Download PDF' button opens after the reader submits a work email (IndustryLens's deliberate lead-capture gate) and then renders the PDF client-side in the browser via print-to-PDF — there is no URL an MCP client (or anything else) can fetch directly to get the PDF bytes. Never construct or guess a .pdf URL yourself; point the user at `pdf_download.url` (same as `url`) and tell them a work email is required.
get_market_landscapechangeddescriptionGiven a market (a vertical slug or name), return 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 (narrative, top topics, new entrants, topic momentum, source URLs). Returns { covered: false } for markets IndustryLens doesn't publicly track. Use list_markets to discover slugs.
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 (narrative, top topics, new entrants, topic momentum, source URLs). Returns { covered: false } for markets IndustryLens doesn't publicly track. Use list_markets to discover slugs.
list_marketschangeddescriptionList the B2B SaaS markets (categories) IndustryLens monitors. Each item has a `slug` usable with get_market_landscape for the full category map. Ordered by name.
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.
get_pricing_changeschangeddescription, input schemaStructured 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. The feed spans the markets IndustryLens publicly tracks. No other public source exposes structured competitor pricing-diffs like this.
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 order. The feed spans the markets IndustryLens publicly tracks. No other public source exposes structured competitor pricing-diffs like this.
get_competitor_moves_diffchangeddescription, input schemaThe 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). 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 domain or name. Returns { covered: false } with a CTA for companies not publicly tracked.
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 for several competitors in one call — each gets its own result block, in the order given.
subscribe_to_newsletterchangeddescriptionSign the user up for IndustryLens's weekly intelligence-report newsletter. Use this only after the user explicitly asks to subscribe — never subscribe an email without their direct, informed consent. The source argument is recorded for attribution and defaults to 'mcp'.
Use ONLY 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'.
get_comparisonchangeddescriptionFetch 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.
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.
list_comparisonschangeddescriptionBrowse published competitor-vs-competitor breakdowns. 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>.
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>.
get_reportchangeddescriptionmeaning changedFetch the full body of a published report by slug. Returns the report's structured fields plus content_html (the canonical body). pdf_url is currently empty for every report (PDF generation is disabled pipeline-side); do not construct or suggest a .pdf URL — there is no such route. Point users to the report's web URL, or to the site's gated PDF-download form if one exists.
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. pdf_url is a direct link to a generated PDF of the report when one exists (null for older reports or a failed generation) — the IndustryLens website itself doesn't link to it (its own download button re-renders the page via print), but the URL is real and fetchable. Never construct or guess a .pdf URL yourself when pdf_url is null — point the user at the report's web URL instead.
list_reportschangeddescriptionBrowse published competitive-intelligence reports. 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>.
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>.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +dns-namespace +website +reachable +uptime-95% ~updated-61d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://api.industry-lens.com/mcp/public streamable-http | none | yes | 95% | 483 ms | 2025-11-25 | 2026-10-19 |
find_competitors | 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. |
get_comparison | 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. |
get_competitive_profile | 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 shift + a was→now summary, with the real analysis date), and links to published reports/comparisons. Returns { covered: 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). |
get_competitor_moves_diff | 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 for several competitors in one call — each gets its own result block, in the order given. |
get_market_landscape | 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 (narrative, top topics, new entrants, topic momentum, source URLs). Returns { covered: false } for markets IndustryLens doesn't publicly track. Use list_markets to discover slugs. |
get_pricing_changes | 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 order. The feed spans the markets IndustryLens publicly tracks. No other public source exposes structured competitor pricing-diffs like this. |
get_report | 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 generated-PDF link existed). A PDF IS available, but gated by design: `pdf_download.url` is the report's own web page, where a 'Download PDF' button opens after the reader submits a work email (IndustryLens's deliberate lead-capture gate) and then renders the PDF client-side in the browser via print-to-PDF — there is no URL an MCP client (or anything else) can fetch directly to get the PDF bytes. Never construct or guess a .pdf URL yourself; point the user at `pdf_download.url` (same as `url`) and tell them a work email is required. |
list_comparisons | 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>. |
list_competitor_moves | 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. |
list_markets | 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. |
list_reports | 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>. |
subscribe_to_newsletter | Use ONLY 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'. |
Schemas: list_tools.
{
"name": "com.industry-lens/mcp-public",
"icons": [
{
"src": "https://industry-lens.com/IndustryLens_Favicon.png",
"sizes": [
"288x288"
],
"mimeType": "image/png"
}
],
"title": "IndustryLens",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://api.industry-lens.com/mcp/public",
"type": "streamable-http"
}
],
"version": "0.2.0",
"repository": {
"url": "https://github.com/IndustryLensOp/industrylens-mcp-docs",
"source": "github"
},
"websiteUrl": "https://industry-lens.com",
"description": "B2B SaaS competitor pricing changes, strategic moves, market landscapes, reports and comparisons."
}