get_featured
Retrieve editor-picked feature stories for curated highlights, bypassing the full news feed. Choose language and limit results.
Instructions
Editor-picked feature stories (is_featured=TRUE). No time window. Use when the user wants curated highlights rather than the firehose.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | en-US | |
| limit | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/zipp_mcp/server.py:148-159 (handler)MCP tool handler for 'get_featured'. Registered via @mcp.tool decorator, calls client.get_featured() and returns results.
async def get_featured( lang: str = _DEFAULT_LANG, limit: int = _DEFAULT_LIMIT, ) -> dict[str, Any]: """Get editor-curated featured stories. Args: lang: BCP-47 language tag (default en-US). limit: Max results (1-30, default 10). """ async with ZippClient() as client: return await client.get_featured(lang=lang, limit=limit) - src/zipp_mcp/server.py:140-147 (registration)Registration of the 'get_featured' tool with FastMCP, including description about editor-curated featured stories.
@mcp.tool( name="get_featured", description=( "Editor-picked feature stories (is_featured=TRUE). No time " "window. Use when the user wants curated highlights rather " "than the firehose." ), ) - src/zipp_mcp/client.py:115-121 (helper)ZippClient.get_featured() — the underlying API client method that calls GET /api/v1/news/featured with lang and limit params.
async def get_featured( self, *, lang: str = "en-US", limit: int = 10, ) -> dict[str, Any]: return await self._get("/featured", params={"lang": lang, "limit": limit}) - src/zipp_mcp/__init__.py:16-17 (schema)Documentation in __init__.py listing 'get_featured' as an available tool.
* ``get_featured`` — editor-curated highlights * ``get_post`` — full detail by slug or numeric id - tests/test_server.py:28-44 (registration)Parametrized test verifying 'get_featured' is registered in the MCP server's tool list.
@pytest.mark.parametrize( "tool_name", [ "search", "get_latest", "get_breaking", "get_featured", "get_post", "list_categories", ], ) async def test_each_tool_registered(tool_name: str) -> None: from zipp_mcp.server import mcp tools = await mcp.list_tools() names = {t.name for t in tools} assert tool_name in names, f"tool {tool_name!r} missing from registry; got {names}"