Skip to main content
Glama

News Search

search_news
Read-only

Search news articles using APITube News API with comprehensive filtering.

IMPORTANT INSTRUCTIONS FOR QUERY CONSTRUCTION:

  1. DO NOT use dots in parameter names directly in the root object. Use nested objects instead.

  2. The system will automatically convert nested objects to dot notation for the API. Example: Use { language: { code: "en" } } instead of { "language.code": "en" }.

  3. For multiple values in one parameter, use COMMA separation (e.g., "en,ru,fr" for multiple languages).

  4. Integer filters (has_*, is_*) accept ONLY 0 or 1 (e.g., has_image=1, is_duplicate=0).

  5. Date format: ISO 8601 (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ).

  6. Sentiment scores range: -1.0 (negative) to 1.0 (positive).

  7. Default sorting: published_at DESC (newest first).

  8. Unknown parameters are rejected with an error (-32602) instead of being silently ignored — check the spelling against the list below.

  9. By default the response returns id, title, href, published_at, description and source.domain. The article body is NOT included — request it explicitly with fl (e.g. fl: "title,href,body").

AVAILABLE PARAMETERS:

  • title: Search by article title (supports up to 3 keywords with comma separation) IMPORTANT: a title search covers at most a 31-day published_at window. Omit the dates and the last 31 days are searched; pass a range wider than 31 days and the call fails with 400 ER0110. To cover a longer period, make one call per month-sized window.

  • ignore: { title: "keyword" } - Exclude articles with specific titles

Languages (60+ supported)

  • language: { code: "en,ru,fr" } - Filter by language codes (up to 3)

  • ignore: { language: { code: "fr" } } - Exclude specific languages

Categories (IPTC taxonomy)

  • category: { id: "medtop:04000000" } - Filter by category ID (up to 3)

  • ignore: { category: { id: "315" } } - Exclude categories

Topics

  • topic: { id: "crypto_news,climate_change" } - Filter by topic ID (up to 3)

  • ignore: { topic: { id: "2" } } - Exclude topics

Industries

  • industry: { id: "246771,246772" } - Filter by industry ID (up to 3)

  • ignore: { industry: { id: "246772" } } - Exclude industries

Entities

  • entity: { id: "1278268,1282301" } - Filter by entity ID (up to 3)

  • ignore: { entity: { id: "315" } } - Exclude entities

Persons

  • person: { name: "Elon Musk,Tim Cook" } - Filter by person name (up to 3)

  • ignore: { person: { name: "John Doe" } } - Exclude persons

Locations

  • location: { name: "Tokyo,New York" } - Filter by location (up to 3)

  • ignore: { location: { name: "Paris" } } - Exclude locations

Organizations

  • organization: { name: "Tesla,Apple,Google" } - Filter by organization (up to 3)

  • ignore: { organization: { name: "Microsoft" } } - Exclude organizations

Disasters

  • disaster: { name: "Earthquake,Tsunami" } - Filter by disaster type (up to 3)

  • ignore: { disaster: { name: "Flood" } } - Exclude disasters

Diseases

  • disease: { name: "COVID-19,Influenza" } - Filter by disease (up to 3)

  • ignore: { disease: { name: "Flu" } } - Exclude diseases

Events

  • event: { name: "Olympics,World Cup" } - Filter by event (up to 3)

  • ignore: { event: { name: "Super Bowl" } } - Exclude events

Brands

  • brand: { name: "Nike,Adidas" } - Filter by brand (up to 3)

  • ignore: { brand: { name: "Puma" } } - Exclude brands

Authors

  • author: { id: "123,456" } - Filter by author ID (up to 3)

  • author: { name: "John Doe,Jane Smith" } - Filter by author name (up to 3)

  • ignore: { author: { id: "789" } } - Exclude author IDs

  • ignore: { author: { name: "Bob Jones" } } - Exclude author names

  • has_author: 1 - Articles with attributed authors (0 for without)

Sentiment Analysis

  • sentiment: { overall: { score: { min: 0.5, max: 1.0 } } } - Sentiment score range

  • sentiment: { overall: { polarity: "positive" | "negative" | "neutral" } } - Sentiment polarity

  • sentiment: { title: { score: { min: -1.0, max: 1.0 } } } - Title sentiment

  • sentiment: { body: { score: { min: -1.0, max: 1.0 } } } - Body sentiment

  • sentiment: { mixed: 1 } - Articles with mixed sentiment (title/body differ)

  • sentiment: { consistent: 1 } - Articles with consistent sentiment

Media Content

  • media: { images: { count: { min: 2, max: 10 } } } - Filter by image count

  • media: { videos: { count: { min: 1 } } } - Filter by video count

  • media: { images: { width: { min: 1200, max: 1920 } } } - Filter by image width

  • media: { images: { height: { min: 800, max: 1080 } } } - Filter by image height

  • has_image: 1 - Articles with at least one image

  • has_video: 1 - Articles with at least one video

  • has_hq_images: 1 - Articles with high-quality images (width >= 1200px)

  • is_media_rich: 1 - Articles with both images and videos

Source Filtering

  • source: { id: "314,315" } - Filter by source ID (up to 3)

  • source: { domain: "cnn.com,bbc.com" } - Filter by domain (up to 3)

  • source: { country: { code: "us,uk,de" } } - Filter by country (up to 3)

  • source: { rank: { opr: { min: 0.5, max: 0.9 } } } - OpenPageRank range (0-7)

  • source: { bias: "left,center,right" } - Filter by media bias (up to 3)

  • ignore: { source: { id: "315" } } - Exclude source IDs

  • ignore: { source: { domain: "example.com" } } - Exclude domains

  • ignore: { source: { country: { code: "fr" } } } - Exclude countries

  • ignore: { source: { bias: "left" } } - Exclude biases

  • is_premium_source: 1 - Premium sources (OPR >= 6)

  • is_verified_source: 1 - Verified sources (OPR >= 5, not duplicates)

Date/Time Filtering

  • published_at: { start: "2024-01-01", end: "2024-01-31" } - Date range

  • published_at: "2024-09-26" - Specific date

  • Supported formats: YYYY-MM-DD, YYYY-MM-DDTHH:MM:SSZ, DD-MM-YYYY, RFC3339

  • Max 31 days between start and end WHEN the same call also searches titles (title, ignore.title patterns or query); a wider range returns 400 ER0110. Without a title filter the range is unlimited.

  • An open-ended start ({ start: "2024-01-01" } with no end) runs to the current time, so with a title filter it exceeds the window too — always pair an archive start with an end date.

Sorting

  • sort: { by: "published_at" | "created_at" | "source.rank.opr" | "read_time" | "sentiment.overall.score" | "sentiment.title.score" | "sentiment.body.score" | "media.images.count" | "media.videos.count" | "media.images.width.min" | "media.images.width.max" | "media.images.height.min" | "media.images.height.max" | "media_richness" | "relevance" | "engagement" | "quality" | "controversy" | "trust" }

  • sort: { order: "asc" | "desc" }

  • Advanced sorting: relevance (search ranking), engagement (viral potential), quality (editorial), controversy (polarization), trust (credibility)

Pagination

  • page: 1 - Page number (default: 1)

  • per_page: 10 - Results per page (default: 10). One response carries at most 25 articles, so a larger per_page is clamped to 25 — use page to walk through more.

Content Filters

  • is_duplicate: 0 - Exclude duplicates (0=unique, 1=include duplicates)

  • is_paywall: 0 - Exclude paywalled content (0=free, 1=paywall)

  • is_breaking: 1 - Breaking news only

  • read_time: { min: 1, max: 10 } - Filter by reading time (minutes)

  • is_long_read: 1 - Articles with read time >= 5 minutes

  • is_short_read: 1 - Articles with read time < 3 minutes

Field Selection (fl)

  • Default (no fl): id, title, href, published_at, description, source.domain — body excluded

  • fl: "id,title,source.name,published_at" - Return only specific fields

  • fl: "title,href,body" - Ask for the full article text explicitly when you need to read it

  • Supports nested fields with dot notation: source.name, sentiment.overall.score

Faceting

  • facet: true - Enable faceting

  • facet: { field: "source.id,language.id,sentiment.overall.polarity", limit: 20, mincount: 5 }

  • Supported facet fields: source.id, source.country.id, source.bias, category.id, topic.id, industry.id, language.id, author.id, sentiment.*.polarity, is_duplicate, is_free, is_important, media.images.count, media.videos.count, read_time, published.year, published.month, published.day_of_week, published.hour

Range Faceting

  • facet: { range: { field: "published_at", start: "2024-01-01", end: "2024-12-31", gap: "1MONTH" } }

  • facet: { range: { field: "sentiment.overall.score", start: -1, end: 1, gap: 0.25 } }

  • Date gaps: 1HOUR, 1DAY, 1WEEK, 1MONTH, 1YEAR

  • Numeric gaps: 0.1, 0.25, 0.5, 1, 5, 10

Highlighting

  • hl: true - Enable highlighting

  • hl: { fl: "title,description,body", fragsize: 300, snippets: 5, tag: { pre: "", post: "" } }

  • Auto-expands search terms using synonyms and morphology

QUERY BUILDING EXAMPLES:

  • Basic search: {title: "Bitcoin", language: {code: "en"}}

  • Sentiment analysis: {organization: {name: "Tesla"}, sentiment: {overall: {polarity: "positive"}}}

  • High-quality sources: {source: {rank: {opr: {min: 0.7}}}, is_verified_source: 1}

  • Date range (no title filter, so any width): {published_at: {start: "2024-01-01", end: "2024-12-31"}}

  • Title search over an archive month: {title: "Bitcoin", published_at: {start: "2024-01-01", end: "2024-01-31"}}

  • Multiple filters: {title: "AI", organization: {name: "Google,Microsoft"}, language: {code: "en"}, is_breaking: 1}

  • With media: {has_image: 1, media: {images: {count: {min: 2}}}}

  • Sorted by engagement: {sort: {by: "engagement", order: "desc"}}

  • With faceting: {facet: true, facet: {field: "source.id,language.id", limit: 10}}

  • With highlighting: {title: "innovation", hl: true, hl: {fl: "title,body"}}

  • Breaking news: {is_breaking: 1, sort: {by: "published_at"}}

  • Long-form quality: {is_long_read: 1, sort: {by: "quality", order: "desc"}}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
flNoComma-separated fields to return (dot-notation supported), e.g. "id,title,source.name,sentiment.overall.score".
hlNoEnable highlighting (true) or object form.
pageNoPage number (default 1).
sortNo
brandNo
eventNo
facetNoEnable faceting (true) or object form for analytics.
mediaNoMedia-content filter.
titleNoSearch by article title. Up to 3 keywords comma-separated (OR). Phrase in quotes for exact match.
topicNo
authorNo
entityNoNamed-entity filter.
ignoreNoExclusion filters — exclude articles matching these. Mirror the positive filters.
personNo
sourceNoSource filter.
diseaseNo
categoryNoIPTC category filter.
disasterNo
industryNo
languageNoLanguage filter.
locationNo
per_pageNoResults per page (default 10). One response carries at most 25 articles.
has_imageNoArticles with at least one image.
has_videoNoArticles with at least one video.
read_timeNoReading time in minutes.
sentimentNoSentiment filter. Scores range -1.0..1.0.
has_authorNoHas an attributed author.
is_paywallNo0 to exclude paywalled content.
is_breakingNoBreaking news only.
is_duplicateNo0 to exclude duplicates.
is_long_readNoRead time >= 5 minutes.
organizationNo
published_atNoPublication date range (ISO 8601).
has_hq_imagesNoHigh-quality images (width >= 1200px).
is_media_richNoBoth images and videos.
is_short_readNoRead time < 3 minutes.
is_premium_sourceNoPremium sources (OPR >= 6).
is_verified_sourceNoVerified sources (OPR >= 5).

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description reveals important behavior: default sorting and returned fields, that article body is excluded unless requested via fl, that per_page clamps at 25, and that unknown parameters trigger error -32602. It also documents the 31-day title-search window and the 400 ER0110 failure mode.

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?

The description is long, but appropriately so for a 38-parameter API with no output schema and complex nested filters. It is front-loaded with the most critical query-construction caveats, grouped into clear sections, and includes examples that earn their place by showing valid composed queries.

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?

For a tool with no output schema and this much nested complexity, the description is complete: it states defaults, limits, failure modes, response field selection, pagination, faceting, sorting, and date handling. Nothing critical for invoking the tool correctly is missing.

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

Parameters5/5

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

Schema coverage is 71%, but the description substantially compensates by explaining practical semantics: nested-object requirements, comma-separation up to N values, date formats, integer 0/1 filters, pagination clamping, default sorts, and field-selection behavior. It also clarifies many parameters that the schema only lists without functional meaning.

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 opens with a specific verb and resource: "Search news articles using APITube News API with comprehensive filtering." This clearly differentiates it from the sibling suggest tool, since it is explicitly a search/filter operation over news articles rather than a suggestion generator.

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

Usage Guidelines4/5

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

The description is packed with usage context: how to construct nested parameters, when to use comma-separated values, how date ranges behave differently with title filters, and when the API returns errors. It does not explicitly name the sibling suggest tool as an alternative for non-search cases, so it stops short of full exclusion guidance.

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.

TDQS

A4.8/5.0
Disambiguation5/5

search_news handles article querying, filtering, and retrieval, while suggest is specifically a taxonomy-ID and autocomplete resolver. Even though search_news accepts some plain-text names, suggest's output is explicitly intended to feed into search_news, so the two tools are not in ambiguity.

Naming Consistency4/5

Both tool names use lowercase and an imperative style, with search_news following a clear verb_noun pattern. The odd one out is suggest, which is just a verb and would fit better as suggest_taxonomy_id, but there is no mixing of naming conventions.

Tool Count4/5

Although two tools is on the smaller side, the pair is well matched to the API's purpose: search_news is a very large query surface, and suggest handles the ID/taxonomy lookups that search_news needs. It feels slightly minimal but not unnecessary or insufficient.

Completeness5/5

The read-only news-domain workflow is covered end-to-end: search, filter, sort, paginate, select fields, retrieve article bodies, facet, highlight, and resolve taxonomy IDs. I do not see an obvious gap for the stated purpose of searching APITube News articles.