Horizon AI Intelligence
Server Details
Free AI-industry intelligence for agents: briefings, regulation tracker & regional lenses
- Status
- Healthy
- Uptime
- 99.9% over 38 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 11 tools
Each tool targets a distinct retrieval pattern: signals, briefings, polling, provenance, regulation, search, related items, and source discovery. The main overlap is get_china_signal versus get_region_signal and get_daily_briefing versus get_new_since, but the descriptions explicitly cross-reference these, so an agent can disambiguate. Overall strong, though the preset/china duplication and signal-vs-briefing pair introduce minor ambiguity.
The naming is largely consistent: most tools use get_<object>, with list_sources and search_news as conventional exceptions for their actions. A few names like get_new_since and get_related are less noun-like than the rest, but the overall pattern is predictable and readable.
Eleven tools is well within the ideal range for a news-intelligence server. Each tool serves a distinct facet of the domain—regional signals, topic signals, regulation, provenance, polling, search, and corpus discovery—so no tool feels redundant or like filler.
The surface covers most core workflows: daily briefings, incremental news polling, regional/topic signals, blind-spot analysis, regulation tracking, entity provenance, search, related items, and source listing. The notable gap is the lack of a direct get-item/detail tool: get_related references item ids, but there is no way to fetch a single item's full metadata or content beyond the paid-tier teaser behavior.
Available Tools
11 toolsget_blind_spotsARead-onlyInspect
Coverage blind spots: companies, models, and people that regional press (Chinese/East-Asian, European, Latin-American) is covering while Western/global feeds are not — ranked, with per-region item counts. Answers "what is Western tech media missing right now?". Measured within Horizon's corpus: "invisible" means zero pickup in the Western feeds Horizon tracks, not a claim about all media.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (default 60, 7–180). | |
| limit | No | Max entities (default 15, cap 50). |
Output Schema
| Name | Required | Description |
|---|---|---|
| provider | No | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
| blindSpots | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already signals a safe read operation, and the description adds a critical caveat: 'invisible' means zero pickup in the Western feeds Horizon tracks, not a claim about all media. This prevents misinterpretation of the results. While it doesn't disclose rate limits or response format, the read-only nature and the scope clarification make it adequately transparent.
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 sized and front-loads the core purpose in the first sentence, then adds necessary clarification about the measurement scope. It avoids unnecessary fluff and each sentence serves a purpose, though it could be slightly trimmed without losing meaning.
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?
For a read-only tool with a well-defined purpose, documented parameters, and an existing output schema, the description is complete. It explains the ranking and per-region counts, defines the key term 'invisible', and clarifies the corpus limitation. An agent has everything needed to call it correctly and interpret the results.
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?
Both parameters (days and limit) are fully described in the input schema, including defaults and ranges, so the schema does the heavy lifting. The description does not add extra parameter detail beyond what the schema provides, so the baseline of 3 is appropriate.
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 states a specific verb and resource ('Coverage blind spots') and explains exactly what it returns: companies, models, and people covered by regional press but not Western feeds, ranked with per-region counts. It also provides a clear framing question ('what is Western tech media missing right now?') that distinguishes it from sibling tools like get_region_signal or get_china_signal, which focus on specific regions rather than cross-region gaps.
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 gives useful context by defining 'invisible' within Horizon's corpus and clarifying the measurement scope, but it does not explicitly mention alternatives or state when not to use this tool. It implies a use case (identifying cross-region coverage gaps) but does not compare against siblings like get_region_signal or search_news, so the agent must infer the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_china_signalARead-onlyInspect
Shortcut for get_region_signal with region "china": the current China & East-Asia AI signal (Qwen, DeepSeek, Zhipu, Moonshot, ModelScope, and more) that Western feeds often miss — ranked by momentum. Prefer get_region_signal if you may query more than one region.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default 15, cap 40). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| hasMore | No | get_new_since: more items available now. |
| provider | No | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
| nextCursor | No | get_new_since: pass back as cursor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint already signals safety. The description adds useful context about the returned signal (ranked by momentum) and its unique coverage of Western-feed blind spots. No hidden behaviors are disclosed, but the output schema covers return format, so this is sufficient.
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?
Two concise sentences: the first defines the tool's purpose and scope, the second gives actionable alternative guidance. No filler or redundancy.
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?
For a single-parameter read-only tool with output schema, the description covers purpose, scope, ordering, and when to use the alternative. It is fully sufficient for correct invocation without further external 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?
The input schema fully documents the 'limit' parameter with default and cap (100% coverage). The description does not add extra parameter semantics, but per the rubric, baseline 3 is appropriate when schema covers all parameters.
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 identifies the tool as a shortcut for 'get_region_signal' with region 'china', specifying exact geographic scope and example model providers (Qwen, DeepSeek, Zhipu, Moonshot, ModelScope). It also mentions the ranking by momentum, which distinguishes it from broader sibling tools.
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?
Explicit guidance is provided: 'Prefer get_region_signal if you may query more than one region.' This gives a clear condition for when to choose an alternative, making the usage context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_briefingARead-onlyInspect
Today's aggregate AI industry briefing: top stories, emerging signals, new entrants, and regulation updates, distilled from HN/Reddit and official legislative sources. A curated once-daily synthesis — for raw item-level updates since your last check, use get_new_since instead. Optionally pass any past date (YYYY-MM-DD) — the full briefing archive is public.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional YYYY-MM-DD for a past briefing (any date in the archive); omit for the latest briefing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| briefing | Yes | |
| provider | Yes | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds valuable behavioral context: the briefing is curated, once-daily, synthesized from HN/Reddit and legislative sources, and the full archive is public. No contradictions 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?
Two sentences with no filler: the first front-loads what the tool returns and its sources, and the second handles the alternative tool and date behavior. Every sentence earns its place.
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?
For a single optional-parameter read-only tool with an output schema, the description covers purpose, sources, behavior, date handling, and the key alternative. Nothing essential is missing for an agent to select and invoke it correctly.
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 fully documents the optional date parameter. The description restates the date format and archive availability, but adds little beyond what the schema already provides.
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?
States a specific verb and resource ('aggregate AI industry briefing') and lists the content categories: top stories, emerging signals, new entrants, and regulation updates. It also names the sibling it is not (get_new_since), so an agent can distinguish it from raw item-level tools.
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?
Explicitly says to use get_new_since instead when raw item-level updates since the last check are needed, making the boundary between the two tools clear. It also explains that any past date can be passed and that omitting it returns the latest briefing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_provenanceARead-onlyInspect
For one company, model, or person: how much of the claim activity Horizon holds provenance data for is self-reported by that entity versus independently evaluated by someone else. Descriptive counts over the last 30 days — not a score, and not a judgement about whether any claim is true. Answers "is the buzz around X coming from X?".
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | Entity name, e.g. 'Qwen 3.8' or 'Anthropic'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| entity | No | |
| provenance | No | Null when fewer than 3 claims are held for this entity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that the tool is read-only (readOnlyHint: true is already annotated) and gives temporal scope ('over the last 30 days') and data nature (descriptive counts, not a score or judgment). It adds context beyond the annotation, explaining what the tool returns without contradicting the annotation.
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 two sentences long, front-loads the key action and entity scope, and avoids fluff. It efficiently conveys purpose, data context, and exclusions. Could be considered slightly dense but not verbose; earns a 4 for being concise and well-structured.
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 has only one parameter, complete schema coverage, and a provided output schema. The description explains the tool's purpose, data time window, and what it does not provide, making it complete for an agent to select and invoke correctly. No gaps are present given the simplicity and available structured metadata.
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?
The input schema documents the 'entity' parameter with examples (e.g., 'Qwen 3.8' or 'Anthropic'). The description adds meaning by clarifying the kind of entity (company, model, or person) and the context of how the data is used (provenance split). Since schema coverage is 100%, the baseline is 3, but the description provides valuable extra semantics, earning a 4.
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: for one entity (company/model/person), it shows how much claim provenance data is self-reported vs independently evaluated, over the last 30 days. It specifies the verb ('get'), resource ('entity provenance'), and distinguishes from a score or judgment, differentiating it from siblings like get_china_signal or get_topic_signal.
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 explains when to use this tool ('to answer is the buzz around X coming from X?') and clarifies what it does not do (not a score, not a judgment). It provides clear context but does not explicitly state when not to use it or list alternatives among the provided sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_new_sinceARead-onlyInspect
Incremental poll: raw item-level AI news added since a cursor, oldest→newest, with a nextCursor for your next call — use this for "what's new since I last checked"; for the curated once-daily synthesis use get_daily_briefing. Omit cursor for the latest items plus a cursor to start polling from. Titles + links + topics (bodies and higher limits are on the paid tier).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default 25, cap 50). | |
| cursor | No | Opaque cursor from a previous call's nextCursor. Omit on the first call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| hasMore | No | get_new_since: more items available now. |
| provider | No | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
| nextCursor | No | get_new_since: pass back as cursor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses ordering (oldest→newest), pagination via nextCursor, the omitted-cursor behavior for starting fresh, content returned (titles, links, topics), and paid-tier restrictions. This is substantial contextual disclosure.
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 two sentences, front-loaded with the core action, and every clause provides value. No fluff or redundancy; it achieves high density of useful information.
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 tool's small parameter surface and the presence of an output schema, the description adequately covers return contents, pagination mechanics, and usage patterns. There are no significant gaps in what an agent needs to know to invoke it correctly.
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?
The input schema covers 100% of parameter descriptions, so the baseline is 3. The description adds meaningful guidance by explaining the cursor's rollover ('nextCursor for your next call') and clarifying the omit-cursor first-call scenario, earning a 4.
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 explicitly states 'Incremental poll: raw item-level AI news added since a cursor' with a clear verb and resource, and distinguishes itself from get_daily_briefing. It is specific and unambiguous.
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 provides an explicit use case ('what's new since I last checked') and names the alternative tool for curated synthesis (get_daily_briefing). It also explains the behavior when omitting the cursor, covering initial and subsequent calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_region_signalARead-onlyInspect
The current AI signal for a region (china, korea, japan, or eu) — recent, relevance-scored items on that region's models, labs, and analysis, ranked by momentum. Includes local-language press translated into English. The canonical regional tool; get_china_signal is a preset of this with region "china". Returns titles, sources, and links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default 15, cap 40). | |
| region | Yes | Region slug (china, korea, japan, eu). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| hasMore | No | get_new_since: more items available now. |
| provider | No | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
| nextCursor | No | get_new_since: pass back as cursor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, but the description adds substantial behavioral context: items are relevance-scored and ranked by momentum, local-language press is translated to English, and the output includes titles, sources, and links. This goes well beyond the annotation to explain how the tool behaves and what the user receives.
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 three sentences, front-loading the core purpose, then covering translation and return details. Every sentence contributes distinct information with no redundancy or filler.
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 a readOnly hint, a present output schema, and full parameter schema coverage, the description still adds value by explaining the signal's nature (relevance-scored, momentum-ranked), translation of local press, and return fields. It also addresses the relationship to a sibling tool, making it complete for the tool's complexity.
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% with descriptions for both region (enum) and limit (default/cap). The description adds little beyond the schema—only reiterating the region values and noting that get_china_signal is a preset, which doesn't materially enhance parameter meaning. Baseline 3 is appropriate given the high schema coverage.
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 retrieves the current AI signal for a region, enumerates the valid regions (china, korea, japan, eu), and describes the content (recent, relevance-scored items ranked by momentum) along with the return format (titles, sources, links). It distinguishes itself from the sibling get_china_signal by positioning itself as the canonical regional tool with get_china_signal as a preset.
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 states it is 'the canonical regional tool' and calls out get_china_signal as a preset for region 'china', directly informing the agent when to use this tool versus an alternative. While it doesn't compare against every sibling, the guidance is clear and actionable for regional signal needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regulation_updatesARead-onlyInspect
Current AI legislation headlines across the US Congress and federal agencies, US state legislatures, the UK Parliament, and the EU, with each item's legislative stage (proposed / committee / floor action / passed / implementation). State bills are the largest share by far; filter with jurisdiction to narrow.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max headlines (default 50, cap 100). | |
| jurisdiction | No | Optional filter to one jurisdiction. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| provider | Yes | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds useful context about the state-bill majority and legislative-stage breakdown, but does not disclose freshness, pagination, or rate-limit behavior. This is adequate but not rich.
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?
Two sentences with no filler. The main scope is front-loaded, followed by the key usage hint about state bills and jurisdiction filtering. Every clause earns its place.
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 an output schema, no required parameters, and annotations declaring read-only behavior, the description provides all necessary context to call the tool correctly. Jurisdiction options and limit semantics are already in the schema, so nothing essential 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 both parameters are already documented. The description adds a helpful hint that state bills dominate and that jurisdiction narrows results, but this mostly reinforces the schema rather than adding new meaning.
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?
States a specific verb and resource: get current AI legislation headlines. It enumerates the jurisdictions (US Congress/federal agencies, US states, UK Parliament, EU) and names the included legislative stages, making it easy to distinguish from sibling news/signal tools.
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 gives clear context on what the tool returns and explicitly suggests using the jurisdiction filter to narrow state-heavy results. It does not name alternative tools or exclusions, but the context is enough to infer when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topic_signalARead-onlyInspect
The current AI signal for a topic — recent, relevance-scored items tagged with that topic, ranked by momentum. Like get_region_signal but sliced by subject instead of geography.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items (default 15, cap 40). | |
| topic | Yes | Topic slug. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| hasMore | No | get_new_since: more items available now. |
| provider | No | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
| nextCursor | No | get_new_since: pass back as cursor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, and the description adds behavioral context by explaining the items are relevance-scored and ranked by momentum. This goes beyond the annotation without contradicting it, though it does not cover pagination or rate limits.
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 two efficient sentences. The first defines the tool's output and ranking, the second provides a sibling comparison. No wasted words, and the most important info is front-loaded.
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 an output schema present and annotations covering safety, the description adequately explains the tool's purpose and ranking logic. It is complete for a straightforward read-only tool, though it could optionally mention the available topic values.
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% with parameter descriptions for both 'topic' and 'limit'. The description does not add significant extra meaning beyond referring to topic as 'subject', so the baseline of 3 is appropriate.
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 what the tool does: retrieves the current AI signal for a topic, defined as recent, relevance-scored items ranked by momentum. It also differentiates from get_region_signal by noting the subject-based slicing, making the purpose distinct and specific.
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 compares the tool to get_region_signal, indicating when to use this over a geographic alternative. This provides clear context, though it does not mention exclusions or other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesARead-onlyInspect
Describe what Horizon covers: ingestion sources with their source= filter values, the regional lenses (region= / dedicated tools), and how to filter. Call this to understand the corpus before querying.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| overview | Yes | The same markdown as the text block. |
| provider | Yes | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already conveys safety. The description adds that it provides coverage details and filtering guidance, which is useful behavioral context. No contradictions, and the added value is appropriate for a simple read-only reference tool.
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?
A single, dense sentence that front-loads the core purpose and immediately states when to use it. Every phrase adds value, with no wasted words. The structure is efficient and easy to parse.
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 tool has no parameters and an output schema (not shown but present), the description sufficiently covers what the tool does and when to call it. It might benefit from mentioning the exact output format, but the output schema likely handles that. For a simple coverage reference, this is adequately complete.
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?
There are zero parameters, so per guidelines the baseline is 4. The description doesn't need to explain parameters, and no schema coverage issues exist. The description's mention of 'how to filter' hints at output structure without requiring parameter documentation.
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: to describe Horizon's coverage, including ingestion sources, source= filter values, regional lenses, and filtering method. It distinguishes itself from siblings by positioning it as a preliminary call to understand the corpus before querying, making its role unique.
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?
Explicitly states when to call ('Call this to understand the corpus before querying'), which positions it as a first step. It doesn't mention alternatives or exclusions, but the context is clear enough for an agent to know this is a pre-query reference tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_newsARead-onlyInspect
Quick teaser search over recent AI news: returns the top 3 matching titles with links. Full-text search with bodies, filters, and history requires a Horizon subscription.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| hasMore | No | get_new_since: more items available now. |
| provider | No | Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url. |
| nextCursor | No | get_new_since: pass back as cursor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds behavioral specifics: it returns only the top 3 titles with links, and that advanced features are gated behind a subscription. This goes beyond the structured annotations and provides useful context for the agent.
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 two sentences. The first clearly articulates the tool's core function and output; the second states the limitation and upgrade path. Every phrase contributes meaning, with no redundant or filler content.
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 simple input (one string), the presence of an output schema, and the read-only annotation, the description is largely complete. It explains the scope ('recent AI news'), result count (top 3), and the subscription boundary. Minor ambiguities like the exact meaning of 'recent' are not critical.
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?
The input schema has 100% coverage for the single 'query' parameter, describing it as 'Search terms.' The description does not add additional detail about parameter semantics, such as syntax, length restrictions, or examples. With full schema coverage, the baseline of 3 is appropriate.
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?
Description states the tool performs a 'quick teaser search over recent AI news' and specifies the output: 'top 3 matching titles with links.' This is a clear verb+resource pair and distinguishes it from the sibling get_* tools, which are not search tools. The teaser scope is explicit.
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 clearly indicates when to use this tool ('Quick teaser search') and contrasts it with the full-text search capability that 'requires a Horizon subscription.' This implies that for full-text, filters, or history, users should not rely on this tool. However, it does not explicitly name an alternative tool, though none of the siblings fill that role.
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.
3 tool updates
- Changed
get_daily_briefing1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "briefing": { + "properties": { + "content": { + "description": "topStories, emergingSignals, newEntrants, regulation, ...", + "type": "object" + }, + "date": { + "type": "string" + }, + "generatedAt": { + "type": "string" + } + }, + "required": [ + "date", + "content" + ], + "type": "object" + }, + "provider": { + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "briefing", + "provider" + ], + "type": "object" +}
- Changed
get_regulation_updates2 fields changed- changed
Input schema / properties / jurisdiction / enumPrevious value: -[ - "us_federal", - "uk", - "eu" -]New value: +[ + "us_federal", + "us_state", + "uk", + "eu" +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "items": { + "items": { + "properties": { + "jurisdiction": { + "description": "us_federal | us_state | uk | eu", + "type": "string" + }, + "lastUpdated": { + "type": [ + "string", + "null" + ] + }, + "sourceUrl": { + "type": [ + "string", + "null" + ] + }, + "stage": { + "description": "Legislative stage as recorded from the source.", + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "title", + "jurisdiction" + ], + "type": "object" + }, + "type": "array" + }, + "provider": { + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "items", + "provider" + ], + "type": "object" +}
- Changed
list_sources1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "overview": { + "description": "The same markdown as the text block.", + "type": "string" + }, + "provider": { + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "overview", + "provider" + ], + "type": "object" +}
1 tool update
- Added
get_entity_provenance
2 tool updates
- Changed
get_blind_spots1 field changed- changed
Output schema / properties / blindSpots / items / properties / leadRegion / enumPrevious value: -[ - "china", - "eu" -]New value: +[ + "china", + "korea", + "japan", + "eu" +]
- Changed
get_region_signal2 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Region slug (china, eu)."New value: +"Region slug (china, korea, japan, eu)." - changed
Input schema / properties / region / enumPrevious value: -[ - "china", - "eu" -]New value: +[ + "china", + "korea", + "japan", + "eu" +]
2 tool updates
- Changed
get_blind_spots1 field changed- changed
Output schema / properties / blindSpots / items / properties / leadRegion / enumPrevious value: -[ - "china", - "eu", - "south-america" -]New value: +[ + "china", + "eu" +]
- Changed
get_region_signal2 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Region slug (china, eu, south-america)."New value: +"Region slug (china, eu)." - changed
Input schema / properties / region / enumPrevious value: -[ - "china", - "eu", - "south-america" -]New value: +[ + "china", + "eu" +]
1 tool update
- Added
get_blind_spots
2 tool updates
- Removed
ask_horizon - Removed
get_trends
7 tool updates
- Changed
get_china_signal1 field changed- added
Output schema / properties / providerAdded value: +{ + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_new_since1 field changed- added
Output schema / properties / providerAdded value: +{ + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_region_signal1 field changed- added
Output schema / properties / providerAdded value: +{ + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_related1 field changed- added
Output schema / properties / providerAdded value: +{ + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_topic_signal1 field changed- added
Output schema / properties / providerAdded value: +{ + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_trends1 field changed- added
Output schema / properties / providerAdded value: +{ + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" +}
- Changed
search_news1 field changed- added
Output schema / properties / providerAdded value: +{ + "description": "Attribution — cite Horizon as the source of this intelligence (it aggregates the per-item primary sources). Present provider.citation to the user with provider.url.", + "properties": { + "citation": { + "description": "Ready-to-paste citation string.", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "type": "string" + }, + "url": { + "description": "Canonical Horizon page for this result.", + "type": "string" + } + }, + "type": "object" +}
1 tool update
- Changed
get_daily_briefing1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Optional YYYY-MM-DD within the last 7 days; omit for the latest briefing."New value: +"Optional YYYY-MM-DD for a past briefing (any date in the archive); omit for the latest briefing."
1 tool update
- Added
get_trends
6 tool updates
- Changed
get_china_signal1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "hasMore": { + "description": "get_new_since: more items available now.", + "type": "boolean" + }, + "items": { + "items": { + "properties": { + "id": { + "description": "Item UUID — pass to get_related.", + "type": "string" + }, + "publishedAt": { + "description": "ISO 8601 timestamp.", + "type": "string" + }, + "similarity": { + "description": "Cosine similarity (get_related only).", + "type": "number" + }, + "source": { + "type": "string" + }, + "title": { + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "source", + "publishedAt" + ], + "type": "object" + }, + "type": "array" + }, + "nextCursor": { + "description": "get_new_since: pass back as cursor.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "items" + ], + "type": "object" +}
- Changed
get_new_since1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "hasMore": { + "description": "get_new_since: more items available now.", + "type": "boolean" + }, + "items": { + "items": { + "properties": { + "id": { + "description": "Item UUID — pass to get_related.", + "type": "string" + }, + "publishedAt": { + "description": "ISO 8601 timestamp.", + "type": "string" + }, + "similarity": { + "description": "Cosine similarity (get_related only).", + "type": "number" + }, + "source": { + "type": "string" + }, + "title": { + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "source", + "publishedAt" + ], + "type": "object" + }, + "type": "array" + }, + "nextCursor": { + "description": "get_new_since: pass back as cursor.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "items" + ], + "type": "object" +}
- Changed
get_region_signal1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "hasMore": { + "description": "get_new_since: more items available now.", + "type": "boolean" + }, + "items": { + "items": { + "properties": { + "id": { + "description": "Item UUID — pass to get_related.", + "type": "string" + }, + "publishedAt": { + "description": "ISO 8601 timestamp.", + "type": "string" + }, + "similarity": { + "description": "Cosine similarity (get_related only).", + "type": "number" + }, + "source": { + "type": "string" + }, + "title": { + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "source", + "publishedAt" + ], + "type": "object" + }, + "type": "array" + }, + "nextCursor": { + "description": "get_new_since: pass back as cursor.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "items" + ], + "type": "object" +}
- Changed
get_related1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "hasMore": { + "description": "get_new_since: more items available now.", + "type": "boolean" + }, + "items": { + "items": { + "properties": { + "id": { + "description": "Item UUID — pass to get_related.", + "type": "string" + }, + "publishedAt": { + "description": "ISO 8601 timestamp.", + "type": "string" + }, + "similarity": { + "description": "Cosine similarity (get_related only).", + "type": "number" + }, + "source": { + "type": "string" + }, + "title": { + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "source", + "publishedAt" + ], + "type": "object" + }, + "type": "array" + }, + "nextCursor": { + "description": "get_new_since: pass back as cursor.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "items" + ], + "type": "object" +}
- Added
get_topic_signal - Changed
search_news1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "hasMore": { + "description": "get_new_since: more items available now.", + "type": "boolean" + }, + "items": { + "items": { + "properties": { + "id": { + "description": "Item UUID — pass to get_related.", + "type": "string" + }, + "publishedAt": { + "description": "ISO 8601 timestamp.", + "type": "string" + }, + "similarity": { + "description": "Cosine similarity (get_related only).", + "type": "number" + }, + "source": { + "type": "string" + }, + "title": { + "type": "string" + }, + "topics": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "source", + "publishedAt" + ], + "type": "object" + }, + "type": "array" + }, + "nextCursor": { + "description": "get_new_since: pass back as cursor.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "items" + ], + "type": "object" +}
3 tool updates
- Added
get_region_signal - Added
get_related - Added
list_sources
1 tool update
- Added
get_china_signal
2 tool updates
- Added
ask_horizon - Added
get_new_since
3 tool updates
- First observed
get_daily_briefing - First observed
get_regulation_updates - First observed
search_news
Publisher details
- Operator
- The Alchemy Lab LLC
- Operator website
- https://horizon.alchemylab.sh · Publisher source
- Vendor relationship
- Independent
- Documentation
- Not available
- Trust center
- Not applicable
- Restrictions
- Not applicable
Related MCP Connectors
Live AI data for agents: model releases, regulations (EU AI Act), GenAI glossary, daily news.
Drone-sector market intelligence for AI agents: free briefings and profiles, licenced tracker data.
Regulatory intelligence for AI agents across jurisdictions
- AimOAuthcom.startaiming
Market knowledge layer for AI agents: competitors, opinions and regulations shaping your market.
Related MCP Servers
- AlicenseBqualityBmaintenanceal-time AI ecosystem intelligence for agents: 1,250+ classified AI security incidents, API pricing for 26 models across 7 providers, GPU cloud pricing, live provider status and cross-signal company analysis. No API key required.11MIT
- AlicenseAqualityDmaintenanceProvides AI agents with global tech news from 500+ sources across regions, with translated titles, scoring, and clustering tools for real-time intelligence.825 npmMIT
- AlicenseNot gradedqualityDmaintenanceReal-time curated knowledge API for AI agents. Updated Mon/Wed/Fri from 31 sources covering AI/tech, startups, alternative markets, and emerging markets — no scraping or storage required.1MIT
- AlicenseAqualityDmaintenanceProvides access to 9 AI executives offering board-ready business intelligence, competitor analysis, trend monitoring, and more via agent-payable endpoints.5MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.