industrylens-public
Registry code: e3e0874c8759435f
IndustryLens Public — live competitive intelligence on the B2B SaaS markets IndustryLens monitors (sales intelligence, AI-search & brand visibility, GTM engineering, spend management), plus published reports and head-to-head comparisons.
Query tools (reach for these first):
- endpoint
- https://api.industry-lens.com/mcp/public
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is industrylens-public live?
- Yes — it answered the hub's last check (checked 44m ago). It answered 100% of checks over the last 30 days.
- Is industrylens-public free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does industrylens-public have?
- 12 tools: list_competitor_moves, list_reports, get_report, list_comparisons, get_comparison, subscribe_to_newsletter, get_competitor_moves_diff, list_markets, ….
- Is industrylens-public safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 12 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
get_pricing_changes open 44m ago
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.
{ "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 }arguments 30 lineslist_competitor_moves unknown never probed
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.
{ "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 }arguments 21 lineslist_reports unknown never probed
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>.
{ "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 }arguments 21 linesget_report unknown never probed
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.
{ "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 }arguments 15 lineslist_comparisons unknown never probed
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>.
{ "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 }arguments 17 linesget_comparison unknown never probed
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.
{ "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 }arguments 15 linessubscribe_to_newsletter unknown never probed
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'.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "email" ], "properties": { "email": { "type": "string", "format": "email", "description": "The email address the user explicitly asked to subscribe." }, "source": { "type": "string", "description": "Where the request came from (e.g. 'mcp_claude_desktop'). Defaults to 'mcp'." } }, "additionalProperties": false }arguments 19 linesget_competitor_moves_diff unknown never probed
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.
{ "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 }arguments 34 lineslist_markets unknown never probed
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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_market_landscape unknown never probed
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.
{ "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 }arguments 15 linesfind_competitors unknown 44m ago
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.
{ "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 }arguments 21 linesget_competitive_profile unknown 44m ago
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).
{ "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 }arguments 24 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's ide3e0874c8759435f.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/e3e0874c8759435f/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/e3e0874c8759435f?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.