All posts

July 1, 2026 · The Hermes for GIS team

How Hermes routes a spatial question to the GIS toolset

When you ask the Hermes agent a question with a spatial reference in it, the GIS pack turns it into a real Feature Layer query. Here's the whole path, using the actual <tool_call> trace.

1. The skill sets context

Before the model sees your question, Hermes pulls in the relevant GIS skills. The zoning skill tells it which layer and field to use:

The zoning layer is Zoning/FeatureServer/2. The district code field
is ZONE_CODE. For address lookups, use esri.query_features.

2. The model plans, then calls a tool

Hermes 4 can think before it acts. For a simple lookup it goes straight to the tool call; for a multi-step question it plans in a <think> block first, then emits the call:

<tool_call>
{"name": "esri.query_features",
 "arguments": {"layer": "Zoning/2",
               "where": "intersects('1234 J Street')"}}
</tool_call>

3. The tool runs with your credentials

The esri tool geocodes the address, runs the query against your ArcGIS endpoint using your token, and returns the matching feature as structured tool output. The model never touches the raw credentials.

← 1 feature · ZONE_CODE = C-3

4. The model answers

Only now does Hermes write prose, and it cites ZONE_CODE because the skill said to. If you correct it, the learning loop can fold that correction back into the skill for next time.

The point of building on Hermes rather than a black box: every step above is inspectable, and the skills that drive it live in your repo.