Horizon: AI News & AI Regulation Tracker
Server Details
Free, no-key AI news + AI regulation tracker MCP: EU AI Act, US federal & state, UK. Daily briefing.
- Status
- Healthy
- Uptime
- 99.9% over 79 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 11 tools
Each tool targets a distinct slice of the corpus (region, topic, blind spots, provenance, regulation, incremental poll, curated briefing, semantic similarity, search), and descriptions explicitly cross-reference when to prefer one over another. The one real overlap is get_china_signal, which is a pure preset of get_region_signal(region="china") — deliberately redundant and well signposted, but still a candidate for misselection.
Every tool follows a clean verb_noun snake_case pattern: get_* for retrieval/slicing tools, plus list_sources and search_news which also read as verb_noun. No mixed camelCase, no vague standalone verbs, and the names telegraph the resource (region, topic, entity, regulation, related).
11 tools sits squarely in the well-scoped range for a news/regulation tracker with several corpus slices. Each tool maps to a distinct reader intent (poll, brief, slice, gap, provenance, drill-down), and none feels like filler apart from the optional get_china_signal convenience alias.
Coverage is broad for the stated domain: discovery (search_news, get_new_since, get_daily_briefing), slicing (region, topic), gap analysis (blind spots), regulation lifecycle stages, and provenance. The main gap is dereferencing — tools return item ids and links but there is no get_item to fetch a single item by id, and entity-level tools return only counts rather than item lists, forcing agents to work around via search or get_related.
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: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
| blindSpots | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds genuinely valuable epistemic context the annotations cannot: "invisible" means zero pickup in Horizon-tracked Western feeds, not a claim about all media. That is a meaningful caveat about how results should be interpreted, though it says nothing about how counts are ranked or how far back the corpus reliably goes.
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?
Three sentences, each doing distinct work: definition first, decision-framing question second, methodological caveat last. The core definition is front-loaded and nothing is repeated.
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, return shape needn't be described, and annotations cover safety. Between them, the description, schema and output schema give the agent enough to decide when to call it, what the numbers mean, and the limits of the claim.
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% and both parameters (days, limit) carry defaults and ranges in the schema itself, so the description needs to add little. It adds nothing about parameter semantics — no hint about how widening days affects blind-spot detection or why limit caps at 50. Baseline 3 applies.
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 defines the resource with unusual precision: companies, models and people covered by Chinese/East-Asian, European and Latin-American press but absent from Western/global feeds, ranked with per-region item counts. That is far more than a restatement of the name. It stops short of a 5 because it never contrasts itself with the overlapping siblings get_region_signal / get_china_signal, leaving the agent to infer that this is the cross-region gap view rather than a single-region view.
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 framing question "what is Western tech media missing right now?" gives a concrete trigger for selecting this tool, which is clear usage context. It offers no exclusions or named alternatives, so an agent weighing this against get_region_signal or search_news gets no explicit routing rule.
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: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
| 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, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds useful behavioral context beyond annotations: it is a shortcut equivalent to get_region_signal with region "china", the output is ranked by momentum, and it surfaces sources Western feeds often miss. It does not discuss pagination or rate limits, but those are minor here.
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 tight sentences with no filler. The shortcut equivalence and scope are front-loaded before the alternative-tool guidance.
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, full parameter coverage, and safety annotations already present, the description provides everything an agent needs: what the tool retrieves, how it relates to the sibling, and when to use the alternative.
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 schema descriptions cover 100% of parameters, including the limit default and cap, so the description need not repeat them. It adds no additional parameter semantics beyond what the schema already provides, which is the expected baseline when coverage is complete.
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 (shortcut for get_region_signal), resource (China & East-Asia AI signal), and scope (region "china"), and names the sibling it is distinct from. An agent can distinguish it from get_region_signal without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to prefer get_region_signal if querying more than one region, giving a clear condition that selects the alternative. No inference needed for tool selection.
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 AI briefing, or any past day's: top stories with their sources and corroboration labels, emerging signals, new entrants, and regulation updates. Drawn from Hacker News, Reddit, Bluesky, arXiv, Hugging Face, lab blogs, tech press in the US, Europe and East Asia, and legislative sources. A curated once-daily synthesis — for raw item-level updates since your last check, use get_new_since instead. Pass a date (YYYY-MM-DD) for a past day; set top_stories_only for a shorter result.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional YYYY-MM-DD for a past briefing (any date in the archive); omit for the latest briefing. | |
| top_stories_only | No | Optional. True returns only the top stories with their sources, leaving out signals, new entrants, movers, regional highlights and regulation. Omit for the whole briefing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| briefing | Yes | |
| provider | Yes | Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds real context beyond that: the source corpus (HN, Reddit, Bluesky, arXiv, HF, lab blogs, tech press across three regions, legislative sources) and the once-daily curated cadence. It stops short of stating archive bounds, freshness timing, or result size, which is why it is a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first clause, and the routing hint comes before the parameter notes. The source enumeration is long but earns its place by establishing coverage trust; four sentences are close to the minimum for this much content, though the source list could be tightened slightly.
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, the return shape need not be described, and the description still characterizes what categories of content come back. Parameters are covered, the sibling alternative is named, and the curated-daily model versus incremental updates is made clear — nothing an agent needs in order to call this 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 both parameters are already fully documented in the schema, making 3 the baseline. The description restates the date format and adds only a marginal nuance ('a shorter result' for top_stories_only) rather than new semantics such as behavior for out-of-range dates or what 'latest' means.
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+resource ('Today's AI briefing, or any past day's') and enumerates the concrete contents: top stories with sources and corroboration labels, emerging signals, new entrants, regulation updates. It also explicitly contrasts itself with the sibling get_new_since, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit alternative and the condition that selects it: 'for raw item-level updates since your last check, use get_new_since instead.' It also states the selection conditions for both parameters (pass a date for a past day, set top_stories_only for a shorter result).
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?
Annotations already declare readOnly, non-destructive, and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: a fixed 30-day window, and two explicit disclaimers (not a score, not a truth judgement) that prevent an agent from over-reading the output.
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 first sentence front-loads the core comparison, and the disclaimers land before the rhetorical question. The opening clause ('how much of the claim activity Horizon holds provenance data for is self-reported...') is syntactically tangled and could be shorter, but no sentence is redundant.
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?
An output schema exists, so return values need no prose explanation, and annotations plus the 30-day scope cover most behavioral questions. What remains unaddressed is edge-case handling — what happens for an unknown or ambiguous entity name — which matters for a single-required-string lookup.
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% and the schema already supplies a concrete example, so the baseline is 3. The description adds meaning on top by stating the entity may be a company, a model, or a person, which broadens and disambiguates the parameter's accepted domain beyond the single example.
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 names a specific verb-and-resource combination (provenance breakdown for a single entity) and defines the two quantities being compared: self-reported versus independently evaluated claim activity. This is clearly distinct from the sibling signal/search tools, which report topical or regional activity rather than an attribution split.
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 supplies a concrete use case ('is the buzz around X coming from X?') and explicitly bounds the output as descriptive counts over the last 30 days, not a score or truth judgement. It never names an alternative tool or states when not to use it, so it falls short of a full when/when-not specification.
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. Returns titles, links and topics.
| 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: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
| 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 cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description adds value with the polling model: incremental, oldest→newest, cursor chained from nextCursor. It doesn't disclose rate limits or what happens to items that fall out of the retention window, which would be the remaining high-value additions.
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?
Front-loads the essential framing ('Incremental poll') and then packs scoping, ordering, pagination, alternative routing, first-call behavior, and return shape into a few dense clauses. Nothing is redundant with the schema in a wasteful way.
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 two-parameter read tool with full schema coverage, an output schema, and safety annotations, the description covers the only real ambiguity: how to start and continue the cursor loop. Return fields are mentioned briefly and the output schema handles the rest.
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% and both parameters are documented there, including the default/cap on limit and the cursor's origin. The description reinforces the cursor lifecycle and the default fetch behavior but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.
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 ('Incremental poll: raw item-level AI news') plus the ordering ('oldest→newest') and the pagination artifact ('nextCursor'). It explicitly contrasts itself with get_daily_briefing, so an agent can distinguish it from siblings without opening a schema.
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?
Gives an explicit selection rule ('use this for "what's new since I last checked"') and names the alternative for the other case ('for the curated once-daily synthesis use get_daily_briefing'). It also tells the agent what to do on first use ('Omit cursor for the latest items plus a cursor to start polling from').
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: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
| 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, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: ranking is by momentum, items are relevance-scored, and local-language press is translated into English — useful signals about content provenance and ordering. It does not mention freshness windows or result caps, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: what it is, what makes it special, and what it returns. The differentiator from get_china_signal is front-loaded immediately after the definition, with zero 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?
For a two-parameter read tool with an output schema, annotations, and full schema coverage, everything an agent needs to call it correctly is present. The description even previews return fields (titles, sources, links), which is bonus rather than a requirement given the output schema exists.
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%, with the region enum and a documented default/cap for limit ('default 15, cap 40'), so the schema already carries parameter meaning. The description restates the region set but adds nothing about how limit interacts with ranking or truncation. Baseline 3 applies.
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 ('The current AI signal for a region'), enumerates the valid regions, and characterizes the payload as relevance-scored items on models, labs, and analysis ranked by momentum. It also explicitly distinguishes itself from sibling get_china_signal, so an agent can separate the two without opening a schema.
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 routes the agent: 'The canonical regional tool; get_china_signal is a preset of this with region china' tells the caller to prefer this tool and how the sibling relates. It stops short of saying when to choose get_topic_signal or get_daily_briefing instead, so it is clear context without full when-not guidance.
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: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds non-obvious context: the breadth of jurisdictions covered, the stage taxonomy attached to each item, and the heavy skew toward state bills that drives result volume. It doesn't state freshness/update cadence, which matters for a tool named 'updates'.
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, front-loaded with the resource and coverage, followed by the single most useful operational tip. Every clause earns its place; nothing repeats the annotations or schema.
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?
An output schema exists so return values need not be described, and annotations carry the safety profile. What remains — coverage scope, stage values, filter strategy, volume skew — is all present, leaving an agent able to call it correctly on the first attempt.
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, but the description adds real semantic value for jurisdiction by explaining that us_state dominates results and filtering narrows them. The limit parameter (default 50, cap 100) is left entirely to 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?
States a specific verb-and-resource ('Current AI legislation headlines') with explicit coverage scope (US Congress/federal agencies, US state legislatures, UK Parliament, EU) and the data shape (legislative stage values). This is enough to distinguish it from generic siblings like search_news or get_topic_signal without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives actionable usage context: 'State bills are the largest share by far; filter with jurisdiction to narrow' tells the agent why and when to pass the jurisdiction param. It stops short of naming alternatives or stating when-not-to-use this tool versus search_news or get_region_signal.
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: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
| 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 readOnly, non-destructive, closed-world, so safety is covered. The description adds non-obvious behavior beyond them: items are recent, relevance-scored, and ranked by momentum — telling the agent the output ordering is momentum-based, not chronological.
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 tight sentences with the purpose front-loaded and the sibling comparison second. 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?
An output schema exists, so return-value detail is not required, and the description conveys the semantic shape (ranked, relevance-scored items). Minor gap: nothing about how momentum is computed or whether results are paginated, but that's beyond the stated contract.
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%: the enum slugs and the limit default/cap (15/40) are fully documented in the schema. The description adds no parameter-level detail (e.g., what 'momentum' means for ranking or how limit interacts with ranking), so baseline 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?
States a specific verb ('get') and resource ('current AI signal for a topic') plus the content type (recent, relevance-scored items tagged with that topic). The contrast with get_region_signal makes the distinction from the nearest sibling 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?
'Like get_region_signal but sliced by subject instead of geography' routes the agent to the right sibling by contrast, which is strong usage guidance. It stops short of an explicit when-not condition or prerequisite, so it isn't a full 5.
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: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds behavioral value by clarifying that the response is reference metadata (source= values, regional lenses, filtering guidance) rather than actual news records, and it cross-references 'dedicated tools' for regional lenses — useful routing information beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads what is returned and ends with the call condition. Every clause earns its place and nothing is repeated from the annotations or schema.
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 zero-parameter, read-only introspection tool with an output schema and full annotations, the description tells the agent what it will learn and when to use it. Only minor gaps remain, such as whether the content is static or cheap to call repeatedly.
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?
With zero parameters, the baseline is 4. The description goes further by documenting the vocabulary that other tools' parameters accept (source= and region= filter values), which is meaningful semantic content even though there are no parameters of its own.
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 names a specific verb ('Describe') and a concrete resource (Horizon's ingestion sources, source= filter values, regional lenses, and filtering guidance). It implies a distinction from the query siblings via 'before querying', but never names an alternative, so differentiation is inferred rather than 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?
It gives a clear call condition: 'Call this to understand the corpus before querying.' This is more than implied usage, though it stops short of stating when not to call it (e.g., if the schema of source values is already known).
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 title search over the last 14 days of AI news: returns the top 3 matches by momentum, with links and item ids (pass one to get_related).
| 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: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result. |
| 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 cover read-only, non-destructive, closed-world behavior and an output schema exists, yet the description still adds non-obvious traits: a hard cap of 3 results, ranking by momentum, a 14-day window, and that ids are consumable by get_related. Missing only rate-limit or empty-result behavior.
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 sentence that front-loads the core capability and packs scope, result cap, ranking, and follow-up in the tail. No 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?
For a one-parameter read tool with annotations and an output schema, the description covers purpose, scope, result size, and the downstream id pattern; nothing an agent needs to invoke it correctly is absent.
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?
With a single fully documented parameter, the schema baseline is high, but the description adds real meaning beyond 'Search terms' by specifying that matching is against titles only and is time-bounded. No format/syntax guidance for multi-term queries.
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 concrete verb+resource ('title search over AI news') plus scope (last 14 days) and behavior (top 3 by momentum, links and item ids). An agent can distinguish it from siblings like get_topic_signal or get_new_since without opening any schema.
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?
Frames it as a 'quick title search' with a bounded window, which signals it is the lightweight lookup rather than a broad retrieval, and it explicitly hands off ids to get_related. It does not say when to prefer get_topic_signal, get_china_signal, or get_new_since instead, so routing is only partly covered.
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.
10 tool updates
- Changed
get_blind_spots1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
get_china_signal1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
get_daily_briefing2 fields changed- added
Input schema / properties / top_stories_onlyAdded value: +{ + "description": "Optional. True returns only the top stories with their sources, leaving out signals, new entrants, movers, regional highlights and regulation. Omit for the whole briefing.", + "type": "boolean" +} - changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
get_new_since1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
get_region_signal1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
get_regulation_updates1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
get_related1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
get_topic_signal1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
list_sources1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
- Changed
search_news1 field changed- changed
Output schema / properties / provider / descriptionPrevious value: -"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."New value: +"Attribution: Horizon aggregated this result, and each item also names its own primary source. citation credits both; url is the Horizon page for this result."
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
AI laws from 110+ countries, enforcement actions and a 3,900-term glossary. Free, no API key.
Live AI data for agents: model releases, regulations (EU AI Act), GenAI glossary, daily news.
Daily AI-ecosystem data: GitHub AI/MCP repos, MCP registry, HF trending, LLM pricing, with history.
Human-reviewed digests on AI, regulation and cybersecurity, every fact linked to its source.
Related MCP Servers
- AlicenseAqualityDmaintenanceAggregates and curates AI/tech news from 12 sources every 6 hours, providing pre-summarized and Opus-curated top picks for vibe coders and AI builders via MCP tools.870MIT
- AlicenseAqualityCmaintenanceReal-time AI industry intelligence MCP server. 6 free tools (news, status, pricing, today summary, agent activity, MCP registry snapshot) plus 13 paid tools (routing, news search, history series, cost projection, deep-dive, comparison, webhook watches). Pay-per-call in USDC on Base, no accounts.256 npm2MIT

Context Pillofficial
FlicenseNot gradedqualityCmaintenanceA daily feed of AI releases, tools and techniques, each with a verification status, source trust score and evidence links. Read-only MCP server, no sign-in or keys.-- AlicenseAqualityDmaintenanceEU AI Act · APRA · NIST AI RMF · ISO 42001 · AU AI Safety — grounded compliance citations for any MCP client.654 npm1Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.