| summary | geoFilter searches lead with the matched site (distanceMi), get_field_values flags multi-valued fields, and query parse errors drop the raw Essie grammar dump |
|---|---|
| breaking | false |
| security | false |
search_studiesgeoFilter site re-ranking — whengeoFilteris set, each study'slocations[]is re-sorted by proximity to thedistance(lat,lon,radius)center so the matched site leads instead of the upstream-order first entry, and the nearest site renders with itsdistanceMi. Sites without ageoPointare preserved at the end — re-rank only, never filter. Mirrorsget_study_record'snearLocation→distanceMipattern. New sharedsrc/mcp-server/tools/utils/geo-helpers.tsholdshaversineMi,parseGeoFilterCenter, andLocationWithDistance(extracted fromget-study.tool.ts, no behavior change). (#84)get_field_valuesmultiValuedflag — array-typed fields (e.g.Phase,Condition) carrymultiValued: trueplus aformat()note, since one study can hold several values and the per-valuestudiesCountbuckets sum above the study total. Derived from the/studies/metadatanodetypeending in[], looked up against the already-cached field index (no extra round-trip). (#85)
search_studies/get_study_countquery parse errors no longer leak the upstream Essie/ANTLR grammar dump. The catch-all forError parsing query in …now extracts the offending token from themismatched input 'X',no viable alternative at input 'X', andmissing 'X' at …shapes and produces a concise message (e.g. naming the reserved[/]characters), dropping the 22-tokenexpecting {…}list while keeping the existing recovery hint. Covers every free-text param andadvancedFilter. (#83)