Skip to content

System Search and Scripting

github-actions[bot] edited this page Nov 11, 2026 · 3 revisions

This page is generated from the repository on every merge to main; changes made here are overwritten.

execute_pyqgis_script

LAST RESORT ONLY -- run this only when no other registered tool covers the task; check the rest of the tool list first, including run_allowlisted_processing_algorithm if the task is achievable via a single Processing algorithm -- that tool never executes Python code at all, so it's meaningfully safer than this one whenever it applies. Runs in a separate, isolated process (a snapshot of the project, not the live one) with its own denylist-based safety sandbox on top (blocked modules/builtins; see SECURITY.md) -- not a formally proven sandbox, so it is not a safe default path just because it's available. Fails with an error, without running, if any layer has uncommitted edits -- commit or discard them first. Execute arbitrary PyQGIS script; must define a run() function returning the result.

Parameter Type Required Description
script string yes

gemini_grounded_search (two-phase)

Search the live web using Gemini's native Google Search grounding for real-time, source-cited facts. Only works when the active provider is Gemini with a configured API key -- prefer this over search_web when the active provider is Gemini.

Parameter Type Required Description
query string yes

geocode_and_enrich (network-only)

Geocode a SINGLE address/place name into lat/lon via Nominatim API; the result also carries the place's bounding box (bbox_south_west_north_east and bbox_west_south_east_north) for tools that take an area. For multiple locations in one request, use geocode_batch instead -- one call per place will run out of tool-call steps before finishing a long list.

Parameter Type Required Description
location_name string yes
source_layer string no The layer the place text came from, if it came from a layer; leave out when the user typed it. A protected layer is refused: geocoding sends the text to a public server.

geocode_batch (network-only)

Geocode MULTIPLE address/place names into lat/lon in a single call. Use this instead of calling geocode_and_enrich in a loop whenever more than one location needs coordinates. The text is sent to a public server (OpenStreetMap Nominatim), so it is REFUSED when it comes from a protected (RESTRICTED or SENSITIVE) layer: pass source_layer with the layer the names were read from.

Parameter Type Required Description
location_names array[string] yes
source_layer string no The layer the place text came from, if it came from a layer; leave out when the user typed it. A protected layer is refused.

openai_grounded_search (two-phase)

Search the live web using OpenAI's dedicated web-search model for real-time, source-cited facts. Only works when the active provider is OpenAI with a configured API key -- prefer this over search_web when the active provider is OpenAI.

Parameter Type Required Description
query string yes

search_web (network-only)

Search internet for real-time information or facts; every hit has a URL: cite them. For a sourced, structured answer or for news use web_research. NOT for incidents, disasters or conflict events in a place: use find_incident_reports for those (named reliable sources, dates, links).

Parameter Type Required Description
query string yes
max_results integer no

Clone this wiki locally