MCP server exposing the Pathways health segmentation platform for woman-centered health data and insights
The Pathways MCP server demonstrates solid definition quality with well-structured tools, mostly clear descriptions, and comprehensive parameter schemas. All 9 tools are explicitly registered with the @mcp.tool() decorator in server.py. Tool names follow verb_noun conventions (list_*, get_*, search_). Descriptions are comprehensive (150-250 chars on average) and explain use cases clearly. However, there are gaps in output schema documentation and some parameter descriptions lack concrete constraints. The server includes a custom prompt 'segment_deep_dive' that demonstrates thoughtful integration, but error handling specifics are not visible in the provided code. Overall, this is a B+/A- server, production-ready with minor documentation gaps.
Get the geographic distribution of population segments across regions. Each record shows what percentage of a region's population belongs to a given segment. Use this to answer questions like which regions have the highest concentration of a specific segment.
Get quantitative metrics (indicators, prevalence) for a segment or the sample total. Metrics fall into two categories: Health Outcomes (linked to Themes) and Vulnerability Factors (linked to Domains). Sample-total metrics (no segment) represent the weighted aggregate across all sample respondents.
Get a comprehensive profile for a specific population segment. This is the "who are these women?" view — returns the segment's vulnerability level, prevalence, and key metrics organized into health_outcomes (metrics linked to Themes) and vulnerability_factors (metrics linked to Domains).
Get full details of a segmentation including all its segments. Returns segmentation metadata (country, source, methodology) plus a list of all population segments with their vulnerability levels and prevalence.
Output schemas are not documented in source. While tools clearly return structured JSON (via api.py format_response), the response structure and field names are not explicitly declared in tool definitions. LLMs cannot plan downstream tool calls without knowing which fields to expect.
Parameter constraints for filter fields (vulnerability_level, stratum, theme_code, domain_code, data_type) are described as enums in text but not formalized as JSON Schema enum constraints. LLMs cannot validate against text constraints; formal schema enums prevent hallucinated invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
List sub-national regions for a segmentation's country. Regions are administrative areas within a country. The geometry (GeoJSON) is excluded to keep the response small.
List all available Pathways segmentations (country-level studies). Each segmentation represents a population segmentation study for a specific country, based on survey data (e.g., DHS). Use this to discover which countries and studies are available. Only returns active, published segmentations.
List population segments for a segmentation, with optional filters. Each segment represents a distinct group of women identified through cluster analysis, with a vulnerability level (least/less/more/most) and stratum (urban/rural).
List all health themes (Health Outcomes) and vulnerability domains (Vulnerability Factors). Themes relate to Health Outcomes (measurable health results). Domains describe sets of Vulnerability Factors (structural and social determinants). Use theme codes to filter health outcome metrics and domain codes to filter vulnerability factor metrics.
Search and filter variables (indicators) for a segmentation. Variables are quantitative indicators measured in a segmentation study. They can be health outcomes (e.g., "No current modern FP use") or vulnerability factors (e.g., "Education level").
Pagination parameters (limit, offset) are present on get_segment_metrics, search_variables, and get_geographic_distribution but there is no documentation of max values or default behavior in tool descriptions. Based on api.py code (RESPONSE_CHAR_LIMIT=150k), limit defaults to 50 with max 100, but this is not surfaced to the LLM in tool descriptions.
No visible error handling patterns or recovery guidance in tool definitions. The api.py StrapiClient raises RuntimeError for missing env vars, but error messages are not structured to guide LLMs toward recovery actions (e.g., 'API token missing, ask admin to configure PATHWAYS_API_TOKEN').
Parameter descriptions for code fields (segmentation_code, segment_code, theme_code, domain_code, region_code) provide examples but no explicit format or length constraints. LLMs may generate invalid codes without a pattern constraint.