# news_search

> Read news articles for query, or current Hacker News / GitHub trending entries (no query).

URL: https://mcp-docs.opennomos.com/docs/tools/research/news_search

> Read news articles for query, or current Hacker News / GitHub trending entries (no query). Returns source data without storing memory. Optional time_range is the news provider's day\|week\|month\|year parameter. ~4-5s, $0.001.

| Field | Value |
| --- | --- |
| Pack | Launch (`launch`) |
| Estimated cost per call | ~$0.001 (upstream cost; see the description for per-action figures) |
| Monthly pack limit | $1 of upstream cost (not shown to users) |
| Project | optional (`project` or `X-OpenNomos-Project`); only attaches the project id to the result |

## Parameters

| Parameter | Required | Type | Description |
| --- | --- | --- | --- |
| `project` | no | `string` | Project slug or id. Omit to use the credential or workspace default. |
| `source` | yes | `"news"` \| `"hackernews_trending"` \| `"github_trending"` | news = articles matching `query`; hackernews_trending / github_trending = what is trending now (no query needed). |
| `query` | no | `string` | source=news only: search text, e.g. 'open source CRM'. |
| `time_range` | no | `"day"` \| `"week"` \| `"month"` \| `"year"` | source=news only: restrict to the last day/week/month/year. Default: no restriction. |
| `limit` | no | `integer (≥ 1, ≤ 20)` | Max items to return. Default 10. |

## Example call

```json
{
  "source": "news",
  "query": "open source CRM",
  "time_range": "week",
  "limit": 10
}
```

REST: `POST https://service.opennomos.com/v1/tools/news_search` with that JSON as the body. MCP: `tools/call` with `name: "news_search"` and that JSON as `arguments`.

## Example result

Values are illustrative; the shape comes from the service code.

```json
{
  "results": [
    {
      "url": "https://example.com/story",
      "title": "…",
      "content": "…",
      "publishedAt": "2026-10-15T08:00:00.000Z"
    }
  ]
}
```

## Notes

- `source=hackernews_trending` and `source=github_trending` need no query and return what is trending now.
- If fewer than `limit` entries come back, `note` says so.

## Errors

Upstream trouble is reported **inside a normal result** as `error`, `reason` and `action` (and `tool` / `retry_after_seconds` when they apply). For `search_signals` this appears per source. See [Errors](https://mcp-docs.opennomos.com/docs/reference/errors.md).

This tool is in the **Launch** pack. If the pack is not enabled the call fails with `pack_required` (HTTP 403); if the pack's monthly upstream cost limit is used up it fails with `soft_limit` (HTTP 429). Both carry `action: "give_up_and_tell_user"` and the console URL.
