ArcGIS Pro MCP
Connect an AI assistant to a running ArcGIS Pro session over MCP, then inspect and modify the open project using tools for maps, layers, data, geoprocessing, layouts, rasters, and arcpy.
Connect MCP clients (Claude, Codex, VS Code, Cursor, Cline, Gemini CLI, etc.) to
http://127.0.0.1:6520/mcp; ArcGIS Pro must be open.Inspect project, maps, layers, layouts, rasters, fields, data sources, and environment settings.
Manage maps: create, remove, activate, rename, set coordinate systems, get extents.
Manage layers: add, remove, rename, duplicate, reorder, group, set visibility, transparency, scale ranges, definition queries, joins, basemaps, and repair broken sources.
Read and edit attributes/features: query, count, summarize, unique values, statistics, insert/update/delete rows, calculate fields, add/delete fields, save/discard edits.
Select features by SQL or location; inspect, set, clear, and zoom to selection.
Create and manage schema/datasets: feature classes, tables, file geodatabases, fields, exports.
Run any ArcGIS geoprocessing tool by name with named parameters; list/describe tools; run Python toolboxes; check extension licenses.
Style layers and labels: simple/unique/graduated renderers, color ramps, label expressions, copy/save symbology.
Work with map views and bookmarks: get/set extent, export PNG, create/apply/delete bookmarks.
Build and export layouts: map frames, text, legends, scale bars, north arrows, pictures; export PDF/PNG/JPEG/SVG/TIFF; map series.
Use rasters: info, symbology, raster calculator, sample values, zonal statistics.
Discover data: list workspace/folder contents, describe datasets, search data, add folder connections.
Fall back to
execute_arcpy_codefor arbitrary Python inside Pro, orrun_batchfor multiple commands.Tools change the real open project and data; some are destructive, and commands are AI-issued.
Controls a live ArcGIS Pro session, allowing AI assistants to manage layers, run geoprocessing tools, adjust symbology, export maps, and execute arcpy code.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ArcGIS Pro MCPList all layers in the current map"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ArcGIS Pro MCP
An ArcGIS Pro add-in that lets you say what you want.
It implements the Model Context Protocol inside ArcGIS Pro itself, so an AI assistant — Claude, Codex, Antigravity, or any other MCP client — can work on the project already open in front of you. Your data, your maps, your layouts. Not a copy, not an export.
Install the add-in, click the button for the assistant you use, done. No config files to find, no JSON to hand-edit, no Python to install.
In any language your assistant speaks. Your assistant does the
understanding; this add-in never matches on English keywords. Non-English text
travels intact in both directions, so a query can name a place in Thai and get
Thai back — PROV_NAMT LIKE '%เชียง%' returns เชียงใหม่ and เชียงราย.
"Style the provinces by area, pastel red through green"
"Which province has the highest population? Put the answer in a new field"
"Export the current map view as a PNG and show me""ระบายสีจังหวัดตามขนาดพื้นที่ ไล่จากแดงพาสเทลไปเขียว"
"จังหวัดไหนมีประชากรมากที่สุด ใส่คำตอบไว้ในคอลัมน์ใหม่"
"ส่งออกมุมมองแผนที่ปัจจุบันเป็น PNG แล้วเอามาให้ดู"The aim is the whole of ArcGIS Pro, not a convenient corner of it. A request falls through three layers, and takes the fastest one that can answer it:
1 | 112 named tools, written in C# | Layers, attributes, selections, symbology, layouts, rasters, editing — the work of an ordinary day. 109 of them execute inside ArcGIS Pro's own process, in about 9 ms each. |
2 | Every geoprocessing tool |
|
3 | Arbitrary arcpy |
|
Layers 1 and 2 need nothing but the add-in. Layer 3 runs through an optional Python bridge inside ArcGIS Pro's own Python — install it when you want the escape hatch, skip it and the first two still work. A command the add-in does not implement is forwarded there automatically; if it is not running, the error says so and how to start it, rather than failing obscurely.
The practical effect is that there is no such thing as "the tool for that is missing". If it can be done in ArcGIS Pro, it can be asked for in a sentence.

Every frame above was rendered by the add-in itself, running the request in
the caption. Rebuild it with python scripts/make_demo_gif.py.

Install
Get it from the latest release and pick one of the two files.
The add-in on its own
Download
ArcGISProMCP.esriAddinX
and double-click it. ArcGIS Pro's own installer takes it from there. Restart
Pro and the MCP tab appears.
Or the installer, if that does not work
Install-ArcGISProMCP.cmd
is one self-contained file — the add-in is inside it, so there is nothing else
to download.
Double-click it, or run it from a prompt. It is a .cmd, not a .ps1, so
Windows' script execution policy never gets in the way.
Use this one when Pro loads the add-in but the MCP tab never appears: some machines have add-in security turned on, and the add-in alone cannot say so. The installer checks, tells you which of the two states it found, and offers the fix. Run it a second time and it offers to uninstall.
Requires ArcGIS Pro 3.7. Nothing else — no Python, no SDK, no admin rights. It is built against 3.7 and will not load on anything older; a newer Pro should be fine, and the installer says so rather than stopping you.
The same two files are also committed to
dist/. It holds
the most recent build that has been through
release validation, so it matches the latest
release, and can be ahead of it when a validated fix is not yet tagged.
Building from source writes elsewhere; only a validated build reaches dist/.
They are committed rather than left as build output because GitHub Actions has no ArcGIS Pro to build against: a build only exists if someone with Pro installed produces it. Committing it keeps a download beside the source that made it.
Take the release unless you have a reason to want something newer than it.
Uninstalling
Run the installer again and answer yes, or:
Install-ArcGISProMCP.cmd -UninstallIt removes every copy it finds, including the one ArcGIS Pro's own installer
unpacks into a folder named after the add-in id. The .esriAddinX cannot
uninstall anything — double-clicking it only ever installs. The other way is
ArcGIS Pro itself: Project ▸ Add-In Manager ▸ Delete this Add-In.
Related MCP server: arcpro-mcp
Connect an AI client
Open the MCP tab in ArcGIS Pro and click your assistant — the three most used are on the ribbon, the rest are under More clients.
Icon | Meaning |
✓ green | that client already has the server — click to remove it |
⊕ grey | click to add it |
greyed out | that client is not installed |
It asks before changing anything, tells you which file it will write, and backs that file up first.
Supported: Claude Code, Codex, Antigravity, VS Code, Cursor, Cline, Gemini CLI, Claude Desktop.
The address every one of them connects to is
http://127.0.0.1:6520/mcpThat is the only number worth remembering. The add-in also listens on 6510 for
a legacy TCP bridge, and optionally on 6511 for the in-Pro Python fallback, but
no AI client uses either. All three are bound to 127.0.0.1 and are not
reachable from another machine — see SECURITY.md.
Most clients connect over HTTP:
claude mcp add --transport http arcgis http://127.0.0.1:6520/mcp{ "mcpServers": { "arcgis": { "type": "http", "url": "http://127.0.0.1:6520/mcp" } } }Antigravity wants serverUrl instead of url and no type.
Codex connects directly using Streamable HTTP. In ~/.codex/config.toml,
replace the existing arcgis section (including its old env subtable) with:
[mcp_servers.arcgis]
url = "http://127.0.0.1:6520/mcp"The Codex ribbon button writes exactly this, backs the file up first, and
replaces an older command/args registration in place — one click, whichever
state you are in. Everything else in the file is left alone. Restart Codex
afterwards. Installing the add-in never rewrites a client config on its own.
See the official Codex MCP documentation.
Claude Desktop is the one client that cannot dial out to a server — it can
only launch one. So the add-in writes the missing piece itself: a small
PowerShell bridge at %LOCALAPPDATA%\ArcGIS Pro MCP\stdio-bridge.ps1 that
forwards each message to the same HTTP endpoint, and registers Claude Desktop
to run it:
{ "mcpServers": { "arcgis": {
"command": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File",
"C:\\Users\\you\\AppData\\Local\\ArcGIS Pro MCP\\stdio-bridge.ps1"] } } }Windows PowerShell ships with Windows, so there is still nothing to install — no Python, no Node, no pip. The bridge is rewritten whenever you register a client, so upgrading the add-in upgrades it too.
The bridge lives inside ArcGIS Pro, so Pro has to be open. Close it and the client's connection goes red.
The ribbon
One button starts and stops, the way a play button does: the icon shows what the next click will do, so it doubles as the state readout. Green ▶ means stopped, red ⏹ means running.
Status shows a green broadcast while listening and a contained grey dot when not, captioned with the MCP port. Hover it for the full address to paste into a client; click it for the full report: requests served, which clients are connected, and the last error.
Tools
112 tools. Anything not listed is still reachable through run_geoprocessing_tool or execute_arcpy_code.
Session and project (14)
Tool | What it does |
| Check that the ArcGIS Pro bridge is reachable and see which project it is attached to |
| List every command the connected bridge supports, grouped by area |
| Self-check the connection: ArcGIS Pro version, licence, open project, active map, open map view and write access |
| ArcGIS Pro version, licence level, available extensions and the current project path |
| Project paths, default geodatabase and toolbox, maps, layouts, folder and database connections |
| Save the ArcGIS Pro project (.aprx), or save a copy elsewhere |
| List all maps and scenes with coordinate system and layer counts |
| Create a new map or scene in the project |
| Delete a map from the project |
| Open/activate a map's view in the ArcGIS Pro UI |
| Rename a map or change its coordinate system |
| The combined extent of all data layers in a map |
| Read the current arcpy geoprocessing environment settings |
| Set arcpy geoprocessing environment settings such as workspace, outputCoordinateSystem, extent, mask, cellSize, overwriteOutput or parallelProcessingFactor |
Layer (19)
Tool | What it does |
| List the layers (with draw order and group nesting) and standalone tables in a map |
| Full detail for one layer: data source, coordinate system, extent, fields, feature count, renderer and label state |
| Add data to a map from a path or service URL: feature class, shapefile, raster, table, .lyrx layer file or web service |
| Add a web service layer (Feature/Map/Image service, WMS, WMTS, vector tile) by URL |
| Remove a layer or standalone table from a map |
| Rename a layer in the table of contents |
| Copy a layer within the map so it can be symbolised differently |
| Show or hide one layer, several layers, or every layer in the map |
| Set layer transparency (0 = opaque, 100 = fully transparent) |
| Limit the scale range a layer draws at |
| Set a layer's definition query (SQL where clause) |
| Reorder a layer relative to another, or move it into a group layer |
| Create a group layer, optionally moving existing layers into it |
| Zoom the map view to a layer's extent |
| Set the basemap: Topographic, Imagery, Imagery Hybrid, Streets, Navigation, Light Gray Canvas, Dark Gray Canvas, Terrain, Oceans, OpenStreetMap, National Geographic Style Map |
| List layers across all maps whose data source is missing |
| Repoint a layer at a new workspace or dataset to fix a broken source |
| Join a table to a layer on a common field |
| Remove a join from a layer |
Attributes and editing (11)
Tool | What it does |
| Read attribute rows from a layer, table or dataset path, with an optional where clause, field subset, ordering and WKT geometry |
| Count features, optionally matching a where clause |
| Distinct values of a field with the count of rows for each |
| min / max / mean / median / sum / standard deviation of a numeric field |
| Group rows by one or more fields and aggregate -- the fast way to answer 'how many / how much per category' without geoprocessing |
| Insert new rows into a layer or table |
| Update attributes and/or geometry of rows matching a where clause |
| Delete rows matching a where clause |
| Commit pending edits |
| Throw away pending edits |
| Calculate field values across a layer, e.g |
Selection (6)
Tool | What it does |
| Select features by SQL where clause |
| Select features by spatial relationship to another layer |
| Report what is currently selected, per layer, with ObjectIDs and optionally the attribute rows |
| Select specific features by ObjectID |
| Clear the selection on one layer, or on every layer in the map |
| Zoom the map view to the currently selected features |
Schema and dataset creation (11)
Tool | What it does |
| List a layer's fields with type, alias, length and domain |
| Add a field to a layer or table |
| Add several fields in one call |
| Delete one or more fields |
| Rename a field or change its alias/length |
| Create an empty feature class, by default in the project's default geodatabase, and add it to the map |
| Create an empty standalone table |
| Create a new file geodatabase |
| Delete every row from a table or feature class, keeping the schema |
| Delete a dataset from disk or a geodatabase |
| Export a layer -- honouring its current selection and definition query -- to a new dataset |
Geoprocessing (7)
Tool | What it does |
| Run any arcpy geoprocessing tool -- the universal escape hatch for analysis |
| Search the available geoprocessing tools by name |
| List the arcpy toolbox modules and any toolboxes in the project |
| Get a tool's parameters, data types, defaults and usage text before running it |
| Run a tool from a custom .pyt / .atbx / .tbx toolbox on disk |
| Check, and optionally check out, an ArcGIS extension licence |
| Messages from the most recent geoprocessing operation |
Symbology and labels (6)
Tool | What it does |
| Change a layer's symbology: a single symbol, unique values by category, or a classified/continuous colour scheme by numeric field |
| Inspect a layer's current renderer, class breaks, unique values and label settings |
| List the colour ramps available in the project |
| Turn labels on or off and set the expression, font and halo |
| Copy symbology from a .lyrx file or another layer |
| Save a layer with its symbology to a .lyrx file for reuse |
Map view and bookmarks (7)
Tool | What it does |
| Current camera position: centre, scale, rotation and visible extent |
| Move the map view: set an extent, a centre point, a scale and/or a rotation |
| Render the map view to PNG and return the image so it can be looked at -- the way to visually check a map |
| List the spatial bookmarks defined on a map |
| Save the current view, or a given extent, as a named bookmark |
| Zoom the map view to a bookmark |
| Delete a bookmark from a map |
Layouts and printing (16)
Tool | What it does |
| List the print layouts with page size and element counts |
| Inspect a layout: page setup and every element with position and size |
| Create a new layout page, by default with a map frame filling it |
| Delete a layout from the project |
| Add a map frame to a layout at a page position |
| Point a layout's map frame at a layer, an extent or a scale |
| Add a text element such as a title or credits to a layout |
| Add a legend tied to a layout's map frame |
| Add a scale bar tied to a layout's map frame |
| Add a north arrow tied to a layout's map frame |
| Place an image such as a logo on a layout |
| Move, resize, rename, hide or change the text of any layout element |
| Remove an element from a layout |
| Export a layout to PDF / PNG / JPEG / SVG / TIFF |
| Render a layout to a temporary image and return it, without writing a file -- use it to visually check a layout while building it |
| Export a layout's map series (map book) to a multi-page PDF |
Raster (5)
Tool | What it does |
| Raster detail: bands, size, cell size, pixel type, statistics and CRS |
| Set a raster layer's colorizer and colour ramp |
| Map algebra |
| Read raster cell values at map coordinates or at a point layer's features |
| Summarise raster values inside zone polygons and return the table |
Finding and inspecting data (6)
Tool | What it does |
| List the datasets inside a geodatabase or folder |
| List GIS files and subfolders on disk |
| Describe any dataset by path -- type, geometry, CRS, extent, fields and row count -- without adding it to a map |
| Find datasets by name across the project's geodatabase, home folder and folder connections |
| Folder connections, database connections and toolboxes registered in the project |
| Register a folder with the project so its data is easy to browse |
Escape hatch (4)
Tool | What it does |
| Run Python inside ArcGIS Pro |
| Whether the main-thread dispatcher is installed |
| Remove the main-thread dispatcher |
| Run several commands in one round trip -- much faster for multi-step workflows |
⚠️ = changes or deletes real data 🖼️ = returns an image the AI can look at
Troubleshooting
No MCP tab after restarting Pro. Add-in security is the usual cause.
Run Install-ArcGISProMCP.cmd; it will say so and offer the two ways round it.
The setting itself is in ArcGIS Pro under Project ▸ Add-In Manager ▸
Options:

The middle setting is the one this add-in is signed for. The bottom one loads anything. What each choice means.
The client shows the server in red. ArcGIS Pro is closed, or the bridge is stopped. Open Pro and check the toggle on the MCP tab shows ⏹ (running).
A command says a layer does not exist. Layers inside a group need their
full name, "Group\Layer", for anything that runs through geoprocessing.
An edit did not appear. ArcGIS Pro holds edits open so they can be undone,
which also keeps the data locked. Call save_edits.
Safety
These tools change the project you have open and the data under it. Tools marked ⚠️ above modify or delete real data.
The bridge binds to 127.0.0.1 only — nothing on the network can reach it —
but anything that can run code on your machine can drive ArcGIS Pro through it
while Pro is open. execute_arcpy_code runs arbitrary Python inside Pro.
Prefer non-destructive steps, use save_project deliberately, and let the
assistant confirm before bulk edits.
How it works
An ArcGIS Pro add-in written in C#, running inside Pro's own process:
AI client ──MCP over HTTP :6520/mcp ─┐
│
AI client ──MCP stdio──► arcgis-pro-mcp ──TCP :6510──┐
│ │
▼ ▼
┌─ C# add-in (inside the ArcGIS Pro process) ─┐
│ → QueuedTask.Run (Main CIM Thread) │
│ anything it does not implement ─┐ │
└───────────────────────────────────┼─────────┘
▼ :6511
Python bridge (execute_arcpy_code)Being in-process is the whole point. ArcGIS Pro will only let its own Main CIM
Thread touch the open project, and an outside process cannot get onto it. An
earlier all-Python version had to hand work to Pro's Python thread and wait,
which took around 28 seconds per call. The add-in uses QueuedTask.Run
directly: 9 ms.
Three of the 112 tools stay on the Python side, and belong there:
execute_arcpy_code, because a compiled add-in cannot run code composed at
call time, and get_pump_status / stop_pump, which report on the Python
bridge's own dispatcher.
More detail in docs/.
Building it yourself
You do not need to — the release is a single download. If you want to change something, see BUILD.md.
.\scripts\build.ps1Everything used to produce a release is in this repository: the build, the signing, the icon drawing, and the installer that gets packed into one file.
Author and licence
Built by Pisut Nakmuenwai (@Knight60).
Dual licensed.
AGPL-3.0 — free, and free to keep. Use it for your own work, paid or unpaid, on as many machines as you like. Modify it. Build on it. The one condition is reciprocal: if you pass on a work built from this one, or run it as a service other people use, those people get its source under the same terms.
Commercial — for shipping it inside a product you do not publish the source of, hosting it in a closed service, or redistributing it under your own name.
Doing GIS work with it and delivering the maps and analysis is ordinary use, not distribution. Most people never need the second licence; the details say where the line falls, and asking is free.
Releases up to v1.0 were MIT and stay MIT — that grant cannot be withdrawn. The dual licence applies from v1.1. NOTICE carries the copyright and an AGPL Section 7 permission for linking with the ArcGIS Pro SDK.
Support this project
Built and maintained in the open, with no company behind it.
If it saves you time, sponsoring it helps keep it working. Most of the ongoing effort is not new features but keeping up with ArcGIS Pro: every release can move the framework it targets and shift the parameter order of its two thousand geoprocessing tools, and each one means regenerating that table and testing the whole surface again.
Starring the repository costs nothing and helps other people find it. So does telling me what broke — a clear issue is worth a great deal.
Disclaimer
This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall the author or copyright holder be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from or in connection with the software or its use. The full terms are in LICENSE.
Two properties of this software deserve stating plainly rather than being left to the licence, because they are what it is for rather than defects in it:
It executes commands against a live ArcGIS Pro session, including operations that permanently alter or delete datasets, project files, and geodatabase contents. The tools marked ⚠️ in the table above are the ones that do so.
Those commands are issued by an AI assistant, whose output is not deterministic and is not reviewed before it runs.
execute_arcpy_codeexecutes arbitrary Python inside ArcGIS Pro with the privileges of the signed-in user.
You remain responsible for your data and for the consequences of any operation performed through this software. Back up anything you cannot afford to lose, work on copies where practical, and verify results before relying on them. Use against production data, or against data you cannot restore, is entirely at your own risk.
This project is an independent work. It is not affiliated with, endorsed by, sponsored by, or supported by Esri, and it is not a supported ArcGIS product. ArcGIS and ArcGIS Pro are trademarks of Esri. Your use of ArcGIS Pro remains governed by your own licence agreement with Esri, and nothing here modifies it.
Available Tools
112 toolsactivate_mapA
Open/activate a map's view in the ArcGIS Pro UI. Needed before camera commands and export_map_view.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | Yes | Map to activate. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that this changes UI state and must precede camera/export commands, but says nothing about failure modes, whether an already-active map errors, or what state changes persist — meaningful gaps for a state-changing tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero filler, and the effect (activate view) is front-loaded ahead of the prerequisite note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, an output schema present, and the sequencing constraint stated, the definition covers what an agent needs to invoke it correctly. Only the error/edge-case behavior is absent, which is a minor gap given the output schema carries return information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already fully documents map_name as 'Map to activate.' The description adds no syntax, naming, or matching semantics beyond that, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Open/activate a map's view in the ArcGIS Pro UI'. This is clearly distinct from adjacent siblings like list_maps, get_map_view and set_map_view, though the description never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit prerequisite ordering: 'Needed before camera commands and export_map_view'. That tells the agent when this call is required rather than optional. It stops short of naming exclusion cases (e.g. what happens if the map is already active), so it is clear context without full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_fieldC
Add a field to a layer or table.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| nullable | No | NULLABLE or NON_NULLABLE. | NULLABLE |
| field_name | Yes | New field name. | |
| field_type | No | TEXT, LONG, SHORT, DOUBLE, FLOAT, DATE, BIGINTEGER, GUID or BLOB. | TEXT |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| field_alias | No | Display alias. | |
| field_scale | No | Numeric scale. | |
| field_domain | No | Attribute domain to assign. | |
| field_length | No | Length for TEXT fields. | |
| field_precision | No | Numeric precision. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not say what happens if the field already exists, whether a schema lock or edit session is required, whether the operation is reversible, or what the response contains — significant gaps for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the action front-loaded and zero waste. It is well-formed, though the terseness is arguably under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with no annotations, the one-sentence description is not complete: it omits prerequisites (schema locks, edit sessions), failure behavior, and any routing versus add_fields/alter_field. The presence of an output schema excuses it from explaining return values, but not from the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 10 parameters (map_name, field_type, nullable, field_domain, etc.), so the schema already explains each argument thoroughly. The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Add) and resource (field) plus its targets (a layer or table), which is clear enough for an agent to know what the tool does. However, it does nothing to distinguish itself from the sibling add_fields (plural), so an agent cannot tell which one to pick without inspecting both schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as add_fields, alter_field, or delete_field. The agent must infer the single-field scope from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_fieldsC
Add several fields in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | e.g. [{"name": "AREA_HA", "type": "DOUBLE", "alias": "Area (ha)"}]. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden for a schema-mutating operation. It says nothing about whether the layer must be editable, whether the addition is transactional across the batch, or what happens if one field definition is invalid – all material for a write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single seven-word sentence with the verb and the batch benefit front-loaded and no filler. It is efficient, though its brevity reflects thin content rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a write tool with zero annotations and multiple sibling field-manipulation tools, the description omits editability requirements, batch failure semantics, and any routing to add_field or alter_field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents layer_name, map_name defaults, and even an example field object. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource (“Add several fields”) and the mechanism (“in one call”), which implicitly distinguishes it from the sibling add_field by signalling batch behavior. It stops short of naming add_field explicitly, so an agent must infer the single-vs-batch split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of prerequisites, and no reference to the obvious alternative add_field for single-field additions. A reader knows what it does but not when to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_folder_connectionB
Register a folder with the project so its data is easy to browse.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | No | Display name. | |
| folder | Yes | Folder path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It states that the folder is registered but does not disclose persistence, permissions, side effects on the project, idempotency, or whether the folder path must already exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that is front-loaded with the core action. It contains no wasted text and is appropriately sized for the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters and an output schema, so the description need not explain return values. However, for a registration/mutation tool with no annotations, it remains incomplete regarding usage context and behavioral effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are documented in the schema as 'Folder path' and 'Display name.' The description adds no further syntax, format, or constraint details beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb-plus-resource phrase, 'Register a folder with the project,' and adds the practical outcome 'so its data is easy to browse.' It clearly identifies the action, but does not explicitly distinguish this tool from siblings such as list_folder or search_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a context, making folder data easy to browse, but gives no explicit when-to-use guidance, prerequisites, or alternatives. It does not tell an agent when to choose add_folder_connection over nearby data-access tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_joinC
Join a table to a layer on a common field.
| Name | Required | Description | Default |
|---|---|---|---|
| keep_all | No | KEEP_ALL or KEEP_COMMON. | KEEP_ALL |
| map_name | No | Map to act on; defaults to the active map. | |
| join_field | Yes | Field on the join table. | |
| join_table | Yes | Table layer name or dataset path. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| layer_field | Yes | Field on the layer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does not meet it. It does not say whether the join is virtual or materialized, whether an existing join is replaced, what happens on unmatched records (KEEP_ALL vs KEEP_COMMON is only in the schema), or what errors occur on field mismatch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero redundancy, and the operative detail (join target, common field) comes first. It is efficient, though the extreme brevity borders on under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a six-parameter mutation tool with no annotations the description leaves critical gaps: join semantics, replace/overwrite behavior, and permission or field-type requirements are all absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including keep_all and map_name is already documented in the schema. The phrase 'on a common field' loosely gestures at layer_field/join_field but adds no syntax, format, or constraint detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (join) and both resources (table, layer) plus the keying condition (common field). It is clearly distinguishable from the closest sibling, remove_join, though it does not say which join type is produced.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (matching field types, existing join behavior), and no reference to alternatives such as remove_join or add_layer. The agent must infer everything about context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_layerB
Add data to a map from a path or service URL: feature class, shapefile, raster, table, .lyrx layer file or web service.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Dataset path or service URL. | |
| map_name | No | Map to act on; defaults to the active map. | |
| position | No | AUTO_ARRANGE, TOP or BOTTOM. | AUTO_ARRANGE |
| group_layer | No | Optional group layer to add it into. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says data is added but does not disclose what happens on an invalid path, required permissions/licensing, how the target map is chosen (that is only in the schema), or whether an existing layer is overwritten. An output schema exists, which offsets return-value concerns, but the mutation's side effects remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence: verb + destination first, then the accepted input types. No filler, though the enumerated list is long enough that the key 'add to a map' framing is slightly buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema lets the description skip return values, and the schema documents all four parameters, so basics are covered. However, for an unannotated mutation tool it is thin on side effects, failure modes, and how it relates to add_web_layer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, and the description genuinely enriches the path parameter by enumerating the concrete dataset and service types it accepts. Still, it adds nothing to position, group_layer, or map_name beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Add) plus resource (data to a map) and enumerates accepted inputs (feature class, shapefile, raster, table, .lyrx, web service). It is clear and concrete, but does not differentiate itself from the sibling add_web_layer, which it overlaps with by mentioning service URLs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and never mentions alternatives such as add_web_layer or create_map. The agent must infer from the sibling list when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_layout_legendC
Add a legend tied to a layout's map frame.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position in page units. | |
| y | No | Y position in page units. | |
| name | No | Element name. | |
| title | No | Legend title. | |
| width | No | Width in page units. | |
| height | No | Height in page units. | |
| layers | No | Only show these layers in the legend. | |
| style_item | No | Legend style item name. | |
| layout_name | Yes | Layout name. | |
| map_frame_name | No | Map frame to describe. | Map Frame |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about side effects on the layout, whether the change is persisted only via save_project, permission needs, or defaults applied when optional params are omitted. 'Add' implies mutation but no mutation semantics are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-formed sentence with no filler, front-loading the action and target. It is appropriately sized, though it is arguably under-specified rather than merely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema fully documents parameters. However, for a 10-parameter mutation tool with no annotations, the description omits prerequisite and persistence context that an agent would want before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each of the 10 parameters is documented in the schema (x/y in page units, layers to include, style_item, etc.). The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (add) and resource (legend) and scopes it to a layout's map frame, which distinguishes it from sibling add_layout_* tools like add_layout_text or add_layout_scale_bar. It does not explicitly name those siblings, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus other layout-element tools, and no prerequisites stated (e.g., the layout and named map frame must already exist). The agent must infer everything about context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_layout_north_arrowB
Add a north arrow tied to a layout's map frame.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position in page units. | |
| y | No | Y position in page units. | |
| name | No | Element name. | |
| width | No | Width in page units. | |
| height | No | Height in page units. | |
| style_item | No | North arrow style item name. | |
| layout_name | Yes | Layout name. | |
| map_frame_name | No | Map frame to orient to. | Map Frame |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It implies a mutation and a dependency on a layout's map frame, but does not mention persistence, required permissions, effect on existing layout elements, or error conditions when the layout or map frame is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant or filler text. Every word contributes to identifying the action and the target element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is fully described and an output schema exists, so return-value explanation is unnecessary. However, for a mutation tool with no annotations, the description lacks usage context and behavioral detail that would make it complete beyond the minimum viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter's meaning and units. The description adds no parameter-level detail beyond what is structured, and the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Add a north arrow' tied to a layout's map frame. This clearly identifies the tool versus siblings that add legends, scale bars, or pictures. It stops short of explicitly naming alternatives or routing conditions, so sibling differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but gives no guidance on when to use it, when not to use it, or which sibling tools to prefer. An agent must infer usage from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_layout_pictureC
Place an image such as a logo on a layout.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position in page units. | |
| y | No | Y position in page units. | |
| name | No | Element name. | Picture |
| width | No | Width in page units. | |
| height | No | Height in page units. | |
| layout_name | Yes | Layout name. | |
| picture_path | Yes | Image file path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no mention of whether the change persists to disk, whether an existing layout is required, what happens on an invalid picture_path, or whether duplicate names are allowed. 'Place' implies a mutation but adds no operational detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero filler, front-loaded on the action. It is efficient, though the terseness leaves little room for structural cues about required inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and parameter coverage is complete, so return values and argument formats are covered elsewhere. What remains missing for a layout-mutating tool with no annotations is prerequisite/state context (does the layout need to exist, are edits saved), leaving the definition merely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all seven parameters (x, y, name, width, height, layout_name, picture_path) are documented in the schema itself. The description adds no positional, unit, or format semantics beyond what is already structured, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Place an image... on a layout') and names a concrete example (logo), which makes the intent unambiguous. It doesn't explicitly contrast itself with siblings like add_layout_text or add_layout_legend, but the 'picture' resource is distinct enough to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no alternatives offered. It doesn't say whether the layout must exist/be active first, or whether create_layout must precede it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_layout_scale_barB
Add a scale bar tied to a layout's map frame.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position in page units. | |
| y | No | Y position in page units. | |
| name | No | Element name. | |
| width | No | Width in page units. | |
| height | No | Height in page units. | |
| style_item | No | Scale bar style item name. | |
| layout_name | Yes | Layout name. | |
| map_frame_name | No | Map frame to measure. | Map Frame |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It hints that the scale bar is tied to a map frame but omits whether this mutates the layout, what happens if the map frame is missing, whether changes are persisted, or any permission/rate considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence that front-loads the action and resource. No wasted words, though it is minimal to the point of possibly under-specifying.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and a mutation tool that adds an element to a layout, the description should explain side effects, required layout state, or return behavior. It does none of this. The presence of an output schema reduces the need to describe return values, but behavioral aspects remain unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters. The description adds the key semantic that the scale bar is 'tied to' the layout's map frame, clarifying the relationship between layout_name and map_frame_name beyond what the schema's individual descriptions state. Baseline is 3 when schema coverage is high; the relational hint warrants a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: adding a scale bar that is tied to a layout's map frame. It is distinguishable from siblings like add_layout_legend and add_layout_north_arrow by resource, though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites (e.g., layout must exist), and no exclusions. The description is purely a statement of function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_layout_textB
Add a text element such as a title or credits to a layout.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position in page units. | |
| y | No | Y position in page units. | |
| bold | No | Bold text. | |
| font | No | Font family. | Tahoma |
| name | No | Element name. | |
| text | Yes | Text to display. | |
| color | No | Text colour as [r, g, b]. | |
| italic | No | Italic text. | |
| font_size | No | Font size in points. | |
| layout_name | Yes | Layout name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only says it adds a text element; it does not disclose whether the layout must exist, if it requires an active project, whether the operation is reversible, or what happens on success/failure. Significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words. It is front-loaded with the action and resource. Could be slightly shorter, but it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, no annotations, and an output schema, the description is minimally adequate. It omits behavioral context like prerequisites and side effects, but the output schema may cover return values. For a mutation tool with no annotations, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 10 parameters are already well-documented in the schema. The description adds no parameter details beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Add') and resource ('text element such as a title or credits') to a layout, distinguishing it from siblings like add_layout_legend or add_layout_picture. It doesn't explicitly name alternatives, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and the required parameters (layout_name, text), but there is no explicit guidance on when to use this tool versus other layout element tools. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_map_frameC
Add a map frame to a layout at a page position.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Lower-left X in page units. | |
| y | No | Lower-left Y in page units. | |
| name | No | Element name. | Map Frame |
| width | No | Frame width in page units. | |
| height | No | Frame height in page units. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layout_name | Yes | Layout name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses little beyond the act of creation. It does not state that this mutates the layout, whether the change is persisted, what happens if layout_name or map_name is invalid, or that an existing element name may collide. The existence of an output schema covers return values, but the mutation semantics remain opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. It is efficient, though its brevity comes at the cost of the guidance dimensions rather than being a model of tight-but-complete writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A fully documented schema and an output schema mean parameters and returns are covered, so the description need not restate them. However, for a mutating layout-construction tool with zero annotations, the absence of any prerequisite or side-effect statement leaves a real gap that the structured fields cannot fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented in the schema. The description only gestures at 'a page position', which corresponds to x/y, adding nothing about units, defaults, sizing, or the map_name fallback that the schema does not already say. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (add) plus resource (map frame) plus target container (a layout) and rough placement (a page position). An agent knows exactly what the tool does, but there is no differentiation from the many layout-element siblings such as add_layout_text, add_layout_legend, or add_layout_scale_bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites (e.g. that the named layout must already exist), and no routing against sibling layout tools. The only hint is the parenthetical notion of placement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_web_layerB
Add a web service layer (Feature/Map/Image service, WMS, WMTS, vector tile) by URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Service URL. | |
| map_name | No | Map to act on; defaults to the active map. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a mutation ('Add') but does not disclose permission requirements, side effects on the active map, authentication needs for the service URL, or what happens if the URL is unreachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a compact parenthetical list of supported service types. It is appropriately sized for a straightforward add operation and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full schema description coverage, the return and parameter details are covered elsewhere. However, with no annotations, the description should clarify where the layer is added (active map vs. named map) and any side effects, which it leaves to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents 'url' as 'Service URL' and 'map_name' as the target map. The description reinforces that a web service URL is expected and lists service types, but adds no syntax, format, or constraint details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource — 'Add a web service layer' — and enumerates the supported service types (Feature/Map/Image service, WMS, WMTS, vector tile). It implicitly distinguishes from the sibling add_layer by scoping to web services, but it does not name or contrast any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but gives no guidance on when to use it versus alternatives such as add_layer or get_capabilities. There is no mention of prerequisites, when-not conditions, or how to choose between adding a local layer and a web layer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alter_fieldC
Rename a field or change its alias/length.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| new_name | No | New field name. | |
| new_alias | No | New alias. | |
| field_name | Yes | Existing field name. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| field_length | No | New length for TEXT fields. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states the mutation types but omits permissions, reversibility, conflict behavior for new_name, or whether field_length is limited to text fields beyond a schema note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is concise and easy to scan, though its extreme brevity leaves some important context unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema and full parameter descriptions, this is a mutation tool with no annotations and no usage or safety guidance. The description does not say when to use it, what it requires, or what side effects it has, so it is not complete enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds no parameter semantics beyond what the schema already documents. Baseline 3 applies because the schema does the heavy lifting for all six parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Rename') and resource ('field'), plus alias/length alteration variants. It is clearly distinct from add_field/delete_field siblings, but does not explicitly name alternatives or scope conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or comparison to siblings such as add_field, delete_field, or calculate_field. The description only says what the tool can do, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_bookmarkB
Zoom the map view to a bookmark.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| bookmark_name | Yes | Bookmark to apply. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does not disclose what happens if the bookmark is missing, whether the bookmark is saved to a specific map, or whether the view change is persisted — all relevant for a tool that mutates map view state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is appropriately sized for a simple two-parameter tool, though it is arguably sparse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and both parameters are fully described in the schema. The description is adequate for this low-complexity tool, with only error behavior left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema, establishing a baseline of 3. The description adds no extra semantics such as how bookmark names are resolved or what happens when map_name is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Zoom') and resource ('the map view'), clearly identifying the operation. It distinguishes itself from bookmark siblings like list_bookmarks and create_bookmark by implication, though it never explicitly names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as zoom_to_layer, zoom_to_selection, or set_map_view. The agent must infer that the bookmark must already exist and that this only changes the view extent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_symbology_from_layerB
Copy symbology from a .lyrx file or another layer.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| symbology_source | Yes | Path to a .lyrx file, or the name of another layer. | |
| update_symbology | No | MAINTAIN, UPDATE or DEFAULT -- how to handle differing field values. | MAINTAIN |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but discloses almost nothing beyond the copy action. It does not say whether existing symbology is overwritten, what permissions are needed, or how the update_symbology option affects behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero waste, front-loading the verb and resource immediately. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a moderate-complexity mutation on layer symbology with no annotations. The output schema covers return values, and the input schema is fully documented, but the description omits behavioral context such as overwrite semantics or required map state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all four parameters. The description adds no extra parameter meaning beyond restating that symbology_source can be a .lyrx file or another layer. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Copy symbology') and resource, and names the possible sources (.lyrx file or another layer). It is clear but does not explicitly differentiate from siblings like get_layer_symbology or set_layer_renderer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, prerequisites, or alternative tools are mentioned. The agent gets only the action itself, not the context for selecting this tool over related symbology tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_fieldC
Calculate field values across a layer, e.g. expression "!Shape_Area! / 10000".
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| code_block | No | Optional helper function definitions. | |
| expression | Yes | Expression. | |
| field_name | Yes | Field to write to. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| expression_type | No | PYTHON3, ARCADE or SQL. | PYTHON3 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses almost nothing. It doesn't state that this mutates layer data (a write operation likely requiring save_edits), which fields/rows are affected, permission needs, or reversibility. The expression example is illustrative but not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with an inline example that is front-loaded and wastes no words. It avoids padding but is arguably thin rather than over-long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, but with zero annotations on a data-mutating tool the description should disclose the write/save semantics and side effects it omits. For a 6-parameter geoprocessing-style tool, this leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters (map_name, code_block, expression, field_name, layer_name, expression_type). The description only adds expression syntax via the example, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Calculate) and resource (field values) with concrete scope ('across a layer') and a sample expression, so the agent understands it computes values into fields. It does not, however, distinguish itself from siblings like add_field, alter_field, or update_features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternatives are named. The agent must infer the context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_extensionB
Check, and optionally check out, an ArcGIS extension licence.
| Name | Required | Description | Default |
|---|---|---|---|
| checkout | No | Check the licence out if it is available. | |
| extension | Yes | "Spatial", "3D", "Network", "ImageAnalyst", "GeoStats", ... |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It mentions the optional checkout but does not disclose that checkout consumes/holds a licence (a stateful mutation), whether it is reversible or auto-returned, or any permission requirements. The one hint it gives is already present in the schema's checkout parameter description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading the primary action and appending the optional variant. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema documents both parameters. What is missing is the behavioral context a licence tool needs: whether checkout has persistent state consequences. Adequate but with a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters documented and the extension parameter listing example values. The description adds no semantics beyond what the schema already states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) plus resource (ArcGIS extension licence) and notes the optional checkout variant. No sibling tool in the list deals with licence state, so sibling differentiation is not needed, but the sentence is terse enough that the exact distinction between 'check' and 'check out' is left to the parameter name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, nor any prerequisite (e.g. that a licence server must be reachable, or that checkout is needed before extension-dependent geoprocessing). Usage is only loosely implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_selectionA
Clear the selection on one layer, or on every layer in the map.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | No | Layer to clear; default all layers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the scope of the operation (a single layer vs. every layer) but does not state whether clearing all layers is the default, that other layers are unaffected by a single-layer clear, or the reversibility/permission profile of the mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, and the layer-vs-all-layers distinction is front-loaded so the agent immediately grasps the two operating modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two optional, fully documented parameters and an output schema covering return values, the description is nearly sufficient for correct invocation. It could explicitly note that all layers is the default and that the operation is state-only, but the core requirement is met.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both map_name and layer_name (with their 'defaults to active map' / 'default all layers' semantics) are already documented in the schema. The description's phrase 'one layer, or on every layer' adds a light restatement but no new syntax or format detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('clear') and resource ('selection') plus the scope (one layer or every layer in the map). This is clear and allows an agent to infer it is the inverse of set_selection, but it does not name that sibling explicitly to harden the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied – one reads that you call this when you want to deselect. There is no explicit when-to-use, when-not-to-use, or reference to set_selection/zoom_to_selection as the alternative. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_featuresC
Count features, optionally matching a where clause.
| Name | Required | Description | Default |
|---|---|---|---|
| where | No | SQL where clause. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no read-only/safety profile, no statement that counting avoids materializing geometries, no note on cost for large layers. The existence of an output schema covers return shape, but the description adds no behavioral context beyond the title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, and the optional-filter qualifier is placed correctly after the core action. It is efficient, though its brevity is partly under-specification rather than pure conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-required-parameter count tool with a full output schema and complete parameter documentation, the description is minimally sufficient. It nonetheless omits any guidance on how this differs from other feature-reading siblings, which is the main gap given the crowded tool family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – layer_name, map_name, and where are all documented in the schema, including the map_name default and the SQL nature of the where clause. The description merely echoes the where parameter, adding no syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Count features") with the optional filtering scope, so the operation is unambiguous. It does not differentiate itself from siblings like get_features or summarize_features, which also operate on layer features, but the name plus description make the core action clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "optionally matching a where clause" hints at filtering but gives no when-to-use guidance, no prerequisites, and no routing against get_features, get_field_statistics, or summarize_features. An agent must infer that this is the lightweight counting alternative to pulling full feature records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_bookmarkB
Save the current view, or a given extent, as a named bookmark.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Bookmark name. | |
| extent | No | Extent to bookmark instead of the current view. | |
| map_name | No | Map to act on; defaults to the active map. | |
| description | No | Optional bookmark description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core action but does not mention side effects, persistence, overwrite behavior for duplicate names, required preconditions (e.g., an open map/project), or permissions, leaving significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It efficiently conveys the core action and scope, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, full schema coverage, and the presence of an output schema, the description need not explain return values and the parameters are well documented. However, it lacks usage guidance relative to siblings and any behavioral caveats, leaving notable gaps for an agent deciding when to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters (name, extent, map_name, description) with meaningful descriptions. The description adds only a slight conceptual mapping ('current view' vs 'given extent'), but no syntax or format details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Save') and resource ('bookmark'), along with the scope ('current view, or a given extent') and that it creates a 'named' bookmark. This clearly separates it from siblings like list_bookmarks, apply_bookmark, and delete_bookmark, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this is the tool for creating a bookmark. However, the description offers no explicit when-to-use guidance or mention of alternatives such as apply_bookmark for applying an existing bookmark. The agent can infer the context but receives no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_feature_classB
Create an empty feature class, by default in the project's default geodatabase, and add it to the map.
| Name | Required | Description | Default |
|---|---|---|---|
| epsg | No | Coordinate system WKID, e.g. 32647. | |
| name | Yes | Feature class name. | |
| has_m | No | ENABLED or DISABLED. | DISABLED |
| has_z | No | ENABLED or DISABLED. | DISABLED |
| fields | No | Fields to create, e.g. [{"name": "NAME", "type": "TEXT", "length": 50}]. | |
| map_name | No | Map to act on; defaults to the active map. | |
| out_path | No | Target geodatabase or folder. | |
| template | No | Dataset to copy the schema from. | |
| add_to_map | No | Add the result to the map. | |
| geometry_type | No | POINT, MULTIPOINT, POLYLINE or POLYGON. | POLYGON |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a genuinely non-obvious default: that the feature class lands in the project's default geodatabase and is added to the map, which is not derivable from the schema (out_path defaults to null). However, it says nothing about failure modes, name collisions, permission/project prerequisites, or whether the project must be saved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero waste, front-loaded with the action and followed by the two most decision-relevant defaults. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema fully documents the 10 parameters. What remains missing for a mutation tool with no annotations is usage routing against siblings and any note on error/prerequisite behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 10 parameters (epsg, fields, template, geometry_type, etc.). The description adds only the meaning of the default output location, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create an empty feature class') and adds two meaningful scope details: the default output geodatabase and that the result is added to the map. It is clear enough to distinguish from create_table/create_file_geodatabase, but it never names a sibling or contrast case explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance. With siblings like create_table, create_file_geodatabase, and add_layer in the same namespace, the agent gets no help choosing among them. Only default behavior ('by default in the project's default geodatabase') is stated, which is not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_file_geodatabaseC
Create a new file geodatabase.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Geodatabase name (.gdb is added if missing). | |
| folder | No | Parent folder; default the project home folder. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It does not say what permissions or workspace state are required, what happens if the geodatabase already exists, or how it relates to the project home default that the schema mentions. For a mutating creation tool this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single well-formed sentence with no wasted words, but it is also nearly a restatement of the tool name, so brevity here reflects under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the parameters are fully covered by the schema. However, with no annotations and no usage guidance, the definition is only minimally viable for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'name' (with .gdb suffix behavior) and 'folder' (default project home) are already fully documented. The description adds nothing beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Create) and resource (file geodatabase), which is enough to distinguish it from siblings like create_feature_class or create_table that operate on different dataset types. It is clear but adds no scoping detail beyond the name-and-resource pairing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as create_feature_class or add_folder_connection, and no prerequisites (e.g., workspace/folder must exist) are mentioned. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_group_layerB
Create a group layer, optionally moving existing layers into it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Group layer name. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_names | No | Layers to move into the group. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the key side effect that existing layers can optionally be moved into the new group, but it does not cover permission requirements, ordering effects, failure behavior for invalid layer names, or what happens to pre-existing group structures. Some valuable context, but far from complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It leads with the primary action and appends the optional behavior efficiently. Well-sized for a simple creation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, the input schema fully documents all three parameters, and an output schema exists, so the description need not explain return values. It covers the core action and optional move behavior adequately, though it omits some usage and edge-case context. Overall complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, map_name, and layer_names in full. The description only echoes the layer_names concept by mentioning 'moving existing layers into it,' adding no syntax, format, or default details beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Create a group layer.' The added phrase 'optionally moving existing layers into it' clarifies the tool's scope, but it does not explicitly differentiate itself from siblings such as add_layer or move_layer. Clear purpose, but no named sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like add_layer or move_layer, nor any prerequisites or exclusions. The optional layer_names behavior implies you can combine group creation with moving layers, but this is not framed as usage guidance. This is essentially implied-only context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_layoutB
Create a new layout page, by default with a map frame filling it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Layout name. | |
| margin | No | Margin around the map frame, in page units. | |
| map_name | No | Map to act on; defaults to the active map. | |
| page_units | No | INCH, CENTIMETER, MILLIMETER or POINT. | INCH |
| page_width | No | Page width. | |
| page_height | No | Page height. | |
| add_map_frame | No | Add a map frame filling the page. | |
| map_frame_name | No | Name for the map frame. | Map Frame |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only mentions the default map frame, which is already captured by the schema defaults, and omits whether this is a persistent creation, requires an open project, or affects the active map.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence front-loaded with the verb and resource, with zero waste. It is appropriately sized for a tool whose parameters are fully described elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the input schema fully documents parameters, reducing the description's burden. However, with no annotations, the description should provide more behavioral context (e.g., prerequisites, side effects) for a creation tool; the one-sentence description leaves that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all 8 parameters are documented in the schema. The description adds no parameter-specific meaning beyond the default map frame behavior already encoded in the schema defaults, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Create' and resource 'layout page', and notes the default map frame. It does not explicitly distinguish itself from sibling layout tools like add_map_frame or create_map, but the resource type is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, prerequisites, or alternatives are mentioned. Sibling tools such as list_layouts or preview_layout exist but are not referenced, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mapC
Create a new map or scene in the project.
| Name | Required | Description | Default |
|---|---|---|---|
| epsg | No | Optional coordinate system WKID, e.g. 32647. | |
| name | Yes | Name for the new map. | |
| basemap | No | Optional basemap to add, e.g. 'Topographic'. | |
| map_type | No | MAP or SCENE. | MAP |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool creates a map, but says nothing about permissions, whether the new map becomes the active map, whether the change persists only after save_project, or any error conditions. For a mutation tool with zero annotation coverage, this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single wasted-free sentence with the key action front-loaded. It is arguably too terse for a mutation tool, but there is no padding or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but the absence of annotations and any behavioral/prerequisite context leaves a mutation tool under-specified for an agent deciding whether and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so epsg, basemap, name, and map_type are already documented in the schema with examples. The description only echoes map/scene, which corresponds to map_type, adding little beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Create a new map or scene in the project" gives a specific verb (create) and resource (map/scene), and the mention of both map and scene maps to the map_type parameter. It is clearly distinguishable from siblings like list_maps or remove_map, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, nor any prerequisites (e.g. project open, whether the map becomes active, whether it must be created before add_layer). The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_tableB
Create an empty standalone table.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Table name. | |
| fields | No | Fields to create. | |
| map_name | No | Map to act on; defaults to the active map. | |
| out_path | No | Target geodatabase or folder. | |
| template | No | Table to copy the schema from. | |
| add_to_map | No | Add the result to the map. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says the table is empty and standalone but does not disclose side effects such as writing to a workspace, requiring an out_path or active geodatabase, or adding the result to the map by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It immediately states the core action and result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and parameter descriptions are complete, so the description does not need to explain return values or parameter syntax. However, for a creation tool with no annotations, it still omits important usage and side-effect context, leaving it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters well. The description adds no parameter meaning beyond what is already in the schema, which matches the baseline of 3 for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create an empty standalone table'). The word 'standalone' distinguishes this from the sibling create_feature_class, which creates a spatial feature class rather than a non-spatial table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, prerequisites, or alternatives. It does not mention create_feature_class, add_field, or any condition under which another tool would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_bookmarkB
Delete a bookmark from a map.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| bookmark_name | Yes | Bookmark to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only restates that a deletion occurs; it does not disclose whether the deletion is permanent, what permissions are needed, what happens if the bookmark does not exist, or how the active map default behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It efficiently communicates the core action without wasting tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with a rich input schema and an output schema, the description is minimally adequate. However, the absence of annotations means it should do more to cover destructive behavior and usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the input schema. The description adds only 'from a map' and no additional syntax, default behavior, or edge-case meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete'), resource ('bookmark'), and scope ('from a map'). It distinguishes the tool from siblings such as list_bookmarks, create_bookmark, and apply_bookmark without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, nor any prerequisites, exclusions, or warnings about deletion. The agent must infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_datasetB
Delete a dataset from disk or a geodatabase. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It adds one crucial behavioral fact — 'This cannot be undone' — which signals destructiveness and irreversibility. However, it omits permission requirements, whether it requires the dataset to be unopened, and what happens to related resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and immediately followed by the critical irreversibility warning. Zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with an output schema present (return values need not be explained), the essential information — action, scope, and irreversibility — is covered. Missing only permissions/prerequisite details, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage ('Dataset path.'). The description doesn't add path format details beyond the schema, so it neither helps nor hurts. Baseline 3 applies when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a dataset') and clarifies scope ('from disk or a geodatabase'), distinguishing it from sibling delete_features (feature deletion) and delete_layout. Clear but doesn't explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like delete_features or truncate_table, nor prerequisites (e.g., schema locks, required connections). The irreversibility warning is a caution, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_featuresC
Delete rows matching a where clause.
| Name | Required | Description | Default |
|---|---|---|---|
| where | No | SQL where clause selecting rows to delete. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| save_edits | No | Commit the edits immediately instead of leaving them pending. | |
| allow_delete_all | No | Required confirmation when no where clause is given. | |
| use_edit_session | No | Wrap in an edit session. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a destructive tool, yet it only says 'Delete rows'. It omits that the operation is irreversible, that deletions stay pending unless save_edits is set, and that allow_delete_all gates a full-table wipe. The schema hints at these behaviors, but the description itself adds nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action front-loaded and no filler. It is efficient, though arguably under-specified rather than maximally economical for a six-parameter destructive tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a destructive, six-parameter mutation with zero annotations the description leaves critical gaps: irreversibility, the confirmation gate, and the pending-vs-committed edit distinction. An agent could plausibly call it without realizing edits are not persisted by default.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents where, map_name, layer_name, save_edits, allow_delete_all and use_edit_session. The description only echoes the where clause and adds no syntax, format, or interaction detail beyond the schema, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Delete rows') plus a scope qualifier ('matching a where clause'). It is clearly distinct from dataset-level siblings like delete_dataset or truncate_table, though it never names an alternative to make that contrast explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing about when to prefer this over truncate_table or delete_dataset, no mention of the edit-session workflow, and no hint that a follow-up save_edits may be required. The agent must infer the entire workflow from sibling names and schema defaults.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fieldC
Delete one or more fields.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| field_name | No | Single field to delete. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| field_names | No | Several fields to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not say whether the deletion is permanent/irreversible, whether it requires save_edits or an active edit session, whether it works on shapefile/table data sources, or what happens to dependent data — significant gaps for a destructive mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and resource, with no filler. It is arguably under-specified rather than padded, so it earns credit for efficiency but not a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations, the description omits edit-session requirements, irreversibility, and permission context. The output schema and parameter descriptions partially compensate on return values and arguments, but the behavioral gaps remain material.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is documented in the schema, giving a baseline of 3. The description's 'one or more fields' hints that field_name and field_names are alternative ways to specify targets, but it never clarifies that they are mutually exclusive or whether both can be passed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and resource (fields) with scope (one or more), so the basic operation is unambiguous. However, it does not distinguish this from siblings like alter_field or delete_dataset, nor clarify the relationship to add_field/delete_features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no note about required edit sessions or save_edits, and no mention of alternatives such as alter_field or delete_dataset. The agent must infer applicability entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_layoutC
Delete a layout from the project.
| Name | Required | Description | Default |
|---|---|---|---|
| layout_name | Yes | Layout to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether deletion is permanent, whether layout elements are affected, or whether the layout must be closed/saved first. For a destructive tool this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, and the action is front-loaded. It is efficient, though brevity here shades into under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required param, output schema present so return values need no explanation), which lowers the bar. Still, as an unannotated destructive operation it should at minimum warn that the deletion is permanent - that omission keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single layout_name parameter is documented in the schema as 'Layout to delete,' so the description adds no parameter meaning beyond the structured data. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and resource (a layout from the project), so the agent knows exactly what the tool does. However, it offers no differentiation from close siblings such as delete_layout_element or remove_map, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of delete_layout_element, nor any warning about prerequisites, confirmation, or irreversibility. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_layout_elementC
Remove an element from a layout.
| Name | Required | Description | Default |
|---|---|---|---|
| layout_name | Yes | Layout name. | |
| element_name | Yes | Element to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state whether the deletion is permanent, whether it requires the layout to be open, or what the output schema returns. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero waste. It is front-loaded and efficient, though perhaps overly terse for a mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, an output schema, and complete parameter documentation, but the description fails to describe side effects, reversibility, or error conditions. Given it is a destructive operation, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the two parameters are already documented in the schema. The description adds no syntax, format, or constraint details beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (element from a layout). It does not distinguish itself from siblings like set_layout_element or delete_layout, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as set_layout_element or delete_layout, nor prerequisites or side effects. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_datasetA
Describe any dataset by path -- type, geometry, CRS, extent, fields and row count -- without adding it to a map.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the implicit non-mutating, non-map-changing behavior ('without adding it to a map') and enumerates the returned metadata fields. It doesn't state whether it works on local vs remote datasets or error behavior, but it adds meaningful behavioral context beyond a bare 'describe'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence; the resource, the operation, and the output fields are packed efficiently with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be explained, and the description still names the key fields. For a simple one-parameter read tool this is essentially complete; it could note scope limitations (local vs remote) but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and only one parameter exists, so schema does the heavy lifting (baseline 3 for high coverage). However the description adds value by framing 'path' as 'any dataset by path', signaling the parameter accepts arbitrary dataset paths, slightly above baseline. No param = 4 floor context; with 1 param this is a fair 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (describe) + resource (dataset) + the exact information returned (type, geometry, CRS, extent, fields, row count). The 'without adding it to a map' clause sharply distinguishes it from add_layer and get_layer_info in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context: it describes a dataset by path. The 'without adding it to a map' scoping implies this is the right tool when you don't want to load a layer, which differentiates from get_layer_info/add_layer. No explicit when-not or named alternative, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_geoprocessing_toolA
Get a tool's parameters, data types, defaults and usage text before running it.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes | e.g. "analysis.Buffer" or "Buffer_analysis". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so reasonably: 'Get' and 'before running it' signal a read-only, non-executing metadata lookup. It does not explicitly state that no side effects occur or describe auth requirements, but for this tool type the read-only implication is strong and accurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words. Every element—verb, returned metadata categories, and timing relative to execution—earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter, full schema coverage, and an existing output schema, the description is complete enough for correct selection and invocation. It states what metadata is returned and when to call it; no further detail is needed for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter tool_name already includes an example format, so the schema does the necessary work. The description adds no further parameter semantics beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('a tool's parameters, data types, defaults and usage text'), making the purpose immediately clear. The phrase 'before running it' distinguishes this metadata-retrieval tool from execution siblings such as run_geoprocessing_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use it 'before running it,' which gives a clear usage context relative to execution tools. It does not name an alternative tool or give a when-not condition, but the timing guidance is sufficient for this simple describe operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnoseA
Self-check the connection: ArcGIS Pro version, licence, open project, active map, open map view and write access. Run this first when something does not work.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses what is inspected, but never states that it is a read-only, non-destructive operation or whether it reports errors versus returning status values. Adequate but incomplete for a diagnostic tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the scope is listed first, then the usage trigger. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not the description's job, and with zero parameters and a 100%-covered schema there is nothing further an agent needs to invoke it correctly. The description supplies the scope and trigger, which is the right amount.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to clarify beyond the empty schema, which is already fully covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('self-check') and resource ('connection') and enumerates exactly what is inspected (version, licence, project, active map, map view, write access). This differentiates it from sibling diagnostics like ping and get_arcgis_info, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger condition ('Run this first when something does not work'), which is actionable troubleshooting guidance. It falls short of 5 because it does not name alternative diagnostic tools (ping, get_capabilities, get_arcgis_info) or state when this is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discard_editsB
Throw away pending edits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the entire behavioral burden. 'Throw away' does signal data loss, but it omits that the operation is irreversible, whether an edit session must be active, and whether confirmation/permissions are required for a destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence that is front-loaded and free of padding. It is arguably too terse for a destructive operation, but there is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a destructive, annotation-free tool the description leaves key behavior (irreversibility, edit-session prerequisite, alternative save_edits) unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is fully covered by definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb-plus-resource phrasing ('Throw away pending edits') clearly states the operation and is easy to distinguish from the sibling save_edits. It doesn't explicitly name the sibling or the state it operates on, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus save_edits, nor any prerequisite such as needing an active edit session or an open workspace. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_layerB
Copy a layer within the map so it can be symbolised differently.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| new_name | No | Name for the copy. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It implies mutation (a copy is added to the map) but does not say whether the new layer lands in the table of contents, whether the original is untouched, what the copy is named if new_name is omitted, or whether the operation is reversible - all material for a write tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no padding, and the purpose ('copy a layer within the map') is front-loaded ahead of the rationale. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the schema fully documents the three parameters. The remaining gap is behavioural detail about the resulting duplicate (position in the TOC, default name), which for a simple duplication tool is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so map_name, new_name, and layer_name are already documented in the schema, including the default-to-active-map behaviour. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Copy a layer') plus scope ('within the map'), so an agent immediately knows this duplicates a layer rather than editing it. It does not contrast itself with siblings that also change how a layer is drawn, notably apply_symbology_from_layer or set_layer_renderer, which is the main ambiguity a caller faces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'so it can be symbolised differently' implies the intended use case - you want two visual representations of the same data - but never states when to prefer duplication over apply_symbology_from_layer or set_layer_renderer, and gives no prerequisites or exclusions. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_arcpy_codeA
Run Python inside ArcGIS Pro. arcpy is already imported and arcpy.mp.ArcGISProject('CURRENT') is the open project. Variables persist between calls, print() output is captured, and the value of a final expression is returned. Use this whenever no dedicated tool covers the task.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python source to run. | |
| reset_namespace | No | Forget variables kept from earlier calls. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry full behavioral load and does: it discloses that the ArcGISProject('CURRENT') binding is pre-initialized, that variables persist between calls (a significant stateful behavior), and that print() output is captured and final expressions returned. These are non-obvious execution semantics critical to correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences: first the what/where, then the execution semantics, then the routing rule. Zero waste, front-loaded purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, an output schema, and a straightforward 2-param schema, the description covers purpose, environment, statefulness, output handling, and usage guidance. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'code' and 'reset_namespace' are documented in the schema), so the schema already carries parameter meaning. The description adds only context about the execution environment rather than parameter-level guidance. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (run Python) on a specific resource/context (inside ArcGIS Pro) with an environment detail (arcpy pre-imported). Clearly distinguishes itself from the many dedicated sibling tools by framing itself as the general-purpose escape hatch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'whenever no dedicated tool covers the task.' This is a textbook routing rule for a fallback tool within a large sibling set of CRUD operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_featuresA
Export a layer -- honouring its current selection and definition query -- to a new dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| where | No | Extra where clause. | |
| map_name | No | Map to act on; defaults to the active map. | |
| out_path | Yes | Output dataset path. | |
| add_to_map | No | Add the result to the map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose a genuinely important trait — the output is shaped by the layer's live selection and definition query — but omits other critical behaviors: whether an existing dataset at out_path is overwritten, what happens to the selection/definition-query interaction with the `where` parameter, and what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with the behavioral caveat set off by em-dashes so it does not dilute the main clause. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers the key filtering behavior. Still, for a write-to-disk tool with no annotations it should say whether out_path is overwritten, what dataset types are acceptable, and whether add_to_map applies only when a map context exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real meaning by clarifying that there is already an implicit where (the layer's definition query) that the schema's 'Extra where clause' parameter supplements, and that selection state is an implicit filter not represented by any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Export') and resource ('a layer') plus the destination ('to a new dataset'), which is enough to distinguish it from export_map_view, export_layout, and export_map_series in the sibling list. It does not explicitly name any sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: mentioning that the export honours the current selection and definition query signals this is the tool to use when you want a filtered/selected subset exported. However, there is no explicit when-to-use, when-not-to-use, or named alternative (e.g., get_features or run_geoprocessing_tool for plain copies).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_layoutA
Export a layout to PDF / PNG / JPEG / SVG / TIFF. PNG and JPEG come back as an inline image so the result can be checked.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | Export resolution. | |
| layout_name | Yes | Layout name. | |
| output_path | Yes | Output file; the format follows the extension. | |
| return_image | No | Return PNG/JPEG output inline. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it does disclose two real behaviors: format is driven by the output extension and PNG/JPEG are returned inline. It omits whether an existing file at output_path is overwritten, permission requirements, and whether the file is written to a local or server path — significant gaps for a file-writing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and the supported formats, with no filler. Every clause carries information the agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-required-param export tool with no output schema and no annotations, the description covers formats and the inline-image return but leaves out the side-effect profile (overwrite behavior, where the file lands). It is adequate to call, but not complete for a mutating file-export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so dpi, layout_name, output_path, and return_image are already documented, and the baseline is 3. The description adds only the extension-determines-format and inline-image details, which restate what output_path and return_image already say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb (export) and resource (layout) plus the enumerated output formats, so the agent knows exactly what the tool produces. It does not, however, distinguish itself from siblings like export_map_view or export_map_series, which also write rendered output to disk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that PNG/JPEG come back inline so the result can be checked implies a reason to pick those formats, which is a mild usage hint. There is no explicit when-to-use guidance relative to export_map_view or export_map_series, and no prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_map_seriesB
Export a layout's map series (map book) to a multi-page PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | Export resolution. | |
| page_range | No | Pages to export, e.g. "1-5,8". | |
| layout_name | Yes | Layout name. | |
| output_path | Yes | Output PDF path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the resulting artifact (a multi-page PDF written to output_path). However, it says nothing about overwrite behavior for an existing file, required permissions/ArcGIS Pro session state, or failure modes when a layout lacks a map series.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and the artifact with zero filler. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and all four parameters are covered by the schema. The only real gap is the absence of any prerequisite or overwrite context, which is minor for a straightforward export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema. The description adds no syntax or format detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Export) and resource (a layout's map series / map book) plus the output artifact (multi-page PDF). It is distinguishable from siblings like export_layout or preview_layout by name, though it never explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g., that the layout must have a map series enabled), and no routing away from export_layout for single-page exports. The agent is left to infer the choice from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_map_viewA
Render the map view to PNG and return the image so it can be looked at -- the way to visually check a map. Requires the map's tab to be open in ArcGIS Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | Resolution. | |
| width | No | Image width in pixels. | |
| height | No | Image height in pixels. | |
| map_name | No | Map to act on; defaults to the active map. | |
| output_path | No | Optional file to save to; omit for a temporary image. | |
| return_image | No | Return the image inline. | |
| zoom_to_layer | No | Zoom to this layer before exporting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the environmental precondition (the map tab must be open) and the return format (an inline image), which goes beyond the schema. It does not state error behavior when the tab is closed, whether a file is written when output_path is supplied, or any side effects/reversibility, so the behavioral picture is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core action is front-loaded before the prerequisite. Every clause earns its place by adding either purpose or a constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with 100% schema coverage, no annotations, and no output schema, the description covers the essentials: what it renders, what it returns, and the environment requirement. It stops short of describing failure modes or how file output interacts with return_image, which would be the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so dpi, width, height, map_name, output_path, return_image, and zoom_to_layer are already documented in the schema. The description adds no syntax, format, or interaction detail (e.g., how zoom_to_layer interacts with width/height) beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: 'Render the map view to PNG and return the image,' which is unambiguous about the output artifact. It also frames intent ('the way to visually check a map'), implicitly separating it from coordinate-returning siblings like get_map_view. However, it never names a sibling explicitly, so an agent must infer the boundary from intent alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for use ('the way to visually check a map') plus a hard prerequisite ('Requires the map's tab to be open in ArcGIS Pro'). There is no explicit when-not guidance or named alternative such as export_layout or export_map_series, so routing among export siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_arcgis_infoB
ArcGIS Pro version, licence level, available extensions and the current project path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, but for a zero-parameter read of local application metadata the risk surface is small. It does disclose the categories of data returned (version, licence, extensions, project path), which implicitly signals a non-mutating information fetch, but it never explicitly states that it is read-only or side-effect free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the most salient fact (ArcGIS Pro version). It is efficient with no filler, though the terseness comes at the cost of the verb and any usage framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and an output schema present, the description does not need to enumerate return fields or formats. It states the scope of what is inspected (Pro installation plus current project path), which is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. No parameter-level details are missing or needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resources returned (version, licence level, extensions, project path), which is more than a tautology. However, it is a noun phrase with no verb and it does not distinguish this tool from nearby siblings such as get_project_info, get_capabilities, get_environment, or diagnose, all of which plausibly overlap with 'current environment info'. An agent must guess which of these to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, no exclusions, and no named alternative. Given that get_project_info and get_capabilities appear in the same sibling list, the absence of routing guidance is a real gap rather than a trivial omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_broken_layersA
List layers across all maps whose data source is missing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. 'List' implies a non-mutating scan and the phrase 'across all maps' usefully discloses that the search is global, but it says nothing about cost, whether sources are checked on disk versus network, or how results are ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the scope ('across all maps') and the filter ('whose data source is missing') stated immediately. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. For a zero-parameter read tool this covers what an agent needs, though a pointer to repair_layer_source as the natural follow-up would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; the baseline of 4 applies. Nothing in the description misrepresents the (empty) argument set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('layers') with a precise filter: 'whose data source is missing', scoped 'across all maps'. This clearly separates it from the sibling get_layers, which lists all layers without a health filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The condition that motivates use (missing data sources) is implied by the description, and it pairs naturally with repair_layer_source, but the description never states when to call this versus get_layers, diagnose, or repair_layer_source, nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesA
List every command the connected bridge supports, grouped by area. Use this to discover functionality beyond the named tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses that output is grouped by area, but says nothing about volume of output, whether it is cached/static, or whether the bridge connection must be validated first. Adequate but thin for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first and usage hint second, with no filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. The description need only cover purpose and usage, which it does; the only gap is behavioral context (output size/cost) that annotations would normally carry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which establishes the baseline of 4. Schema coverage is 100% and there is nothing to disambiguate, so no further parameter discussion is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List every command the connected bridge supports') and adds the grouping behavior. Among a large sibling set it doesn't name or contrast any specific alternative, so the differentiation relies on the reader inferring that a meta-discovery tool is distinct from the domain-specific tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to discover functionality beyond the named tools' gives clear context for when to reach for it, which is genuinely useful in a large toolset. No explicit when-not or named alternatives are provided, but the discovery framing is sufficient to route most agents correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_environmentA
Read the current arcpy geoprocessing environment settings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but only partially: 'Read' correctly conveys a non-mutating inspection, and 'current' implies a live snapshot rather than cached values. It does not state whether any permissions or an active project/workspace are required to read environment settings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource at the start and zero filler. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with a dedicated output schema, the description needs only to establish what is read. Return-value details are covered by the output schema, and the sibling set_environment covers the write path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No misleading parameter claims are made.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (arcpy geoprocessing environment settings), which is more than a restatement of the name. The read-only framing implicitly contrasts with the sibling set_environment, though that sibling is never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Read the current ... settings' indicates this is for inspecting existing configuration, and the existence of set_environment for changing it is inferable but not stated. No explicit when/when-not or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_featuresB
Read attribute rows from a layer, table or dataset path, with an optional where clause, field subset, ordering and WKT geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (max 5000). | |
| where | No | SQL where clause. | |
| fields | No | Fields to return; default all. | |
| offset | No | Rows to skip -- use for paging. | |
| map_name | No | Map to act on; defaults to the active map. | |
| order_by | No | ORDER BY clause, e.g. "POP DESC". | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| include_geometry | No | Add SHAPE@WKT geometry (can be very large). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does establish this as a read-only row-retrieval operation with no mutation implied, which is the key safety signal. It omits paging behavior, the default/max row caps, and whether the target layer must already exist, leaving moderate gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the action and its optional modifiers, with no filler. It is dense but every clause maps to real functionality, though the trailing clause list slightly crowds the core statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool the description is thin, but the 100% schema coverage and existing output schema offload parameter and return-value documentation. What remains missing is behavioral context: pagination semantics, row-cap defaults, and default map targeting, which the description does not address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (where, fields, order_by, limit, offset, include_geometry, map_name) is already documented in the schema. The description only mirrors those capabilities at a high level without adding syntax, format, or defaulting detail, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Read attribute rows from a layer, table or dataset path") and enumerates the supported query capabilities. An agent can distinguish it from count_features, summarize_features, and get_field_statistics. It does not, however, explicitly name which sibling to prefer for alternate query styles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternatives are named among the many read-oriented siblings (count_features, select_features, export_features). The optional clauses imply a filtered-read scenario but leave the agent to infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_field_statisticsC
min / max / mean / median / sum / standard deviation of a numeric field.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | Field name. | |
| where | No | SQL where clause. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses nothing beyond the computed values. It does not say whether the operation is read-only, whether the 'where' clause restricts the population, or how it interacts with the current selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded fragment with zero filler, and the computed statistics lead the sentence. It is efficient, though terse to the point where the brevity contributes to the missing behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema documents all four parameters. However, for a tool with no annotations and several close siblings, the description omits the filtering semantics and routing context an agent needs to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so layer_name, field, where, and map_name are already documented in the schema; baseline 3 applies. The description adds no syntax or format detail beyond that, but nothing is missing that the schema doesn't cover.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (a numeric field) and enumerates exactly what is computed (min/max/mean/median/sum/stddev), so an agent knows the output shape without opening the schema. It does not differentiate itself from similar siblings such as summarize_features or get_unique_values, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all. With siblings like summarize_features, zonal_statistics, and get_unique_values in the same family, the description never states which conditions select this tool over those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_layer_infoA
Full detail for one layer: data source, coordinate system, extent, fields, feature count, renderer and label state.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the returned content, which is useful, but says nothing about permissions, whether the layer must be in the active map, or behavior on missing layers. For a low-risk read tool this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that enumerates the payload with zero filler. Every clause contributes, and the most important information (what detail is returned) comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described in prose, and the parameters are fully documented in the schema. The description covers the tool's scope adequately; the only gap is usage routing against siblings like get_layer_symbology, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the schema already documents map_name (defaults to active map) and layer_name (name as shown by get_layers or full dataset path). The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Full detail for one layer') and enumerates exactly what detail is returned (data source, CRS, extent, fields, feature count, renderer, label state), which distinguishes it from the sibling get_layers (list) and the narrower get_layer_symbology/list_fields. It does not explicitly name those siblings, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Full detail for one layer' implies the inspection use case after get_layers, but there is no explicit when-to-use guidance, no exclusions, and no named alternative (e.g., use get_layer_symbology for symbology only). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_layersA
List the layers (with draw order and group nesting) and standalone tables in a map. Start here to see what is in the project.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| include_basemap | No | Include basemap layers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the shape of the result (draw order, group nesting, standalone tables) but says nothing about scope limits, whether basemap layers are excluded by default, or pagination/size behavior for large maps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the substantive content (draw order, group nesting, standalone tables) is front-loaded and the usage hint follows it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description sketches what the listing contains. For a safe read-only inventory tool with a fully documented schema, this is close to complete; only the basemap default behavior and result size are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (map_name with active-map default, include_basemap default false) are already fully documented in the schema. The description adds no meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the layers ... and standalone tables in a map') and even names the contents of the result (draw order, group nesting). An agent can distinguish this from sibling list_maps and get_layer_info without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Start here to see what is in the project' gives clear entry-point guidance, telling the agent when this tool is the right first call. It stops short of naming alternatives or exclusions (e.g., use get_layer_info for one layer's details), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_layer_symbologyA
Inspect a layer's current renderer, class breaks, unique values and label settings.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Inspect ... current' reasonably signals a non-mutating read, but there is no statement about permissions, behavior when the layer is missing or the map is not active, or whether it touches the layer's state. The enumeration of returned fields also overlaps the existing output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, zero filler. Nothing to trim and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and both parameters are fully documented in the schema. For a two-parameter read tool this is nearly sufficient; the only real gap is routing guidance against the many overlapping sibling inspection tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – both layer_name and map_name are documented in the schema, including the default-active-map behavior. The description adds no additional meaning about parameter format or the layer_name vs dataset-path distinction, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Inspect') plus a concrete resource enumeration (renderer, class breaks, unique values, label settings) makes the tool's scope unmistakable. It is implicitly the read-side counterpart to set_layer_renderer and set_layer_labeling, but it never names a sibling to differentiate itself from, e.g., get_layer_info or get_unique_values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'current' implies the intended workflow (read existing symbology before changing it with set_layer_renderer / set_layer_labeling), but this is never stated. No when-to-use condition, no exclusions, and no pointer to the overlapping siblings get_unique_values or get_layer_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_layout_infoB
Inspect a layout: page setup and every element with position and size.
| Name | Required | Description | Default |
|---|---|---|---|
| layout_name | Yes | Layout name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Inspect' implies a read-only operation and the description discloses what is returned, but it does not state permissions, side effects, or whether any state is changed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It states the action and the return content directly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values, and the lone parameter is fully documented in the schema. The main gap is missing sibling guidance, but for a simple read-only inspection tool the definition is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so layout_name is already documented in the schema. The description adds no naming format, lookup guidance, or other semantic detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Inspect') and resource ('layout'), and specifies the returned content (page setup and every element with position and size). It is clearly distinct from create_layout, delete_layout, and list_layouts by its informational scope, though it does not explicitly contrast itself with preview_layout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are provided. The agent must infer that this is the metadata-inspection tool in contrast to preview_layout or other layout-mutating siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_map_extentC
The combined extent of all data layers in a map.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does convey meaningful scope (all layers combined, not the view or a single layer), and an output schema exists so return values needn't be described. Still, it says nothing about whether a map must be open/active, what happens with empty or layerless maps, or whether the extent is recomputed on each call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no waste and the key scope qualifier ('combined, all data layers') front-loaded. It is efficient, though its brevity edges toward under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional parameter, output schema present), so minimal prose is acceptable. But with no annotations, the description should have covered at least the read-only nature and the active-map fallback context; the essential shape is inferable but not stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single map_name parameter is already documented as defaulting to the active map. The description adds nothing about parameters, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource and the computed value ('combined extent of all data layers in a map'), which is more informative than the bare name. However, it is a noun phrase with no verb, so it never states that the tool reads/returns this extent rather than setting it. It also does not distinguish itself from nearby siblings such as get_map_view or set_map_frame_extent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all — no indication of when an agent should call this instead of get_map_view, get_layer_info, or zoom_to_layer. The only usage hint comes from the schema parameter default ('defaults to the active map'), not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_map_viewA
Current camera position: centre, scale, rotation and visible extent. Requires the map's tab to be open in ArcGIS Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It helpfully reveals the required runtime state (tab open) and that the result is a camera/view snapshot, but it does not say whether the call fails or returns stale data when the tab is closed, and 'get' only implicitly signals a non-mutating read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the returned content is front-loaded and the precondition follows, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so there is no need to enumerate return fields, yet the description still summarizes them. The precondition is the key operational detail and it is present; only the failure behavior when the tab is closed is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single map_name parameter is fully documented in the schema, including its default to the active map. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific resource returned (current camera position with centre, scale, rotation, visible extent) rather than restating the name, so an agent knows it is a read of the map view state. It does not explicitly contrast itself with the sibling get_map_extent, which covers overlapping ground, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a real precondition (the map's tab must be open in ArcGIS Pro), which is more than most entries. However, it never says when to use this versus alternatives like get_map_extent or set_map_view, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messagesB
Messages from the most recent geoprocessing operation.
| Name | Required | Description | Default |
|---|---|---|---|
| severity | No | 0 all, 1 warnings, 2 errors. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only the source and recency of messages; it does not state that the operation is read-only, whether it includes warnings/errors by default, authentication requirements, rate limits, or that only the latest operation is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one perfectly front-loaded sentence with no filler. Every word earns its place, and the scope is immediate without requiring further parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the schema fully documents the only parameter. The description still omits usage context and behavioral details, which is a notable gap given the lack of annotations, making it only minimally complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single severity parameter is fully documented in the schema ('0 all, 1 warnings, 2 errors.'). The description adds no additional meaning about severity filtering or defaults, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (messages) and a precise scope (most recent geoprocessing operation). It is far more specific than a bare 'get messages', but it does not distinguish itself from sibling diagnostic tools such as diagnose or get_capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are given. However, the phrase 'most recent geoprocessing operation' implies it is intended after running a geoprocessing tool, which is at least implied usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_infoB
Project paths, default geodatabase and toolbox, maps, layouts, folder and database connections.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it only lists returned content categories. It says nothing about read-only safety, failure behavior when no project is loaded, or whether connections are merely reported or actually established.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded fragment with no filler — every listed item is a distinct return category. It is a noun phrase rather than a sentence, which slightly weakens the framing but wastes no space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and an output schema already describing the return structure, the content list is partly redundant. The description is adequate but leaves the key agent question — how this differs from sibling info tools — unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter-level information is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool retrieves (project paths, default geodatabase/toolbox, maps, layouts, connections), which is a clear resource scope. However, it never differentiates itself from near-neighbors like get_arcgis_info, get_environment, or get_capabilities, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., an open project), and no mention of alternatives. The agent must guess whether this or get_arcgis_info is the right call for environment-level questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_itemsC
Folder connections, database connections and toolboxes registered in the project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, but it only lists item categories and says nothing about read-only nature, side effects, permissions, or output shape. The get_ prefix hints at a read operation, but the description itself does not disclose that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single concise sentence with no filler, but it is a fragment and under-specifies the action. The structure front-loads the item categories but does not lead with a clear verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed in the description. However, with many sibling list/get tools, the description should better distinguish what this tool returns and when to choose it, and it omits the action verb entirely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to clarify beyond the baseline. The schema is empty and fully documented by virtue of having no inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource categories (folder connections, database connections, toolboxes) but omits any action verb, so it does not fully state what the tool does. It partially distinguishes from siblings like get_project_info and list_toolboxes by naming different item types, but remains a noun phrase rather than a clear verb-plus-resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as get_project_info, list_toolboxes, or list_workspace_contents. The description provides no context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pump_statusA
Whether the main-thread dispatcher is installed. It is what lets commands reach the open ArcGIS Pro project; without it only path-based work (geoprocessing, dataset inspection) runs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does add useful operational context: the pump enables commands to reach the open project, and its absence limits work to path-based operations. It implies a read-only status check but does not explicitly state the return format, which is acceptable because an output schema is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded and free of waste. The first states what is checked; the second immediately explains why it matters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple status-check complexity, empty input schema, and available output schema, the description supplies enough context about what the status means and its practical impact. It stops short of explicit usage guidance, but that gap is minor for a read-only zero-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics to document. The baseline for a zero-parameter tool is 4, and no additional param information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the subject as the main-thread dispatcher installation status and explains its role in enabling commands to reach ArcGIS Pro. However, it does not explicitly differentiate this status check from sibling diagnostic tools such as ping or diagnose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to call this tool versus alternatives. It provides contextual impact ('without it only path-based work runs') but never states a when-to-use condition, prerequisites, or sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_raster_infoB
Raster detail: bands, size, cell size, pixel type, statistics and CRS.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states what properties are returned but does not disclose whether the operation is read-only, whether it requires specific permissions, whether it can be slow for large rasters, or how it handles missing statistics. For a read tool with no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently lists key return fields without extraneous text. It is appropriately sized but could benefit from slightly more structure to separate purpose from output details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and a rich output schema (which the description needn't explain), the description still lacks important context: it does not clarify that this tool is specifically for raster layers, does not mention any prerequisites, and does not describe error behavior. For a tool in a large toolset with many get_* siblings, more completeness is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (map_name and layer_name) are fully documented in the schema. The description adds no further parameter context, but the baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb (get) and resource (raster info) and enumerates the returned fields: bands, size, cell size, pixel type, statistics, CRS. This clearly distinguishes it from sibling tools like get_layer_info (generic layer info) and preview_layout, though it does not explicitly state the scope limitation (raster-only) or directly contrast with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given. The tool's purpose is implied by its name and the listed raster properties, but there is no mention of alternatives for non-raster layers or when this should be preferred over get_layer_info. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selectionB
Report what is currently selected, per layer, with ObjectIDs and optionally the attribute rows.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum ObjectIDs/rows per layer. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | No | Single layer; default every feature layer. | |
| include_attributes | No | Also return the selected rows. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Report' implies a read-only operation and describes the output shape, but it does not state permissions, that the selection is left unchanged, or how the limit parameter affects pagination. It adds some value but remains incomplete for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Each clause—what is returned, per-layer grouping, ObjectIDs, and optional attributes—earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. The description covers the core output and optional attributes, but it omits usage guidance and behavioral context for a tool that sits among many selection-related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds that attributes are optional and results are per layer, but it does not mention the limit or map_name parameters, which are already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Report what is currently selected.' It distinguishes itself from selection-modifying siblings like set_selection and clear_selection by focusing on the current state, but it does not explicitly name alternative tools or scope boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The description does not mention alternatives such as select_features or set_selection, so an agent must infer when this tool is appropriate versus its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unique_valuesC
Distinct values of a field with the count of rows for each.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | Field name. | |
| limit | No | Maximum distinct values to return. | |
| where | No | SQL where clause. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses only the output shape (values plus counts). It does not state that this is a read-only operation, whether the limit/default interact, or anything about cost on large layers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the core output. It is efficient, though it reads as a noun fragment rather than a complete statement of what the tool does for the caller.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and all parameters are covered by the schema. What is missing is the minimal orientation an agent needs for a 5-parameter query tool: that it is read-only and how the filter and limit scope the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (field, layer_name, limit, where, map_name) are already documented in the schema. The description adds nothing about how where or limit affect the distinct-value computation, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation and resource: distinct values of a field, plus the per-value row count. That is enough to know what the tool returns, but it never distinguishes itself from overlapping siblings such as get_field_statistics, summarize_features, or list_fields, which an agent could easily pick instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite several sibling tools producing overlapping field-level summaries. The agent is left to infer that this is the right choice for categorical value counts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_featuresC
Insert new rows into a layer or table.
| Name | Required | Description | Default |
|---|---|---|---|
| features | Yes | Rows, e.g. [{"attributes": {"NAME": "A"}, "geometry": "POINT (100 15)"}]. geometry accepts WKT, [x, y] or Esri JSON. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| save_edits | No | Commit the edits immediately instead of leaving them pending. | |
| use_edit_session | No | Wrap in an edit session (needed for enterprise/versioned data). | |
| geometry_spatial_reference | No | WKID of the supplied geometry; defaults to the layer's. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, yet it only restates the basic operation. It omits critical behavioral traits for a mutation tool: whether edits require a session, how save_edits works, permissions needed, error handling, or what happens to pending edits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded, but its extreme brevity for a six-parameter mutation tool means it omits necessary context. It is efficient in form but under-specified for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool mutates data and has no annotations, the description is incomplete: it does not explain edit sessions, saving behavior, versioning implications, or how the map_name default works. An output schema exists, so return values need not be described, but the behavioral context is still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so all six parameters are well documented there. The description adds no parameter-level meaning beyond what the schema already provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (insert) and resource (new rows into a layer or table), making the core operation clear. However, it does not differentiate from sibling tools like update_features or delete_features, so an agent must infer the distinction from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as update_features or delete_features, nor any prerequisites or context for insertion. Usage is only implied by the verb 'insert'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bookmarksB
List the spatial bookmarks defined on a map.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says 'list' but doesn't disclose read-only safety, auth requirements, return format, or whether the active map default is applied. For a read tool this is a significant gap in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a simple one-parameter read tool with 100% schema coverage, the description is minimally adequate but omits any behavioral or usage context that would help an agent pick it over siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single map_name parameter with its default is fully documented in the schema. The description adds no parameter meaning beyond what is already structured, which is the baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (spatial bookmarks) with scope (defined on a map). Clear enough to distinguish from create_bookmark, apply_bookmark, and delete_bookmark in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus apply_bookmark or create_bookmark. It's implied that this is a read operation for discovering bookmarks, but the description provides no explicit context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_color_rampsC
List the colour ramps available in the project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum names to return. | |
| wildcard | No | Name filter, e.g. "*Viridis*". | * |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read but says nothing about pagination, the default 500-name cap, whether the result can be filtered server-side, or ordering. For a no-annotation tool this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is appropriately sized for a simple list operation, though it is arguably too terse to earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. With only two optional, fully documented parameters this is minimally adequate, but the description contributes no behavioral or filtering context beyond the name and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – limit and wildcard are both documented with defaults and an example in the schema. The description adds nothing beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (List) and resource (colour ramps) with project scoping. Among the siblings there is no other color-ramp tool, so differentiation is not required, but it also does nothing to distinguish itself from generic listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus alternatives, no prerequisites, and no note about how the wildcard/limit interact with listing. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fieldsB
List a layer's fields with type, alias, length and domain.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| wildcard | No | Optional name filter, e.g. "POP*". | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; 'List' implies a read-only operation but that is never stated, nor is there any note on permissions or pagination behavior for layers with many fields. It does disclose the returned field attributes, which is some behavioral value, but the safety profile is left to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler that names the resource and the exact payload returned. Nothing could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be explained, and all three parameters are fully documented in the schema. The only gap is the absent when-to-use guidance, which matters little for a simple read-only listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (map_name, wildcard, layer_name all documented inline including the wildcard example and the get_layers cross-reference), so the baseline is 3. The description adds nothing about the map or wildcard filtering options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a layer's fields') plus the returned attributes (type, alias, length, domain), which separates it from siblings like get_layer_info or get_field_statistics. It stops short of naming an alternative tool or explicit scope limits, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus get_layer_info, get_field_statistics, or describe_dataset, and no prerequisites or exclusions. Usage is only implied by the name and by the schema's reference to get_layers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_folderA
List GIS files and subfolders on disk. Defaults to the project home folder.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum entries to return. | |
| folder | No | Folder to list. | |
| pattern | No | Substring filter on the file name. | |
| only_data | No | Only list recognised GIS/data files. | |
| recursive | No | Walk subfolders. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a read-only operation and the default-folder behavior is a useful disclosure the schema does not fully spell out (folder default null is only explained here), but permissions, pagination/limit behavior, and error conditions remain undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste, front-loading what is listed before the default-folder note. Nothing extraneous is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and all five parameters are fully documented in the schema. The remaining gap is sibling routing, which belongs to usage guidelines rather than completeness of the call itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds genuine meaning by clarifying that a null/omitted folder resolves to the project home folder, which the schema's 'Folder to list.' description does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('GIS files and subfolders on disk'), so the agent knows exactly what the tool returns. It does not, however, distinguish itself from plausible siblings such as list_workspace_contents or search_data, which likely overlap in listing on-disk content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Defaults to the project home folder' describes a default behavior rather than when to use this tool. There is no guidance on when to prefer it over list_workspace_contents, search_data, or get_project_items, all of which are adjacent in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_geoprocessing_toolsA
Search the available geoprocessing tools by name.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum tool names to return. | |
| toolbox | No | Restrict to one toolbox alias, e.g. "analysis" or "management". | |
| wildcard | No | Name pattern, e.g. "*Buffer*". | * |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it discloses only that matching is by name. Read-only intent is inferable from 'Search', but pagination/limit behavior and the fact that it returns names only (not full tool definitions) are not stated; an output schema covers returns, which lightens the gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, zero filler. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter search call with fully documented parameters and an output schema, this is complete enough to invoke correctly; the missing sibling routing is a discoverability nit rather than a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — limit, toolbox alias and wildcard pattern are each documented in the schema with examples. The description's 'by name' adds a mild hint about the wildcard parameter but no syntax or default information, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Search'), specific resource ('geoprocessing tools') and a stated search axis ('by name'). It is distinguishable from run_geoprocessing_tool and describe_geoprocessing_tool by implication, but it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must infer that this is a discovery step preceding describe_geoprocessing_tool or run_geoprocessing_tool; nothing in the text says so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_layoutsA
List the print layouts with page size and element counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden, but the read-only nature is clearly implied by 'List' and the summary of returned fields (page size, element counts) is disclosed. It says nothing about ordering, empty-project behavior, or pagination, which is a modest gap for a trivial enumerator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and the notable return fields are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only enumerator with an output schema backing the return shape, the description covers what the agent needs to select and invoke it. Only marginal ordering/edge-case context is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify; the baseline for a parameterless tool applies. Nothing is misstated about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (print layouts) plus the salient return contents (page size, element counts), which tells the agent what it gets back. It does not explicitly distinguish itself from the sibling get_layout_info, which covers a single layout, so differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb: reach for this when you need an inventory of layouts rather than details of one. No explicit when-to-use, prerequisites, or named alternative (e.g., get_layout_info for a single layout) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mapsA
List all maps and scenes with coordinate system and layer counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The verb 'list' strongly implies a read-only operation and the text discloses the key returned attributes (coordinate system, layer counts), but it says nothing about scope (project vs. all open maps) or behavior with no maps present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the verb and resource and ends with the useful return detail. Nothing is wasted and nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and with zero parameters there is no schema detail to compensate for. It is close to complete; only the enumeration scope (which maps are listed) is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly adds no spurious parameter discussion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (maps and scenes) and even names what the listing returns (coordinate system, layer counts). This clearly separates it from create_map, remove_map, activate_map, and set_map_properties, though the description never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternative tools such as get_map_extent or get_project_info. An agent can infer this is a discovery/enumeration call, but nothing in the text confirms that intent or its limits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_toolboxesB
List the arcpy toolbox modules and any toolboxes in the project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only enumeration but never states scope (project-wide vs arcpy module), ordering, or whether results are cached or live. It does at least hint at two result categories (modules vs project toolboxes).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the object of the listing front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a parameterless read that already has an output schema, so the description does not need to explain return values. It communicates the two item categories well; only the relationship to sibling listing tools is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (arcpy toolbox modules and project toolboxes), so an agent understands the operation. However, it never distinguishes itself from close siblings such as list_geoprocessing_tools or list_workspace_contents, leaving overlap ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use context, prerequisites, or named alternatives are given. With siblings like list_geoprocessing_tools and describe_geoprocessing_tool in the same area, the agent must guess which listing tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspace_contentsB
List the datasets inside a geodatabase or folder. Defaults to the project's default geodatabase.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum names per category. | |
| wildcard | No | Name filter, e.g. "road*". | |
| workspace | No | Geodatabase or folder path. | |
| include_details | No | Also describe each feature class (type, CRS, row count). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses that an omitted workspace falls back to the project's default geodatabase, but it does not state that the operation is read-only, whether listing is recursive, or how 'datasets' is scoped (feature classes, tables, rasters, etc.).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core action is front-loaded before the default-workspace note. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. The description covers the basic scope and default workspace for a four-parameter read tool, though it could clarify what categories of datasets are included and that limits apply per category.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents limit, wildcard, workspace, and include_details. The description only reinforces the workspace default and adds no syntax or format details beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: listing datasets inside a geodatabase or folder. This clearly distinguishes the tool from unrelated siblings like get_features or create_table. However, it does not differentiate itself from closer siblings such as list_folder or search_data, which could also enumerate spatial content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage-related statement is that the workspace parameter defaults to the project's default geodatabase. There is no guidance on when to choose this tool over list_folder, search_data, or describe_dataset, nor are any exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_layerC
Reorder a layer relative to another, or move it into a group layer.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| position | No | BEFORE or AFTER the reference layer. | BEFORE |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| group_layer | No | Group layer to move it into instead. | |
| reference_layer | No | Layer to position relative to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It indicates a mutation (reorder/move) but omits critical details such as required permissions, whether the change is immediately persisted, effects on existing layer order, or any constraints on layer types.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the core operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and a complex dual-mode behavior, the description is too sparse. While the output schema covers return values and the input schema covers parameters, the description fails to explain behavioral context, prerequisites, or side effects that an agent would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already well documented in the input schema. The description adds no parameter-level meaning beyond the schema, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reordering or moving a layer, with two distinct modes (relative to another layer or into a group layer). It does not explicitly differentiate from siblings like create_group_layer or add_layer, but the operation itself is uniquely identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. It only states what the tool does, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingA
Check that the ArcGIS Pro bridge is reachable and see which project it is attached to.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It implies a safe, non-mutating check and names the returned signal (attached project), but says nothing about failure behavior, timeouts, or whether it starts/attaches a bridge instance. Adequate but thin for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the primary purpose (reachability) and appends the secondary value (attached project). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the zero-parameter surface keeps the tool simple. The only real omission is routing guidance against overlapping diagnostic/info siblings, which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the baseline rule the schema fully covers input semantics and the description need not add parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check') and resource ('ArcGIS Pro bridge') and adds a second concrete outcome ('see which project it is attached to'). It is clear on its own, though it does not explicitly differentiate itself from close siblings such as diagnose, get_arcgis_info, or get_project_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to call ping versus diagnose or the various get_*_info tools, which overlap in intent. An agent must infer that this is a lightweight connectivity probe rather than a diagnostic or project-detail call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_layoutA
Render a layout to a temporary image and return it, without writing a file -- use it to visually check a layout while building it.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | Render resolution. | |
| layout_name | Yes | Layout name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does disclose the key behavioral trait: output is a temporary render and no file is written, which is the main side-effect an agent needs to know. It does not specify the returned image encoding (bytes, path, base64) or render cost/limits, leaving some behavioral detail unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the action, then the distinguishing constraint, then the intended use. No filler or redundant restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter render tool with no output schema, the description covers purpose, side-effect profile, and usage context adequately. The remaining gap is the shape of the returned image, which an agent might need given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (layout_name, dpi) are documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (render) plus resource (layout) and an explicit scope qualifier: 'to a temporary image ... without writing a file.' This clearly separates it from the sibling export_layout, which persists output, so an agent can pick correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States a clear use case: 'use it to visually check a layout while building it,' i.e. iterative preview during authoring. It does not name export_layout explicitly as the alternative for producing a file, so the when-not condition is only implied by the phrase 'without writing a file.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raster_calculatorA
Map algebra. Bind rasters to short names, then write a Python expression over them. Requires the Spatial Analyst extension.
| Name | Required | Description | Default |
|---|---|---|---|
| rasters | Yes | Alias to layer name or path, e.g. {"dem": "elevation", "slp": "slope.tif"}. | |
| map_name | No | Map to act on; defaults to the active map. | |
| add_to_map | No | Add the result to the map. | |
| expression | Yes | Expression over the aliases, e.g. "(dem - 100) / slp". arcpy.sa functions such as Con, Abs and Log are available by name. | |
| output_path | Yes | Where to save the result raster. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add one genuinely valuable fact — the Spatial Analyst extension is required — but it omits that this is a write operation producing a persisted dataset, what happens on overwrite or failure, and whether it blocks/returns messages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core concept front-loaded and the prerequisite stated last. Nothing needs to be trimmed and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inputs are conceptually covered and an output schema exists, so return values need no explanation. However, for a five-parameter tool with a nested object and no annotations, the description says nothing about the write side effects on output_path or failure/overwrite behavior, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including the alias-map example and the arcpy.sa function names. The description restates the relationship between the rasters aliases and the expression but adds no syntax or formatting detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Map algebra. Bind rasters to short names, then write a Python expression over them" names the operation and the exact mechanism (alias binding + expression), which is more specific than the bare tool name. It does not, however, distinguish itself from siblings that could also do raster math, such as execute_arcpy_code or run_geoprocessing_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing the workflow (bind rasters, then write an expression), but gives no explicit when to use this vs. execute_arcpy_code, zonal_statistics, or a generic geoprocessing tool, and names no alternatives. The Spatial Analyst statement is a prerequisite rather than a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_joinC
Remove a join from a layer.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| join_name | No | Join to remove; defaults to the last one. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral-disclosure burden. It implies a destructive removal but says nothing about permissions, reversibility, whether edits must be saved, or what side effects occur on the layer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no wasted words. However, it is arguably too terse for a mutation tool, so it does not reach the highest level of helpful conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the input schema is fully documented. But for a destructive tool with no annotations, the description should disclose basic behavioral context such as whether the removal is immediate or requires a save, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all three parameters. The description adds no additional parameter meaning beyond that, which is the baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Remove') and resource ('join from a layer'), so an agent can understand the core operation. It does not explicitly distinguish itself from siblings such as add_join or remove_layer, but the inverse relationship is obvious enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any prerequisites or conditions. The description simply states what the tool does, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_layerC
Remove a layer or standalone table from a map.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state whether removal is destructive to data on disk versus only the map document, whether it requires the map to be active/saved, or whether the removal is reversible. For a mutation tool with zero annotation coverage this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler, and the verb and target are front-loaded. It is efficient, though it is arguably under-specified rather than ideally concise given the complexity of the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the parameters are fully covered by the schema. However, for a destructive mutation with no annotations, the description omits the data-safety distinction and any precondition context, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (map_name with its active-map default, layer_name with its get_layers/path hint) are already documented in the schema. The description adds nothing beyond that, which is the baseline-3 case when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Remove') and resource ('a layer or standalone table') plus the scope ('from a map'), which distinguishes it from siblings like delete_dataset or remove_map. It does not explicitly name which sibling to use for permanent data deletion, but the operation itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. An agent cannot tell from the description whether this removes the layer only from the map or deletes underlying data (delete_dataset exists as a sibling), nor what happens if the layer is the sole source of a join or selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_mapC
Delete a map from the project.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | Yes | Map to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'delete' but discloses nothing about irreversibility, whether unsaved edits are lost, whether an active map can be removed, or whether a project save is required. For a destructive mutation tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though so terse that brevity shades into under-specification rather than genuine conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with zero annotations the description should still cover the destructive/irreversible nature of the operation and any required state. It covers none of that, leaving the agent under-informed for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single map_name parameter already carries the description 'Map to delete.', so the schema does the heavy lifting. The tool description adds no naming syntax, matching rules, or behavior for a nonexistent map, which is the baseline-3 outcome.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: delete a map from the project. An agent can distinguish it from list_maps, create_map, activate_map, and set_map_properties. It does not, however, explicitly differentiate itself from related destructive siblings such as delete_layout or remove_layer beyond the resource noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. The description never tells the agent to first resolve a map name via list_maps, nor whether the map must be inactive or the project saved afterward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_layerC
Rename a layer in the table of contents.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| new_name | Yes | New display name. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. 'Rename' implies mutation but does not disclose whether this changes only the TOC display name or the underlying dataset, whether the operation requires permissions, or whether it can be undone. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple operation, though it is under-specified rather than structurally flawed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for an agent to know the basic operation, and an output schema exists so return values need not be explained. However, with no annotations and a mutation operation, the lack of any behavioral or safety details leaves an important contextual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters, including map_name, new_name, and layer_name. The description adds no parameter meaning beyond what the schema provides; a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Rename a layer in the table of contents.' An agent can tell it changes a layer's display name, but the description does not distinguish this operation from sibling tools like move_layer or set_layer_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are given. It does not say when to prefer this over other layer-management tools or what conditions are required (e.g., active map, edit session).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repair_layer_sourceB
Repoint a layer at a new workspace or dataset to fix a broken source.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| new_source | Yes | New workspace (folder/.gdb) or full dataset path. | |
| dataset_name | No | Dataset name inside the new workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It implies a mutation ('repoint') but says nothing about permissions required, whether the change is reversible, what happens to existing layers, or whether the project needs saving. This is thin for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It states the action and purpose immediately and ends cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a mutation tool with no annotations, the description omits important context such as side effects, prerequisites, and the relationship to get_broken_layers, leaving it only adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, including the required layer_name and new_source and optional map_name and dataset_name. The description adds no syntax, format, or meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('repoint') and resource ('layer source'), and adds the purpose ('to fix a broken source'). It does not explicitly name or distinguish itself from sibling tools such as get_broken_layers, which would be needed for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to fix a broken source' implies the condition for use, but there is no explicit guidance on when to use this versus alternatives like get_broken_layers or add_layer, and no exclusions or prerequisites are stated. Usage is only implied, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_batchA
Run several commands in one round trip -- much faster for multi-step workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | e.g. [{"command": "set_layer_visibility", "params": {"layer_name": "roads", "visible": true}}]. | |
| continue_on_error | No | Keep going after a failed step instead of stopping. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions only the round-trip performance benefit and omits execution order, error semantics beyond the schema's continue_on_error field, and the fact that batched commands may mutate or delete data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It efficiently communicates the core action and primary benefit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and schema coverage is complete, so return values and parameter details need not be repeated. However, for a no-annotation batch executor capable of running destructive commands, the description is missing execution semantics and safety context that an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the structured parameters already document the commands array and continue_on_error flag. The description adds no parameter syntax or meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: run several commands in one round trip. The batching behavior distinguishes it from single-operation siblings like run_geoprocessing_tool, though it does not name any alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: multi-step workflows and faster execution. It does not state when not to use batch mode or name alternative tools for single-step workflows, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_geoprocessing_toolA
Run any arcpy geoprocessing tool -- the universal escape hatch for analysis. Layer names resolve to live layers so selections and definition queries apply. Call describe_geoprocessing_tool first if the parameter names are not known.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Positional parameters instead of keywords. | |
| map_name | No | Map to act on; defaults to the active map. | |
| overwrite | No | Temporarily allow overwriting outputs. | |
| tool_name | Yes | e.g. "analysis.Buffer", "management.Dissolve", "sa.Slope" or "Buffer_analysis". | |
| add_to_map | No | Add the tool's outputs to the map. | |
| parameters | No | Keyword parameters, e.g. {"in_features": "roads", "out_feature_class": "roads_buf", "buffer_distance_or_field": "500 Meters"}. | |
| checkout_extension | No | Extension to check out for this run, e.g. "Spatial" or "3D". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses one meaningful trait -- that layer names resolve to live layers so selections and definition queries apply -- but says nothing about mutation/reversibility, permission or extension checkout requirements, or the side effects of overwrite/add_to_map.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose followed by the behavioral note and prerequisite. No filler, every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers purpose, one behavior, and the describe-first prerequisite. Still, for a very broad, potentially destructive universal tool it omits safety/side-effect context and sibling disambiguation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all seven parameters. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (Run any arcpy geoprocessing tool) and frames itself as the 'universal escape hatch for analysis,' which clarifies scope. However, it does not differentiate itself from close siblings like execute_arcpy_code, run_python_toolbox_tool, or run_batch, which all sound like escape hatches too.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one concrete routing rule: call describe_geoprocessing_tool first when parameter names are unknown. This is useful context, but there is no guidance on when to pick this over the similar escape-hatch siblings (execute_arcpy_code, run_batch), leaving the main selection ambiguity unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_python_toolbox_toolC
Run a tool from a custom .pyt / .atbx / .tbx toolbox on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Positional parameters. | |
| alias | No | Toolbox alias to import under. | |
| tool_name | Yes | Tool name inside the toolbox. | |
| parameters | No | Keyword parameters. | |
| toolbox_path | Yes | Path to the toolbox. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention that this executes arbitrary Python code from a custom toolbox, nor does it describe side effects, permission requirements, error handling, or return behavior. It only repeats the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It efficiently conveys the core action and resource without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (executing arbitrary code from a custom toolbox) and the absence of annotations, the description is too thin. While an output schema exists, the description should at least hint at execution context, potential side effects, or security considerations to be complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all five parameters, so the baseline score is 3. The description adds a minor clarification about the toolbox file types, but provides no additional semantic detail for args, alias, parameters, or the paths beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run') and resource ('tool from a custom .pyt / .atbx / .tbx toolbox on disk'), which clearly identifies the operation and distinguishes it from running standard geoprocessing tools by emphasizing the custom toolbox formats. However, it does not explicitly name or contrast with sibling tools like run_geoprocessing_tool or execute_arcpy_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It simply states what the tool does without any context for selection among the many sibling tools that also execute code or tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sample_raster_valuesA
Read raster cell values at map coordinates or at a point layer's features.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | Band to read for multiband rasters. | |
| limit | No | Maximum points to sample from a layer. | |
| points | No | Coordinates to sample, e.g. [{"x": 100.5, "y": 13.7}]. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| point_layer | No | Point layer to sample at instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; 'Read' implies a non-mutating operation, which is useful signal. However, it discloses nothing about side effects, cost, permission requirements, or how the limit/default interacts with layer sampling. An output schema exists, so return-value detail is not required here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the verb and the two-mode scope are established immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and 100% schema coverage on parameters, the description is nearly sufficient. The remaining gap is precedence/conflict handling between 'points' and 'point_layer' and how 'limit' applies, which the agent must infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all six parameters described in the schema itself, so the baseline is 3. The description adds the mutually exclusive framing of 'points' vs 'point_layer' as two sampling modes, which is marginal but real value beyond the schema's field-level docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read raster cell values') and names both input modes: map coordinates or a point layer's features. It does not explicitly distinguish itself from close siblings like zonal_statistics or get_raster_info, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two sampling modes are stated, which implies when each parameter set is relevant, but there is no explicit guidance on when to use this over zonal_statistics (aggregation) or get_raster_info (metadata), nor any stated prerequisites. Usage is inferable rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_editsA
Commit pending edits. ArcGIS Pro keeps edits open so they can be undone, which also leaves the data locked until they are saved -- deleting or overwriting an edited dataset fails until then.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a genuinely non-obvious trait: edits are held open, the dataset remains locked, and delete/overwrite operations fail until saving. It omits what happens after the commit (undo availability, conflict/permission failure modes), which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded imperative followed by one explanatory sentence with no filler. The second sentence is slightly run-on but each clause conveys a distinct consequence of not saving.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Zero parameters and an output schema means the description need not cover return values or argument syntax. It supplies the lock/undo context an agent needs to decide to call it; only an explicit reference to discard_edits as the contrasting action is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter-level meaning is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and object ('Commit pending edits'), which an agent can map to the ArcGIS Pro edit-session model. It does not explicitly name or differentiate from the sibling discard_edits, so sibling routing is left to inference from the verb choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear situational context: edits stay open/undoable and the data stays locked, so this is the tool to call when an edited dataset must be deletable or overwritable. It does not explicitly state when not to use it or name discard_edits as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_layer_fileC
Save a layer with its symbology to a .lyrx file for reuse.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| output_path | Yes | Output .lyrx path. | |
| relative_paths | No | ABSOLUTE or RELATIVE. | ABSOLUTE |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that symbology is captured, but says nothing about overwrite behavior for an existing .lyrx, required permissions, or whether the saved file references absolute vs relative paths (a live parameter). For a file-writing tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with essentially no waste; the required action and result are clear immediately. It is tight, though arguably undersized for a 4-parameter, un-annotated file-write tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema fully covers parameters. However, for a mutation tool with no annotation coverage, the description omits overwrite semantics, permission requirements, and relationship to sibling save/export tools, leaving a meaningful completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents map_name, layer_name, output_path and relative_paths. The description adds no syntax, format, or default behavior beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The single sentence states a specific verb (Save), resource (a layer with its symbology) and output artifact (.lyrx file), so the agent can tell it apart from save_project or export_features. It stops short of naming any sibling explicitly, but the layer+symbology+lyrx framing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives such as export_features or set_layer_renderer, and no prerequisites. 'For reuse' gestures at intent but does not help the agent decide whether this is the right tool for a given request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_projectA
Save the ArcGIS Pro project (.aprx), or save a copy elsewhere.
| Name | Required | Description | Default |
|---|---|---|---|
| save_as_path | No | Optional path for a copy; the open project is left untouched. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the key behavioral fact — that save_as_path leaves the open project untouched — which is important non-obvious behavior. However, it says nothing about overwrite behavior, error conditions, permissions, or what the output schema (which exists) returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the default operation, then the variant. No waste, appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single optional parameter, full schema coverage, and an output schema, the description is nearly complete. A brief note about overwriting an existing path or the return value would close the remaining gap, but nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains the save_as_path behavior, so the description does not need to compensate. The description's parenthetical '.aprx' adds file-format meaning and echoes the schema's copy semantics without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Save) and resource (ArcGIS Pro project/.aprx), plus the dual behavior (in-place vs. save-a-copy). Distinguishes from siblings like save_edits, save_layer_file, and export_* by naming the project artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is clear from the description and the optional save_as_path, but there is no explicit when-to-use/when-not guidance or mention of related siblings. An agent can infer the choice between in-place save and save-as, but no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dataA
Find datasets by name across the project's geodatabase, home folder and folder connections. The quickest way to locate data before adding it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Substring to search for. | |
| limit | No | Maximum matches to return. | |
| workspaces | No | Restrict the search to these workspaces. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds useful scope information (which three locations are searched) and implies a read-only lookup, but says nothing about matching semantics (case sensitivity, wildcards), result truncation against the default limit of 100, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the scope statement front-loaded and the usage hint second. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need no explanation, and all three parameters are documented in the schema. The description covers purpose, scope, and a usage cue adequately for a simple read tool, with only matching semantics left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (name substring, limit, workspaces) are already documented. The description adds no syntax or format detail beyond what the schema states; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) and resource (datasets by name) plus the search scope (geodatabase, home folder, folder connections). This clearly separates it from the listing tools, though it does not explicitly name the siblings it replaces such as list_workspace_contents or describe_dataset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"The quickest way to locate data before adding it" implies the usage context (locate then add, e.g. before add_layer), but no alternative tool is named and no when-not-to-use guidance is given. Minimum viable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_by_locationC
Select features by spatial relationship to another layer.
| Name | Required | Description | Default |
|---|---|---|---|
| invert | No | INVERT to select everything the relationship does not match. | NOT_INVERT |
| method | No | How to combine with the current selection. | NEW_SELECTION |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| relationship | No | INTERSECT, WITHIN_A_DISTANCE, CONTAINS, WITHIN, COMPLETELY_WITHIN, HAVE_THEIR_CENTER_IN, CROSSED_BY_THE_OUTLINE_OF, ... | INTERSECT |
| search_distance | No | Distance for WITHIN_A_DISTANCE, e.g. "500 Meters". | |
| select_features | Yes | Layer or path whose features define the relationship. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it says nothing about the non-destructive/reversible nature of selection, how it interacts with the existing selection, or permission requirements. The 'method' and 'invert' parameters hint at mutating selection state, yet the description never confirms the effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though arguably too sparse to earn a 5 given the tool's 7-parameter complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter spatial-selection tool with no annotations, the description omits selection-state behavior, mirroring/alternatives, and required preconditions. The presence of an output schema relieves it of return-value duty, but the behavioral gaps remain substantial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains relationship, invert, method, search_distance, and map_name. The description adds no syntax or semantic detail beyond listing that a spatial relationship is involved, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Select') and resource ('features') with the defining mechanism ('by spatial relationship to another layer'). However, it does nothing to distinguish itself from the sibling select_features, which an agent could easily confuse with this spatial-selection variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of when this is preferable to select_features or set_selection, and no prerequisites (e.g., both layers must exist in the map). The agent must infer the routing decision entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_featuresC
Select features by SQL where clause.
| Name | Required | Description | Default |
|---|---|---|---|
| where | Yes | SQL where clause. | |
| invert | No | INVERT to select everything the clause does not match. | NON_INVERT |
| method | No | NEW_SELECTION, ADD_TO_SELECTION, REMOVE_FROM_SELECTION, SUBSET_SELECTION, SWITCH_SELECTION or CLEAR_SELECTION. | NEW_SELECTION |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that selection modifies current map selection state, whether an active map is required, or persistence/undo behavior; only the schema method parameter hints at selection modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. However, its extreme brevity for a five-parameter tool with no annotations borders on under-specification rather than optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and all parameters are fully documented, reducing the description's burden. Yet with no annotations, it omits behavioral and usage context needed to select and invoke the tool confidently alongside siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description references 'SQL where clause' but adds no syntax, format, or meaning beyond what the schema already documents for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (select) and resource (features) plus the mechanism (SQL where clause). Distinguishes from spatial sibling select_by_location by mechanism, but does not name alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, prerequisites, or alternatives are provided. The phrase 'by SQL where clause' implies usage but does not guide selection versus select_by_location, set_selection, or clear_selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_basemapB
Set the basemap: Topographic, Imagery, Imagery Hybrid, Streets, Navigation, Light Gray Canvas, Dark Gray Canvas, Terrain, Oceans, OpenStreetMap, National Geographic Style Map.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| basemap_name | Yes | Basemap name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It never states that this is a state-changing mutation of the current map, whether the change is reversible, what happens if the basemap name is invalid, or which map is affected — all of which matter for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first, followed by the value list that earns its length by substituting for a missing enum. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the required basemap_name values are covered. However, with no annotations and a second optional parameter, the description says nothing about mutation semantics or which map is targeted by default.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (baseline 3), and the description goes beyond the schema by enumerating the accepted basemap_name values, which the schema does not constrain with an enum. It does not clarify the optional map_name parameter, but the enumeration is genuine added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') and resource ('basemap'), and the enumerated valid values make the operation concrete. It does not explicitly distinguish itself from siblings like set_layer_renderer or set_map_view, but the tool's scope is unambiguous from the name plus description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — the enumerated basemap names tell the agent what values are acceptable, which is a form of guidance. There is no statement of when to prefer this over alternatives, no prerequisites, and no note about acting on the active map versus a named map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_definition_queryC
Set a layer's definition query (SQL where clause). Empty string clears it.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | SQL where clause, e.g. "POP > 10000". | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It reveals one useful behavioral detail (empty string clears), but omits whether this requires an active map, affects the underlying data, persists after saving, or requires specific permissions. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The core action is front-loaded, and the clearing behavior follows immediately. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations but a rich output schema, the description should do more. It doesn't cover permissions, persistence, interaction with save_project, or error conditions (e.g., invalid SQL). The output schema exists, so return value explanation isn't needed, but critical behavioral context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters including format examples for 'query'. The description adds the empty-string-clears semantic for 'query', which marginally supplements the schema. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (set) and resource (layer's definition query) with the clarifying parenthetical '(SQL where clause)'. This is clearly distinguishable from siblings like set_layer_renderer or set_layer_labeling, though it doesn't explicitly contrast with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that an empty string clears the query, which implicitly covers how to remove a definition query. However, no explicit when-to-use guidance, prerequisites, or alternatives are mentioned. An agent gets no signal about when this tool is preferable or what conditions matter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_environmentB
Set arcpy geoprocessing environment settings such as workspace, outputCoordinateSystem, extent, mask, cellSize, overwriteOutput or parallelProcessingFactor.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | Yes | Environment name/value pairs, e.g. {"overwriteOutput": true, "workspace": "D:/data/project.gdb"}. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says 'set' but does not disclose whether settings persist for the session, whether they merge with or replace existing values, whether they affect only subsequent geoprocessing calls, or whether any authentication/permission applies. These are meaningful gaps for a global-state mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the example list is dense but earned. It could be marginally tighter, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and parameters are covered. However, for a state-changing tool with zero annotations, the behavioral scope (persistence, merging, effect timing) is not complete enough to let an agent use it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single settings object is documented, but the description adds genuine value by enumerating valid environment names (workspace, outputCoordinateSystem, extent, mask, cellSize, overwriteOutput, parallelProcessingFactor) beyond the schema's one example. It does not, however, explain value formats for each key.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) and resource (arcpy geoprocessing environment settings) with concrete examples of the settings controlled. It is distinguishable from the sibling get_environment by the verb, though the description never explicitly contrasts the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool or what alternatives exist (e.g. get_environment for reading, execute_arcpy_code for direct env calls). The agent must infer that this affects subsequent geoprocessing runs rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_layer_labelingC
Turn labels on or off and set the expression, font and halo.
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | Bold text. | |
| where | No | Only label features matching this SQL clause. | |
| italic | No | Italic text. | |
| enabled | No | Show labels. | |
| map_name | No | Map to act on; defaults to the active map. | |
| font_size | No | Font size in points. | |
| halo_size | No | Halo size in points. | |
| expression | No | Label expression, Arcade by default, e.g. "$feature.NAME". | |
| font_color | No | Font colour as [r, g, b]. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| font_family | No | Font name, e.g. "Tahoma". | |
| expression_engine | No | Arcade, Python or VBScript. | Arcade |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose side effects, permissions, default behavior, whether existing label settings are overwritten, or what the required layer_name parameter does. For a 12-parameter mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant or wasted text. It is appropriately sized for a concise overview, though it is terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 12 parameters, no annotations, and operates on layer labeling, the description is too sparse. While an output schema exists, the description still omits required input context, defaults, interaction with map_name, and behavioral details needed to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters thoroughly. The description mentions expression, font, and halo, which maps to some parameters, but adds no syntax, constraints, or meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action on a specific resource: turning labels on/off and setting label properties such as expression, font, and halo. It is clear what the tool does, but it does not explicitly differentiate itself from related siblings like set_layer_renderer or set_layer_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use or when-not-to-use guidance, no prerequisites, and no mention of alternatives. It simply states the capability, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_layer_rendererB
Change a layer's symbology: a single symbol, unique values by category, or a classified/continuous colour scheme by numeric field.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Fill colour for simple symbology as [r, g, b] or [r, g, b, alpha]. | |
| field | No | Field to symbolise by (all types except simple). | |
| label | No | Legend label for simple symbology. | |
| fields | No | Several fields for unique_values symbology. | |
| map_name | No | Map to act on; defaults to the active map. | |
| color_ramp | No | Colour ramp name, e.g. "Viridis" -- see list_color_ramps. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| break_count | No | Number of classes for graduated symbology. | |
| symbol_size | No | Point/line symbol size in points. | |
| class_colors | No | Explicit colour per class for graduated symbology, lowest class first, e.g. [[244,166,166],[249,220,164],[147,203,163]]. Use it when no built-in ramp has the colours you want. | |
| transparency | No | Layer transparency 0-100. | |
| value_colors | No | Explicit colours per category for unique_values, e.g. {"Forest": [34, 139, 34]}. | |
| outline_color | No | Outline colour as [r, g, b]. | |
| outline_width | No | Outline width in points. | |
| renderer_type | No | simple, unique_values, graduated_colors, graduated_symbols or unclassed_colors. | simple |
| max_symbol_size | No | Largest size for graduated_symbols. | |
| min_symbol_size | No | Smallest size for graduated_symbols. | |
| classification_method | No | NaturalBreaks, EqualInterval, Quantile, StandardDeviation, GeometricInterval or DefinedInterval. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the operation changes symbology, but it does not disclose mutation side effects such as persistence, permissions, reversibility, or whether changes require saving the project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It states the core operation and the supported symbology concepts efficiently, leaving detail to the rich schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input schema is highly detailed and an output schema exists, so return values need not be explained. However, for a complex 18-parameter mutation tool with no annotations, the description is minimally complete and omits usage context and behavioral caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 18 parameters thoroughly. The description adds only a high-level mapping to renderer modes and does not add syntax, defaults, or parameter interaction details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Change a layer's symbology,' and it enumerates three broad modes (single symbol, unique values, classified/continuous colour scheme). It distinguishes the operation from read-only or apply-from-layer siblings by scope, though it does not name alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus siblings like get_layer_symbology, apply_symbology_from_layer, set_raster_symbology, or set_layer_transparency. Usage is only implied by the verb 'Change,' leaving the agent to infer prerequisites and selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_layer_scale_rangeB
Limit the scale range a layer draws at.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| max_scale | No | Zoomed-in limit, e.g. 1000 (0 = no limit). | |
| min_scale | No | Zoomed-out limit, e.g. 100000 (0 = no limit). | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It indicates the effect ('limit the scale range a layer draws at') but does not disclose persistence, permission requirements, side effects, or interaction between min/max scale values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple setter operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is rich (100% coverage) and an output schema exists, so return values need not be explained. However, with no annotations and no usage guidelines, the description is only minimally complete for guiding correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters with clear descriptions. The description adds no parameter-level meaning beyond what the schema provides, making 3 the appropriate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (limit) on a specific resource (a layer's scale range). It is distinguishable from siblings like set_layer_visibility or set_layer_transparency by the unique 'scale range' target, but it does not explicitly differentiate itself from any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description only states the effect, leaving usage context to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_layer_transparencyC
Set layer transparency (0 = opaque, 100 = fully transparent).
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| transparency | Yes | 0-100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about permissions required, whether transparency changes are persisted or need a save, or what happens with an unknown layer name; the only behavioral detail given (the 0/100 scale) is redundant with the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every word earns its place. It is arguably too terse for a mutation tool, which slightly limits its utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema fully documents all three parameters. However, for a mutation tool with zero annotations, the description omits persistence/validation behavior an agent would want before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – map_name default, layer_name format, and transparency range are all documented in the schema. The description restates the transparency scale rather than adding new meaning, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Set') and resource ('layer transparency'), and clarifies the value scale's direction (0 = opaque, 100 = fully transparent). It does not distinguish itself from near-sibling tools like set_layer_visibility or set_layer_scale_range, but the action is unambiguous on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus related layer-property tools, nor any preconditions (e.g., which map is targeted, whether the layer must exist or be visible). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_layer_visibilityB
Show or hide one layer, several layers, or every layer in the map.
| Name | Required | Description | Default |
|---|---|---|---|
| visible | Yes | True to show, False to hide. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | No | Single layer to change. | |
| layer_names | No | Several layers to change. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It doesn't disclose whether the operation is reversible, what happens if a layer is not found, whether it affects only the current view or persists in the project, or any rate limits. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core action, and no wasted words. It efficiently conveys the scope of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there are no annotations and an output schema exists, the description is minimally adequate. It covers the basic action and scope, but lacks important behavioral context such as error handling, persistence, or side effects. For a 4-parameter mutation tool, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully documents all parameters, including the visible flag and the distinction between layer_name and layer_names. The description adds little beyond reiterating that one, several, or all layers can be affected, which is already implied by the schema's parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (show/hide) and resource (layers), clarifying that it works on one, several, or all layers. This distinguishes it from siblings like set_layer_transparency or set_layer_scale_range, but it doesn't explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor are prerequisites or conditions mentioned. The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_layout_elementB
Move, resize, rename, hide or change the text of any layout element.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position. | |
| y | No | New Y position. | |
| text | No | New text (text elements only). | |
| width | No | New width. | |
| height | No | New height. | |
| visible | No | Show or hide the element. | |
| new_name | No | Rename the element. | |
| layout_name | Yes | Layout name. | |
| element_name | Yes | Element to change. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It lists operations but omits whether unset parameters leave values unchanged, whether changes are saved automatically, what permissions are required, or how errors are handled for this mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that packs the core operations with no wasted words. It is appropriately sized for a tool whose parameter details live in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. However, for a nine-parameter mutation tool with no annotations, the description omits usage and side-effect context, leaving it only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds no meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (layout element) and enumerates concrete operations (move, resize, rename, hide, change text). It is clear what the tool does, but it does not distinguish itself from siblings such as delete_layout_element or add_layout_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, prerequisite information, or mention of alternative tools. The description only lists capabilities, leaving the agent to infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_map_frame_extentC
Point a layout's map frame at a layer, an extent or a scale.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Fixed scale denominator. | |
| extent | No | Explicit extent to show. | |
| rotation | No | Frame rotation in degrees. | |
| layer_name | No | Zoom the frame to this layer. | |
| layout_name | Yes | Layout name. | |
| zoom_to_all | No | Zoom to all layers in the frame's map. | |
| map_frame_name | No | Map frame element name. | Map Frame |
| selection_only | No | Zoom to the layer's selected features only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It hints at three alternative modes but does not disclose side effects on the layout, whether the project must be saved, precedence when multiple mode parameters are supplied, or what happens on invalid layer/layout names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though arguably too terse for an 8-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, a mode-selector design, and no annotations, the description leaves real ambiguity — an agent cannot tell whether scale, extent, layer_name, and zoom_to_all can be combined or are exclusive. An output schema exists, so return values need not be described, but the invocation semantics are under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters, and the baseline is 3. The description's mention of 'layer, an extent or a scale' loosely mirrors three of those parameters but adds no format or precedence information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Point') and resource ('a layout's map frame') and enumerates the three things it can be aimed at (layer, extent, scale). It is clear, but it does nothing to distinguish it from close siblings like add_map_frame or set_layout_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The three target modes are listed, implying they are alternatives, but there is no explicit when-to-use guidance and no statement that scale/extent/layer_name/zoom_to_all are mutually exclusive modes. An agent gets no help choosing between this tool and set_map_view, zoom_to_layer, or add_map_frame.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_map_propertiesC
Rename a map or change its coordinate system.
| Name | Required | Description | Default |
|---|---|---|---|
| epsg | No | New coordinate system WKID. | |
| map_name | No | Map to act on; defaults to the active map. | |
| new_name | No | New map name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It is a mutation tool, yet it says nothing about permission requirements, whether changes are undoable, what happens when neither parameter is supplied, or whether the active map is affected by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, so it is efficient. It is arguably too terse for a mutation tool, but no sentence wastes the reader's time.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and all three parameters are documented in the schema. However, for a parameterless-required mutation tool with no annotations, the description leaves the agent without any behavioral or prerequisite context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so epsg, map_name, and new_name are already documented in the schema, including the 'defaults to the active map' note. The description adds no syntax, format, or interaction detail beyond what the schema provides, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource pair ('Rename a map', 'change its coordinate system') that maps cleanly onto the new_name and epsg parameters. It distinguishes itself from rename_layer by operating on maps rather than layers, though it does not explicitly differentiate from siblings like create_map or list_maps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent gets no help deciding between this and rename_layer or activate_map, nor any hint that at least one of the two properties should be supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_map_viewA
Move the map view: set an extent, a centre point, a scale and/or a rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Centre X in map units. | |
| y | No | Centre Y in map units. | |
| epsg | No | WKID the extent coordinates are in. | |
| scale | No | Map scale denominator, e.g. 50000. | |
| extent | No | Extent as {"xmin": ..., "ymin": ..., "xmax": ..., "ymax": ...}. | |
| map_name | No | Map to act on; defaults to the active map. | |
| rotation | No | Rotation in degrees. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'Move the map view' correctly signals a non-destructive view-state change rather than a data mutation, but it says nothing about persistence, error behavior when no map is active, or whether an unknown map_name fails silently. Adequate but thin for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, imperative verb first, zero filler. The full actionable scope is front-loaded before the colon.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. All seven parameters are optional and individually documented, and the description correctly notes the aspects can be combined ('and/or'), which is the one interaction detail the schema alone would not convey.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema (units, EPSG/WKID, scale denominator, extent keys, active-map default). The description only restates the parameter groups at a high level and adds no syntax or unit detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Move the map view') plus the resource it acts on, and it enumerates the four settable aspects (extent, centre, scale, rotation). It doesn't explicitly contrast itself with get_map_view, export_map_view or set_map_frame_extent, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'and/or' phrasing implies you may combine any subset of the four view controls, which is useful, but there is no explicit when-to-use guidance or exclusion against siblings like zoom_to_layer, apply_bookmark or set_map_frame_extent. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_raster_symbologyC
Set a raster layer's colorizer and colour ramp.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| colorizer | No | stretch, classify, unique_values or rgb. | stretch |
| color_ramp | No | Colour ramp name, e.g. "Elevation #1". | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| break_count | No | Number of classes for classify. | |
| stretch_type | No | MinimumMaximum, StandardDeviation, PercentClip, HistogramEqualize, ... | |
| transparency | No | Layer transparency 0-100. | |
| classification_method | No | Classification method. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether this mutates the layer's existing symbology, whether the change is reversible, whether it requires a valid colour ramp name, or what happens if an invalid colorizer is passed. For a mutation tool with 8 parameters and zero annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero waste. The scoping constraint (raster layer, colorizer, colour ramp) is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, 1 required, 8 undocumented in the description, no annotations, and an output schema present, the description is too thin. An agent cannot tell from the text alone whether colour ramp requires the colorizer to be 'stretch' or 'classify', or how break_count and classification_method interact with the chosen colorizer. The description is incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents each parameter including the colorizer enum-like values and stretch types. The description adds nothing beyond the schema's own parameter texts, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: set a raster layer's colorizer and colour ramp. This is distinguishable from set_layer_renderer, which handles vector symbology, though the description never explicitly names that sibling. Clear enough for an agent to select among the many symbology tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance. The description does not say when to prefer this over set_layer_renderer, get_layer_symbology, apply_symbology_from_layer, or list_color_ramps, nor does it state prerequisites like which colorizer values are valid in which cases. Only the resource is identified, not the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_selectionC
Select specific features by ObjectID.
| Name | Required | Description | Default |
|---|---|---|---|
| oids | Yes | ObjectIDs to select. | |
| method | No | NEW, DIFFERENCE, INTERSECT, SYMDIFFERENCE, UNION. | NEW |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether this replaces or augments the current selection, how the default method 'NEW' behaves, or that it mutates map state. An output schema exists, so return values need not be described, but the mutation semantics are undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key input front-loaded and zero filler. It is terse to the point of under-specification, but nothing in it is wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter selection-mutation tool with a full schema and an output schema, the description is minimally adequate but omits the one thing the schema cannot convey: how this differs from select_features and what the method modes do to existing selections.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents oids, method (with its five modes), map_name, and layer_name. The description only echoes the ObjectID concept and adds no format, limit, or semantics beyond the schema, which is the defined baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('select specific features') and the input key ('by ObjectID'), so the action is clear. However, it draws no boundary against the close sibling select_features, leaving an agent to guess which one is intended.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives such as select_features, select_by_location, or get_selection, and no prerequisites. The agent must infer all routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_pumpA
Remove the main-thread dispatcher. Live-project commands stop working until the user installs it again.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does disclose the key side effect: live-project commands break after removal and require the user to reinstall. It stops short of covering permissions, error behavior when no pump is running, or whether the tool itself can restore the pump.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The action is front-loaded and the consequence follows immediately, which is exactly the right ordering for a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and there are no parameters to document. The description covers the action and its main consequence; the only gap is the pump/dispatcher terminology mismatch and the lack of any link to get_pump_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing parameter-related for the description to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Remove the main-thread dispatcher.' However, the name is stop_pump and the description never uses the word 'pump', so an agent must infer that the 'main-thread dispatcher' is the pump. It also does not distinguish itself from the sibling get_pump_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance and no alternative named. The warning that 'live-project commands stop working until the user installs it again' implicitly tells the agent to use this only when disruption is acceptable, which is useful but indirect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_featuresB
Group rows by one or more fields and aggregate -- the fast way to answer 'how many / how much per category' without geoprocessing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum groups to return. | |
| where | No | SQL where clause. | |
| group_by | Yes | Field(s) to group by. | |
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| value_field | No | Numeric field to sum/average per group. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. Beyond implying a read-only aggregation, it does not state whether it modifies data, permission requirements, limits/defaults, or any side effects, leaving meaningful behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no waste. It immediately states the operation and then gives the practical purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The rich schema and existing output schema reduce what the description must cover, and it does communicate the core aggregation purpose. However, it omits routing guidance against the many statistics/selection/count siblings and provides no behavioral context despite missing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters, including group_by, value_field, where, limit, map_name, and layer_name. The description adds only a high-level mapping to 'one or more fields' and 'how much per category,' which is marginal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: grouping rows by fields and aggregating, with the concrete use case of 'how many / how much per category.' It distinguishes itself from geoprocessing generally, but does not name or contrast against close siblings such as get_field_statistics, get_unique_values, or count_features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use the tool by framing it as the 'fast way' to answer category-count/sum questions 'without geoprocessing,' which suggests an alternative to geoprocessing. However, it gives no explicit when-not conditions, prerequisites, or named alternative tools among the many summary/statistics siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
truncate_tableA
Delete every row from a table or feature class, keeping the schema.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It clearly discloses the destructive scope (every row) and what is preserved (schema), but it omits critical operational details such as irreversibility, undo behavior, permissions, or whether an edit session/save is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core behavior without any redundant or filler text. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple two-parameter tool, and the presence of an output schema means return values need not be explained. However, for a destructive operation with no annotations, it should ideally include irreversibility and usage guidance to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the input schema. The description adds only a small contextual clarification that the target can be a table or feature class, which aligns with the layer_name parameter but does not add parameter-specific semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: delete every row from a table or feature class, while keeping the schema. This clearly distinguishes it from sibling operations like delete_features because it is a full truncation rather than selective deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'keeping the schema': use this when all rows should be removed but the table structure must remain. However, the description does not explicitly compare it to alternatives such as delete_features or delete_dataset, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_featuresB
Update attributes and/or geometry of rows matching a where clause.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Stop after this many rows (0 = no limit). | |
| where | No | SQL where clause selecting the rows to update. | |
| geometry | No | New geometry as WKT, applied to every match. | |
| map_name | No | Map to act on; defaults to the active map. | |
| attributes | No | Field/value pairs to write. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| save_edits | No | Commit the edits immediately instead of leaving them pending. | |
| allow_update_all | No | Required confirmation when no where clause is given. | |
| use_edit_session | No | Wrap in an edit session. | |
| geometry_spatial_reference | No | WKID of the geometry. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that updates are scoped by a where clause, but it does not address what happens when no where clause is given (allow_update_all handles that, but the description does not say it), whether edits are pending vs committed (save_edits handles that), or any permission requirements. The schema parameters fill some of this gap, but the description itself adds little beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It states the action, the target, and the scoping condition concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 10-parameter mutation tool with no annotations and an output schema, the description is minimally adequate. It covers the core operation but omits important behavioral context such as the pending-edit workflow, the update-all guard, and map/layer resolution behavior. The schema and output schema compensate partially, but the description leaves material gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description mentions 'where clause' and 'attributes and/or geometry', which maps to existing parameters but adds no syntax, format, or behavioral detail beyond what the schema provides. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Update attributes and/or geometry of rows matching a where clause.' This specifies the operation, what is being updated, and the scoping mechanism. It does not differentiate from sibling tools like insert_features or delete_features, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives like calculate_field or the save_edits/discard_edits workflow. An agent must infer context entirely from the description and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zonal_statisticsA
Summarise raster values inside zone polygons and return the table. Requires the Spatial Analyst extension.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| zone_field | Yes | Field identifying each zone. | |
| zone_layer | Yes | Polygon layer defining the zones. | |
| output_table | No | Where to write the statistics table. | |
| raster_layer | Yes | Raster to summarise. | |
| ignore_nodata | No | DATA or NODATA. | DATA |
| statistics_type | No | ALL, MEAN, SUM, MINIMUM, MAXIMUM, MEDIAN, MAJORITY, ... | ALL |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It adds useful context by naming the extension requirement and mentioning the return table, but it omits side effects such as whether output_table is created, overwritten, or optional in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core operation and followed by the key prerequisite. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the full schema coverage and the presence of an output schema, the description is largely complete. It covers purpose and the extension prerequisite, though it could say more about output-table behavior since no annotations exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all seven parameters. The description adds no parameter-level meaning beyond what the schema already provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation (summarise raster values inside zone polygons) and the output (a table). It is clearly distinguishable from siblings such as sample_raster_values, get_field_statistics, or summarize_features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a prerequisite ('Requires the Spatial Analyst extension'), which implies when the tool can be used. However, it does not compare against alternatives or specify when-not to use it, so usage guidance remains only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zoom_to_layerB
Zoom the map view to a layer's extent.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. | |
| expand_factor | No | Optional padding, e.g. 0.1 for 10% extra around the extent. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description needs to carry more behavioral load. It implies a view-only mutation but doesn't state whether a layer must be visible, whether it errors on missing layers, or whether it changes the active map. It also doesn't disclose whether the zoom is animated or immediate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It could be improved by including one sentence about when to use it versus related view tools, but the structure is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a view-mutating tool with no annotations and several sibling tools that also affect the view, the description omits when it must be used instead of alternatives or whether a layer must be selected/visible first.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so map_name, layer_name, and expand_factor are already fully documented in the schema. The description adds no parameter syntax or format details beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (zoom) and resource (map view to a layer's extent), clearly distinguishing it from siblings like zoom_to_selection. The purpose is clear without requiring schema inspection, though it doesn't explicitly call out the sibling it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when/when-not guidance. An agent can infer it should be used when it wants to navigate the view to a layer, but the description doesn't contrast it with zoom_to_selection, apply_bookmark, or set_map_view, which are all competing ways to change the view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zoom_to_selectionC
Zoom the map view to the currently selected features.
| Name | Required | Description | Default |
|---|---|---|---|
| map_name | No | Map to act on; defaults to the active map. | |
| layer_name | Yes | Layer or table name as shown by get_layers, or a full dataset path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state what happens when nothing is selected (no-op vs. error), whether this mutates only the view, or whether it has any side effects like changing the active map.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words. However, the brevity edges into under-specification for a tool with a required parameter whose role is never mentioned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the tool is simple with only two params. Still, the description omits the selection prerequisite and the required layer_name, leaving the agent to reconstruct usage from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in the schema (map_name defaults to active map; layer_name accepts a name from get_layers or a full dataset path). The description adds nothing beyond the schema and arguably creates confusion by omitting layer_name altogether.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Zoom') and resource ('the map view'), scoped to 'currently selected features', which differentiates it from the sibling zoom_to_layer. It is clear what the tool does, though it never acknowledges the required layer_name parameter it actually takes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus zoom_to_layer, zoom_to_layer's share of scope, or the prerequisite that a selection must exist. The agent must infer that a selection must already be made before this tool is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
107 tool updates
v1.1.1- Added
activate_map - Changed
add_field10 fields changed- added
Input schema / properties / field_alias / descriptionAdded value: +"Display alias." - added
Input schema / properties / field_domainAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Attribute domain to assign.", + "title": "Field Domain" +} - added
Input schema / properties / field_length / descriptionAdded value: +"Length for TEXT fields." - added
Input schema / properties / field_name / descriptionAdded value: +"New field name." - added
Input schema / properties / field_precisionAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Numeric precision.", + "title": "Field Precision" +} - added
Input schema / properties / field_scaleAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Numeric scale.", + "title": "Field Scale" +} - added
Input schema / properties / field_type / descriptionAdded value: +"TEXT, LONG, SHORT, DOUBLE, FLOAT, DATE, BIGINTEGER, GUID or BLOB." - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / nullableAdded value: +{ + "default": "NULLABLE", + "description": "NULLABLE or NON_NULLABLE.", + "title": "Nullable", + "type": "string" +}
- Added
add_fields - Added
add_folder_connection - Added
add_join - Changed
add_layer4 fields changed- added
Input schema / properties / group_layerAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional group layer to add it into.", + "title": "Group Layer" +} - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / path / descriptionAdded value: +"Dataset path or service URL." - added
Input schema / properties / positionAdded value: +{ + "default": "AUTO_ARRANGE", + "description": "AUTO_ARRANGE, TOP or BOTTOM.", + "title": "Position", + "type": "string" +}
- Added
add_layout_legend - Added
add_layout_north_arrow - Added
add_layout_picture - Added
add_layout_scale_bar - Added
add_layout_text - Added
add_map_frame - Added
add_web_layer - Added
alter_field - Added
apply_bookmark - Added
apply_symbology_from_layer - Changed
calculate_field6 fields changed- added
Input schema / properties / code_blockAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional helper function definitions.", + "title": "Code Block" +} - added
Input schema / properties / expression / descriptionAdded value: +"Expression." - added
Input schema / properties / expression_type / descriptionAdded value: +"PYTHON3, ARCADE or SQL." - added
Input schema / properties / field_name / descriptionAdded value: +"Field to write to." - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map."
- Added
check_extension - Changed
clear_selection2 fields changed- added
Input schema / properties / layer_name / descriptionAdded value: +"Layer to clear; default all layers." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map."
- Added
count_features - Added
create_bookmark - Changed
create_feature_class10 fields changed- added
Input schema / properties / add_to_map / descriptionAdded value: +"Add the result to the map." - added
Input schema / properties / epsg / descriptionAdded value: +"Coordinate system WKID, e.g. 32647." - added
Input schema / properties / fieldsAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Fields to create, e.g. [{\"name\": \"NAME\", \"type\": \"TEXT\", \"length\": 50}].", + "title": "Fields" +} - added
Input schema / properties / geometry_type / descriptionAdded value: +"POINT, MULTIPOINT, POLYLINE or POLYGON." - added
Input schema / properties / has_mAdded value: +{ + "default": "DISABLED", + "description": "ENABLED or DISABLED.", + "title": "Has M", + "type": "string" +} - added
Input schema / properties / has_zAdded value: +{ + "default": "DISABLED", + "description": "ENABLED or DISABLED.", + "title": "Has Z", + "type": "string" +} - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / name / descriptionAdded value: +"Feature class name." - added
Input schema / properties / out_path / descriptionAdded value: +"Target geodatabase or folder." - added
Input schema / properties / templateAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Dataset to copy the schema from.", + "title": "Template" +}
- Added
create_file_geodatabase - Added
create_group_layer - Added
create_layout - Changed
create_map4 fields changed- added
Input schema / properties / basemapAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional basemap to add, e.g. 'Topographic'.", + "title": "Basemap" +} - added
Input schema / properties / epsgAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional coordinate system WKID, e.g. 32647.", + "title": "Epsg" +} - added
Input schema / properties / map_type / descriptionAdded value: +"MAP or SCENE." - added
Input schema / properties / name / descriptionAdded value: +"Name for the new map."
- Added
create_table - Added
delete_bookmark - Added
delete_dataset - Added
delete_features - Changed
delete_field8 fields changed- added
Input schema / properties / field_name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / field_name / defaultAdded value: +null - added
Input schema / properties / field_name / descriptionAdded value: +"Single field to delete." - removed
Input schema / properties / field_name / typeRemoved value: -"string" - added
Input schema / properties / field_namesAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Several fields to delete.", + "title": "Field Names" +} - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - changed
Input schema / requiredPrevious value: -[ - "layer_name", - "field_name" -]New value: +[ + "layer_name" +]
- Added
delete_layout - Added
delete_layout_element - Added
describe_dataset - Added
describe_geoprocessing_tool - Added
diagnose - Added
discard_edits - Added
duplicate_layer - Changed
execute_arcpy_code2 fields changed- added
Input schema / properties / code / descriptionAdded value: +"Python source to run." - added
Input schema / properties / reset_namespaceAdded value: +{ + "default": false, + "description": "Forget variables kept from earlier calls.", + "title": "Reset Namespace", + "type": "boolean" +}
- Added
export_features - Changed
export_layout5 fields changed- added
Input schema / properties / dpi / descriptionAdded value: +"Export resolution." - added
Input schema / properties / layout_name / descriptionAdded value: +"Layout name." - added
Input schema / properties / output_path / descriptionAdded value: +"Output file; the format follows the extension." - added
Input schema / properties / return_imageAdded value: +{ + "default": true, + "description": "Return PNG/JPEG output inline.", + "title": "Return Image", + "type": "boolean" +} - changed
Output schema / (root)Previous value: -{ - "properties": { - "result": { - "title": "Result", - "type": "string" - } - }, - "required": [ - "result" - ], - "title": "export_layoutOutput", - "type": "object" -}New value: +null
- Added
export_map_series - Changed
export_map_view12 fields changed- added
Input schema / properties / dpiAdded value: +{ + "default": 96, + "description": "Resolution.", + "title": "Dpi", + "type": "integer" +} - added
Input schema / properties / height / descriptionAdded value: +"Image height in pixels." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / output_path / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / output_path / defaultAdded value: +null - added
Input schema / properties / output_path / descriptionAdded value: +"Optional file to save to; omit for a temporary image." - removed
Input schema / properties / output_path / typeRemoved value: -"string" - added
Input schema / properties / return_imageAdded value: +{ + "default": true, + "description": "Return the image inline.", + "title": "Return Image", + "type": "boolean" +} - added
Input schema / properties / width / descriptionAdded value: +"Image width in pixels." - added
Input schema / properties / zoom_to_layerAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Zoom to this layer before exporting.", + "title": "Zoom To Layer" +} - removed
Input schema / requiredRemoved value: -[ - "output_path" -] - changed
Output schema / (root)Previous value: -{ - "properties": { - "result": { - "title": "Result", - "type": "string" - } - }, - "required": [ - "result" - ], - "title": "export_map_viewOutput", - "type": "object" -}New value: +null
- Added
get_broken_layers - Added
get_capabilities - Added
get_environment - Changed
get_features8 fields changed- added
Input schema / properties / fields / descriptionAdded value: +"Fields to return; default all." - added
Input schema / properties / include_geometry / descriptionAdded value: +"Add SHAPE@WKT geometry (can be very large)." - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum rows to return (max 5000)." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Rows to skip -- use for paging.", + "title": "Offset", + "type": "integer" +} - added
Input schema / properties / order_byAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ORDER BY clause, e.g. \"POP DESC\".", + "title": "Order By" +} - added
Input schema / properties / where / descriptionAdded value: +"SQL where clause."
- Changed
get_field_statistics4 fields changed- added
Input schema / properties / field / descriptionAdded value: +"Field name." - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / whereAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "SQL where clause.", + "title": "Where" +}
- Changed
get_layer_info2 fields changed- added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map."
- Added
get_layer_symbology - Changed
get_layers2 fields changed- added
Input schema / properties / include_basemapAdded value: +{ + "default": false, + "description": "Include basemap layers.", + "title": "Include Basemap", + "type": "boolean" +} - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map."
- Added
get_layout_info - Added
get_map_extent - Added
get_map_view - Added
get_messages - Added
get_project_items - Added
get_pump_status - Changed
get_raster_info2 fields changed- added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map."
- Added
get_selection - Changed
get_unique_values6 fields changed- added
Input schema / properties / field / descriptionAdded value: +"Field name." - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - changed
Input schema / properties / limit / defaultPrevious value: -100New value: +200 - added
Input schema / properties / limit / descriptionAdded value: +"Maximum distinct values to return." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / whereAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "SQL where clause.", + "title": "Where" +}
- Added
insert_features - Added
list_bookmarks - Added
list_color_ramps - Added
list_fields - Added
list_folder - Changed
list_geoprocessing_tools3 fields changed- added
Input schema / properties / limitAdded value: +{ + "default": 500, + "description": "Maximum tool names to return.", + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / toolboxAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Restrict to one toolbox alias, e.g. \"analysis\" or \"management\".", + "title": "Toolbox" +} - added
Input schema / properties / wildcard / descriptionAdded value: +"Name pattern, e.g. \"*Buffer*\"."
- Added
list_toolboxes - Added
list_workspace_contents - Added
move_layer - Added
preview_layout - Added
raster_calculator - Added
remove_join - Changed
remove_layer2 fields changed- added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map."
- Added
remove_map - Added
rename_layer - Added
repair_layer_source - Added
run_batch - Changed
run_geoprocessing_tool7 fields changed- added
Input schema / properties / add_to_mapAdded value: +{ + "default": false, + "description": "Add the tool's outputs to the map.", + "title": "Add To Map", + "type": "boolean" +} - added
Input schema / properties / args / descriptionAdded value: +"Positional parameters instead of keywords." - added
Input schema / properties / checkout_extensionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Extension to check out for this run, e.g. \"Spatial\" or \"3D\".", + "title": "Checkout Extension" +} - added
Input schema / properties / map_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Map to act on; defaults to the active map.", + "title": "Map Name" +} - added
Input schema / properties / overwriteAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Temporarily allow overwriting outputs.", + "title": "Overwrite" +} - added
Input schema / properties / parameters / descriptionAdded value: +"Keyword parameters, e.g. {\"in_features\": \"roads\", \"out_feature_class\": \"roads_buf\", \"buffer_distance_or_field\": \"500 Meters\"}." - added
Input schema / properties / tool_name / descriptionAdded value: +"e.g. \"analysis.Buffer\", \"management.Dissolve\", \"sa.Slope\" or \"Buffer_analysis\"."
- Added
run_python_toolbox_tool - Added
sample_raster_values - Added
save_edits - Added
save_layer_file - Changed
save_project1 field changed- added
Input schema / properties / save_as_pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional path for a copy; the open project is left untouched.", + "title": "Save As Path" +}
- Added
search_data - Added
select_by_location - Changed
select_features5 fields changed- added
Input schema / properties / invertAdded value: +{ + "default": "NON_INVERT", + "description": "INVERT to select everything the clause does not match.", + "title": "Invert", + "type": "string" +} - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / method / descriptionAdded value: +"NEW_SELECTION, ADD_TO_SELECTION, REMOVE_FROM_SELECTION, SUBSET_SELECTION, SWITCH_SELECTION or CLEAR_SELECTION." - added
Input schema / properties / where / descriptionAdded value: +"SQL where clause."
- Changed
set_basemap2 fields changed- added
Input schema / properties / basemap_name / descriptionAdded value: +"Basemap name." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map."
- Changed
set_definition_query3 fields changed- added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / query / descriptionAdded value: +"SQL where clause, e.g. \"POP > 10000\"."
- Added
set_environment - Added
set_layer_labeling - Changed
set_layer_renderer18 fields changed- added
Input schema / properties / break_count / descriptionAdded value: +"Number of classes for graduated symbology." - added
Input schema / properties / class_colorsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Explicit colour per class for graduated symbology, lowest class first, e.g. [[244,166,166],[249,220,164],[147,203,163]]. Use it when no built-in ramp has the colours you want.", + "title": "Class Colors" +} - added
Input schema / properties / classification_methodAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "NaturalBreaks, EqualInterval, Quantile, StandardDeviation, GeometricInterval or DefinedInterval.", + "title": "Classification Method" +} - added
Input schema / properties / color / descriptionAdded value: +"Fill colour for simple symbology as [r, g, b] or [r, g, b, alpha]." - added
Input schema / properties / color_ramp / descriptionAdded value: +"Colour ramp name, e.g. \"Viridis\" -- see list_color_ramps." - added
Input schema / properties / field / descriptionAdded value: +"Field to symbolise by (all types except simple)." - added
Input schema / properties / fieldsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Several fields for unique_values symbology.", + "title": "Fields" +} - added
Input schema / properties / labelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Legend label for simple symbology.", + "title": "Label" +} - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / max_symbol_sizeAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Largest size for graduated_symbols.", + "title": "Max Symbol Size" +} - added
Input schema / properties / min_symbol_sizeAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Smallest size for graduated_symbols.", + "title": "Min Symbol Size" +} - added
Input schema / properties / outline_color / descriptionAdded value: +"Outline colour as [r, g, b]." - added
Input schema / properties / outline_widthAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Outline width in points.", + "title": "Outline Width" +} - added
Input schema / properties / renderer_type / descriptionAdded value: +"simple, unique_values, graduated_colors, graduated_symbols or unclassed_colors." - added
Input schema / properties / symbol_sizeAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Point/line symbol size in points.", + "title": "Symbol Size" +} - added
Input schema / properties / transparencyAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Layer transparency 0-100.", + "title": "Transparency" +} - added
Input schema / properties / value_colorsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Explicit colours per category for unique_values, e.g. {\"Forest\": [34, 139, 34]}.", + "title": "Value Colors" +}
- Added
set_layer_scale_range - Added
set_layer_transparency - Changed
set_layer_visibility8 fields changed- added
Input schema / properties / layer_name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / layer_name / defaultAdded value: +null - added
Input schema / properties / layer_name / descriptionAdded value: +"Single layer to change." - removed
Input schema / properties / layer_name / typeRemoved value: -"string" - added
Input schema / properties / layer_namesAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Several layers to change.", + "title": "Layer Names" +} - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map." - added
Input schema / properties / visible / descriptionAdded value: +"True to show, False to hide." - changed
Input schema / requiredPrevious value: -[ - "layer_name", - "visible" -]New value: +[ + "visible" +]
- Added
set_layout_element - Added
set_map_frame_extent - Added
set_map_properties - Added
set_map_view - Added
set_raster_symbology - Added
set_selection - Added
stop_pump - Added
summarize_features - Added
truncate_table - Added
update_features - Added
zonal_statistics - Changed
zoom_to_layer3 fields changed- added
Input schema / properties / expand_factorAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional padding, e.g. 0.1 for 10% extra around the extent.", + "title": "Expand Factor" +} - added
Input schema / properties / layer_name / descriptionAdded value: +"Layer or table name as shown by get_layers, or a full dataset path." - added
Input schema / properties / map_name / descriptionAdded value: +"Map to act on; defaults to the active map."
- Added
zoom_to_selection
31 tool updates
v0.1.0- First observed
add_field - First observed
add_layer - First observed
calculate_field - First observed
clear_selection - First observed
create_feature_class - First observed
create_map - First observed
delete_field - First observed
execute_arcpy_code - First observed
export_layout - First observed
export_map_view - First observed
get_arcgis_info - First observed
get_features - First observed
get_field_statistics - First observed
get_layer_info - First observed
get_layers - First observed
get_project_info - First observed
get_raster_info - First observed
get_unique_values - First observed
list_geoprocessing_tools - First observed
list_layouts - First observed
list_maps - First observed
ping - First observed
remove_layer - First observed
run_geoprocessing_tool - First observed
save_project - First observed
select_features - First observed
set_basemap - First observed
set_definition_query - First observed
set_layer_renderer - First observed
set_layer_visibility - First observed
zoom_to_layer
TDQS
Scored across 112 tools
Most tools are cleanly separated by resource and action (maps, layers, layouts, fields, selection, raster). Overlap remains among generic execution and diagnostic tools such as run_geoprocessing_tool, execute_arcpy_code, run_python_toolbox_tool, run_batch, get_capabilities, and the multiple project/diagnostic info tools.
Nearly all tools use snake_case verb_noun patterns like list_maps, create_map, and set_layer_visibility. A few bare imperatives such as ping and diagnose, plus noun-like names such as zonal_statistics, are minor deviations but do not break the overall pattern.
112 tools is extreme for an agent-facing MCP server; even for a broad GIS platform, many operations could be consolidated or routed through the generic execution tools. The rubric treats 50+ tools as an extreme count mismatch.
The surface covers map/layer/layout lifecycle, data creation and editing, selection, symbology, raster operations, geoprocessing, project diagnostics, and generic escape hatches for uncovered arcpy tasks. It appears complete for ArcGIS Pro automation without obvious dead ends.
Maintenance
Related MCP Connectors
Provides AI assistants with direct access to Mapbox developer APIs and documentation.
GIS tools for AI agents: 65 free tools + 8 paid (hazard/site-scouting/GeoJSON export)
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Ask in plain English, get a rendered, shareable map from live public data. 24 geospatial tools.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceExposes ArcGIS Pro geoprocessing capabilities to LLMs via the arcpy library, enabling automated spatial analysis and data management. It provides a comprehensive suite of tools for vector geoprocessing, terrain analysis, and raster operations designed for GIS workflows.4-
- AlicenseAqualityDmaintenanceEnables natural language control of live ArcGIS Pro sessions through the Model Context Protocol, allowing inspection of projects, layers, and attributes, and execution of geoprocessing tasks.252MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to control ArcGIS Pro through natural language, executing geoprocessing tools, editing data, and automating GIS workflows via a persistent ArcPy session.12Apache 2.0
- FlicenseNot gradedqualityCmaintenanceDrives a live ArcGIS Pro session from Claude via arcpy, enabling layer listing, dataset description, geoprocessing, and project inspection directly against an open project.-