CLSTR
Server Details
CLSTR reads 100,000+ articles a day from 40,000+ sources in 170+ countries and deduplicates them into single events, then links related events into ongoing situations with a maintained summary and a full timeline. An agent can answer what has happened over the last six weeks, not just what a single headline says right now.
- Status
- Healthy
- Uptime
- 99.8% over 41 days
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct level of the news domain: searching by topic, listing top situations, viewing a situation's timeline, and retrieving a single cluster's detail. The descriptions explicitly call out when to use which, leaving no ambiguity.
All tool names follow a consistent verb_noun snake_case pattern: get_cluster, get_situation_timeline, get_top_situations, search_situations. The one non-get verb (search) is semantically appropriate and does not break the pattern.
Four tools is a well-scoped size for this server's purpose. Each tool earns its place in the explore-from-overview-to-detail workflow, and there is no bloat or thinness.
The toolset covers the full browsing lifecycle: discover situations (search/top), inspect a situation's development (timeline), and drill into a specific event (cluster detail). No critical operation appears missing for the stated domain.
Available Tools
4 toolsget_clusterGet a news eventARead-onlyIdempotentInspect
Get one news event in detail. A cluster is a single real-world event assembled from many outlets covering the same happening and deduplicated into one item, so you get one event rather than 20 near-duplicate headlines. Returns its summary, a significance score (1 to 10, where 8 and above is exceptional), a source count, the situation it belongs to if any, and its underlying source articles with links. It returns up to 100 representative articles, one per source; sources and articles_total are the full count, and articles_truncated says whether the list was cut. Use this when the user wants the specifics of one event. Get a cluster id from search_situations, get_situation_timeline, or a clstr.news URL. Cite the returned URLs. (Requires sign-in, or a free API key: https://clstr.news/developers)
| Name | Required | Description | Default |
|---|---|---|---|
| articles | No | How many source articles to return, 1 to 100. Default 100. Lower it when you only need a few citations; the source count is reported separately and is unaffected. | |
| cluster_id | Yes | Cluster id or slug (from timelines, search, or clstr.news URLs). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This description goes well beyond the readOnly/idempotent annotations by disclosing return contents (summary, significance score, source count, situation, source articles), truncation behavior via `articles_truncated`, the 'one per source' article selection, and the non-obvious fact that `sources` and `articles_total` are full counts. It also discloses an auth requirement (sign-in or free API key). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence carries information: purpose, conceptual model, return payload, truncation semantics, invocation context, auth, and citation instruction. It is well-structured and front-loaded with the primary action. Only minor trimming of the '20 near-duplicate headlines' illustration would make it tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only, idempotent annotations, an output schema, and only two parameters with 100% schema coverage, the description completes the picture: when to use it, where to get the id, what the response contains, how truncation works, and what authentication is required. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds practical guidance beyond the schema: lowering `articles` when only a few citations are needed, clarifying that the source count is reported separately and unaffected, and reinforcing where `cluster_id` values come from. This is meaningful added value over the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource: 'Get one news event in detail.' It then defines what a cluster is (one deduplicated event) and contrasts it with the situation-level objects used by sibling tools, explicitly noting the situation it belongs to 'if any.' This fully distinguishes get_cluster from get_situation_timeline and search_situations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the key condition: 'Use this when the user wants the specifics of one event.' It also provides concrete paths to obtain a cluster id (search_situations, get_situation_timeline, or a clstr.news URL). However, it does not explicitly state when to prefer the sibling situation-level tools instead, leaving a small gap in alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_situation_timelineGet a situation timelineARead-onlyIdempotentInspect
Get the full chronological timeline of one situation. A situation is an ongoing storyline (story arc) that groups related news events over time; it carries a maintained summary plus every event in order, so you see not just what happened but how it developed. Each event is a cluster (one happening assembled from many outlets and deduplicated) with its date, a significance score (1 to 10, where 8 and above is exceptional), a source count, and a canonical clstr.news link. Use this to brief on a story's history or answer 'how did this develop'. Get a situation id from search_situations or get_top_situations, or from a clstr.news URL. An id that was retired when two situations merged resolves to the successor, flagged with merged_into_shown. Cite the returned URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| situation_id | Yes | Situation id or slug (from other tools or clstr.news URLs). | |
| timeline_limit | No | Timeline entries to return, newest first. Default 50, and 50 is also the maximum without an API key. A free key raises it to 500: https://clstr.news/developers | |
| timeline_before | No | Cursor: cluster id (a UUID) from a previous page, to continue past it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so safety is covered. The description adds critical behavioral context: the situation's definition (story arc with summary and ordered events), event composition (clusters from deduplicated outlets), significance scoring, and the merged_into_shown flag for retired IDs. While it doesn't detail output shape (handled by output schema), it covers key behavioral nuances beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately lengthy but information-dense, front-loading the core purpose and then clarifying terms and usage. Every sentence adds value: definition, event structure, use cases, how to get IDs, merged handling, and citation advice. Slightly verbose for a timeline tool, but acceptable given the need to explain the situation concept and edge cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool sits in a rich context: it has a detailed input schema, output schema, and annotations covering safety and idempotency. The description fully bridges the remaining gaps: it explains what a situation is, how to obtain the ID from siblings, handles the merged-situation case, and tells the agent to cite URLs. Nothing an agent needs to correctly invoke and interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (situation_id, timeline_limit, timeline_before) are already fully described in the schema. The description adds no extra parameter-level detail beyond what the schema provides, such as the semantics of the cursor or date format. Therefore, a baseline 3 is appropriate; the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: getting the full chronological timeline of a situation, and defines what a situation is. It distinguishes itself from siblings by focusing on timeline/history retrieval, while siblings like search_situations and get_top_situations are for discovery, and get_cluster is for individual events. The description explicitly tells the agent to get situation IDs from those sibling tools, further clarifying differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: to brief on a story's history or answer 'how did this develop'. It names the alternative tools to obtain the required ID (search_situations, get_top_situations, or a clstr.news URL) and mentions that merged situations resolve to a successor, which guides usage in edge cases. No ambiguity remains about prerequisites or invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_situationsTop developing situationsARead-onlyIdempotentInspect
List the situations developing right now, ranked by relevance: a blend of significance, how many outlets are covering it, and how recently it moved. So a lower significance score can rank above a higher one, and that ordering is intentional; do not re-sort. A situation is an ongoing storyline that groups related news events over time and carries a maintained summary and a source count (how many outlets are behind it). Optionally filter by category, by country, and by time window (24h, 7d, or 30d), and switch the ordering to newest activity first with sort. Use this to answer 'what is going on in the world', 'what is happening in ' or 'what is happening in ' when there is no specific topic yet, then open any result with get_situation_timeline. When there are more, the result ends with a cursor to page further. Pass summary: "full" to get each situation's maintained summary in full, instead of a one-line preview, without a follow-up call per result; full summaries in a list are not enabled for every account, so read summary_mode in the result to see what you got, and use get_situation_timeline for one situation's summary in full. Cite the returned URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Ordering. 'relevance' (the default) blends significance, source count and recency; 'recent' is newest activity first. | |
| limit | No | Max situations to return. Default 15. | |
| cursor | No | From a previous result, to page further. Pass the same filters alongside it: a cursor resumes only under the filter set that produced it. | |
| window | No | Time window. Default '7d'. | |
| country | No | Optional country filter: comma-separated ISO 3166-1 alpha-2 codes, for example "US,GB". Up to 10 at once. A situation matches if it is covered in any of them. | |
| summary | No | How much summary text each row carries. 'preview' (the default) is a one-line preview; 'full' returns the maintained summary in full, so you do not need a follow-up call per result. On get_top_situations, 'full' is not enabled for every account: read `summary_mode` in the result to see which mode was actually served, and get_situation_timeline always returns one situation's summary in full. 'full' returns each situation's complete summary, up to roughly 300 words per row, so keep limit small when you use it. | |
| category | No | Optional category filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| next_cursor | Yes | Pass back as cursor to page further. Null at the end. |
| window_days | Yes | The time window this result covers, in days, which is not always the one requested. |
| summary_mode | Yes | The summary mode this result was served in, which is not always the one requested. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses non-obvious behavior: the blended relevance ranking is intentional and should not be re-sorted, cursor paging requires the same filters, and summary: "full" may not be enabled for every account so summary_mode must be read. This is meaningful context the annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense and front-loaded with the core purpose before filters, use cases, pagination, and caveats. Each sentence adds useful operational detail, with no filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven optional parameters, annotations, and an output schema, the description covers the remaining operational essentials: when to use it, what the ordering means, how paging works, the summary_mode caveat, and the follow-up tool. An agent has enough to call it correctly without needing more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real parameter context: it explains how relevance is computed, that low significance can rank high, and that full summaries can be heavy and may fall back based on account entitlement. This goes beyond the schema's per-parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the situations developing right now, ranked by relevance', then defines what a situation is, so an agent knows exactly what is returned. It also differentiates from siblings by positioning this as the no-specific-topic list and routing follow-ups to get_situation_timeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit invocation triggers: 'Use this to answer "what is going on in the world"... when there is no specific topic yet', and indicates the alternative by saying to open results with get_situation_timeline. This makes when-to-use vs alternatives reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_situationsSearch news situationsARead-onlyIdempotentInspect
Search the news by topic to find matching situations and events. A situation is an ongoing storyline (story arc) that groups related events over time; an event, called a cluster, is one happening assembled from many outlets and deduplicated into a single item, so you get one event rather than 20 near-duplicate headlines. Results come back grouped under their situations, each with a one-line summary, a significance score (1 to 10, where 8 and above is exceptional), a source count (how many outlets are covering it), and a canonical clstr.news link. Use this to answer 'what is happening around X' for a topic, company, country, or event. Then open a result with get_situation_timeline for the full history, or get_cluster for one event's detail. Results are relevance ordered and bounded to the top matches: when there are more, the result ends with a cursor to pass back, and each page counts as one search against your cap. Pass summary: "full" to read each match's summary untruncated instead of one line. Cite the returned URLs. (Requires sign-in, or a free API key: https://clstr.news/developers)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How far back to search, in days. Default 7, maximum 30. | |
| limit | No | Max events to return. Default 15. They are grouped under their situations in the result, so you may see fewer situation headings than this number. | |
| query | Yes | Topic, entity, company, country, or event to search for. | |
| cursor | No | From a previous result, to page further. Each page counts as one search against your cap. | |
| summary | No | How much summary text each row carries. 'preview' (the default) is a one-line preview; 'full' returns the maintained summary in full, so you do not need a follow-up call per result. On get_top_situations, 'full' is not enabled for every account: read `summary_mode` in the result to see which mode was actually served, and get_situation_timeline always returns one situation's summary in full. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| query | Yes | The query as actually run: `days` is the EFFECTIVE window after tier and index clamps. |
| next_cursor | Yes | Pass back as cursor to page further. Each page is one search. |
| summary_mode | Yes | The summary mode this result was served in, which is not always the one requested. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, and the description adds meaningful behavior on top: results are relevance ordered and bounded to top matches, each page counts as one search against the cap, and the tool requires sign-in or an API key. It also discloses pagination and summary-mode nuances ('each page counts as one search'), plus a caveat about 'full' on get_top_situations that the schema alone does not express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although the description is long, every clause earns its place: it defines domain terms, explains result grouping, gives follow-up tool routing, discloses pagination cost, and notes auth requirements. No repeated schema details or filler are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the annotations declare the safety profile, the description covers everything needed to invoke the tool correctly: query intent, result shape, pagination, summary modes, auth, and follow-up tools. There is no missing call-relevant context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description does add value beyond the schema by clarifying that each cursor page consumes one search against the cap, and by explaining that passing summary: 'full' avoids follow-up calls per result. The query, days, and limit parameters are otherwise already well documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Search the news by topic to find matching situations and events') and clearly distinguishes the tool's core role from its siblings by naming get_situation_timeline and get_cluster as follow-ups rather than treating this tool as the all-purpose one. It also explains the situation/event distinction, which helps an agent know what kind of result to expect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to reach for this tool ('Use this to answer "what is happening around X"') and names two sibling tools as the next step for deeper exploration ('open a result with get_situation_timeline... or get_cluster for one event's detail'). The only gap is that it never contrasts search_situations with the remaining sibling get_top_situations, so differentiation is strong but not fully exhaustive.
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 tool update
- Changed
get_top_situations2 fields changed- added
Output schema / properties / window_daysAdded value: +{ + "description": "The time window this result covers, in days, which is not always the one requested.", + "minimum": 1, + "type": "integer" +} - changed
Output schema / requiredPrevious value: -[ - "data", - "next_cursor", - "summary_mode" -]New value: +[ + "data", + "next_cursor", + "summary_mode", + "window_days" +]
3 tool updates
- Changed
get_cluster4 fields changed- added
Input schema / properties / articlesAdded value: +{ + "description": "How many source articles to return, 1 to 100. Default 100. Lower it when you only need a few citations; the source count is reported separately and is unaffected.", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / data / properties / articles_totalAdded value: +{ + "description": "How many outlets are behind this event in total. `articles` is capped, this is not.", + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / data / properties / articles_truncatedAdded value: +{ + "description": "True when `articles` holds fewer entries than `articles_total`.", + "type": "boolean" +} - changed
Output schema / properties / data / requiredPrevious value: -[ - "articles" -]New value: +[ + "articles", + "articles_total", + "articles_truncated" +]
- Changed
get_top_situations4 fields changed- added
Input schema / properties / summaryAdded value: +{ + "description": "How much summary text each row carries. 'preview' (the default) is a one-line preview; 'full' returns the maintained summary in full, so you do not need a follow-up call per result. On get_top_situations, 'full' is not enabled for every account: read `summary_mode` in the result to see which mode was actually served, and get_situation_timeline always returns one situation's summary in full. 'full' returns each situation's complete summary, up to roughly 300 words per row, so keep limit small when you use it.", + "enum": [ + "preview", + "full" + ], + "type": "string" +} - added
Output schema / properties / data / items / properties / summaryAdded value: +{ + "description": "The maintained situation summary, in full. Present only when summary: \"full\" was requested.", + "type": "string" +} - added
Output schema / properties / summary_modeAdded value: +{ + "description": "The summary mode this result was served in, which is not always the one requested.", + "enum": [ + "preview", + "full" + ], + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "data", - "next_cursor" -]New value: +[ + "data", + "next_cursor", + "summary_mode" +]
- Changed
search_situations3 fields changed- added
Input schema / properties / summaryAdded value: +{ + "description": "How much summary text each row carries. 'preview' (the default) is a one-line preview; 'full' returns the maintained summary in full, so you do not need a follow-up call per result. On get_top_situations, 'full' is not enabled for every account: read `summary_mode` in the result to see which mode was actually served, and get_situation_timeline always returns one situation's summary in full.", + "enum": [ + "preview", + "full" + ], + "type": "string" +} - added
Output schema / properties / summary_modeAdded value: +{ + "description": "The summary mode this result was served in, which is not always the one requested.", + "enum": [ + "preview", + "full" + ], + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "data", - "query", - "next_cursor" -]New value: +[ + "data", + "query", + "next_cursor", + "summary_mode" +]
4 tool updates
- Changed
get_cluster1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "properties": { + "articles": { + "description": "The underlying source articles.", + "items": { + "properties": { + "published_at": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "source_host": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "description": "The outlet's own URL, null when it could not be published.", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "category": { + "type": [ + "string", + "null" + ] + }, + "countries": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "merged_into_shown": { + "description": "Present when a merged-away event was served as its successor.", + "type": "boolean" + }, + "published_at": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "significance_score": { + "description": "AI-generated significance, 1 to 10, where 8 and above is exceptional.", + "type": [ + "integer", + "null" + ] + }, + "situation": { + "properties": { + "cluster_count": { + "minimum": 0, + "type": "integer" + }, + "id": { + "type": "string" + }, + "slug": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "slug": { + "type": [ + "string", + "null" + ] + }, + "sources": { + "description": "How many outlets are behind this event.", + "minimum": 0, + "type": "integer" + }, + "summary": { + "description": "The short summary.", + "type": "string" + }, + "summary_full": { + "description": "The full narrative summary.", + "type": "string" + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "updated_at": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Canonical clstr.news URL. Cite this.", + "type": "string" + } + }, + "required": [ + "articles" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" +}
- Changed
get_situation_timeline2 fields changed- changed
Input schema / properties / timeline_before / descriptionPrevious value: -"Cursor: cluster id from a previous page to continue past."New value: +"Cursor: cluster id (a UUID) from a previous page, to continue past it." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "properties": { + "categories": { + "items": { + "type": "string" + }, + "type": "array" + }, + "category": { + "type": [ + "string", + "null" + ] + }, + "cluster_count": { + "minimum": 0, + "type": "integer" + }, + "day_span": { + "minimum": 0, + "type": "integer" + }, + "first_seen": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string" + }, + "is_timeline_page": { + "description": "True on a timeline_before continuation page, which omits the header fields.", + "type": "boolean" + }, + "last_updated": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "latest_cluster_title": { + "type": [ + "string", + "null" + ] + }, + "merged_into_shown": { + "description": "Present when a retired id was served as its successor.", + "type": "boolean" + }, + "requested_id": { + "description": "The retired id that was asked for, alongside merged_into_shown.", + "type": "string" + }, + "significance_score": { + "description": "AI-generated significance, 1 to 10, where 8 and above is exceptional.", + "type": [ + "integer", + "null" + ] + }, + "slug": { + "type": [ + "string", + "null" + ] + }, + "source_count": { + "minimum": 0, + "type": "integer" + }, + "status": { + "description": "ACTIVE or QUIET.", + "type": [ + "string", + "null" + ] + }, + "summary": { + "description": "The maintained situation summary, in full.", + "type": "string" + }, + "summary_preview": { + "type": "string" + }, + "timeline": { + "description": "Member events, newest first.", + "items": { + "properties": { + "category": { + "type": [ + "string", + "null" + ] + }, + "countries": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "published_at": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "significance_score": { + "description": "AI-generated significance, 1 to 10, where 8 and above is exceptional.", + "type": [ + "integer", + "null" + ] + }, + "slug": { + "type": [ + "string", + "null" + ] + }, + "sources": { + "description": "How many outlets are behind this event.", + "minimum": 0, + "type": "integer" + }, + "summary": { + "type": "string" + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "updated_at": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Canonical clstr.news URL. Cite this.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeline_cursor": { + "properties": { + "has_more": { + "type": "boolean" + }, + "next_before": { + "description": "Pass back as timeline_before for the next page.", + "type": [ + "string", + "null" + ] + }, + "remaining_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Canonical clstr.news URL. Cite this.", + "type": "string" + } + }, + "required": [ + "is_timeline_page", + "timeline", + "timeline_cursor" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" +}
- Changed
get_top_situations4 fields changed- added
Input schema / properties / countryAdded value: +{ + "description": "Optional country filter: comma-separated ISO 3166-1 alpha-2 codes, for example \"US,GB\". Up to 10 at once. A situation matches if it is covered in any of them.", + "maxLength": 200, + "type": "string" +} - changed
Input schema / properties / cursor / descriptionPrevious value: -"From a previous result, to page further. Pass the same window and category alongside it."New value: +"From a previous result, to page further. Pass the same filters alongside it: a cursor resumes only under the filter set that produced it." - added
Input schema / properties / sortAdded value: +{ + "description": "Ordering. 'relevance' (the default) blends significance, source count and recency; 'recent' is newest activity first.", + "enum": [ + "relevance", + "recent" + ], + "type": "string" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "items": { + "properties": { + "categories": { + "items": { + "type": "string" + }, + "type": "array" + }, + "category": { + "type": [ + "string", + "null" + ] + }, + "cluster_count": { + "minimum": 0, + "type": "integer" + }, + "countries": { + "description": "ISO 3166-1 alpha-2 codes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "first_seen": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string" + }, + "last_updated": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "latest_cluster_title": { + "type": [ + "string", + "null" + ] + }, + "significance_score": { + "description": "AI-generated significance, 1 to 10, where 8 and above is exceptional.", + "type": [ + "integer", + "null" + ] + }, + "slug": { + "type": [ + "string", + "null" + ] + }, + "source_count": { + "minimum": 0, + "type": "integer" + }, + "status": { + "description": "ACTIVE or QUIET.", + "type": [ + "string", + "null" + ] + }, + "summary_preview": { + "type": "string" + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Canonical clstr.news URL. Cite this.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "next_cursor": { + "description": "Pass back as cursor to page further. Null at the end.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "data", + "next_cursor" + ], + "type": "object" +}
- Changed
search_situations1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "data": { + "items": { + "properties": { + "category": { + "type": [ + "string", + "null" + ] + }, + "countries": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "published_at": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "significance_score": { + "description": "AI-generated significance, 1 to 10, where 8 and above is exceptional.", + "type": [ + "integer", + "null" + ] + }, + "situation": { + "properties": { + "cluster_count": { + "minimum": 0, + "type": "integer" + }, + "id": { + "type": "string" + }, + "slug": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + } + }, + "type": [ + "object", + "null" + ] + }, + "slug": { + "type": [ + "string", + "null" + ] + }, + "sources": { + "description": "How many outlets are behind this event.", + "minimum": 0, + "type": "integer" + }, + "summary": { + "type": "string" + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "updated_at": { + "description": "ISO-8601 UTC timestamp.", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Canonical clstr.news URL. Cite this.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "next_cursor": { + "description": "Pass back as cursor to page further. Each page is one search.", + "type": [ + "string", + "null" + ] + }, + "query": { + "description": "The query as actually run: `days` is the EFFECTIVE window after tier and index clamps.", + "properties": { + "days": { + "minimum": 1, + "type": "integer" + }, + "q": { + "type": "string" + } + }, + "required": [ + "q", + "days" + ], + "type": "object" + } + }, + "required": [ + "data", + "query", + "next_cursor" + ], + "type": "object" +}
4 tool updates
- First observed
get_cluster - First observed
get_situation_timeline - First observed
get_top_situations - First observed
search_situations
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1622 npm1MIT
- AlicenseCqualityAmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm37 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent โ real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.