MCP service for accessing and analyzing central government policies from China
Two tools with partially defined schemas and descriptions. Tool naming follows verb_noun conventions (get_latest_policies, get_policy_fulltext). Descriptions are present but minimal (67-88 chars, below the 194-char baseline). Critical gaps: no output schema documentation, no pagination support despite search returning unbounded results, no error recovery guidance. Parameter descriptions exist but lack format constraints and validation rules. Security concern: no documented handling of external API calls or rate limiting.
Search State Council policies using gov.cn official search API with keyword search and date filtering.
Fetch policy full text and normalize into structured JSON (title, date, doc_no, body, issuer). Optimized for gov.cn pages.
No output schema documented. LLMs cannot infer response structure, plan downstream calls, or extract fields reliably.
get_latest_policies accepts 'limit' with default 100 and max 100, but no pagination (offset/page/cursor) parameters. Search APIs returning 100 items risk context window exhaustion and violate pattern:paginated-result. Tool description claims 'Search State Council policies' but offers no limit enforcement on total results returned across multiple calls.
Parameter 'keyword' lacks format/length constraints. Description says 'Keyword to search in policy content, titles and summaries' but does not specify: minimum length, maximum length, allowed characters, or examples of valid vs invalid inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Date parameters (startdate, enddate) documented as 'YYYY-MM-DD format' but no validation examples or error messages. LLMs frequently misformat dates.
Error handling returns bare HTTP error messages ('Failed to fetch policies: [error.message]') without recovery guidance. Per pattern:recovery-guide, errors must tell LLMs what to do next: 'Service unavailable, retry after 30s' or 'Invalid keyword format, use alphanumeric characters only.'
No documented behavior when external gov.cn API is unreachable, rate-limited, or returns malformed HTML. Source code shows cheerio HTML parsing for fallback (fetchFromGovCnLatest), but no graceful degradation or partial result handling documented to agent.
Tool descriptions do not explain WHEN to use each tool. get_latest_policies vs get_policy_fulltext distinction is unclear: does the first search and the second fetch details? Can they be chained?
get_policy_fulltext accepts 'policy_id' as optional but description says 'Optional internal policy id', what is its format? How does it relate to 'url'? If both are provided, which takes precedence? Undocumented parameter relationships violate review:param-relationships guideline.