Skip to main content
Glama

NewsMCP

check_coverage

Read-only

Judge how widely and how independently a claim has been reported.

Answers "is this real?" rather than returning a list. Reports the number of INDEPENDENT newsrooms — outlets that reported it themselves — separately from the number of domains that carried it, which includes syndication. A story on 200 domains from 3 newsrooms is one story reprinted, not 200 confirmations.

Because upstream clustering splits a story across languages, this totals the likely variants of the same story and presents that total as an upper bound, listing what was combined so the caller can check it is really one story.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
claimYesThe claim or headline to check, phrased in the words a headline would use. Matched literally against headlines and summaries, not by meaning, so "atomic arsenal" will not find stories about nuclear weapons.
api_keyNoOptional NewsMCP API key for this call; forwarded upstream as x-api-key. Only one request may be in flight at a time, so never call in parallel.
days_backNoHow far back to look, in days. Defaults to 14. Clamped down to whatever the caller's plan allows, with a note saying so.
response_formatNomarkdown (default), text, or json. Pass the format the user asked for rather than reformatting afterwards.markdown

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesYesQuery-normalization and plan-clamping notes to relay verbatim.
matchedYesWhether any story matched the claim text in the window.
variantsYesAnchor story first, then its likely variants.
anchor_newsroomsYesIndependent newsrooms for the best-corroborated matching story.
total_matching_storiesYes
combined_newsrooms_upper_boundYesSum across clustered variants of the same story — an upper bound, not a confirmed count.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "description": "Corroboration verdict for a claim.",
      +  "properties": {
      +    "anchor_newsrooms": {
      +      "description": "Independent newsrooms for the best-corroborated matching story.",
      +      "type": "integer"
      +    },
      +    "combined_newsrooms_upper_bound": {
      +      "description": "Sum across clustered variants of the same story — an upper bound, not a confirmed count.",
      +      "type": "integer"
      +    },
      +    "matched": {
      +      "description": "Whether any story matched the claim text in the window.",
      +      "type": "boolean"
      +    },
      +    "notes": {
      +      "description": "Query-normalization and plan-clamping notes to relay verbatim.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "total_matching_stories": {
      +      "type": "integer"
      +    },
      +    "variants": {
      +      "description": "Anchor story first, then its likely variants.",
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "abstract": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "content_type": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "entities": {
      +            "description": "Key actors named in the story.",
      +            "items": {
      +              "additionalProperties": true,
      +              "properties": {
      +                "name": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "event_id": {
      +            "description": "Stable id, e.g. evt_...",
      +            "type": "string"
      +          },
      +          "event_type": {
      +            "description": "family.leaf taxonomy value, e.g. deals.merger_acquisition.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "first_seen": {
      +            "description": "ISO 8601 UTC.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "headline": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "language_count": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "last_seen": {
      +            "description": "ISO 8601 UTC.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "newsrooms": {
      +            "description": "Independent newsrooms — the corroboration signal.",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "one_liner": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "reports": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "sector": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "size": {
      +            "description": "Article count.",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "source_count": {
      +            "description": "Publisher domains, mirrors included.",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "sources": {
      +            "description": "Source article URLs — a sample or the full list per verbosity.",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "matched",
      +    "total_matching_stories",
      +    "anchor_newsrooms",
      +    "combined_newsrooms_upper_bound",
      +    "variants",
      +    "notes"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations: it explains the difference between independent newsrooms and domains, and that it totals story variants as an upper bound due to language clustering. Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the description enhances transparency without contradicting them.

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

Conciseness5/5

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

Every sentence earns its place. The description opens with a clear purpose, then explains the independence concept with a concrete example, and finally addresses the clustering behavior with a note on verification. It is well-structured, front-loaded, and free of fluff.

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

Completeness5/5

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

The description covers the tool's core logic thoroughly, including the independent vs syndicated distinction and the upper-bound aggregation. Given that an output schema exists (not shown), the description does not need to explain return values. It is complete for an agent to understand how and when to use it.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add much about parameters; it focuses on output semantics. The claim parameter's literal matching is already described in the schema. The description's note about clustering does not directly clarify parameter usage, so it remains at baseline.

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

Purpose5/5

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

The description clearly states the tool's specific function: judging how widely and independently a claim has been reported. It distinguishes itself from siblings by emphasizing it answers 'is this real?' rather than returning a list, which differentiates it from get_story or news. The distinction between independent newsrooms and syndicated domains is a clear, unique purpose.

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

Usage Guidelines3/5

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

The description implies usage for verification ('is this real?') but does not explicitly name alternatives or state when not to use it. It doesn't say 'use get_story for story details' or 'use news for a list'. However, the focus on coverage analysis gives implicit guidance, and the clarification that it doesn't return a list helps agents avoid misusing it.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources