Skip to main content
Glama

run_geoprocessing_tool

Runs any arcpy geoprocessing tool on live ArcGIS Pro layers, applying selections and definition queries; call describe_geoprocessing_tool first if parameter names are unknown.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
argsNoPositional parameters instead of keywords.
map_nameNoMap to act on; defaults to the active map.
overwriteNoTemporarily allow overwriting outputs.
tool_nameYese.g. "analysis.Buffer", "management.Dissolve", "sa.Slope" or "Buffer_analysis".
add_to_mapNoAdd the tool's outputs to the map.
parametersNoKeyword parameters, e.g. {"in_features": "roads", "out_feature_class": "roads_buf", "buffer_distance_or_field": "500 Meters"}.
checkout_extensionNoExtension to check out for this run, e.g. "Spatial" or "3D".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv1.1.1
    • addedInput schema / properties / add_to_map
      Added value: +{
      +  "default": false,
      +  "description": "Add the tool's outputs to the map.",
      +  "title": "Add To Map",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / args / description
      Added value: +"Positional parameters instead of keywords."
    • addedInput schema / properties / checkout_extension
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Extension to check out for this run, e.g. \"Spatial\" or \"3D\".",
      +  "title": "Checkout Extension"
      +}
    • addedInput schema / properties / map_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Map to act on; defaults to the active map.",
      +  "title": "Map Name"
      +}
    • addedInput schema / properties / overwrite
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Temporarily allow overwriting outputs.",
      +  "title": "Overwrite"
      +}
    • addedInput schema / properties / parameters / description
      Added value: +"Keyword parameters, e.g. {\"in_features\": \"roads\", \"out_feature_class\": \"roads_buf\", \"buffer_distance_or_field\": \"500 Meters\"}."
    • addedInput schema / properties / tool_name / description
      Added value: +"e.g. \"analysis.Buffer\", \"management.Dissolve\", \"sa.Slope\" or \"Buffer_analysis\"."
  2. First observedv0.1.0

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

Deploy Server

Other Tools