MCP connector to search and read news from the Luxembourg government press service (SIP, sip.gouvernement.lu).
Strong tool naming (all verb-noun), comprehensive descriptions (avg 180 chars), and well-structured schemas with proper type constraints. All 7 tools have clear descriptions and input schemas with typed parameters. Parameters include sensible defaults (language='de', limit=20) and constraints (limit 1-200, top_k 1-50). Output schemas are documented in descriptions. Main gaps: no tool annotations (readOnlyHint/destructiveHint), limited error recovery guidance, and no explicit output field documentation. Semantic tools (semantic_search, build_semantic_index) have good descriptions but lack detail on failure modes (missing API key, empty index).
Browse the latest SIP news, newest first (no search query needed). This is the chronological feed of everything the press service publishes. Combine with `since`/`until` to get all news in a date range, or with `category` to follow only press releases, speeches, etc.
Build or refresh the vector index used by semantic_search. This is a one-shot operation: it pages through the SIP archive, fetches each article, embeds it (via OpenRouter), and stores the vectors in the configured backend (ChromaDB or Qdrant). Depending on `max_items` and network speed, it takes a few minutes. Requires OPENROUTER_API_KEY in the environment. The index is persistent (stored on disk or in a remote vector DB), so you only need to rebuild it when the archive has new items or you want to re-embed with a different model. Returns a summary: how many items were indexed, how many were new, how many failed, and the total vector count in the store.
Fetch and return the full, cleaned text of a single SIP article. Returns the title, an optional summary, the body text (whitespace cleaned, markup removed), a word count, the category and the content language.
List the content categories and interface languages understood by the SIP site. Use the returned category keys with the `category` parameter of search_news / browse_latest_news.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). build_semantic_index is destructive (WRITE risk) but lacks annotation to signal this to agents.
Semantic tools lack explicit error recovery guidance. Descriptions mention 'requires OPENROUTER_API_KEY' and 'index is empty' but do not tell agents what to do if these conditions occur.
Output schemas not formally documented in code. Descriptions mention returned fields (title, summary, URL, similarity score) but no explicit JSON Schema for response objects.
list_categories description is minimal (70 chars). Does not explain what structure is returned or how to use category keys in downstream calls.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Full-text search across the entire SIP news archive (back to 2000). Results are returned newest-first. Each result has a title, a short summary, the publication date, the content language, the category and a URL. Use get_article on a URL to read the full text. The connector pages through the site automatically until it has `limit` matching items or the archive is exhausted, so a larger `limit` simply digs deeper into history.
Return the size and coverage of the semantic search index. Shows how many items are indexed, the embedding model in use, and whether the embedder is available (i.e. the API key is set). Use this to check readiness before calling semantic_search.
Meaning-based search over the SIP news index (vector similarity). Unlike search_news (exact keywords), this matches by meaning, so it handles natural-language questions and wording that differs from the article. Each result includes a `similarity` score in [0, 1]. Set `top_k` to control how many results come back (default 10). Requires the index to have been built with build_semantic_index and an OPENROUTER_API_KEY in the server environment. If the index is empty or the key is missing, the response says so.
No explicit guidance on pagination or result limits. browse_latest_news and search_news accept limit up to 200 but descriptions do not warn about context window impact or recommend typical limits.