Hermes
Getting started

Your first spatial query

Pair a GIS skill with a tool and watch the agent answer.

The configuration works by pairing skills (what the agent knows about your data) with tools (how it fetches that data). Here is the whole loop.

Write a skill

Skills are markdown in ~/.hermes/skills/gis/. This one teaches the agent how your zoning layer is laid out:

~/.hermes/skills/gis/zoning.md
# Zoning lookups

The zoning layer is `Zoning/FeatureServer/2`. The district code field is
`ZONE_CODE`; height limits are `HEIGHT_LIMIT` (feet). For anything
address-based, use the `esri.query_features` tool with an
`intersects(...)` clause. Always cite the district code in the answer.

Ask a question

hermes
 which zoning district covers 1234 J Street?

What happens

The skill tells the agent which layer and field to use, so it emits a single tool call:

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

The esri tool runs the query with your ArcGIS token, returns the matching feature, and the agent answers, citing ZONE_CODE because the skill said to.

The first time you correct the agent on your schema, its learning loop can fold that correction back into the skill. See Memory and the learning loop.

On this page