Multi-country MCP server exposing raw Nemotron-Personas to LLM clients (sample / search / distribution / get).
Four tools with complete JSON Schema input definitions and descriptions. Naming follows verb_noun pattern (sample_, search_, persona_, get_). Descriptions are substantive (100-200 chars), explaining WHAT and WHEN. Parameters have types, ranges, and descriptions. However, output schemas are not documented, LLMs cannot infer what fields to expect from results. Error handling via ToolError is present but lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint). Validation logic is thorough but not exposed in descriptions.
Look up one persona by uuid. Returns None if not found.
Group filtered rows by `group_by` columns and return counts (descending).
Return up to `n` raw personas from `country`, filtered by axes. Use the returned `persona`, `professional_persona`, ... fields directly as system-prompt material when role-playing a member of the segment. Sampling is deterministic for fixed (filter, n, seed).
Substring search across persona text fields, optionally constrained by axes.
Output schemas not documented. LLMs cannot infer what fields (uuid, persona, professional_persona, etc.) are returned by sample_personas, search_personas, or get_persona. This forces agents to guess field names for downstream processing.
No tool annotations. All four tools are read-only (risk: READ_ONLY), but this is not declared via readOnlyHint in the tool definition. Agents cannot distinguish safe tools from destructive ones without explicit hints.
Error messages lack recovery guidance. ToolError is raised for invalid country, unknown axes, and missing stores, but descriptions do not suggest next steps (e.g., 'Call list_countries() first' or 'See personas://catalog/{country} for valid values'). Agents cannot self-correct.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Parameter descriptions reference external resources (personas://catalog/{country}) but do not explain what those resources contain or how to use them. LLMs may not know to call a resource endpoint first.
persona_distribution's group_by parameter accepts an array of axis names but does not validate or document the valid set in the parameter description. LLMs must infer valid values from the catalog resource.