emerging
Detect concepts that appeared in the last 24 hours with zero coverage in the prior 48 hours, filtered to at least 3 articles from 2 sources, to surface candidate emerging stories.
Instructions
Concepts that appeared in the last 24h but had zero coverage in the prior 48h — candidate emerging stories. Cluster-filtered to
=3 articles and >=2 sources to suppress single-article noise.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/overtone_news_mcp/server.py:142-149 (handler)Handler function for the 'emerging' tool. Accepts an optional 'limit' parameter (1-100, default 10) and delegates to the _post helper to call the Overtone API's 'emerging' endpoint. Returns concepts that appeared in the last 24h with zero prior coverage.
@mcp.tool() def emerging( limit: Annotated[int, Field(ge=1, le=100)] = 10, ) -> dict[str, Any]: """Concepts that appeared in the last 24h but had zero coverage in the prior 48h — candidate emerging stories. Cluster-filtered to >=3 articles and >=2 sources to suppress single-article noise.""" return _post("emerging", {"limit": limit}) - src/overtone_news_mcp/server.py:142-142 (registration)Registered as an MCP tool via the @mcp.tool() decorator on line 142.
@mcp.tool() - The _post helper function that all tools (including emerging) use to make HTTP POST requests to the Overtone API, handling API key loading and JSON serialization.
def _post(path: str, body: dict[str, Any]) -> dict[str, Any]: with httpx.Client(timeout=HTTP_TIMEOUT) as client: resp = client.post( f"{API_URL}/{path}", headers={"X-API-Key": _load_api_key()}, json=body, ) resp.raise_for_status() return resp.json() - Input schema for the 'emerging' tool: 'limit' is an integer between 1 and 100, with a default of 10. Uses Pydantic's Field for validation. The return type is dict[str, Any].
limit: Annotated[int, Field(ge=1, le=100)] = 10,