Pure Report — Neutral News
Server Details
Neutral, bias-scored news for AI agents: compare left/right media-bias framing, fact-check receipts.
- Status
- Healthy
- Uptime
- 98.8% over 62 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Each tool targets a distinct resource or action, but get_event and compare_coverage both take event slugs and return event content, which could cause occasional misselection. The descriptions do clarify the boundary (single neutral writeup vs. cross-outlet framing), and the feedback pair (submit/check) is cleanly separated.
Nearly all names follow a consistent snake_case verb_noun pattern (check_feedback, compare_coverage, get_article, get_event, search_news, submit_feedback). Two names (about_pure_report, trending_events) break the verb_noun convention, but all names remain readable and consistently snake_case.
Eight tools is well-scoped for a read-only neutral-news service: discovery, fetch, comparison, feedback, and methodology are each covered without redundancy. Every tool earns its place.
The surface covers the core lifecycle: discovery (search_news, trending_events), retrieval (get_article, get_event), comparison (compare_coverage), feedback round-trip (submit/check_feedback), and methodology (about_pure_report). Minor gaps exist, such as browsing by topic/outlet or listing an outlet's profile, but agents can work around these.
Available Tools
8 toolsabout_pure_reportAbout & methodologyARead-onlyInspect
How Pure Report works — the bias scale, neutralization method, the two-gate verification for event accounts, lean labeling, coverage scope (topic list), and the support contact. Call this to cite the source or explain its methodology to a user.
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | No | Optional context for the report. | |
| event_slug | No | Optional context for the report. | |
| report_body | No | Optional. The detail needed to act. | |
| report_kind | No | Optional, defaults to bug. | |
| report_subject | No | Optional. Providing this (with report_body) files feedback and returns a ref under "filed" — use only if submit_feedback is missing from your tools. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| filed | No | |
| support | Yes | |
| website | No | |
| freshness | No | |
| bias_scale | Yes | |
| what_it_is | No | |
| lean_labeling | No | |
| coverage_scope | No | |
| neutralization | No | |
| verification_gate | No | |
| reporting_problems | No | |
| reporting_problems_if_submit_feedback_is_missing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring readOnlyHint=true, the bar is lower, and the description adds useful context about the tool's informational content. However, it does not mention the potential write side effect when report_subject and report_body are provided (which files feedback), nor any other limitations. It provides moderate transparency beyond the annotation but not full behavioral 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 a clear list of content, and ends with a practical usage directive. Every word earns its place with no redundancy or fluff.
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 is an informational resource, and the description covers its full scope and purpose. Since an output schema exists, return format details are not required. The presence of optional parameters is not explained in the description, but they are well-documented in the schema, so the overall context is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any meaning to the parameters, but the schema descriptions are already detailed, especially for report_subject. No additional compensation is needed or provided.
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: it explains how Pure Report works, listing specific content areas (bias scale, neutralization method, verification, labeling, coverage, support contact) and explicitly says when to call it ('to cite the source or explain its methodology'). This distinguishes it from sibling tools like get_article or search_news.
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 provides direct usage guidance ('Call this to cite the source or explain its methodology to a user'), making the intended use clear. It does not explicitly name alternatives or exclusions, but the context is sufficient for an agent to disambiguate from siblings. The schema additionally provides fallback guidance for report_subject, but that is outside the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_feedbackCheck a feedback replyARead-onlyInspect
Look up feedback you filed with submit_feedback, using the ref it returned (e.g. PR-7F3K2Q). Returns the current status (open, answered, closed) and the operator's reply once one exists. Replies are written by a human and are not immediate — poll sparingly, on the order of hours or days, not seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | The ref from submit_feedback, e.g. 'PR-7F3K2Q'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ref | Yes | |
| kind | No | |
| reply | No | |
| status | Yes | |
| message | No | |
| subject | No | |
| replied_at | No | |
| submitted_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description reveals that replies are human-written and delayed, that the reply appears only 'once one exists,' and that status can be open/answered/closed. This adds meaningful behavioral context, though it does not cover failure or not-found 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?
The description is exactly two sentences: the first front-loads the purpose and input source, the second adds return fields and critical timing guidance. Every word contributes, with no filler or unnecessary repetition.
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 simple one-parameter read-only tool with an output schema, the description adequately covers prerequisite (ref from submit_feedback), return values (status and reply), and usage cadence. The only omission is error handling, which is minor for this scope and not required 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?
The input schema already covers the single parameter 'ref' with a description that includes the same example format as the tool description. The description adds no new meaning beyond the schema, so the baseline score 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?
The description states a specific verb and resource: 'Look up feedback you filed with submit_feedback.' It clearly distinguishes itself from the sibling submit_feedback tool by referencing the ref returned by that tool, and from other read tools by its focus on feedback status and replies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool: after filing feedback via submit_feedback, using the returned ref. It also provides clear exclusion guidance with 'poll sparingly, on the order of hours or days, not seconds,' and explains why (replies are human-written and not immediate).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_coverageCompare outlet framingARead-onlyInspect
Show how outlets across the political spectrum framed one event: a per-outlet bias-score spectrum and, where they editorialized, the verbatim framing quotes grouped by left/center/right. The core 'compare the coverage' view — use it to detect slant and consensus.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Event slug from trending_events or a search_news result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| name | No | |
| slug | Yes | |
| framing_spectrum | No | |
| how_each_side_framed_it | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true, so the description's mention of output details (bias-score spectrum, quotes) adds useful context without contradicting. It doesn't add behavioral traits beyond what annotations provide, but the output description is valuable.
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 deliver the purpose and usage efficiently. No fluff, front-loaded with key action and output.
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 description fully covers the tool's complexity: it explains the output (spectrum, framing quotes grouped by bias) and its role as the core comparison view. With an output schema present, return values need no extra explanation.
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 a clear description of the slug parameter. The description adds context that the slug comes from trending_events or search_news, providing extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows how outlets framed an event with a bias-score spectrum and verbatim framing quotes grouped by ideology. It distinguishes itself from siblings like get_article (single article) and trending_events (list of events).
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 tells agents to use it to detect slant and consensus, and mentions the slug comes from trending_events or search_news. However, it could explicitly state when not to use it or list alternatives (e.g., use get_article for a single article).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articleGet articleARead-onlyInspect
Fetch one article by id: neutral title + short summary with key facts (null for older articles), source_url for the full story, a bias_score for the ORIGINAL source (not the summary), source, extracted entities, and the events it belongs to.
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes | Numeric article id (from search_news results). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | No | |
| events | No | |
| content | No | |
| summary | No | |
| entities | No | |
| bias_score | No | |
| source_url | No | |
| source_name | No | |
| published_at | No |
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, and the description adds real behavioral context: summary may be null for older articles, and bias_score applies to the ORIGINAL source rather than the summary. That null-handling and field-scoping detail is genuinely useful and not derivable from structured fields. It stops short of noting any pagination/rate/error 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 front-loaded sentence: the core action comes first, followed by a compact enumeration of returned fields. Dense but every clause carries information; only the parenthetical about the id source borders on redundancy with the 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 one-parameter read tool with an output schema, the definition is nearly complete: it covers the fetch action, the id source, and noteworthy payload quirks (null summaries, bias_score scope). The only gap is the absence of explicit routing guidance relative to sibling tools.
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 is only one parameter and schema description coverage is 100%, so the schema already documents article_id and its provenance ('from search_news results'). The description restates the id-based lookup without adding format or edge-case guidance, making the baseline 3 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 and resource ('Fetch one article by id') and then enumerates the concrete payload (title, summary, source_url, bias_score, source, entities, events), so an agent knows exactly what it gets back. That distinguishes it from search_news (list/search) and get_event (event lookup) 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?
Usage is only implied: 'by id' plus the schema note '(from search_news results)' hints at the search-then-fetch workflow, but the description never says when to call this instead of get_event or search_news. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventNeutral event writeupARead-onlyInspect
Get the full neutral writeup of one news event by slug: 'story', Pure Report's own neutral news story (headline + paragraphs, written from the outlets' reports and checked before publishing); 'account', a sentence-cited breakdown (lede, what-we-know bullets with verbatim source receipts, single-source attributed items) when one passed its gates; and a coverage census (how many outlets by political lean, earliest report). Either writeup may be null; the census is always returned.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Event slug from trending_events or a search_news result, e.g. "tyler-robinson-trial-for-charlie-kirk-murder". |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| name | No | |
| slug | Yes | |
| story | No | |
| status | No | |
| account | No | |
| coverage | Yes | |
| headline | No | |
| first_seen | No | |
| account_note | No | |
| article_count | No | |
| coverage_report | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so safety is covered, and the description does usefully disclose that story/account may be null while the census is always returned. However, an output schema already exists to carry return-value detail, and there is no mention of auth, rate limits, or freshness/latency 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?
One long semicolon-delimited sentence, but the core action is front-loaded before the component breakdown. Dense jargon ('gates', 'receipts') adds weight without much payback, yet nothing is wasted enough to undermine it.
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 description needn't explain structure, and it sensibly summarizes the three payload parts and their nullability. Coverage is nearly complete for a single-parameter read tool; only the sibling-selection guidance 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?
Only one parameter and schema description coverage is 100%, with the schema already supplying format guidance and a concrete example slug. The description adds nothing beyond 'by slug', so the 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 — 'Get the full neutral writeup of one news event by slug' — and enumerates the three returned components (story, account, census). It implies differentiation from get_article by stressing the writeup is 'Pure Report's own', but never names a sibling, so an agent still has to infer which of get_event/get_article/compare_coverage applies.
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?
Usage is only implied: pass an event slug, receive a writeup. There is no explicit when-to-use versus get_article or compare_coverage, and no stated prerequisites or exclusions. The null-handling note ('either writeup may be null') is the closest thing to operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_newsSearch neutral newsARead-onlyInspect
Search Pure Report's neutral, bias-scored news. Returns articles with neutral summaries in our own words; bias_score (0-100) rates the ORIGINAL source reporting (0 = wire-neutral, 100 = advocacy), NOT the returned summary, which is neutral by design. Each result also lists the event(s) it belongs to — pass an event slug to get_event for the neutral writeup or compare_coverage for cross-outlet framing. Ranked by relevance and recency.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to RETURN, 1-40 (default 15). Does not affect total_matches, which always reports how many articles matched. | |
| query | Yes | Keywords or phrase, e.g. "Iran sanctions" or "2026 election". | |
| topic | No | Optional topic-slug filter. An unrecognized value searches all topics and returns a warning. | |
| offset | No | Skip this many matches — page through results beyond the 40-row limit. The response echoes offset/returned/next_offset; next_offset is null on the last page. | |
| published_after | No | Only articles published on/after this date. 'YYYY-MM-DD' or full ISO. Use with published_before to bound a period, e.g. coverage during June. | |
| published_before | No | Only articles published on/before this date. 'YYYY-MM-DD' or full ISO. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| offset | No | |
| results | Yes | |
| warning | No | |
| returned | No | |
| next_offset | No | |
| applied_topic | No | |
| total_matches | Yes | TOTAL articles matching the query, independent of `limit` — not the number returned. len(results) < total_matches means more exist. |
| result_composition | No | Factual description of what the returned set is ABOUT. Search is lexical, so every query term appears in every result; this reports whether a term is the SUBJECT (title/entities/lede) or only a body mention, plus the entity distribution. Measurements only — no verdict. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint=true, the description discloses behavior an agent could easily get wrong: bias_score rates the ORIGINAL source reporting (0=wire-neutral, 100=advocacy), NOT the neutral returned summary. It also discloses the ranking function (relevance and recency), which annotations do not cover.
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?
Four dense, front-loaded sentences with no filler; the core purpose leads and the disambiguation follows. The bias_score sentence is long but earns its place because it prevents a costly misinterpretation. Slightly heavy for a search tool, but no wasted clauses.
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 structure need not be re-explained, yet the description supplies the interpretive context the schema cannot (what bias_score means, that results carry event links). For a 6-parameter, read-only search tool, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (limit, query, topic, offset, dates) is already fully documented, and this is the baseline case per the rubric. The description adds no parameter-level detail (e.g. query syntax, topic slug format) beyond the schema; its narrative content is about return values, not inputs.
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?
Opens with a specific verb+resource ('Search Pure Report's neutral, bias-scored news') and immediately distinguishes what is returned ('articles with neutral summaries in our own words'). It also names the downstream siblings (get_event, compare_coverage) that consume an event slug, so an agent can place it in the workflow without opening other schemas.
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 clear context for when the tool is appropriate ('ranked by relevance and recency', event-linked results) and explicitly routes the agent onward: 'pass an event slug to get_event ... or compare_coverage'. It does not state when NOT to use it (e.g. browsing trending_events for undirected discovery), so it falls short of full alternative/exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_feedbackSend feedback to the operatorAInspect
Report a problem or request to Pure Report's operator and get a tracking ref back. Use this when the data looks wrong — a bias score or outlet lean that doesn't match the source, an event cluster mixing unrelated stories, a missing neutral writeup, a broken article — or to ask a methodology question or request a capability. Include the article_id or event_slug you were looking at; that context is what makes a report actionable. A human reads these: replies take time and are not guaranteed. Call check_feedback with the returned ref to read the reply.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The detail needed to act: what you expected, what you got, and how to reproduce it. Max 12000 chars. | |
| kind | No | DEPRECATED alias for category; still accepted. | |
| subject | Yes | One line, max 200 chars. | |
| category | No | bug = broken or erroring; dx = developer-experience friction; data_error = wrong/miscategorised data; data_gap = missing coverage or field; feature = a capability request; question = methodology or usage; other. Defaults to bug. | |
| article_id | No | Optional article the report concerns. | |
| event_slug | No | Optional event slug the report concerns. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ref | Yes | |
| status | Yes | |
| message | No | |
| how_to_check | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only negative hints (not read-only, not idempotent, not destructive), so the description carries the burden. It adds crucial behavioral context: a human reads the feedback, replies take time and are not guaranteed, and a tracking ref is returned. This goes well beyond the schema and manages expectations appropriately.
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 a single focused paragraph that front-loads the main purpose and outcome. Every sentence earns its place: use cases, required context, human caveat, and follow-up action. There is no fluff or repetition of schema 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 complexity and the presence of an output schema, the description covers everything needed: what it does, when to use it, what context to provide, and what to expect. It even describes the returned tracking ref and how to use it, making the feedback loop fully transparent.
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 detailed descriptions, so the baseline is 3. The description adds value by explicitly instructing to include article_id or event_slug and explaining why ('that context is what makes a report actionable'). It does not repeat schema details for each field, but it highlights the most behaviorally important 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 opens with a clear verb+resource: 'Report a problem or request to Pure Report's operator and get a tracking ref back.' It distinguishes itself from sibling tools by naming check_feedback as the follow-up for reading replies, and by enumerating concrete feedback types (wrong bias, miscategorised events, missing writeup). This leaves no ambiguity about what the tool does.
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 explicit 'Use this when...' scenarios, including data errors, methodology questions, and capability requests. It also tells the user what to include (article_id/event_slug) and points to check_feedback as the alternative for reading the reply, effectively providing both when-to-use and next-step guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_eventsTrending news eventsARead-onlyInspect
List the news events with the most current coverage activity. Each event clusters many outlets' articles about one story and includes headline (the published story's headline, else the event name), has_story (get_event returns Pure Report's neutral news story) and has_account (get_event also returns a sentence-cited account with verbatim receipts). Returns slugs to pass to get_event / compare_coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max events, 1-25 (default 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=true in annotations, the description carries extra weight and does so: it explains that events aggregate many outlets' articles, decodes the headline fallback logic, and states what the has_story and has_account flags promise about get_event's response. It does not discuss pagination or result-volume behavior, but the chaining semantics are genuinely useful context beyond 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?
Three sentences, front-loaded with the core purpose, then field semantics, then the chaining target. Every clause conveys information an agent needs; nothing is padding or restated from the title.
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 structure need not be re-explained, yet the description still adds the flag semantics an agent needs to decide whether to follow up with get_event. For a single-optional-parameter, read-only list tool, nothing needed for correct invocation 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 coverage is 100% and the single limit parameter is fully described in the schema (range 1-25, default 10). The description adds no parameter-level detail, so the baseline 3 applies rather than a bonus.
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 ('List the news events with the most current coverage activity') and immediately qualifies the ranking criterion, which is what separates it from a plain search. The added definition of an event as a cluster of many outlets' articles about one story removes any ambiguity about what is being listed.
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 clearly frames the usage context (surfacing stories with the most current coverage activity) and gives explicit workflow guidance by naming the downstream tools get_event and compare_coverage for the returned slugs. It stops short of an explicit when-not or a direct comparison against the sibling search_news, so it is clear but not fully routing.
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_event2 fields changed- added
Output schema / properties / headlineAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / storyAdded value: +{ + "type": [ + "object", + "null" + ] +}
- Changed
search_news1 field changed- added
Output schema / properties / results / items / properties / events / items / properties / headlineAdded value: +{ + "type": [ + "string", + "null" + ] +}
- Changed
trending_events2 fields changed- added
Output schema / properties / events / items / properties / has_storyAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / events / items / properties / headlineAdded value: +{ + "type": [ + "string", + "null" + ] +}
1 tool update
- Changed
submit_feedback1 field changed- changed
Input schema / properties / body / descriptionPrevious value: -"The detail needed to act: what you expected, what you got, and how to reproduce it. Max 4000 chars."New value: +"The detail needed to act: what you expected, what you got, and how to reproduce it. Max 12000 chars."
1 tool update
- Changed
get_event1 field changed- added
Output schema / properties / coverage_reportAdded value: +{ + "type": [ + "object", + "null" + ] +}
1 tool update
- Changed
search_news6 fields changed- added
Input schema / properties / offsetAdded value: +{ + "description": "Skip this many matches — page through results beyond the 40-row limit. The response echoes offset/returned/next_offset; next_offset is null on the last page.", + "type": "integer" +} - added
Input schema / properties / published_afterAdded value: +{ + "description": "Only articles published on/after this date. 'YYYY-MM-DD' or full ISO. Use with published_before to bound a period, e.g. coverage during June.", + "type": "string" +} - added
Input schema / properties / published_beforeAdded value: +{ + "description": "Only articles published on/before this date. 'YYYY-MM-DD' or full ISO.", + "type": "string" +} - added
Output schema / properties / next_offsetAdded value: +{ + "type": [ + "integer", + "null" + ] +} - added
Output schema / properties / offsetAdded value: +{ + "type": "integer" +} - added
Output schema / properties / returnedAdded value: +{ + "type": "integer" +}
2 tool updates
- Changed
about_pure_report1 field changed- changed
Input schema / properties / report_kind / enumPrevious value: -[ - "data_error", - "bug", - "feature", - "question" -]New value: +[ + "bug", + "dx", + "data_error", + "data_gap", + "feature", + "question", + "other" +]
- Changed
submit_feedback4 fields changed- added
Input schema / properties / categoryAdded value: +{ + "description": "bug = broken or erroring; dx = developer-experience friction; data_error = wrong/miscategorised data; data_gap = missing coverage or field; feature = a capability request; question = methodology or usage; other. Defaults to bug.", + "enum": [ + "bug", + "dx", + "data_error", + "data_gap", + "feature", + "question", + "other" + ], + "type": "string" +} - changed
Input schema / properties / kind / descriptionPrevious value: -"data_error = wrong/miscategorised data; bug = something broken or erroring; feature = a capability request; question = about methodology or usage."New value: +"DEPRECATED alias for category; still accepted." - changed
Input schema / properties / kind / enumPrevious value: -[ - "data_error", - "bug", - "feature", - "question" -]New value: +[ + "bug", + "dx", + "data_error", + "data_gap", + "feature", + "question", + "other" +] - changed
Input schema / requiredPrevious value: -[ - "kind", - "subject", - "body" -]New value: +[ + "subject", + "body" +]
2 tool updates
- Changed
about_pure_report8 fields changed- added
Input schema / properties / article_idAdded value: +{ + "description": "Optional context for the report.", + "type": "integer" +} - added
Input schema / properties / event_slugAdded value: +{ + "description": "Optional context for the report.", + "type": "string" +} - added
Input schema / properties / report_bodyAdded value: +{ + "description": "Optional. The detail needed to act.", + "type": "string" +} - added
Input schema / properties / report_kindAdded value: +{ + "description": "Optional, defaults to bug.", + "enum": [ + "data_error", + "bug", + "feature", + "question" + ], + "type": "string" +} - added
Input schema / properties / report_subjectAdded value: +{ + "description": "Optional. Providing this (with report_body) files feedback and returns a ref under \"filed\" — use only if submit_feedback is missing from your tools.", + "type": "string" +} - added
Output schema / properties / filedAdded value: +{ + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / reporting_problemsAdded value: +{ + "type": "string" +} - added
Output schema / properties / reporting_problems_if_submit_feedback_is_missingAdded value: +{ + "type": "string" +}
- Changed
search_news1 field changed- added
Output schema / properties / result_compositionAdded value: +{ + "description": "Factual description of what the returned set is ABOUT. Search is lexical, so every query term appears in every result; this reports whether a term is the SUBJECT (title/entities/lede) or only a body mention, plus the entity distribution. Measurements only — no verdict.", + "type": "object" +}
2 tool updates
- Changed
get_article2 fields changed- added
Output schema / properties / eventsAdded value: +{ + "type": "array" +} - removed
Output schema / properties / narrativesRemoved value: -{ - "type": "array" -}
- Changed
search_news2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Max results, 1-40 (default 15)."New value: +"Max results to RETURN, 1-40 (default 15). Does not affect total_matches, which always reports how many articles matched." - added
Output schema / properties / total_matches / descriptionAdded value: +"TOTAL articles matching the query, independent of `limit` — not the number returned. len(results) < total_matches means more exist."
2 tool updates
- Added
check_feedback - Added
submit_feedback
6 tool updates
- Changed
about_pure_report1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "bias_scale": { + "type": "string" + }, + "coverage_scope": { + "type": "object" + }, + "freshness": { + "type": "string" + }, + "lean_labeling": { + "type": "string" + }, + "name": { + "type": "string" + }, + "neutralization": { + "type": "string" + }, + "support": { + "type": "string" + }, + "verification_gate": { + "type": "string" + }, + "website": { + "type": "string" + }, + "what_it_is": { + "type": "string" + } + }, + "required": [ + "bias_scale", + "support" + ], + "type": "object" +}
- Changed
compare_coverage1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "framing_spectrum": { + "type": [ + "object", + "null" + ] + }, + "how_each_side_framed_it": { + "type": [ + "object", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "slug", + "url" + ], + "type": "object" +}
- Changed
get_article1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "bias_score": { + "type": [ + "number", + "null" + ] + }, + "content": { + "type": [ + "string", + "null" + ] + }, + "entities": { + "type": [ + "object", + "array", + "null" + ] + }, + "id": { + "type": "integer" + }, + "narratives": { + "type": "array" + }, + "published_at": { + "type": [ + "string", + "null" + ] + }, + "source_name": { + "type": [ + "string", + "null" + ] + }, + "source_url": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "url" + ], + "type": "object" +}
- Changed
get_event1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "account": { + "type": [ + "object", + "null" + ] + }, + "account_note": { + "type": [ + "string", + "null" + ] + }, + "article_count": { + "type": [ + "integer", + "null" + ] + }, + "coverage": { + "type": "object" + }, + "first_seen": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "slug": { + "type": "string" + }, + "status": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": "string" + } + }, + "required": [ + "slug", + "coverage", + "url" + ], + "type": "object" +}
- Changed
search_news1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "applied_topic": { + "type": [ + "string", + "null" + ] + }, + "query": { + "type": "string" + }, + "results": { + "items": { + "properties": { + "bias_score": { + "type": [ + "number", + "null" + ] + }, + "events": { + "items": { + "properties": { + "name": { + "type": [ + "string", + "null" + ] + }, + "slug": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "type": "integer" + }, + "published_at": { + "type": [ + "string", + "null" + ] + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total_matches": { + "type": "integer" + }, + "warning": { + "type": "string" + } + }, + "required": [ + "query", + "total_matches", + "results" + ], + "type": "object" +}
- Changed
trending_events1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "events": { + "items": { + "properties": { + "article_count": { + "type": [ + "integer", + "null" + ] + }, + "first_seen": { + "type": [ + "string", + "null" + ] + }, + "has_account": { + "type": "boolean" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "events" + ], + "type": "object" +}
6 tool updates
- First observed
about_pure_report - First observed
compare_coverage - First observed
get_article - First observed
get_event - First observed
search_news - First observed
trending_events
Related MCP Connectors
News from 17 outlets with left/center/right bias tags and one-sided blindspot detection
News written and read by AI agents. Every article carries a verification status.
Financial news for AI agents: search, trending, insider, earnings reads, macro, scored 1-10.
News search for AI agents: recent news on any topic from outlets worldwide, by country and language.
Related MCP Servers
- AlicenseAqualityBmaintenanceRead-only, source-linked news intelligence for AI agents: search The Neural Ledger's stories, retrieve story details with citations and revision history, and resolve related entities and assets. It is an evidence layer, not a trading or execution service.82MIT
- AlicenseNot gradedqualityCmaintenanceReal-time news events, clustered by AI from hundreds of sources, classified by topic and geography, ranked by importance.34MIT
- AlicenseAqualityDmaintenanceProvides AI agents with global tech news from 500+ sources across regions, with translated titles, scoring, and clustering tools for real-time intelligence.830 npmMIT
- AlicenseAqualityAmaintenanceAgent-readable feed of AI and agent tech news (framework releases, security advisories, compliance deadlines, classified hourly) and upcoming live events. Read anonymously; post items with a free API key.47MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.