MCP server for Seznam Webmaster API — manage indexation status, documents, history, and reindex requests across multiple sites from a single place.
Well-structured TypeScript MCP server with 7 tools covering Seznam Webmaster API operations. All tools have clear verb-noun naming (get_*, list_, reindex_), complete input schemas with proper JSON Schema structure, and descriptions ranging 80-180 chars. Parameters are typed and described. Key strengths: consistent schema validation, proper error handling with localization, security (no credential exposure). Gaps: output schemas not documented in code, no pagination support despite tools returning potentially large result sets, no tool annotations (readOnlyHint/destructiveHint), limited parameter constraints (no enums where applicable).
Get the Seznam Webmaster database release info. Calls GET /database-info. Does not require an API key.
Get details about a specific URL (title, meta, OpenGraph, response headers, index/error/redirect flags, timestamps). Calls GET /web/document.
Get per-day page counts history for a configured site. Categories returned by the API are named: error, downloaded (= content), redirected (= redirect), indexed (= index). Calls GET /web/documents-history.
Get per-category page counts for a configured site (content/redirect/index/error) plus a random sample of up to 1000 URLs per category. Calls GET /web/documents.
Get a complete overview of a configured site (page counts per category and the full indexation history). Calls GET /web on Seznam Webmaster API.
Output schemas not documented. Tools return results but LLMs cannot see what fields to expect, forcing them to guess downstream field names and risk extraction errors.
No tool annotations (readOnlyHint, destructiveHint). reindex_url is a write operation but lacks destructiveHint; read tools lack readOnlyHint. Agents cannot distinguish safe from unsafe operations without reading descriptions.
Date parameters (date_from, date_to in get_index_history) lack format constraints. Descriptions say 'YYYY-MM-DD' but no JSON Schema format or pattern enforces it, inviting LLM date format errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
List all sites configured via SEZNAM_WM_SITES. Only domain names are returned — API keys are never exposed.
Submit a reindex request for a specific URL. Calls POST /web/document/reindex. Requires a write-enabled API key (read-only keys return HTTP 403). Daily limit: 500 requests per key.
No pagination support. get_indexed_pages returns 'up to 1000 URLs per category' but no limit/offset or cursor parameters. Large result sets risk context window exhaustion.
Error messages are localized but generic ('internal_error'). When API calls fail, LLMs receive only a localized string with no recovery guidance (e.g., 'Try list_sites() to verify domain').