You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
http_post_request => To remove or comment. Not necessary.
Result type refactoring
result_type refactoring
Create a gpf_wfs_count_features (naming to be discussed) to replace the hits option of result_type. This tool will only support the parameters compatible with the hits operation => attribute filter and spatial filter => TODO make an issue
http_get_url : The LLM might need to ask just for the URL and not the full response. So what should we do ? Another tool like gpf_wfs_build_get_features_request ?
Spatial filters
Question : are they really exclusive ? I tend to think it's easier for now.
Add an is_not_null operator to where (current operators: eq, ne, lt, lte, gt, gte, in, is_null).
Decide whether where should use CQL2 operators (=, >=, ...) and support OR in addition to AND.
Spatial filters: confirm that they stay mutually exclusive, and decide whether dwithin_point_filter with a distance of 0 replaces intersects_point_filter.
limit: no pagination yet (default 100, maximum 5000); decide whether one is needed.
Activity
gpf_wfs_get_featuresresponse #136gpf_wfs_get_features=> add option to retrieve a transformed geometry #137gpf_wfs_get_features=> intersects_feature when typename === intersects_feature_typename #53gpf_wfs_get_featuresfiltering language with OGC API Features / CQL2 Basic #71gpf_wfs_get_features- why rejecting geometry in select? #82gpf_wfs_get_featureschange result_type=hits schema #107esgn commentedon Jun 24, 2026
@mborne have a look here ;)
Current status
select=> does not accept geometry field for nowgpf_wfs_get_features- why rejecting geometry in select? #82wherewith home-made syntax (not standard at all)gpf_wfs_get_features=> intersects_feature when typename === intersects_feature_typename #53order_by: list withascordesclimit=> pagination ?results=> returns a featureCollection without any geometry (geometry: null) but with feature_reference. pagination ?hits=>gpf_wfs_get_featureschange result_type=hits schema #107hitsthe following parameters are useless:limit,order_by,selecthttp_get_url=> Linking MCP geocontext and MCP carto : in search of the best solution #154 has settled the score for the URL schema. To be implemented.http_post_request=> To remove or comment. Not necessary.Result type refactoring
result_type refactoring
gpf_wfs_count_features(naming to be discussed) to replace thehitsoption of result_type. This tool will only support the parameters compatible with thehitsoperation => attribute filter and spatial filter => TODO make an issuehttp_get_url: We could return adata_urlwhich would be the stateless WFS proxy URL we were discussing in here Linking MCP geocontext and MCP carto : in search of the best solution #154 in each response.http_get_url: The LLM might need to ask just for the URL and not the full response. So what should we do ? Another tool likegpf_wfs_build_get_features_request?Spatial filters
Question : are they really exclusive ? I tend to think it's easier for now.
intersects_feature_filter refactoring
neighbour_offorgpf_wfs_get_features=> intersects_feature when typename === intersects_feature_typename #53 ? Only take a feature id as input.intersects_point_filter refactoring
Attribute filter refactoring
is_not_nullshould be added to the list=,>=, etc.)ORinstead of onlyANDbut that might prove costly ...limitrefactoringlimitreally useful for the LLM ? Yes it will be useful forTOP Nquery for example, for testing on a limited subset the WFS querylimitis problematic formcp-carto=> To be dealt within the tool description ?gpf_wfs_get_featureswill not return more than 5000 features to the LLM. 5000 features is already preposterousresult_typefield of GetFeatures(ById) #167esgn commentedon Oct 2, 2026
Remaining work
gpf_wfs_get_features=> intersects_feature when typename === intersects_feature_typename #53:intersects_feature_filteron the sametypename(theneighbour_ofidea). A guard currently rejects it and points togpf_get_feature_by_id, even whenintersection_areais requested, which by-id does not support.is_not_nulloperator towhere(current operators:eq,ne,lt,lte,gt,gte,in,is_null).whereshould use CQL2 operators (=,>=, ...) and supportORin addition toAND.dwithin_point_filterwith a distance of 0 replacesintersects_point_filter.limit: no pagination yet (default 100, maximum 5000); decide whether one is needed.