US Travel Advisories MCP. Current US State Department travel advisories for ~200 countries, from the official travel.state.gov RSS feed. Keyless. Each country has a threat level 1–4 (1 = exercise normal precautions … 4 = do not travel). Useful for "is it safe to travel to X" questions. Parsed + normalized in-pack.
Two tools with clear, descriptive names and reasonable parameter schemas. Tool descriptions are well-written (150 - 200 chars, within baseline 194 avg). However, critical gaps: (1) no output schema documentation, LLMs cannot plan downstream calls or extract fields; (2) parameter descriptions lack constraints (e.g., 'limit' says '1-250, default 50' but no enum/min/max in schema); (3) no error handling guidance, if a country is not found or feed fetch fails, LLM gets no recovery path; (4) 'advisory' tool description mentions 'State Department 2-letter country code' but does not clarify these are NOT ISO codes in the schema itself. Naming is strong (verb_noun pattern: 'advisories', 'advisory'). Schemas present but incomplete, missing required arrays, output types, and validation constraints.
List current US State Department travel advisories. Filter by country keyword and/or minimum threat level (1=normal precautions, 2=increased caution, 3=reconsider travel, 4=do not travel). Sorted by threat level (highest first).
Get the current US travel advisory for a single country. Pass the country NAME (recommended), e.g. "Japan", "Mexico". A State Department 2-letter country code also works (note: these are NOT ISO codes — e.g. Japan is "JA").
No output schema documented. LLMs cannot infer what fields to expect (e.g., does 'advisories' return an array or object? What fields does each advisory contain?). Forces LLMs to guess and wastes tokens parsing unstructured responses.
Parameter constraints not enforced in schema. 'limit' description says '1-250, default 50' but inputSchema has no minimum, maximum, or default. LLMs may pass invalid values (e.g., limit=999 or limit=-1). Schema must include type constraints.
No error handling guidance. If feed fetch fails (HTTP error, timeout) or country not found, LLM receives raw error with no recovery hint. Should return 'Country not found. Try search with partial name or call advisories() to list all.'
Parameter 'level' and 'min_level' are mutually exclusive but not documented. LLM may pass both, causing ambiguous filtering. Schema should clarify: 'Pass either level (exact match) OR min_level (threshold), not both.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No pagination or result-limiting guidance in 'advisories' output. If 200+ countries match a broad query, returning all wastes tokens. Description says 'limit' but does not explain default behavior or total_matching semantics.