Skip to main content
Glama

Server Details

B2B SaaS competitor pricing changes, strategic moves, market landscapes, reports and comparisons.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
IndustryLensOp/industrylens-mcp-docs
GitHub Stars
0
Server Listing
industrylens-mcp
ChatGPT
–
Claude
–

TDQS

A4.2/5.0

Scored across 12 tools

Disambiguation3/5

Most tools are distinct, but the move-related tools overlap significantly: list_competitor_moves, get_competitor_moves_diff, and get_competitive_profile all surface recent strategic moves. The competitor/profile/market tools also have adjacent boundaries, though descriptions provide some guidance.

Naming Consistency5/5

All tool names follow a clear snake_case verb_noun pattern such as list_reports, get_report, find_competitors, and subscribe_to_newsletter. Even the longer names like get_competitor_moves_diff remain predictable and readable.

Tool Count5/5

Twelve tools is well-scoped for a competitive-intelligence server covering markets, reports, comparisons, competitors, moves, pricing, and newsletter signup. Each tool has a plausible role without excessive surface area.

Completeness4/5

The surface covers the main lifecycle: discover markets/reports/comparisons, fetch full content, inspect competitors and moves, and subscribe. Minor gaps include no general keyword search across reports/comparisons and only indirect coverage of broader company research beyond the competitive lens.

Available Tools

12 tools
find_competitorsFind who competes with a companyA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
nameNoCompany name (e.g. 'Apollo'). Used when no domain is given.
limitNoMax competitors (default 10, max 50).
domainNoCompany domain or homepage URL (e.g. 'apollo.io'). Preferred.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the readOnlyHint/openWorldHint annotations by disclosing the negative-result behavior: a { covered: false } payload for companies not publicly tracked. That is a meaningful edge case an agent cannot infer from annotations or schema; it does not cover result fields or ordering, which are minor given the closed-world, read-only profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the trigger front-loaded and no filler; every sentence carries distinct information (trigger, input, return shape).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully sketches the response (a set of tracked companies in the same market, plus the covered:false case), which is enough to call and interpret it. It does not say what attributes each returned competitor carries or whether results are ranked, leaving a small gap for a discovery tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents name, domain (marked Preferred), and limit with default/max. The description only echoes that a domain or name can be supplied, adding no new syntax, precedence, or fallback detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('find who competes with a company') and describes the return ('other companies IndustryLens tracks in the same market'), which separates it from profile- or landscape-oriented siblings like get_competitive_profile and get_market_landscape.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when the user asks who else competes in a company's market, or wants a peer/competitor set'), so the agent knows the activation condition. It stops short of naming when to prefer a sibling such as get_competitive_profile or get_market_landscape instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_comparisonGet a full IndustryLens comparisonA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
slugYesComparison slug from list_comparisons.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered. The description adds value beyond them by disclosing the return payload: content_json with pricing, recent moves, positioning, displacement signals, and when-to-choose, plus metadata. Minor gap: no mention of behavior for an unknown or unpublished slug.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the usage trigger, then the operation, then the return shape. No redundant restatement of the tool name or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, no output schema, and annotations covering the safety profile, the description is nearly sufficient — it even enumerates the return contents. The only missing piece is what happens on a missing/invalid slug, which matters for a slug-keyed fetch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents the single slug parameter, including its origin (list_comparisons). The description repeats that origin but adds no new syntax, format, or constraint detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: fetches the full structured body of one published competitor comparison by slug. It is clearly distinguishable from list_comparisons (which enumerates slugs) and from the other get_* siblings, which cover different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when the user wants the full head-to-head detail for one published comparison" gives an explicit trigger, and the parenthetical routes the agent through list_comparisons first to obtain the slug. It doesn't explicitly state the inverse case (use list_comparisons for summaries/listing), but the sequencing implication is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_competitive_profileGet a competitive profile for a companyA
Read-only
Inspect

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).

NameRequiredDescriptionDefault
nameNoCompany name (e.g. 'Apollo'). Used when no domain is given.
domainNoCompany domain or homepage URL (e.g. 'apollo.io'). Preferred — most precise.
companiesNoBatch 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.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds rich behavioral details beyond annotations: it explains that firmographics fields may show 'collected: false' with a note until enrichment is ready, describes the strategic move format (existence of shift + was→now summary + analysis date), and defines fallback behavior ({ covered: false }). It also clarifies batch result ordering and status tags, providing strong transparency for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear 'Use when...' clause and packs significant information into one paragraph efficiently. However, it is dense and could be more scannable with structured formatting; every sentence does contribute, so it avoids waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does a thorough job of explaining return values: firmographics details, strategic move structure, report links, the { covered: false } case, and batch result format. It covers all essential aspects for an agent to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the batch behavior of 'companies' (up to 10, order preserved, status tags per result) and by emphasizing that domain/name are alternatives, which enriches semantics beyond the schema's individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb (get) and resource (competitive profile), and lists the returned data (firmographics, strategic moves, reports). However, it does not explicitly differentiate itself from siblings like find_competitors or get_market_landscape, despite overlapping use cases such as 'who competes with a company'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear trigger conditions ('Use when the user asks who competes...'), but lacks explicit exclusions or guidance on when to choose alternatives. The batch usage note ('Pass companies instead of domain/name...') adds helpful context but does not fully cover decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_competitor_moves_diffGet a competitor's dated change feedA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
nameNoCompany name (e.g. 'Apollo'). Used when no domain is given.
limitNoMax moves (default 20, max 50).
sinceNoOptional ISO date (YYYY-MM-DD). Only moves analyzed on/after this date are returned.
domainNoCompany domain or homepage URL (e.g. 'apollo.io'). Preferred — most precise.
companiesNoBatch 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.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and closed-world, yet the description still adds real behavior: newest-first ordering, dates are guaranteed real analysis dates, the { covered: false } fallback with a CTA for untracked companies, and per-entry result blocks returned in input order for batch calls. These are operational traits an agent cannot infer from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition, then scope, then return shape, then the batch variant — a sensible order. It is dense but the batch paragraph partly duplicates the schema, costing a bit of economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return contract itself: feed ordering, date provenance, the covered:false case, and the batch result structure. An agent has enough to call this correctly and interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so domain/name/since/limit/companies are all already documented, including 'domain preferred' and the 10-item batch cap. The description largely restates the batch semantics rather than adding new meaning; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — a dated change feed of a competitor's was→now strategic shifts, newest-first — plus a batch mode. This clearly separates it from siblings like list_competitor_moves (undated list) and get_pricing_changes (narrower vertical).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening 'Use when the user asks what changed, what's new, or wants a timeline' gives an explicit trigger condition, and the batch paragraph explains when to use `companies` instead of domain/name. It stops short of naming when to prefer a sibling (e.g., get_pricing_changes or list_competitor_moves) instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_landscapeGet the whole-category map for a marketA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
marketYesA vertical slug (exact) or market name (ILIKE), e.g. 'sales-intelligence' or 'sales intelligence'.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds real value beyond them by enumerating the return payload (hub fields, deduped player list, market_news with narrative/topics/momentum/sources) and disclosing the negative case { covered: false } for untracked markets. It does not discuss data freshness beyond 'latest weekly' or any rate/coverage limits, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition and return contents, but the 'whole-category map, not a self-selected competitor set' idea is stated twice in near-identical wording ('every player in it, not just a self-selected competitor set' and again later), which is pure redundancy in an otherwise compact paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so fully: hub contents, deduped player fields, the market_news structure, and the not-covered sentinel. Combined with the discovery pointer to list_markets, an agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already specifies slug-exact vs name-ILIKE matching with an example. The description only restates 'a vertical slug or name'; its useful addition (pointing to list_markets for slugs) is routing guidance rather than parameter semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('returns the published category overview plus every player') and explicitly distinguishes itself from the sibling family by contrasting the whole-category map with 'a self-selected competitor set' (i.e., find_competitors). An agent can route to it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when the user wants an overview of a whole market/category' gives an explicit trigger, and 'Use list_markets to discover slugs' routes to the prerequisite tool. It stops short of naming find_competitors or get_comparison as the alternatives for narrower questions, so the exclusion is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pricing_changesGet recent competitor pricing changesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoMax changes (default 20, max 50).
sinceNoISO date lower bound for detection (e.g. '2026-01-01'). Defaults to 90 days ago.
competitorNoCompetitor name or domain (e.g. 'Apollo' or 'apollo.io'). Omit for a market-wide recent pricing feed.
competitorsNoBatch 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.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=false; the description adds real value on top by enumerating the returned fields and disclosing the coverage limit ('spans the markets IndustryLens publicly tracks') and the source of truth (changes 'IndustryLens has detected'). It does not mention detection lag or data refresh cadence, which would matter for a 'recent changes' feed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Use condition is front-loaded and the three calling modes are covered compactly. The closing sentence ('No other public source exposes structured competitor pricing-diffs like this') is marketing boilerplate that does not help an agent decide or invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by listing the return fields and the shape of the batch response. Coverage limits are disclosed. Minor gap: nothing describes how far back the dataset actually goes or whether results are paginated beyond `limit`.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description earns a bump by clarifying the mutually exclusive semantics of `competitor` vs `competitors` and by noting one feed per company returned in input order with `since`/`limit` applied to each entry. Most of that restates the schema, but the exclusivity and ordering emphasis is useful for a batch call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — returns structured pricing/packaging changes with change_type, severity, materiality score, summary, and detection date — so an agent knows exactly what it gets back. It stops short of naming a sibling (e.g. get_competitor_moves_diff) to draw the boundary against, leaving that differentiation implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ('Use when the user asks about a competitor's pricing/packaging changes, or wants a recent pricing-change feed') and then routes between the three calling modes: single competitor, market-wide feed, or batch list. No when-not-to-use condition or named alternative tool is given, so the sibling boundary remains unstated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reportGet a full IndustryLens reportA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
slugYesReport slug from list_reports (e.g. '/devops-hiring-q1-2026' or 'devops-hiring-q1-2026').

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint=false, so the description carries the burden of disclosing real behavior, and it does: pdf_url is always null, PDF access is lead-gated behind a work-email form and client-side rendering, and no fetchable PDF bytes exist. This prevents a very likely agent failure mode that no annotation or schema field would reveal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and gating caveat are front-loaded, which is good, but the PDF discussion runs long and includes meta-commentary ('verified live: the marketing_reports.pdf_url column is unpopulated... an earlier version of this description incorrectly claimed...') that documents the description's own history rather than helping the agent act. A trimmer version could convey the same constraint in two sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain returns, and it names the structured fields, content_html as the canonical body, the web URL, and the null/gated PDF fields. For a one-parameter read tool this is complete enough to call correctly and to answer follow-up user questions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single slug parameter is already documented with examples, so the schema does the heavy lifting. The description restates the slug requirement but adds no format or normalization detail beyond what the schema provides — the correct baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch the full body of a published report by slug') and explicitly distinguishes itself from list_reports, which is named as the way to obtain the slug. An agent can select this tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ('Use when the user wants the full text of one published IndustryLens report') and states the prerequisite workflow ('after finding its slug via list_reports'). It also says what not to do ('Never construct or guess a .pdf URL yourself'), which is a concrete exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_comparisonsList IndustryLens head-to-head comparisonsA
Read-only
Inspect

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/.

NameRequiredDescriptionDefault
limitNoMax results (default 10, max 50).
competitorNoCompetitor name filter (matches either side, ILIKE).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile (readOnlyHint=true, openWorldHint=false), so the description adds what they cannot: each result carries a slug usable with get_comparison, and the URL pattern for constructing links. It does not mention default page size or pagination in prose, but the limit param is clear in schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences with the when-to-use clause front-loaded and zero filler. Slightly dense but each sentence (usage, filter, slug, URL) carries distinct information, so nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by telling the agent what each item contains (a slug) and how to use it with get_comparison, plus the canonical URL form. For a simple two-param read-only list tool, nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description adds a small but useful nuance by reiterating that the competitor filter matches either side, and by framing the whole listing as optionally filtered. It doesn't explain ILIKE/substring semantics beyond the schema, keeping it just above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('browse published competitor-vs-competitor breakdowns') and immediately distinguishes itself from the sibling get_comparison by contrasting browse-listing against slug-fetch. An agent can route between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the when ('user wants to browse... or find one involving a specific competitor') and the when-not ('rather than fetch one specific comparison by slug'), pointing to the alternative tool by slug. Also documents the optional filter's matching behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_competitor_movesList a competitor's recent movesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoMax moves (default 10, max 50).
competitorYesCompetitor name or domain (e.g. 'Apollo' or 'apollo.io').

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only and closed-world; the description adds substantial behavioral context beyond that: newest-first ordering, what each record contains (existence of the shift, was→now summary, real analysis date), a guarantee against fabricated dates, and two distinct empty-state semantics ('covered: false' vs. an empty list). That is exactly the kind of edge-case disclosure an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero filler; the usage trigger is front-loaded, followed by return shape and then edge cases. Every clause carries information the agent would otherwise have to guess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must explain return values — and it does, covering ordering, per-record fields, and both empty-result variants. For a two-parameter read tool with read-only annotations, nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the default/max for limit and the name-or-domain format for competitor, so the schema carries the parameter burden. The description reinforces the single-competitor framing but adds nothing about limit behavior or result truncation. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns recent tracked strategic moves for one competitor') with explicit scoping to a single competitor and newest-first ordering. The singular-competitor scope cleanly separates it from siblings like get_competitor_moves_diff and get_comparison without needing the schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger: 'Use when the user asks what a specific competitor has recently done or changed.' That is clear usage context, but it offers no exclusions or named alternatives (e.g., pointing to find_competitors when the competitor is unidentified, or to the diff tool for comparisons).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_marketsList the markets IndustryLens tracksA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds behavior beyond that: results are ordered by name and each item exposes a slug — useful because no output schema exists. It stops short of saying how large the list is or whether it is paginated/cacheable, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero waste: trigger first, return shape second, linkage to the follow-on tool third. Every sentence carries distinct information and the most decision-relevant clause is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must describe the return value and does: a name-ordered list of markets, each with a slug consumable by get_market_landscape. Combined with annotations covering read-only behavior and a zero-parameter schema, nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and the description correctly avoids inventing any input semantics. Nothing is promised about arguments that could mislead an agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource (list the markets IndustryLens tracks), scopes it to B2B SaaS categories, and explicitly distinguishes it from the sibling get_market_landscape, which it points to for the full map. An agent can tell exactly what it returns and what it does not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ('Use when the user wants to know which markets... or needs a slug for get_market_landscape'), naming both the intent and the downstream dependency. That is a clear when-to-use plus a named alternative for the full category map, so the routing decision needs no inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_reportsList IndustryLens intelligence reportsA
Read-only
Inspect

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/.

NameRequiredDescriptionDefault
limitNoMax results (default 10, max 50).
industryNoIndustry filter, ILIKE match (e.g. 'hr tech', 'devops', 'fintech').
target_roleNoTarget role filter, ILIKE match (e.g. 'marketing', 'sales', 'product').

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is lower; the description still adds real context by disclosing result ordering (newest-first), the shape of each item (carries a slug), and the canonical URL pattern. It stops short of stating a default result count or pagination behavior, which the schema partly covers via the limit parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the usage trigger and scoping, then ordering, then chaining guidance, then URL format. The URL sentence is the least essential but still earns a place by letting the agent construct links without a follow-up call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description tells the agent what a returned item contains (a slug) and how to chain to get_report, plus ordering and URL shape. Combined with annotations covering safety and full schema coverage on parameters, an agent has everything needed to call and consume this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both filters, the limit bounds, and default are already documented with examples. The description repeats that you can filter by industry or target_role but adds no syntax, matching behavior, or combination semantics beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (browse/discover published competitive-intelligence reports) and immediately delineates scope from the sibling get_report by contrasting 'browse or discover' with 'fetch one specific report by slug'. An agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit 'Use when' condition and names the alternative (get_report by slug) plus the disambiguating factor. It also hints at discovery axes (topic, role, industry) that map to the available filters, so the agent knows which call to make and how to narrow it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscribe_to_newsletterSubscribe to IndustryLens weekly briefingsAInspect

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'.

NameRequiredDescriptionDefault
emailYesThe email address the user explicitly asked to subscribe.
sourceNoWhere the request came from (e.g. 'mcp_claude_desktop'). Defaults to 'mcp'.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a write (readOnlyHint=false), non-destructive, and non-idempotent; the description adds valuable context beyond that — a confirmation is returned and the source value is persisted for attribution. It does not cover what happens on duplicate subscriptions (relevant given idempotentHint=false) or failure modes, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero waste, with the consent constraint front-loaded before the mechanics. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter write tool with no output schema, the description covers the consent prerequisite, the effect, the return value, and the meaning of the optional argument. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents both fields, including the 'mcp' default for source. The description restates the default and attribution purpose but adds no syntax, format, or edge-case detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Signs the given email up' to a named newsletter — and the result ('returns a confirmation'). No sibling tool in the list does anything similar (all others are read-only competitive-intelligence queries), so the tool is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition with a hard exclusion: 'Use ONLY after the user explicitly asks... never subscribe an email without their direct, informed consent.' This is about as clear as usage guidance gets for a side-effecting tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedget_competitive_profile1 field changed
      • addedInput schema / properties / companies
        Added value: +{
        +  "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"
        +}
    • Changedget_competitor_moves_diff1 field changed
      • addedInput schema / properties / companies
        Added value: +{
        +  "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"
        +}
    • Changedget_pricing_changes1 field changed
      • addedInput schema / properties / competitors
        Added value: +{
        +  "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"
        +}
  2. 4 tool updates
    • Addedget_competitor_moves_diff
    • Addedget_market_landscape
    • Addedget_pricing_changes
    • Addedlist_markets
  3. 3 tool updates
    • Addedfind_competitors
    • Addedget_competitive_profile
    • Addedlist_competitor_moves
  4. 5 tool updates
    • First observedget_comparison
    • First observedget_report
    • First observedlist_comparisons
    • First observedlist_reports
    • First observedsubscribe_to_newsletter

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Competitive intelligence platform with 24 tools. Monitor competitor pricing, content, positioning, tech stacks, and AI visibility — track how ChatGPT, Claude, and Gemini rank your brand.
    48
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A dated log of SaaS price changes across 494 tools: old price, new price and verification date for every move, plus category-level pulse and the biggest recorded increases.
    55 npm
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.