Skip to main content
Glama
nkarasiak

QGIS MCP

by nkarasiak

QGIS MCP

Connect QGIS to Claude AI through the Model Context Protocol (MCP), enabling Claude to directly control QGIS - manage layers, edit features, run processing algorithms, render maps, and more.

118 MCP tools covering layer management, feature editing, processing, rendering, styling, layout & atlas authoring, cross-layer SQL, plugin development, and system management. Compatible with QGIS 3.28–4.x. Works with Claude Code, Codex CLI, Gemini CLI, Qwen Code, Kimi Code CLI, GitHub Copilot CLI, opencode, LM Studio, Claude Desktop, Cursor, VS Code, Windsurf, Zed, and more.

Architecture

Claude ←→ MCP Server (FastMCP) ←→ TCP socket ←→ QGIS Plugin (QTimer) ←→ PyQGIS API
  1. QGIS Plugin (qgis_mcp_plugin/) - Runs inside QGIS. Non-blocking TCP socket server that processes JSON commands within QGIS's event loop.

  2. MCP Server (src/qgis_mcp/server.py) - Runs outside QGIS. Exposes QGIS operations as MCP tools via FastMCP.

Related MCP server: LocuSync Server

Installation

No clone needed. Requires QGIS 3.28+ and uv.

1. Install the QGIS plugin

In QGIS: Plugins > Manage and Install Plugins > search QGIS MCP > Install.

Restart QGIS and click Start Server in the QGIS MCP dock widget.

2. Connect your coding agent

claude mcp add -s user qgis -- uvx --from https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip qgis-mcp-server

Scope reference:

Flag

Stored in

Visible to

-s local (default)

.mcp.json (gitignored)

You, this project

-s project

.mcp.json (committed)

Whole team, this project

-s user

~/.claude.json

You, every project

codex mcp add qgis -- uvx --from https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip qgis-mcp-server

Or edit ~/.codex/config.toml directly:

[mcp_servers.qgis]
command = "uvx"
args = ["--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"]

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "qgis": {
      "command": "uvx",
      "args": ["--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"]
    }
  }
}

Same layout as Gemini CLI. Add to ~/.qwen/settings.json:

{
  "mcpServers": {
    "qgis": {
      "command": "uvx",
      "args": ["--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"]
    }
  }
}

Add to ~/.kimi-code/mcp.json (or $KIMI_CODE_HOME/mcp.json). A .kimi-code/mcp.json in the working directory overrides it for that project.

{
  "mcpServers": {
    "qgis": {
      "command": "uvx",
      "args": ["--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"]
    }
  }
}

Kimi has no mcp add subcommand - edit the JSON or use the /mcp-config TUI.

Add to ~/.copilot/mcp-config.json (directory overridable via $COPILOT_HOME):

{
  "mcpServers": {
    "qgis": {
      "command": "uvx",
      "args": ["--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"]
    }
  }
}

Add to ~/.lmstudio/mcp.json (%USERPROFILE%\.lmstudio\mcp.json on Windows):

{
  "mcpServers": {
    "qgis": {
      "command": "uvx",
      "args": ["--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"]
    }
  }
}

Add to opencode.json at your project root:

{
  "mcp": {
    "qgis": {
      "type": "local",
      "command": ["uvx", "--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"],
      "enabled": true
    }
  }
}

Hermes stores MCP servers in config.yaml under an mcpServers block. A standalone mcp.json is ignored. You also need a small .bat launcher - running uvx directly inside Hermes causes a venv conflict (ModuleNotFoundError: No module named 'pydantic_core._pydantic_core').

Step 1 - Create %APPDATA%\Hermes\qgis-mcp-launch.bat:

@echo off
REM Clears Hermes's venv vars so uvx uses a clean Python environment.
set VIRTUAL_ENV=
set PYTHONPATH=
set PYTHONHOME=
uvx --from "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip" qgis-mcp-server

Step 2 - Add to %APPDATA%\Hermes\config.yaml:

mcpServers:
  qgis:
    command: "C:\\Users\\<you>\\AppData\\Roaming\\Hermes\\qgis-mcp-launch.bat"
    args: []

Replace <you> with your Windows username. Restart Hermes, then verify with:

Call the QGIS ping tool.

Tip: The QGIS plugin's Setup & Configurator dialog has a hermes entry in the client dropdown. Select it and click Copy to get the bat file and YAML pre-filled with your local paths.

For the full guide see docs/agent-integration.md.

opencode (which runs Nous/Hermes and other models) is supported directly by the installer:

python install.py --non-interactive --clients opencode

This writes the correct config block to ~/.config/opencode/config.json (%APPDATA%\opencode\config.json on Windows).

To configure manually, add to your opencode.json or global opencode config:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "qgis": {
      "type": "local",
      "command": [
        "uvx",
        "--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip",
        "qgis-mcp-server"
      ]
    }
  }
}

Any other agent or client that supports the MCP stdio transport can also use this server. Generic config (exact key names vary by client - see your agent's docs):

{
  "mcpServers": {
    "qgis": {
      "command": "uvx",
      "args": [
        "--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip",
        "qgis-mcp-server"
      ]
    }
  }
}

After starting the agent, verify by asking it to call the ping tool - it should return {"pong": true} when the QGIS plugin is running.

For a full setup guide, troubleshooting steps, and compound-tool mode configuration see docs/agent-integration.md.

Add to your client's MCP config file:

{
  "mcpServers": {
    "qgis": {
      "command": "uvx",
      "args": [
        "--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip",
        "qgis-mcp-server"
      ]
    }
  }
}

Usage

  1. Start the plugin - In QGIS, click the MCP toolbar button (or Plugins > QGIS MCP) and click "Start Server"

  2. Talk to Claude - The MCP tools will appear automatically. Ask Claude to work with your QGIS project.

Example prompt

You have access to QGIS tools. Do the following:
1. Ping to check the connection
2. Create a new project and save it at "/tmp/my_project.qgz"
3. Load the vector layer "world_map.gpkg" available in Qgis ("resources/data/world_map.gpkg")
4. Filter "USA" from the field "adm0_a3"
6. Render the map and show me the result
7. Save the project

Updating

The plugin (inside QGIS) and the MCP server (outside QGIS) must stay in sync - a newer server sending a command the older plugin doesn't know will return an error. Run diagnose after any update to verify both sides match.

Component

Remote install

Local install (git clone)

QGIS plugin

Plugins > Manage and Install Plugins > Update

Same - Plugin Manager picks up the new version from QGIS Hub

MCP server

uvx caches the downloaded archive - force an update with uvx --refresh-package qgis-mcp --from https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip qgis-mcp-server, then restart your MCP client

git pull then restart the MCP server process

To auto-update instead, add --refresh-package qgis-mcp before --from in the configs above: uvx then re-resolves this package from GitHub on every launch. Warning: this requires network at launch - the MCP server fails to start when offline - and adds ~1–3s to startup. The plain configs above use the cached version and work offline.

After updating the plugin, click Stop / Start in the QGIS MCP dock widget (or reload via Plugins > QGIS MCP > Reload Plugin) to load the new code without restarting QGIS.

Tools (118)

Category

Tools

Project

load_project, create_new_project, save_project, get_project_info, set_project_crs

Layers

get_layers, add_vector_layer, add_raster_layer, add_web_layer, remove_layer, find_layer, create_memory_layer, set_layer_visibility, zoom_to_layer, get_layer_extent, set_layer_property, get_layer_crs, set_layer_crs, get_active_layer, set_active_layer, add_table_join, export_layer

Features

get_layer_features, add_features, update_features, update_feature_geometry, delete_features, select_features, get_selection, clear_selection, get_field_statistics, get_unique_values

Fields

add_field, delete_field, rename_field, field_calculator

Editing

start_editing, commit_edits, rollback_edits, get_edit_status, undo_edits, redo_edits

Styling

set_layer_style (single, categorized, graduated), set_raster_style (pseudocolor, gray, RGB, hillshade), apply_style_qml, save_style_qml, get_layer_labeling, set_layer_labeling

Connections

list_connections, create_postgresql_connection, list_connection_tables, add_layer_from_connection, import_layer_to_connection, execute_connection_sql

Rendering

render_map, get_canvas_screenshot, get_3d_screenshot, get_canvas_extent, set_canvas_extent, get_canvas_scale, set_canvas_scale

Bookmarks & themes

add_bookmark, get_bookmarks, remove_bookmark, add_map_theme, get_map_themes, apply_map_theme, remove_map_theme

Processing

execute_processing, execute_processing_batch, list_processing_algorithms, get_algorithm_help, get_processing_providers, create_processing_model, list_processing_models, run_model

Analysis

raster_calculator, zonal_statistics, sample_raster_values, spatial_join

Layouts

list_layouts, export_layout, create_layout, add_layout_map, add_layout_label, add_layout_legend, add_layout_scalebar, add_layout_picture, add_layout_table, get_layout_info, remove_layout

Atlas

configure_atlas, export_atlas

Query

execute_sql, evaluate_expression, identify_features

Layer tree

get_layer_tree, create_layer_group, move_layer_to_group, duplicate_layer, set_layer_order

Plugins

list_plugins, get_plugin_info, reload_plugin

System

ping, diagnose, list_qgis_instances, get_qgis_info, get_raster_info, get_message_log, execute_code, batch_commands, validate_expression, get_project_variables, set_project_variable, get_setting, set_setting, transform_coordinates

All tools are async with human-readable titles and annotations (readOnly, destructive, idempotent). Destructive tools ask for confirmation via MCP elicitation when supported; clients without elicitation proceed normally (fail-open) since tools are already gated by ToolAnnotations. Long-running tools report progress via MCP logging.

Compound tool mode

Set QGIS_MCP_TOOL_MODE=compound to reduce the granular tools to 27 grouped tools (every granular command stays reachable), cutting schema overhead per LLM turn. Each compound tool takes an action parameter plus a params object holding that action's parameters:

QGIS_MCP_TOOL_MODE=compound uv run --no-sync src/qgis_mcp/server.py
{ "action": "load", "params": { "path": "/data/city.qgz" } }

Omit params for actions that take none ({"action": "ping"}).

Groups: system, project, layer, features, selection, style, canvas, render, processing, code, batch, layer_tree, plugins, variables, settings, expression, query, transform, message_log, layer_property, field, analysis, bookmarks, map_themes, active_layer.

Configuration

Environment variable

Default

Description

QGIS_MCP_HOST

localhost

Host for socket connection

QGIS_MCP_PORT

9876

Port for socket connection

QGIS_MCP_INSTANCES

(unset)

Address several running QGIS windows from one server. See Multiple QGIS instances.

QGIS_MCP_TOKEN

(unset)

Optional shared secret. When set, the plugin rejects any command without a matching token. See Authentication.

QGIS_MCP_TRANSPORT

stdio

MCP transport: stdio or streamable-http

QGIS_MCP_LOG_FILE

~/.local/share/qgis-mcp/server.log

Log file path (empty to disable)

QGIS_MCP_LOG_LEVEL

INFO

File log level

QGIS_MCP_TOOL_MODE

granular

granular (118 tools) or compound (27 grouped)

QGIS_MCP_AUTO_CONFIRM

on

Confirmation elicitation on destructive tools (execute_code, remove_layer, delete_features, ...) is skipped by default: your client already asks before running them, so it was a second prompt for the same call. Set to 0/false/no/off to elicit anyway - worth it only for a client that runs tools unattended.

Authentication

By default the socket has no authentication - it binds to localhost only, but any process on the machine that can reach the port can drive QGIS (including execute_code, which runs arbitrary PyQGIS). For shared or multi-user machines, set a shared secret so only callers that know it can connect:

  1. Set QGIS_MCP_TOKEN in the environment QGIS runs in (so the plugin enforces it), then Stop/Start the server in the dock. The QGIS log shows Token authentication ENABLED.

  2. Set the same value in the MCP server's environment - add it to the env block of your MCP client config:

    {
      "mcpServers": {
        "qgis": {
          "command": "uvx",
          "args": ["--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"],
          "env": { "QGIS_MCP_TOKEN": "your-long-random-secret" }
        }
      }
    }

The token is compared in constant time. When QGIS_MCP_TOKEN is unset (the default), behaviour is unchanged. This raises the bar against other local users/processes; a process running as the same user can still read the token from your config, so it is not a sandbox.

One exception: binding the plugin to a non-loopback address requires a token. Exposing arbitrary PyQGIS execution to the network without authentication is not a state you should be able to reach by accident, so the plugin refuses to start on such an address until QGIS_MCP_TOKEN is set (in QGIS and in the MCP server).

Multiple QGIS instances

One server registration can drive several running QGIS windows. Start each QGIS with the plugin on its own port, then list them in QGIS_MCP_INSTANCES as comma-separated name=port or name=host:port entries:

{
  "mcpServers": {
    "qgis": {
      "command": "uvx",
      "args": ["--from", "https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip", "qgis-mcp-server"],
      "env": { "QGIS_MCP_INSTANCES": "default=9876,planning=9877,archive=lab-box:9878" }
    }
  }
}
  • Every tool takes an optional instance argument (get_layers(instance="planning")). Omitting it targets the entry named default, or - when no entry is called default - the first entry listed, so planning=9877,archive=9878 works without renaming anything.

  • list_qgis_instances returns the configured names with their host, port, and current reachability. An unknown name is rejected with the list of valid names.

  • Instance names match [A-Za-z0-9_-]+; entries without a host use QGIS_MCP_HOST (default localhost).

  • Each instance has its own pooled connection and its own lock, so two QGIS windows can be driven concurrently.

  • Not supported with QGIS_MCP_TOOL_MODE=compound. Compound tools carry no instance argument, so every call would silently hit one instance; configuring more than one instance in compound mode refuses to start rather than routing writes to the wrong QGIS.

  • When QGIS_MCP_INSTANCES is unset, exactly one instance named default is defined from QGIS_MCP_HOST/QGIS_MCP_PORT - existing setups are unaffected.

  • QGIS_MCP_TOKEN is shared across instances: the same secret must be set in every QGIS.

Contributing

git clone https://github.com/nkarasiak/qgis-mcp.git
cd qgis-mcp
python install.py   # symlinks plugin + configures your MCP client

install.py options: --clients claude-desktop,cursor, --remote (uvx instead of uv run), --profile myprofile, --uninstall.

Known client names: claude-desktop, cursor, vscode, windsurf, zed, claude-code, codex, opencode, hermes, kimi, gemini, qwen, copilot-cli, lmstudio.

Windows (Microsoft Store / MSIX Claude Desktop): install.py uses --directory instead of cwd in generated configs. This is required for Store-installed Claude Desktop, which runs MCP servers in an MSIX sandbox that silently drops cwd. If you configure manually, use uv --directory "/path/to/qgis-mcp" run --no-sync src/qgis_mcp/server.py - this works on both MSIX and standalone installs. You can identify a Store install when the config file is under %LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\ instead of %APPDATA%\Claude\.

# Unit tests (no QGIS needed - mocked socket)
uv run --no-sync pytest tests/test_mcp_tools.py -v

# Integration tests (requires QGIS plugin running)
uv run --no-sync pytest tests/test_qgis_live.py -v

License

This project is dual-licensed. Each component is distributed under its own license:

Available Tools

118 tools
add_bookmarkAdd BookmarkA

Add a spatial bookmark to the project for quick navigation. Provide a name and extent (xmin/ymin/xmax/ymax) with CRS.

ParametersJSON Schema
NameRequiredDescriptionDefault
crsNoEPSG:4326
nameYes
xmaxYes
xminYes
ymaxYes
yminYes
groupNo

TDQS

A3.6/5.0
Behavior2/5

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 mentions adding a bookmark but does not disclose behavioral traits such as whether duplicate names are allowed, CRS validation, or effects on existing bookmarks.

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?

The description is a single, clear sentence that front-loads the action and key inputs with no unnecessary words.

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?

Given no output schema and no annotations, the description is minimally adequate for a simple create operation but lacks completeness: it does not specify return values, success/failure indications, or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions name, extent parameters (xmin, ymin, xmax, ymax), and CRS, but omits the optional 'group' parameter entirely. With 0% schema description coverage, the description fails to compensate by providing additional meaning or format guidance for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Add') and resource ('spatial bookmark'), and clearly states the tool's purpose for quick navigation. It distinguishes from siblings like 'get_bookmarks' (list) and 'remove_bookmark' (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates usage for adding a bookmark but provides no explicit guidance on when to use alternatives or when not to use. However, the sibling tools have distinct operations, making the context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_featuresAdd FeaturesA
Destructive

Add features to a vector layer. Each feature: {attributes: {field: value}, geometry_wkt: 'POINT(1 2)'}. Returns count of added features.

ParametersJSON Schema
NameRequiredDescriptionDefault
featuresYes
layer_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The destructiveHint annotation already indicates a write operation; the description adds the return value and feature format. However, it does not disclose potential error conditions, whether features are appended or replaced, or editing requirements.

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 sentences with no extraneous information. The first sentence states the core purpose, the second adds crucial details. Optimal length for this tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the main purpose, feature format, and return value. Does not mention optional behavior or edge cases, but for a simple tool with few parameters this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description provides an explicit example of the feature structure with attributes and geometry_wkt fields, compensating fully for the schema's lack of documentation.

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?

The description clearly states the action ('Add features to a vector layer') and provides the return value and feature format. It does not explicitly distinguish from sibling tools like update_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.

Usage Guidelines2/5

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 (e.g., update_features, delete_features). Does not mention prerequisites like layer editability or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_fieldAdd FieldC

Add a new field to a vector layer. field_type: 'string', 'int', 'double', 'bool', 'date', 'datetime'.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthNo
layer_idYes
precisionNo
field_nameYes
field_typeYes

TDQS

C2.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as what happens if the field already exists, if the layer is not a vector layer, or if the field type is invalid. The agent has no information about side effects or requirements.

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?

The description is extremely short with two sentences, no fluff. The core action and important enum values are front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, no output schema, and no annotations, the description is incomplete. It fails to explain return values, constraints (e.g., required formats, uniqueness), or error conditions, making it insufficient for an agent to use confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It only explains the field_type parameter with a list of values, but does not describe layer_id, field_name, length, or precision, leaving most parameters undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Add a new field to a vector layer' with a specific verb and resource, and lists the allowed field types, distinguishing it from sibling tools like delete_field and rename_field.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., delete_field, rename_field) or what prerequisites are needed (e.g., layer must be editable, field_name must be unique).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_layer_from_connectionAdd Layer from ConnectionA

Load a table from a saved connection as a project layer. Pass table (+ schema), or sql to build a query layer executed by the database. For a SQL layer, geometry_column and primary_key may be needed for QGIS to map/identify the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlNo
nameNo
tableNo
schemaNo
providerYes
connectionYes
primary_keyNo
geometry_columnNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses that SQL layers are executed by the database and that geometry_column and primary_key may be needed for QGIS mapping. However, it does not mention side effects, permissions, or behavior if the layer already exists, leaving some behavioral ambiguity.

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?

The description is three sentences, front-loaded with the core purpose, and each sentence adds distinct value. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters and no output schema, the description covers the primary use cases and key requirements (like geometry columns for SQL layers). It misses some parameter details but provides enough context for effective use in most scenarios.

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 description coverage is 0%, so the description must compensate. It explains table, schema, sql, geometry_column, and primary_key but leaves provider, connection, and name unexplained. This partial coverage is helpful but incomplete for an 8-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: loading a table or SQL query from a saved connection as a project layer. The verb 'Load' and resource 'table from a saved connection' are specific, and the mention of SQL query layers distinguishes it from simple file-based layer additions.

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?

The description explains the two main usage modes (pass table+schema or SQL) but does not explicitly compare with alternatives like add_vector_layer or execute_connection_sql. Usage context is implied but not contrasted, so the agent receives reasonable but not explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_layout_labelAdd Layout LabelC

Add a text label to a print layout (mm). text may contain [% expression %] for dynamic content. color is hex (e.g. '#000000').

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
textYes
colorNo#000000
widthNo
heightNo
font_sizeNo
layout_nameYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions text can contain dynamic expressions and color format, but lacks details on whether the label replaces existing ones, error handling, permissions, or units for x/y beyond '(mm)'. Significant gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. Could be improved with structured bullet points for parameters, but it is concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (8 parameters, no annotations, no output schema), the description is incomplete. It fails to clarify required layout_name, optional defaults, expression syntax, or behavior when layout is missing. Many important aspects are omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must explain parameters. It only covers text (dynamic expressions) and color (hex format), and implicitly x/y via units. Parameters like width, height, font_size, and layout_name are unexplained. Insufficient for 8-parameter tool.

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?

Description clearly states it adds a text label to a print layout, using a specific verb ('Add') and resource ('text label'). It distinguishes from sibling tools like add_layout_map or add_layout_legend, though it doesn't explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 exclusion criteria. The description only states what it does without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_layout_legendAdd Layout LegendA

Add a legend to a print layout, linked to a map item (defaults to the first map item). Position/size in mm.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
titleNoLegend
widthNo
heightNo
layout_nameYes
map_item_idNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the legend is linked to a map item (defaulting to the first) and that position/size are in mm. However, it does not clarify error handling (e.g., missing layout), side effects, or whether the legend replaces existing ones. With no annotations, more detail would be beneficial.

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?

The description is two sentences with no unnecessary words. Essential information (purpose, default behavior, units) is front-loaded and clear.

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?

Given 7 parameters, no output schema, and no annotations, the description provides a decent overview but omits details on layout_name (required), title purpose, and coordinate origin. It is adequate for basic understanding but not fully thorough.

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?

With 0% schema description coverage, the description partially compensates by explaining map_item_id defaults and that x, y, width, height are in mm. However, title and layout_name are not elaborated, leaving ambiguity for 2 out of 7 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'add', the resource 'legend to a print layout', and key details like linking to a map item and dimensions in mm. It effectively distinguishes from sibling tools dealing with other layout elements.

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?

Usage context is implied (adding a legend) but no explicit guidance on when to use this tool versus alternatives like add_layout_label or add_layout_scalebar. No exclusions or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_layout_mapAdd Layout MapB

Add a map item to a print layout at specified position and size (in millimeters).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
layout_nameYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only states the action and units. It does not disclose what happens if the layout does not exist, how coordinates are interpreted (e.g., page origin), or any error conditions. No annotations are provided to compensate.

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?

The description is a single, well-structured sentence that immediately conveys the core functionality. Every word is necessary and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 5 required parameters and no output schema or annotations, the description omits critical details like return value, error handling, coordinate system, and behavior when layout does not exist. It is insufficient for a user to fully understand the tool's behavior.

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?

The description adds that x, y, width, and height are in millimeters, which is not in the schema. However, it does not clarify the meaning of layout_name or the coordinate system origin. With 0% schema description coverage, the description provides some but insufficient additional meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool adds a map item to a print layout, specifying position and size in millimeters. This distinguishes it from sibling tools like add_layout_label or add_layout_legend, which add different elements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as add_layout_picture or other layout item tools. There is no context about prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_layout_pictureAdd Layout PictureB

Add a picture or SVG (logo, north arrow) to a print layout. path is an image or SVG file path. Position/size in mm.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
pathYes
widthNo
heightNo
layout_nameYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It merely states the function without mentioning side effects (e.g., overwriting existing items), error handling for invalid paths, or permission requirements. The unit mention (mm) is helpful but insufficient.

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?

The description consists of two short, front-loaded sentences. Every word adds value: the first sentence states the core purpose with examples, the second clarifies the path and units. No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of output schema and the tool's complexity (6 parameters), the description is too minimal. It omits critical context like the need for a pre-existing layout, what happens on failure, and the overall effect on the layout. The agent would need to guess or fail.

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?

The description adds meaning for the 'path' parameter (image or SVG file) and notes that position/size are in millimeters, which is not in the schema. However, it does not explain the other parameters (x, y, width, height, layout_name), leaving gaps despite 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add a picture or SVG') and the target resource ('to a print layout'). It also provides concrete examples (logo, north arrow) and specifies file types, making the purpose unambiguous and distinct from sibling layout tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like add_layout_label or add_layout_map. There is no discussion of prerequisites (e.g., layout must exist) or exclusions, 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.

add_layout_scalebarAdd Layout Scale BarC

Add a scale bar to a print layout, linked to a map item. style e.g. 'Single Box', 'Double Box', 'Line Ticks Up', 'Numeric'.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
styleNoSingle Box
widthNo
heightNo
layout_nameYes
map_item_idNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It only says 'add' (a write operation) but lacks details on side effects, required permissions, what happens if parameters are omitted or invalid, or whether the tool modifies the layout in-place or returns something.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences. No fluff. However, it could be restructured to front-load the essential purpose and include critical parameter guidance without expanding length excessively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, output schema, and limited description, the tool definition is incomplete. It does not cover return values, error cases, how the scale bar interacts with the map item, or any configuration beyond style examples.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only adds value for the 'style' parameter by listing examples. Other parameters (x, y, width, height, layout_name, map_item_id) are left unexplained in both schema and description.

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?

The description clearly states it adds a scale bar to a print layout linked to a map item. The verb 'add' and resource 'scale bar' are specific. However, it does not differentiate from siblings like add_layout_label, but the tool name is sufficiently distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. It does not mention when to use this tool vs alternatives (e.g., add_layout_legend), nor does it specify prerequisites like requiring an existing layout and map item.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_layout_tableAdd Layout TableC

Add an attribute table for a vector layer to a print layout. max_rows caps the number of features shown. Position/size in mm.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
widthNo
heightNo
layer_idYes
max_rowsNo
layout_nameYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It mentions max_rows and position/size in mm, but fails to disclose whether the tool is destructive, requires existing layout, or what happens on failure. Key behavioral traits are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no superfluous words. First sentence states purpose, second adds key constraints. Ideal length, though could benefit from bullet-style breakdown.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, no output schema, and no annotations, the description leaves out crucial information such as the structure of the added table, error handling, and required resources. Incomplete for reliable tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. It explains max_rows and implies position/size for x,y,width,height, but does not describe layout_name, layer_id, or clarify all numeric units. Partial but insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Add' and the resource 'attribute table for a vector layer to a print layout'. It distinguishes from sibling tools like 'add_layout_map' or 'add_layout_label' by specifying the type of layout item.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., existence of layout or layer) or situations where another tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_map_themeAdd Map ThemeA

Create a map theme from the current layer visibility state. If a theme with this name exists, it will be updated.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the create-or-update behavior, which is transparent, but omits details such as whether the theme is applied automatically or any side effects on existing themes.

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?

The description is concise with two sentences, front-loading the key action and behavior, and contains no unnecessary words.

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?

Although the tool is simple (one parameter, no output schema), the description lacks return value information, prerequisites (e.g., open project), and context about the 'current layer visibility state'. It is adequate but not fully complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage, and the description only implicitly references the 'name' parameter without adding format, constraints, or examples. It fails to compensate for the schema's lack of detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('Create a map theme') and the resource ('from the current layer visibility state'), and distinguishes itself from siblings by noting the update behavior when the theme exists.

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?

The description implies usage context (after adjusting layer visibility) but does not explicitly state when to use it versus alternative tools like 'get_map_themes' or 'apply_map_theme', nor does it provide when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_raster_layerAdd Raster LayerC

Add a raster layer (GeoTIFF, etc.) to the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pathYes
providerNogdal

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It only states the basic action without mentioning side effects (e.g., overwriting existing layers), error handling, or prerequisites (e.g., valid file path). This is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks necessary detail. It is front-loaded with key information, but brevity sacrifices completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and low parameter explanation, the description is very incomplete. It does not inform the agent about return values, potential errors, or the behavior of the tool under different inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning none of the three parameters (name, path, provider) are explained in the schema. The description adds zero information about parameter semantics, leaving the agent to guess their purpose and constraints.

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?

The description 'Add a raster layer (GeoTIFF, etc.) to the project' clearly states the verb (add) and resource (raster layer), distinguishing it from siblings like add_vector_layer and add_web_layer by specifying raster. However, it does not elaborate on supported formats beyond GeoTIFF.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., add_vector_layer). There are no usage exclusions or context cues to help the agent decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_table_joinAdd Table JoinC

Add a table join to a vector layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNo
join_fieldYes
target_fieldYes
join_layer_idYes
target_layer_idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lacks behavioral details. It implies a mutation (adding a join) but does not explain whether it modifies the layer permanently, if it can be undone, or any side effects. With no annotations, the burden on the description is high, and it fails to provide sufficient transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, achieving conciseness. However, it is overly sparse and under-specifies the tool's functionality, which detracts from its effectiveness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters and no output schema, the description is far from complete. It does not explain the join operation, required configurations, or expected outcomes, leaving an agent with insufficient information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the input schema provides no descriptions for parameters. The description does not explain any parameter meanings (e.g., prefix, target_layer_id, join_field). This is a critical gap for a tool with 5 parameters.

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?

The description clearly states the action: add a table join to a vector layer. It uses a specific verb and mentions the resource. However, it does not differentiate from the sibling tool 'spatial_join', which serves a similar purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like spatial_join or add_features. There is no mention of prerequisites, limitations, or recommended contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_vector_layerAdd Vector LayerC

Add a vector layer (shapefile, GeoJSON, GeoPackage, etc.) to the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pathYes
providerNoogr

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description does not disclose behavior such as file existence checks, duplicate handling, or error conditions. Minimal disclosure of what 'add to project' entails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is brief but omits essential information. Not efficiently conveying necessary details; conciseness here equates to underspecification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, 3 parameters with 0% coverage. Description is far too sparse for an agent to correctly invoke the tool. Lacks parameter usage, error handling, and return value context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. Description mentions formats but does not explain the three parameters (path, name, provider), their expected values, or default behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Add a vector layer' and lists common formats (shapefile, GeoJSON, GeoPackage), distinguishing it from siblings like add_raster_layer and add_web_layer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., add_raster_layer, create_memory_layer). No prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_web_layerAdd Web LayerA

Add a web layer (XYZ, WMS, WFS) to the project. service: 'xyz', 'wms', 'wfs'. crs is optional and only meaningful for wms ('crs=' in the uri) and wfs ('srsname='): leave it unset to take whatever the service serves natively. XYZ tiles are always EPSG:3857, so requesting another CRS for them is an error rather than a silent no-op. The response reports the CRS the layer actually got.

ParametersJSON Schema
NameRequiredDescriptionDefault
crsNo
urlYes
nameNo
serviceYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral transparency burden. It discloses critical nuances: crs is only meaningful for WMS/WFS, XYZ tiles are always EPSG:3857, requesting another CRS for XYZ results in an error rather than a silent fallback, and the response reports the actual CRS. This is rich, actionable behavioral context that goes far beyond a basic summary.

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?

The description is a compact paragraph of four sentences, each earning its place. It starts with the core purpose, then systematically covers service values, CRS semantics, XYZ-specific behavior, and response content. There is no redundancy or filler, making it highly efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, no annotations, and no output schema, the description is remarkably complete. It covers the main purpose, service type semantics, CRS behavior, error conditions, and response content (actual CRS). It falls slightly short of full completeness by not addressing what happens on invalid service values or how the layer name is used, but these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since the input schema has no property descriptions (0% coverage), the description must compensate. It explains the service values ('xyz', 'wms', 'wfs') and the nuanced behavior of crs for WMS/WFS vs XYZ. However, it does not explicitly explain the 'url' and 'name' parameters, though their semantics are reasonably inferable. Overall, it adds significant meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Add a web layer (XYZ, WMS, WFS) to the project.' This clearly states what the tool does and explicitly lists the supported service types, distinguishing it from sibling tools like add_vector_layer or add_raster_layer. The scope is well-defined and immediately comprehensible.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool (for web layers of types XYZ, WMS, WFS) and provides guidance on how to set the service parameter. It does not explicitly name alternative tools or state when not to use it, but the context is strong enough for an agent to infer appropriate usage. The CRS notes also give practical usage direction for different service types.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_map_themeApply Map ThemeA
Idempotent

Apply a map theme - restores the layer visibility state saved in the theme.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation idempotentHint is present, indicating repeated applications have no additional effect. The description adds context by revealing that the tool modifies layer visibility to match the saved theme state, which is important because it changes the project's visual state. However, it doesn't mention error handling or prerequisites like the theme existing.

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?

The description is a single, front-loaded sentence which fully states the purpose and effect in under 15 words. No wasted content.

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?

The tool is simple with one parameter and no output schema, so complete guidance should clarify that 'name' refers to an existing theme. The description doesn't mention that the theme must have been created earlier or what happens if it doesn't exist. Given the simplicity, the description is close but lacks these important contextual details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'name' with no description (0% coverage). The description mentions 'the theme' but doesn't explicitly state that the 'name' parameter is the map theme's name, nor does it clarify format or requirement that the theme must already exist. This leaves ambiguity despite the apparent simplicity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Apply a map theme' and explains the effect: 'restores the layer visibility state saved in the theme.' This distinguishes it from sibling tools like add_map_theme and remove_map_theme, which manage themes.

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?

The description implies the use case—restoring a saved layer visibility state—but doesn't explicitly state when to prefer this over direct layer visibility tools like set_layer_visibility. It offers no exclusions or alternative tool references, so guidance is minimal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_style_qmlApply Style QMLC

Apply a QGIS QML style file to a layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
layer_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description does not disclose behavioral traits such as whether it overwrites existing style, if it requires the layer to be loaded, error handling, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise and front-loaded with the verb. However, it is under-specified and could include additional context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and two undocumented parameters, the description is incomplete. It lacks information on return values, prerequisites, and potential side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no meaning to the parameters 'path' or 'layer_id'. It does not explain what format path should be (e.g., full path, URL) or how to obtain layer_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Apply a QGIS QML style file to a layer.' It specifies the verb (apply), resource (QGIS QML style file to a layer), and distinguishes from siblings like 'set_layer_style' and 'save_style_qml'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., set_layer_style). No mention of prerequisites, when not to use, or typical context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_commandsBatch CommandsA

Execute multiple commands in a single round-trip. Each command is {"type": "", "params": {...}}. Destructive commands (execute_code, remove_layer, delete_features, set_setting, reload_plugin) are not allowed in batch - use them individually.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It discloses the restrictive behavior (disallowed destructive commands) and format, but does not mention execution order, failure handling, partial success, or response details. This is useful but incomplete for a batch execution tool.

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?

The description is compact: two sentences covering purpose, format, and restrictions. Every sentence earns its place with no filler, and key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a batch wrapper and the description provides purpose, format, and key restriction. An output schema exists, so return values are covered elsewhere. Missing details like ordering or failure atomicity, but overall it's sufficient for selection and basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining the structure of the 'commands' parameter: each command is {"type": "<command_name>", "params": {...}}. It also lists disallowed command types, adding semantic meaning beyond the schema's bare array of objects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Execute multiple commands in a single round-trip', specifying the verb (execute), resource (multiple commands), and the value proposition (single round-trip). It differentiates from individual command tools by batching, and even gives the command format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when not to use the tool: 'Destructive commands ... are not allowed in batch - use them individually.' This gives a clear exclusion and alternative. It implies usage for non-destructive multi-command scenarios, but doesn't elaborate on further use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_selectionClear SelectionC
Idempotent

Clear the selection on a layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond the idempotentHint annotation. It implies a state change (clearing selection) but does not disclose side effects, events triggered, or confirmation requirements. The annotation already covers idempotence, but the description fails to add value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is efficient and front-loaded. However, it earns its place by conveying the core action without extra words.

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?

For a simple tool with one parameter and no output schema, the description adequately states the action. However, it could be more complete by clarifying that it clears the current feature selection on the specified layer, especially given the context of sibling selection tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must explain the parameter but only mentions 'on a layer' without linking to layer_id or specifying its format (e.g., name, ID). No meaning is added beyond the schema structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'clear' and the resource 'selection on a layer', distinguishing it from sibling tools like select_features (which selects) and get_selection (which retrieves). The action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not indicate when to use this tool, prerequisites (e.g., layer must have a selection), or when not to use it. No mention of alternatives like select_features or get_selection for context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commit_editsCommit EditsA

Commit the layer's edit buffer to the data source and close the edit session.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

TDQS

A3.8/5.0
Behavior3/5

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 two key behaviors: committing the edit buffer and closing the edit session. However, it does not mention irreversibility, active-session requirements, or error handling, which are important 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that communicates the action and consequence without waste. Perfectly concise for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema, the description covers the core behavior and side effect (close edit session). It implicitly assumes an active edit session, which is reasonable given the sibling tools. Minor lack of error-case details is acceptable for this simplicity.

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?

The schema has only layer_id (string) with 0% coverage from the description. The description references 'the layer's' which implies layer_id identifies the target layer, but it doesn't explicitly map the parameter or explain format/requirements. It adds some semantic value but could be clearer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses the specific verb 'commit' and identifies the resource ('layer's edit buffer') along with a side effect ('close the edit session'). This clearly distinguishes it from sibling tools like rollback_edits or start_editing.

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?

The description implies usage as the final step in an editing workflow, but it does not explicitly state when to use this tool versus alternatives like rollback_edits or undo_edits. 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.

configure_atlasConfigure AtlasA

Configure a print layout's atlas: coverage_layer (vector layer id) drives one page per feature. Optional page_name_expression, filter_expression, sort_expression.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledNo
layout_nameYes
coverage_layerYes
sort_expressionNo
filter_expressionNo
page_name_expressionNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so description carries full burden. It explains core behavior (coverage_layer drives pages, optional expressions) but lacks details on side effects, prerequisites (layout must exist), or error conditions. Adequate but minimal.

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?

Single sentence of 25 words, front-loads purpose. No filler, every word 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?

No output schema, no return info. Lacks prerequisites (layout must exist) and error handling. Adequate for a straightforward configuration tool but could include more context given 6 parameters.

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 description coverage is 0%, so description must compensate. It explains coverage_layer and names three optional expressions but omits required layout_name and enabled. Adds meaning beyond schema for covered params but incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'configure' and the resource 'print layout's atlas'. It distinguishes from sibling tools like export_atlas by specifying that it configures the atlas, not exports it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for setting up an atlas in a print layout. It doesn't explicitly state when not to use or mention alternatives, but the context is clear given the sibling tool set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_layer_groupCreate Layer GroupC

Create a new layer group in the layer tree. Optionally specify a parent group name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
parentNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description does not disclose behavioral traits such as whether parent group must exist, effects on existing layers, or permission requirements. The description is too brief to convey 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but sacrifices important details. It is front-loaded with the core action but lacks structure or elaboration, earning a moderate score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema, no annotations), the description is incomplete. It does not clarify how layer groups behave in the tree, implications of missing parent, or any related constraints, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only adds minimal meaning for the 'parent' parameter (optional). The required 'name' parameter is not explained, and no constraints like uniqueness or naming rules are provided.

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?

The description clearly states the tool creates a new layer group in the layer tree with an optional parent, using a specific verb and resource. It distinguishes from siblings like 'move_layer_to_group' or 'add_vector_layer' by focusing on group creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor does it mention prerequisites or scenarios where the tool should not be used. The description only states what the tool does.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_layoutCreate LayoutD

Create a new print layout.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

D1.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits but only states it creates a layout. It fails to mention side effects, such as whether the layout is added to the project, if it requires an open canvas, or what the return value is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is too short to be useful; it is under-specified rather than concise. Every sentence should earn its place, but this single sentence provides no value beyond the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter, no output schema, no annotations), the description is severely inadequate. It does not explain how to use the created layout with other tools or what happens after creation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no extra meaning for the 'name' parameter. It does not clarify constraints, format, or purpose beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new print layout.' merely restates the tool name and title, providing no additional information about what a print layout is or how it differs from sibling tools like add_layout_map or list_layouts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool, what prerequisites are needed, or how it compares to alternatives such as adding map components or exporting layouts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_memory_layerCreate Memory LayerA

Create a new in-memory vector layer. geometry_type: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon. fields: [{name, type}] where type is integer, double, string, date, datetime.

ParametersJSON Schema
NameRequiredDescriptionDefault
crsNoEPSG:4326
nameYes
fieldsNo
geometry_typeYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states 'create' indicating a write operation, but fails to disclose permissions, side effects (e.g., memory usage), or whether the layer persists beyond the session. This is insufficient 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences pack essential information about the tool's purpose and parameter constraints without unnecessary words. No redundancy.

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?

With no output schema and no annotations, the description should clarify return value or behavior after creation. It does not mention whether the layer becomes active, how to reference it, or error conditions. The tool is simple but still lacks completeness for a confident invocation.

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?

Description adds meaning beyond the schema by enumerating valid geometry types and specifying the fields format. However, it omits description for 'crs' and 'name' parameters. Schema description coverage is 0%, so description partially compensates but is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Create a new in-memory vector layer' with specific verb 'Create' and resource 'in-memory vector layer'. This distinguishes it from siblings like 'add_vector_layer' which adds file-based layers.

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?

Description implies in-memory usage but does not explicitly state when to use this tool over alternatives like 'add_vector_layer' or when not to use it. No guidance on context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_new_projectCreate New ProjectB

Create a new empty QGIS project and save it to the given path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It does not disclose whether an existing project at the path is overwritten, or any side effects, permissions, or initialization details.

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?

The description is a single, concise sentence that communicates the essential action without any redundant or extraneous information.

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?

For a simple tool with one parameter and no output schema, the description is minimally adequate but lacks details on default settings or behavior for existing paths.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should explain the 'path' parameter beyond its type, but it merely says 'given path' without details on format, extension, or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create', the resource 'new empty QGIS project', and the action 'save it to the given path', distinguishing it from siblings like save_project and load_project.

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?

The description implies usage for creating new projects but provides no explicit guidance on when to use this tool over siblings, nor does it mention prerequisites or 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.

create_postgresql_connectionCreate PostgreSQL ConnectionA

Validate and save a new PostgreSQL Browser-panel connection. Passwords are never accepted: credentials come from a QGIS Authentication Manager configuration, from the libpq service file (pg_service.conf), or both. connection_mode selects which parameters are required; when the user's intent is unclear, ask which mode applies before calling. endpoint_using_auth_manager: host, port, database, auth_config_id (port must be the actual database port supplied by the caller or user, this tool never assumes 5432). service_using_auth_manager: service (the name defined in pg_service.conf) and auth_config_id; database optionally overrides the service file's dbname. service_only: service; database optionally overrides dbname; do not pass auth_config_id. Parameters a mode does not use are rejected. Fails if name already exists or the database cannot be reached. ssl_mode is one of prefer (default), disable, allow, require, verify-ca, or verify-full.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo
nameYes
portNo
serviceNo
databaseNo
ssl_modeNoprefer
auth_config_idNo
connection_modeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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 so: passwords are never accepted, credentials originate from QGIS Auth Manager or pg_service.conf, unused parameters are rejected, and it fails when the name exists or the database is unreachable. The port note (never assumes 5432) and ssl_mode default are additional non-obvious behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the password/credential rule are front-loaded, then the mode-specific parameter rules follow in a predictable order. It is dense with per-mode detail but each sentence carries required information; a bulleted mode breakdown would read more cleanly than the semicolon-heavy prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex three-mode tool with 8 parameters, zero schema annotations, and no schema descriptions, the definition covers mode selection, credential sourcing, parameter exclusivity, failure conditions, and ssl behavior. Return shape is handled by the output schema, so 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must supply all parameter meaning, and it does: host/port/database/auth_config_id for endpoint mode, service plus optional database override for service modes, the three connection_mode enum values, and ssl_mode's full value set with its default. Only 'name' is left implicit (as a unique identifier, clarified by the duplicate-name failure).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Validate and save') and resource ('a new PostgreSQL Browser-panel connection'), and the QGIS-panel framing distinguishes it from siblings such as add_layer_from_connection or import_layer_to_connection. An agent knows exactly what the tool produces without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives strong when-to-use conditions: it enumerates the three connection_mode branches, states which parameters each requires, and instructs the agent to ask the user which mode applies when intent is unclear. It does not name sibling tools (e.g., list_connections) as alternatives, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_processing_modelCreate Processing ModelA

Build QGIS Processing Model (.model3) from structured spec; save to user models folder, register in Processing Toolbox. Only call needed: algorithm discovery + param validation run in the plugin against the live registry, so do NOT call list_processing_algorithms or get_algorithm_help first. Pass keyword ('buffer') or full id ('native:buffer'); handler resolves it. Ambiguous hint returns candidate list to refine and retry. Bad param/output names reported with the valid set.

Spec: inputs: [{name, type, description?, default?, optional?, parent_layer? (for field/distance), options? (for enum)}]. Types: vector, feature_source, raster, field, number, integer, distance, string, boolean, extent, crs, point, file, folder, enum, multiple_layers. steps: [{id, algorithm, description?, parameters: {ALG_PARAM: value}}]. algorithm = keyword or full id. Param values: '@input_name' = model input value '$step_id.OUTPUT' = earlier step output '=expression' = QGIS expression at run time else = static literal (number/bool/string/list) outputs: [{name, from_step, from_output, description?}] = exposed outputs; omit to expose the last step OUTPUT as 'Result'.

Name collision appends a suffix (name_2.model3, ...). Response returns the actual 'name', the 'requested_name', and 'resolved_steps' (which algorithm each hint mapped to).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
groupNoModels
stepsYes
inputsNo
outputsNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully bears the transparency burden. It discloses name collision behavior, ambiguity handling, error reporting, and response structure, exceeding typical 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and critical usage notes, followed by a well-organized spec. Every sentence adds value, and the structure aids quick comprehension despite the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description covers inputs, steps, outputs, error handling, and response format. It is self-contained and provides everything needed for correct invocation without relying on additional documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description explains all parameters in detail via the structured spec, including types, defaults, and usage patterns (e.g., @input_name, $step_id.OUTPUT). It fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool builds a QGIS processing model from a spec and saves/registers it. It uses a specific verb and resource, and distinguishes from siblings like run_model or list_processing_algorithms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly warns not to call list_processing_algorithms or get_algorithm_help first, and explains how to handle ambiguous hints and bad parameters. Provides clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_featuresDelete FeaturesA
Destructive

Delete features by feature IDs or expression filter. Provide either fids (list of ints) or expression (string), not both.

ParametersJSON Schema
NameRequiredDescriptionDefault
fidsNo
layer_idYes
expressionNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond the destructiveHint annotation by explaining the two targeting methods and the mutual exclusivity constraint. It does not contradict the annotation and provides useful 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (two sentences) and front-loaded with the core action. Every word adds value, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of destructiveHint annotation, the description is sufficiently complete. It covers the deletion methods and constraint, though it could mention the response or safety confirmations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description compensates by explaining the relationship between fids and expression (mutually exclusive) and their types. It does not mention the required layer_id parameter, but the core semantic gap is addressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action (delete features) and the two methods to specify which features (by IDs or expression). It distinguishes itself from sibling tools like remove_layer and remove_bookmark by specifying 'features' as the target.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool (to delete features) and the rule to provide either fids or expression, not both. However, it does not mention when not to use it or suggest alternative tools for non-destructive operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_fieldDelete FieldC
Destructive

Delete a field from a vector layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes
field_nameYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include destructiveHint: true, but the description adds no extra behavioral details beyond that. It does not mention whether the operation is permanent, what happens to related data (e.g., if the field has constraints), or any confirmation steps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 6 words, which is overly terse. While concise, it sacrifices critical information. The key details (parameters, effects) are missing, making it insufficient for reliable tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of parameter descriptions, output schema, and behavioral context, the description is severely incomplete. The agent cannot understand how to use the tool correctly without guessing parameter meanings or side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description must explain the parameters. It does not mention 'layer_id' or 'field_name' at all, leaving the agent to guess their meanings. No formats, constraints, or examples are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete) and the resource (field from a vector layer), making it immediately understandable. It also distinguishes itself from sibling tools like add_field and rename_field by specifying 'delete'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, prerequisites, or when not to use it. The description lacks context about required permissions or potential downstream effects such as data loss.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diagnoseDiagnoseA
Read-only

Run diagnostic checks on the QGIS MCP stack. Reports QGIS version, plugin/server version match, processing providers, connected clients, and project status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true, and the description aligns by stating it runs checks and reports info without side effects. It adds value by describing the specific diagnostic categories, going beyond the annotation.

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 sentences delivering essential information with no wasted words. The structure front-loads the action and lists outputs efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and the presence of an output schema, the description fully covers the tool's purpose and output scope. No gaps remain for an agent to interpret correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the description need not add param info. It still adds meaning by detailing what the output includes, which aids understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs diagnostic checks on the QGIS MCP stack and enumerates what it reports (version, match, providers, clients, project status). It distinguishes itself from sibling tools that focus on specific actions.

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?

The description implies the tool is for overall stack health checks, but does not explicitly state when to use it versus alternatives like ping, get_qgis_info, or get_project_info. No exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_layerDuplicate LayerC

Duplicate a layer (including its style) under a new name.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes
new_nameNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry full behavioral disclosure. It mentions copying style and new name but omits details like what happens if new_name already exists, error conditions, or side effects. Lacks sufficient transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 8 words—very concise. However, it omits important information like parameter definitions and usage context. Conciseness is good but at the expense of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two parameters, no output schema, and no annotations, the description is incomplete. It does not explain what layer_id is, return behavior, or constraints. User/agent would need additional context to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. It only hints at new_name's purpose ('under a new name') but does not explain layer_id or provide any format/validation details. Minimal added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action (duplicate), the resource (layer), and includes the scope (including style, under new name). It distinguishes from sibling tools like add_vector_layer or remove_layer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 mentioned (e.g., layer must exist), and no conditions for when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_expressionEvaluate ExpressionA
Read-only

Evaluate a standalone QGIS expression to a scalar value (e.g. aggregate('layer','sum','field'), @project_var, now()). Optional layer_id adds layer scope. Distinct from validate_expression (validate only) and field_calculator (per-feature).

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idNo
expressionYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true. Description adds behavioral details: evaluates to scalar value, standalone, with optional layer scope. No contradictions. Lacks error handling details but sufficient.

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 sentences, well-structured, no redundant information. Front-loaded with core purpose and examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description sufficiently explains tool behavior and usage. It covers purpose, parameters, and distinguishes from siblings. Minor gap: no mention of return value format, but implied as scalar.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has no property descriptions (0% coverage). Description adds meaning: layer_id adds layer scope. Expression is required and standalone. Provides value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool evaluates a standalone QGIS expression to a scalar value, with specific examples. It distinguishes itself from sibling tools validate_expression and field_calculator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions optional layer_id for layer scope and contrasts with alternatives for validation and per-feature calculation, guiding when to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_codeExecute CodeA
Destructive

Execute arbitrary PyQGIS code. Use for operations not covered by other tools. Has access to QgsProject, iface, and core QGIS classes. Returns stdout/stderr and elapsed seconds. timeout: seconds before the script is cancelled (default 55); a script that runs past it comes back with timed_out=True and the output printed so far, and its side effects stand. Raise timeout or split bulk work into several calls; QGIS is unresponsive while a script runs. A single blocking call (time.sleep, GDAL) cannot be interrupted before it returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
timeoutNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Only destructiveHint=true is annotated, so the description carries the behavioral load and does so richly: elapsed seconds and stdout/stderr returned, timed_out=True with partial output on timeout, side effects persisting, QGIS blocking during execution, and the limitation that a single blocking call (time.sleep, GDAL) cannot be interrupted. This is exactly the operational detail an agent needs before running arbitrary code.

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?

Front-loads purpose in the first sentence, then stacks the return values, timeout behavior, and blocking caveat in dense, non-redundant sentences. No filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotation detail, the description steps in to describe return values (stdout/stderr, elapsed seconds, timed_out), side-effect persistence, and the runtime environment (QgsProject, iface, core QGIS classes). Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there are no param descriptions, so the description must compensate. It fully specifies the timeout parameter (default 55, cancel semantics, timed_out flag, partial output, side effects standing) and the code parameter is self-evident from the 'arbitrary PyQGIS code' framing, though it never explicitly names the code field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Execute) and resource (arbitrary PyQGIS code) and immediately distinguishes itself from siblings with 'Use for operations not covered by other tools.' An agent can tell this apart from the many narrow, single-purpose sibling tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit routing rule ('operations not covered by other tools') and adds practical guidance on scoping work ('raise timeout or split bulk work into several calls'). It does not enumerate when-not-to-use beyond the fallback framing, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_connection_sqlExecute Connection SQLA
Destructive

Run SQL directly on the database behind a saved connection (server-side, not a virtual layer - use execute_sql for that). Can modify the database: DDL/DML run as issued. limit caps returned rows (-1 for all).

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes
limitNo
providerYes
connectionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true, and the description reinforces this by stating 'Can modify the database: DDL/DML run as issued.' It adds useful behavioral context beyond the annotation: server-side execution, distinction from virtual layers, and the limit parameter capping returned rows (-1 for all). It does not contradict the destructive hint.

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?

The description is three concise sentences that front-load the primary purpose and immediately differentiate from a sibling tool. Every clause carries important information: server-side execution, virtual layer exclusion, mutability, and limit behavior. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has an output schema and a destructive annotation, the description covers the key operational concerns: what it runs, where it runs, the mutability risk, and row limit control. It could be more complete by explaining provider and transaction semantics, but the existing information is sufficient for effective tool selection and basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It meaningfully explains sql (SQL executed directly), connection (a saved connection), and limit (caps returned rows, -1 for all). However, the provider parameter is left unexplained, which is a notable gap since it is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's specific function: 'Run SQL directly on the database behind a saved connection'. It also distinguishes itself from the sibling tool execute_sql by explicitly noting 'not a virtual layer - use execute_sql for that', which resolves potential ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance by naming the alternative tool for virtual layers ('use execute_sql for that'). It also warns that the tool can modify the database with DDL/DML, which helps agents decide whether to use this tool based on whether data mutation is intended or acceptable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_processingExecute ProcessingA

Execute a QGIS Processing algorithm. Use get_algorithm_help to discover parameters. Layer params accept layer IDs or file paths. Set OUTPUT to 'memory:' for temp layers. timeout: seconds before the algorithm is cancelled (default 55). Raise it for heavy raster work, but note that long jobs hold the QGIS session for their duration. load_results: add the algorithm's outputs to the project and list them in 'loaded_layers' (the processing.runAndLoadResults() behaviour). This is the only way to keep a 'TEMPORARY_OUTPUT'/'memory:' result, which is otherwise discarded when the run ends. Only vector and raster destinations are loaded, never file or folder ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
algorithmYes
parametersYes
load_resultsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the default timeout (55s), that long jobs monopolize the QGIS session, that without load_results TEMPORARY_OUTPUT/memory results are discarded, and that only vector/raster destinations get loaded. It omits error/failure behavior and permission requirements, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then layered detail in descending priority. Every sentence carries concrete information, though the paragraph is dense and slightly overlong with stacked clauses on load_results.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a free-form nested 'parameters' object with no output schema, the description supplies the missing context an agent needs, including the 'loaded_layers' return key and destination-type limits. Error handling and the algorithm-string format are the remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does for three of four params: layer params accept layer IDs or file paths, OUTPUT can be 'memory:', timeout semantics, and load_results semantics. The 'algorithm' param's expected identifier format (e.g. provider:name) is left implicit, so not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Execute a QGIS Processing algorithm'), which cleanly separates it from run_model, execute_processing_batch, list_processing_algorithms, and get_algorithm_help in the sibling list. An agent can identify the tool's role without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to get_algorithm_help for parameter discovery and explains the load_results trade-off (only path to keep TEMPORARY_OUTPUT/'memory:' results). It gives clear context for when to set timeout higher, but never explicitly contrasts with execute_processing_batch or run_model for multi-algorithm/model workflows.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_processing_batchExecute Processing BatchA

Run one algorithm once per parameter dict in 'parameters_list'. Returns a per-run result with index and success/error status. Use for applying the same operation over many inputs in a single round-trip. timeout: seconds for the whole batch (default 55); runs that would start after it has elapsed come back as 'skipped' with the completed ones intact, so raise it or split the list for big batches.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
algorithmYes
parameters_listYes

TDQS

A4.2/5.0
Behavior4/5

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 does disclose a genuinely non-obvious trait: the timeout is for the whole batch, defaults to 55s, and late runs return 'skipped' while completed runs are preserved. What it omits is side-effect disclosure — running arbitrary algorithms can create or overwrite data, and nothing warns about that or about permissions.

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?

Three sentences, front-loaded with the core behavior, then batching rationale, then the timeout caveat. No filler and every clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does describe the return shape ('per-run result with index and success/error status') plus partial-failure behavior under timeout. The remaining hole is how a caller discovers valid algorithm IDs and parameter keys, which the description leaves entirely to inference.

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 0%, so the description must compensate. It explains 'timeout' thoroughly (units, default of 55, effects on runs) and clarifies that 'parameters_list' is one dict per algorithm run, but it adds nothing about what an 'algorithm' string must contain (e.g., provider:algorithm id) or how dict keys must match that algorithm's parameters — a real gap for a 0%-coverage schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run one algorithm once per parameter dict in parameters_list') with the batch scope made explicit, which clearly separates it from the single-run siblings like execute_processing and run_model. An agent can tell what the tool does and how it differs from a one-shot execution without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear usage condition: 'Use for applying the same operation over many inputs in a single round-trip,' plus a scaling instruction ('raise it or split the list for big batches'). It never names the single-run alternative or states when *not* to batch, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_sqlExecute SQLB

SQL across loaded layers via a virtual layer; reference layers by name in FROM/JOIN. as_layer=True registers the result as a new layer (set geometry_field for spatial output); else returns rows inline (max 1000). layers limits sources by layer id.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
layersNo
as_layerNo
uid_fieldNo
layer_nameNosql_result
geometry_fieldNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that results are limited to max 1000 rows inline and as_layer registers a new layer with optional geometry_field. However, it does not clarify if the tool is read-only, what happens on errors, or permissions needed. Since no annotations exist, the description carries full burden but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, front-loading the core purpose. It could be better structured with bullet points for parameters, but the density is acceptable given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, no schema descriptions, and no output schema, the description is insufficient. It does not explain return format for inline results, default values, or the effect of uid_field. The tool is complex and needs more detail to be fully usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain parameters. It covers as_layer, geometry_field, and layers, but omits query, uid_field, and layer_name. The query parameter is implied but not defined. This forces the agent to infer syntax and meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes SQL across loaded layers via a virtual layer, specifying the key capability. It distinguishes itself from sibling tools as the only SQL execution tool.

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?

The description implies usage through mention of referencing layers by name and as_layer behavior, but lacks explicit guidance on when to use inline vs as_layer, or constraints on SQL statements. No alternatives are discussed, though it is unique among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_atlasExport AtlasA
Idempotent

Export a configured atlas. format 'pdf' writes a single multi-page file at output_path; image formats ('png','jpg','tif') write one file per feature into the output_path directory. Call configure_atlas first.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
formatNopdf
layout_nameYes
output_pathYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide idempotentHint true. Description adds output behavior: pdf single file, images one file per feature, output_path directory for images. This adds value beyond annotations.

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 sentences, front-loaded with action, no waste. Every sentence adds value.

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?

No output schema, so return value unknown. Parameters partly explained. Adequate for a 4-param tool but missing dpi details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 0% requires parameter explanation. Description only implicitly mentions format and output_path, but dpi and layout_name are unexplained. Format options explained adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Export a configured atlas' with specific verbs and resource. It distinguishes from siblings like export_layout by focusing on atlas export and format behaviors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit prerequisite 'Call configure_atlas first' and format-specific guidance (pdf vs image formats). No explicit when-not to use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_layerExport LayerA
Idempotent

Export vector/raster to disk; format from output_path extension (.gpkg, .shp, .geojson, .tif, ...). target_crs (e.g. 'EPSG:4326') reprojects on export. filter_expression (vector only) exports a subset matching a QGIS expression.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes
target_crsNo
output_pathYes
filter_expressionNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark idempotentHint=true. The description adds key behavioral details: output format derived from extension, reprojection via target_crs, and vector-only filter expression. Missing overwrite behavior, but overall informative.

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 sentences, no wasted words, front-loaded with main action. Efficient and easily parsed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple: export layer to file. Description covers format, reprojection, and filtering. No mention of return value or error handling, but for this complexity level it's largely complete. Could note filter is vector-only, which it does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, so description carries full burden. It explains target_crs and filter_expression with examples, and clarifies output_path extension influences format. layer_id is left implicit but is standard. Good compensation for schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool exports vector/raster layers to disk, with format determined by file extension. This distinguishes it from siblings like export_layout or render_map that handle different output types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly compare to alternatives but implies usage for file export. The context of siblings makes it clear this is the appropriate tool for exporting layers to disk, though no 'when not to use' guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_layoutExport LayoutA
Idempotent

Export a print layout to file. format: 'pdf', 'png', 'jpg', 'svg'. dpi: resolution (default 300).

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
pathYes
formatNopdf
layout_nameYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide idempotentHint=true, indicating safe re-execution. The description adds format and dpi constraints but omits behavioral details like file overwrite behavior or error conditions. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with two short sentences, front-loading the core action. However, it could be slightly clearer by separating format and dpi into a list or structured format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no output schema, and only idempotentHint annotation, the description lacks essential context: prerequisites (layout must exist), path constraints, and what happens on success/failure. Sibling tools like create_layout hint at dependencies not addressed here.

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 0%, so the description partially compensates by explaining format values and dpi default. However, layout_name and path are not described beyond the schema, leaving their roles implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'export' and the resource 'print layout', and the allowed formats are listed. This distinguishes it from sibling layout tools like create_layout or add_layout_map, which do not export.

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?

No explicit guidance on when to use this tool vs alternatives like export_atlas or export_layer. The description assumes the agent knows to use this for single layout export, but lacks context on prerequisites (e.g., layout must exist) or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

field_calculatorField CalculatorB

Add (if missing) + populate a field from a QGIS expression, per feature, in-place. field_type: string|int|double|bool|date|datetime (default double). Example: expression='$area', field_name='area_m2'. Returns updated feature count.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthNo
layer_idYes
precisionNo
expressionYes
field_nameYes
field_typeNodouble

TDQS

B3.4/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 that the operation is in-place, adds the field only if missing, processes per feature, and returns the updated count. However, it omits details about access rights, whether existing fields are overwritten (only 'if missing' is mentioned), and potential side effects (e.g., irreversible modification).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences and an example. The main action is in the first sentence, front-loading the purpose. Every part is useful, though the example could be integrated more naturally. No unnecessary words.

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?

For a tool with 6 parameters, no output schema, and no annotations, the description covers the core functionality (adding and populating a field) but leaves gaps: parameters 'length' and 'precision' are undocumented, and the return value 'updated feature count' lacks type/format. Sibling tools are numerous, but the description doesn't explicitly differentiate from close ones like 'add_field' or 'evaluate_expression'.

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?

The description adds meaning for 'field_type' by listing allowed values (string, int, double, etc.) and default (double). It uses an example to clarify 'expression' and 'field_name'. However, 'length' and 'precision' (integer with default 0) are not explained at all, and schema coverage is 0%, so the description only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool adds a field if missing and populates it using a QGIS expression per feature in-place. It lists valid field types and provides a concrete example, making the purpose unambiguous. It distinguishes from siblings like 'add_field' (which only adds) and 'evaluate_expression' (which only evaluates).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an example but offers no explicit guidance on when to use this tool versus alternatives like 'add_field', 'update_features', or 'evaluate_expression'. It does not state prerequisites, contraindications, or post-conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_layerFind LayerA
Read-only

Find layers by name pattern. Supports fnmatch wildcards (e.g. 'roads*') and substring matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_patternYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true. The description adds behavioral details about fnmatch wildcard and substring matching support, which is valuable context beyond what annotations provide.

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 concise sentences with no wasted words. Front-loaded with the core action and immediately followed by key matching details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an existing output schema, the description does not need to explain return values. It covers matching semantics well, but could mention that it returns layer objects for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning to the name_pattern parameter by specifying wildcard and substring matching, though a more explicit format example would be even better.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds layers by name pattern, specifying support for fnmatch wildcards and substring matching. This distinguishes it from sibling tools like get_layers or get_active_layer.

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?

The description does not explicitly guide when to use this tool versus alternatives like get_layers. It implies usage for pattern-based search but lacks explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_3d_screenshotGet 3D ScreenshotA
Read-only

Capture an OPEN 3D Map View as an inline image. Reuses the open view's scene + camera, rendered via a print-layout 3D map item (the 2D get_canvas_screenshot cannot capture the OpenGL 3D view). Requires a 3D map view to be open in QGIS (View > 3D Map Views > New 3D Map View). view_index selects which view when several are open; dpi controls output resolution. Optional camera overrides (applied to the capture only, leaving the live view unchanged): pitch (0 = straight down/top-down, 90 = horizontal/edge-on; ~45 = balanced oblique), heading (compass degrees), distance (metres).

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
pitchNo
headingNo
distanceNo
view_indexNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, which is consistent. The description adds behavioral details: it reuses the open view's scene and camera, renders via a print-layout 3D map item, and clarifies that camera overrides apply only to the capture without affecting the live view. This provides useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured, front-loading the main action and providing details in a logical order. It is relatively concise given the parameter count, but slightly verbose with parentheses; however, every sentence adds valuable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 optional parameters and no output schema, the description covers prerequisites, parameter semantics, and non-destructive behavior. It lacks explicit return format (e.g., image type or size), but the title and 'inline image' imply the result. Overall, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully explains each parameter. It defines dpi, view_index, and camera overrides (pitch, heading, distance) with concrete examples (e.g., '0 = straight down/top-down, 90 = horizontal/edge-on') and notes that overrides are applied only to the capture. This compensates entirely for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool captures an open 3D map view as an inline image. It differentiates from get_canvas_screenshot by noting the 2D tool cannot capture OpenGL 3D views, making the purpose specific and distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool (when a 3D map view is open) and when not (clarifies get_canvas_screenshot for 2D). Also provides prerequisites (requires 3D map view open in QGIS) and alternative tools, guiding correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_active_layerGet Active LayerA
Read-only

Get the currently active (selected) layer in the QGIS layer panel.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description correctly indicates a read operation, consistent with the 'readOnlyHint' annotation. However, it adds little beyond that; the annotation already signals no side effects. The description does not elaborate on return format or other behavioral traits.

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?

The description is a concise single sentence that immediately conveys the tool's purpose. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with a clear read-only annotation and an output schema, the description provides sufficient context. The existence of the output schema compensates for any missing details about return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so the description does not need to explain parameter semantics. The baseline for zero parameters is 4, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the currently active layer from the QGIS layer panel. It uses a specific verb-resource combination and is easily distinguished from the sibling tool 'set_active_layer'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used to query the active layer, but it does not explicitly state when not to use it or mention alternatives. Given the sibling 'set_active_layer', the context is clear enough for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_algorithm_helpGet Algorithm HelpA
Read-only

Get detailed help for a processing algorithm: parameters (name, type, optional, default), outputs, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
algorithm_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates a read-only retrieval operation ('get'), which is consistent with the readOnlyHint annotation. It adds that it returns parameter details, outputs, and description, but does not provide additional behavioral context such as error conditions or permissions beyond what annotations already convey.

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?

The description is a single sentence that is concise and front-loaded with the core purpose. Every word adds value; no unnecessary information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, read-only, with output schema), the description adequately covers the return structure (parameters, outputs, description). It does not discuss possible errors or format details, but the presence of an output schema reduces the need for additional return value explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter algorithm_id is not described in the description; the description only lists the kinds of information returned (parameters, outputs, etc.) but does not clarify what algorithm_id represents or how to obtain it. With 0% schema description coverage, the description fails to compensate and adds no meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'detailed help for a processing algorithm', specifying exactly what is returned (parameters, outputs, description). This distinguishes it from sibling tools like execute_processing (which runs algorithms) and list_processing_algorithms (which lists algorithms).

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?

The description implies use when detailed information about a specific algorithm is needed, but it does not explicitly state when to use this tool versus alternatives, nor does it provide any exclusion criteria. Guidance is limited to the implicit purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bookmarksGet BookmarksA
Read-only

Get spatial bookmarks from the project. Each bookmark has a name, group, extent (xmin/ymin/xmax/ymax), and CRS.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true. The description adds the structure of returned bookmarks (name, group, extent, CRS). No contradictions.

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?

Single sentence, front-loaded with verb and resource, no wasted words. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an existing output schema, the description adequately explains what the tool returns. Could mention that an empty list is returned if no bookmarks exist, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, schema coverage is 100%. Description adds meaning about the return structure, which is helpful beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves spatial bookmarks from the project and enumerates the fields (name, group, extent, CRS), distinguishing it from siblings like add_bookmark and remove_bookmark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Context is clear: use to get existing bookmarks. Sibling tools add_bookmark and remove_bookmark handle other operations. No explicit exclusions needed given the simplicity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_canvas_extentGet Canvas ExtentA
Read-only

Get the current map canvas extent and CRS.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. Description adds that it returns extent and CRS but no additional behavioral traits beyond what annotations provide.

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?

One concise sentence with no wasted words. Front-loaded with key action and output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Low complexity tool with no parameters and an output schema. Description fully adequate for an agent to understand purpose and return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. Baseline for 0 parameters is 4. Description does not add parameter info, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it gets the current map canvas extent and CRS. Distinguishes from siblings like set_canvas_extent (write) and get_canvas_screenshot (different output).

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?

No explicit guidance on when to use vs alternatives. However, as a simple getter, usage is implied. No exclusions or alternative suggestions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_canvas_scaleGet Canvas ScaleA
Read-only

Get the current map canvas scale, rotation, and magnification factor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is clear. The description adds specific details about what is retrieved (scale, rotation, magnification), providing value beyond annotations by specifying the exact properties.

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?

A single sentence that efficiently and clearly conveys the tool's purpose without any unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description adequately informs the agent about the tool's functionality and what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. Per guidelines, baseline is 4. Description does not need to add parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get) and the resource (current map canvas scale, rotation, and magnification factor). It distinguishes from sibling set_canvas_scale by focusing on reading rather than writing.

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?

No explicit usage guidance is provided. However, the context implies it is the read counterpart to set_canvas_scale and should be used when retrieving current canvas properties. Lacks explicit when-not-to-use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_canvas_screenshotGet Canvas ScreenshotA
Read-only

Grab a fast screenshot of the current map canvas widget (no re-render). Returns the image inline. Much faster than render_map.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint true, so safety is covered. The description adds behavioral details: no re-render, fast, returns inline image, which is consistent with annotations. It does not disclose potential limitations such as format or resolution, but given the low risk, it's adequate.

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 concise sentences with no unnecessary words. The key points (fast, no re-render, inline return, faster than render_map) are front-loaded and immediately actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters and clear annotations, the description covers essential context. It mentions the return type and performance benefit. Could specify image format, but not critical for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema description coverage, the baseline is 4. The description adds no parameter specifics because none exist, but this is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it grabs a fast screenshot of the current map canvas widget without re-render, and distinguishes itself from render_map by noting it is much faster. This effectively differentiates it from siblings like get_3d_screenshot and render_map.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a fast screenshot without re-render is needed, and contrasts with render_map by highlighting speed. However, it does not explicitly exclude scenarios where a full render is required, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_edit_statusGet Edit StatusA
Read-only

Edit state of a layer: editable, modified, undo/redo availability, and the counts of pending added/deleted/changed features.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true already signals a safe read operation. The description adds context by specifying exactly which attributes are returned (editable, modified, undo/redo availability, counts), giving the agent a clearer behavioral picture beyond the annotation. No contradictions.

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?

The description is a single sentence that is front-loaded with the resource ('Edit state of a layer') and immediately lists the key output categories. There is no redundant information or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, read-only) and an output schema exists, so the description need not explain return values in detail. The description captures the core functionality well. Missing edge cases like layer-not-found or not-editable behavior are minor and acceptable for a status query.

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?

The schema's single parameter layer_id has no description, so the description must compensate. The phrase 'of a layer' clarifies that the tool operates on a specific layer, but it does not explicitly define the parameter or provide additional format/semantics. With 0% schema coverage, the description partially compensates but could be more explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as returning the edit state of a layer, enumerating specific data points (editable, modified, undo/redo availability, counts of pending changes). This is a specific verb+resource+scope, and it distinguishes the tool from editing mutators like start_editing or commit_edits.

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?

The description implies usage when a user needs to inspect the current edit status of a layer, but it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or context about editing workflows. Given the many edit-related sibling tools, explicit alternatives would be helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_field_statisticsGet Field StatisticsA
Read-only

Compute aggregate statistics (count, sum, mean, min, max, stdev) for a numeric field. For non-numeric fields returns count and distinct values.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes
field_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, and the description adds behavioral detail: handling of non-numeric fields. This goes beyond the annotation. However, it doesn't mention edge cases like missing values or performance constraints.

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?

The description is two succinct sentences, front-loaded with the main purpose. No redundant or unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown here), the description doesn't need to detail return values. It covers both numeric and non-numeric cases. Minor gap: no mention of parameter constraints (e.g., field must exist, layer must be loaded).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description should compensate for missing parameter descriptions. It does not explicitly define layer_id or field_name; only implicitly through context. For 0% coverage, this is insufficient to guide parameter selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it computes aggregate statistics (count, sum, mean, min, max, stdev) for a numeric field. It also specifies behavior for non-numeric fields (count and distinct values). This distinguishes it from sibling tools like get_unique_values or field_calculator.

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?

The description implies when to use (when you need aggregate stats for a field), but does not explicitly provide guidance on when not to use it or compare to alternatives. Sibling tools like field_calculator or zonal_statistics could be misused if the agent doesn't know the distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_layer_crsGet Layer CRSA
Read-only

Get the coordinate reference system (CRS) of a layer: EPSG code, description, whether geographic, and PROJ4 string.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint: true. The description adds value by specifying the exact fields returned (EPSG code, description, geographic, PROJ4), which goes beyond what annotations provide. No contradictions.

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?

The description is a single, focused sentence with no unnecessary words. It efficiently conveys the tool's purpose and output fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description's list of returned fields is sufficient. The tool is simple, and the description covers what the agent needs to know about the return value and purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (low), so the description should compensate by explaining the parameter 'layer_id'. However, the description does not mention this parameter or its meaning. Though the parameter name is self-explanatory, the description fails to add any semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and the resource 'coordinate reference system (CRS) of a layer', listing specific attributes returned (EPSG code, description, geographic flag, PROJ4 string). This distinguishes it from sibling tools like set_layer_crs or get_layer_extent.

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?

The description does not provide explicit guidance on when to use this tool vs. alternatives like set_layer_crs or get_layer_extent. Usage is implied, but no exclusions or references to other tools are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_layer_extentGet Layer ExtentA
Read-only

Get the spatial extent (bounding box) and CRS of a layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description aligns with the readOnlyHint annotation (true), confirming it is a read-only operation. It adds context by specifying the returned data (bounding box and CRS), which is valuable beyond the annotation.

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?

The description is a single, concise sentence (13 words) that is immediately informative and free of unnecessary content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no nested objects) and the presence of an output schema, the description adequately conveys functionality and return value, making it complete for agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, and the description does not clarify the 'layer_id' parameter beyond its name, leaving agents to infer its meaning without additional guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'spatial extent (bounding box) and CRS of a layer,' precisely indicating the tool's function. Among siblings like 'get_canvas_extent' and 'get_layer_crs', it uniquely combines both extent and CRS retrieval.

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?

The description implies usage when needing both extent and CRS for a layer, but does not provide explicit guidance on when to avoid this tool or how it compares to alternatives like 'get_canvas_extent' or 'get_layer_crs'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_layer_featuresGet Layer FeaturesA
Read-only

Get features from a vector layer. Flat dicts: _fid + attributes at top level. expression filter (QGIS, e.g. "name = 'Berlin'", "population > 1000000"), limit (max 50, default 10), offset for paging, optional geometry in _geometry key.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
layer_idYes
expressionNo
include_geometryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint:true is consistent with a read-only operation. The description adds behavioral details about output structure and parameter constraints (max limit 50), which are not covered by annotations.

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?

The description is two sentences with no waste. It front-loads the purpose and output format, and each detail (expression, limit, offset, geometry) earns its place. Extremely efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema is present and annotations provide read-only hint, the description covers all key aspects: parameter behavior, output structure, constraints (max 50), and paging. No gaps for a standard data retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining the expression filter format with examples, limit with max/default, offset for paging, and the optional geometry key. This adds significant meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves features from a vector layer, specifies the output format (flat dicts with _fid and attributes), and details filtering and pagination. This distinguishes it from siblings like select_features or get_selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use expression filters, limit, offset, and geometry inclusion. It provides examples of QGIS expressions, offering clear context for use, though it does not explicitly state when not to use this tool relative to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_layer_labelingGet Layer LabelingA
Read-only

Get the labeling configuration of a vector layer: enabled state, field, font size, color.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, indicating a safe read operation. The description adds value by listing the specific fields returned (enabled state, field, font size, color), providing behavioral context beyond the annotation.

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?

The description is a single sentence that conveys all necessary information without extraneous words, achieving high efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (not shown but noted) and the description enumerates the output fields, the description sufficiently covers the tool's behavior. No additional return value explanation seems necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with one parameter (layer_id). The description does not explain what 'layer_id' represents or how to obtain it, leaving the parameter's meaning entirely to the schema's type definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('labeling configuration of a vector layer'), listing specific fields including 'enabled state, field, font size, color'. This effectively distinguishes it from the sibling 'set_layer_labeling' tool.

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?

No explicit guidance on when to use this tool versus alternatives like 'set_layer_labeling'. Usage context is implied through naming, but no when-to-use or when-not-to-use instructions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_layersGet LayersA
Read-only

List layers in the current project with IDs, names, types, visibility, and type-specific info. Use limit/offset for pagination. Response includes total_count.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true. The description adds behavioral details about pagination (limit/offset) and the response including total_count, which goes beyond the annotation.

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 sentences, front-loaded with key action, no redundancy. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has output schema (not shown but true). Description covers return fields and pagination. Could be slightly improved by mentioning default ordering, but sufficient for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for parameters. The description adds meaning by stating 'Use limit/offset for pagination', clarifying the purpose of both parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List layers in the current project' with specific fields (IDs, names, types, visibility, type-specific info). This distinguishes it from sibling tools that perform other actions on layers.

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?

The description implies usage by listing the function (list layers) but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. Pagination is mentioned but no guidance on when to paginate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_layer_treeGet Layer TreeA
Read-only

Get the full layer tree structure with groups and layers. Returns recursive tree with type, name, visibility, and children.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so description correctly adds that it returns a recursive tree structure. No contradictions; provides useful behavioral context beyond annotations.

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 concise sentences, first states purpose, second adds details. No fluff, front-loaded, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, existing annotations, and an output schema, the description fully covers the tool's behavior and output. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in input schema, so description carries no burden for parameter semantics. Baseline of 4 applies; description adds value by explaining return structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Get', resource 'full layer tree structure with groups and layers', and specifies return attributes (type, name, visibility, children). Distinguishes from siblings like get_layers which likely returns a flat list.

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?

Implies usage for obtaining hierarchical layer structure, but does not explicitly mention when to use this over siblings like get_layers or get_active_layer. No exclusions or alternatives provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_layout_infoGet Layout InfoB
Read-only

List items in a print layout (type, id, uuid, position, size) and page count.

ParametersJSON Schema
NameRequiredDescriptionDefault
layout_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description confirms a read operation (listing items). It does not add behavioral context beyond annotations (e.g., what if layout does not exist). Adequate but no extra value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words. However, it could be structured to highlight the parameter or return value. Still efficient.

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?

Given low complexity (1 parameter, output schema exists), the description is partially complete. It lacks parameter explanation but covers the main purpose. Missing details on how to specify the layout name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not explain the 'layout_name' parameter. The agent must infer that it is the name of the layout, but no details on format or uniqueness. Description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists items in a print layout with specific attributes (type, id, uuid, position, size) and page count. It distinguishes from 'list_layouts' which lists layouts themselves, so it is specific and not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. There are sibling tools like 'add_layout_map' or 'export_layout' that relate to layouts, but no explicit context for usage. Minimal hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_map_themesGet Map ThemesA
Read-only

Get map themes (visibility presets). Each theme stores which layers are visible.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true. The description adds value by explaining that each theme stores which layers are visible, giving behavioral context beyond the annotation.

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?

The description is extremely concise with two short sentences, front-loading the purpose immediately and containing no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with no parameters and has an output schema. The description fully explains what the tool does and what themes represent, making it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the schema covers everything. The description does not need to add parameter information, earning a baseline score of 4 for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'map themes', and provides context that they are visibility presets storing which layers are visible. It distinguishes from sibling tools like add_map_theme and remove_map_theme.

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?

The description implies usage for retrieving map themes but does not provide explicit guidance on when to use this tool versus alternatives like apply_map_theme or add_map_theme.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_message_logGet Message LogA
Read-only

Get QGIS message log entries. Filter by level ('info', 'warning', 'critical') and/or tag (e.g. 'QGIS MCP'). Returns newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
levelNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, signaling the tool is safe. The description adds that results are 'returned newest first', which is useful but not critical for behavioral understanding. No additional disclosures are needed given the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences covering purpose, filtering, and ordering. Every sentence adds value without redundancy. Front-loaded with the core action.

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?

While the output schema exists (reducing need for return value details), the description fails to mention the 'limit' parameter or the default behavior when filters are null. This is a noticeable omission for a tool with only three parameters, detracting from completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain all parameters. It explains 'level' (with examples) and 'tag', but completely omits the 'limit' parameter. This is a significant gap, leaving the agent unaware of how to control the number of results.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get QGIS message log entries' - a specific verb-resource pair. It distinguishes itself from sibling tools by focusing on message logs, which no other tool handles. The filtering and sorting details further clarify its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on filtering by level and tag, helping the agent decide when to use the tool. It implies usage for retrieving specific log entries. However, it does not explicitly state when not to use it or alternatives, but no close sibling tools exist to necessitate that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_plugin_infoGet Plugin InfoA
Read-only

Get detailed info for a specific plugin: name, enabled, version, description, author, path.

ParametersJSON Schema
NameRequiredDescriptionDefault
plugin_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, so the agent knows it's read-only. The description adds the list of returned fields but does not disclose error behavior or any side effects. This is adequate given the annotations cover the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently states the purpose and lists output fields. No redundant information, but it could be slightly more structured (e.g., list fields in a bullet).

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?

Given the tool's simplicity (one param, output schema exists), the description is mostly complete. It misses input format details but covers output fields. For a straightforward info tool, this is minimally viable but could include error handling notes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the unresourced parameter. However, the description only mentions 'for a specific plugin' without clarifying how to specify plugin_name (e.g., exact name vs. display name) or its format. This is insufficient for precise tool invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns detailed info for a specific plugin, listing specific fields (name, enabled, version, etc.). This differentiates it from sibling tools like list_plugins (which returns a list) and reload_plugin (which reloads).

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?

The description implies usage when you need details of one plugin, but it does not explicitly state when to use it versus alternatives (e.g., list_plugins for all plugins). No when-not or prerequisite guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_processing_providersGet Processing ProvidersA
Read-only

List Processing providers (native, gdal, grass, saga, model, ...) with algorithm counts and active status. Use to diagnose missing algorithms.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint true, and description confirms it lists providers without side effects. Adds detail on output (algorithm counts, active status) beyond annotations.

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?

Single sentence, front-loaded with purpose, zero waste. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is simple (no params, output schema exists), the description fully covers what it does and why to use it. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100%. Baseline score of 4 for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists processing providers with examples and mentions algorithm counts and active status, distinguishing it from sibling tools like list_processing_algorithms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a specific use case: 'Use to diagnose missing algorithms.' Lacks explicit when-not-to-use or alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_infoGet Project InfoA
Read-only

Get current project metadata: filename, title, CRS, layer count, and summary of layers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds concrete return values (filename, title, CRS, etc.), enhancing transparency without contradicting annotations.

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?

Single concise sentence that front-loads the action and lists output specifics. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and the presence of an output schema, the description fully covers what the tool does without needing to explain return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100% by default. The description does not need to add parameter details; baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get current project metadata' and enumerates specific items (filename, title, CRS, layer count, summary of layers), distinguishing it from sibling tools like get_raster_info or get_layer_extent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes the tool's purpose for retrieving project metadata, providing clear context. Does not explicitly state when not to use or name alternatives, but the sibling list implies differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_variablesGet Project VariablesA
Read-only

Get all project-level variables (key-value pairs set in Project Properties).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint. The description adds context by specifying that variables are key-value pairs set in Project Properties, enhancing understanding beyond what annotations offer.

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?

The description is a single concise sentence with no wasted words. It is well front-loaded with the main action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an existing output schema, the description is complete. It sufficiently explains what the tool retrieves without needing to cover return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, schema coverage is 100%, so the baseline is 4. The description does not need to add parameter semantics, and no additional info is necessary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'project-level variables', with additional context about key-value pairs from Project Properties. It is specific and distinguishable from sibling tools.

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?

The description implies usage for retrieving project variables but does not provide guidance on when to use vs alternatives or any exclusions. Minimal guidance but clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_qgis_infoGet QGIS InfoA
Read-only

Get QGIS version, profile path, and plugin count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation already indicates readOnlyHint=true, so the description adds little beyond stating the data fetched. No behavioral traits like side effects or requirements are disclosed, but no contradictions occur.

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?

The description is a single sentence with 7 words, containing no wasted text. It is front-loaded with the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the zero parameters, readOnly annotation, and presence of an output schema, the description sufficiently covers the tool's purpose without needing to detail return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%. Per rubric, baseline is 4. Description correctly implies no input needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Get QGIS version, profile path, and plugin count.' This provides a specific verb and resource, clearly distinguishing it from sibling tools like get_project_info or get_plugin_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_project_info, get_plugin_info, or get_raster_info. The description lacks context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_raster_infoGet Raster InfoA
Read-only

Get raster layer info: band count, dimensions, CRS, extent, per-band statistics, nodata values.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds significant value by detailing the specific information returned (band count, dimensions, CRS, extent, statistics, nodata values). No contradictions.

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?

The description is a single short sentence (16 words) that is front-loaded with the verb and resource. Every word adds value, and there is no extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, read-only, output schema exists), the description provides sufficient context. It lists the return contents, and the output schema handles return format. No mention of prerequisites, but that is implied by the tool name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (parameter 'layer_id' not mentioned in description). The description fails to explain the parameter, despite the tool being simple. It does not compensate for the lack of parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('raster layer info') and lists the specific items returned (band count, dimensions, CRS, extent, statistics, nodata values). This clearly distinguishes it from sibling tools like get_layer_crs or get_canvas_extent.

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?

The description implies usage for retrieving comprehensive raster layer information but does not explicitly state when to use this tool over alternatives (e.g., get_layer_extent). No guidance on when-not-to-use or prerequisites is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_selectionGet SelectionA
Read-only

Get the current selection for a layer. Returns feature IDs and count.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true; description adds that it returns feature IDs and count, enhancing transparency without contradiction.

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 concise sentences, front-loaded with key action and result. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple, description covers purpose and output (feature IDs and count). Output schema exists, so return value explanation is sufficient.

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?

Only one parameter (layer_id) is clear from its name, but the description does not add detail beyond the schema. Schema description coverage is 0%, but parameter is self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool gets the current selection for a layer, with a specific verb and resource. It distinguishes from sibling tools like select_features and clear_selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Purpose is clear, but no explicit guidance on when to use this tool versus alternatives. However, the context of sibling tools provides implicit differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_settingGet SettingA
Read-only

Read a QGIS setting by key path (e.g. 'qgis/sketching/sketching_enabled').

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation. The description adds context by specifying the key path format and providing an example, enhancing transparency without contradicting annotations.

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?

The description is a single, front-loaded sentence that communicates the core purpose efficiently. Every word is necessary, and there is no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and an output schema present. The description fully covers the functionality needed for an AI agent to understand and invoke the tool correctly, leaving no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description clarifies the key parameter by showing the expected format and an example. This adds significant meaning beyond the bare schema that only specifies type=string.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a QGIS setting by key path, with a concrete example. It uses the specific verb 'read' and identifies the resource as a QGIS setting, distinguishing it from the sibling write tool set_setting.

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?

The description implies usage for reading settings but does not explicitly guide when to use versus alternative tools like set_setting for writing. No when-not or alternatives are mentioned, though sibling context provides some implicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_unique_valuesGet Unique ValuesA
Read-only

Return the distinct values of a field. Use 'limit' to cap results (-1 for all). Useful before building categorized symbology or filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYes
limitNo
layer_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds behavioral detail about the 'limit' parameter allowing -1 for all values. While this is useful, it does not disclose potential performance implications or data size limits, so a 4 is appropriate.

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 sentences, directly stating purpose and usage. No fluff. Front-loaded with the core action. Every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but indicated), the description does not need to explain return values. It mentions the practical use case, which is sufficient for this straightforward tool.

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?

With 0% schema description coverage, the description must compensate. It explains the 'limit' parameter with usage ('Use limit to cap results (-1 for all)'), but does not add meaning for 'field' or 'layer_id', which are somewhat obvious from names. Thus, it partially compensates but could be more thorough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Return the distinct values of a field.' This is a specific verb ('return') and resource ('distinct values of a field'), distinguishing it from sibling tools like get_layer_features or get_field_statistics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context: 'Useful before building categorized symbology or filters.' This implies a clear scenario, but does not explicitly state when not to use or mention alternatives, earning a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

identify_featuresIdentify FeaturesA
Read-only

Identify features at a point [x, y] in project CRS across layers (map-click analogue). tolerance (map units) expands the search; 0 = exact hit. layer_ids limits the search (default: visible vector layers). limit caps features per layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
pointYes
layer_idsNo
toleranceNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context beyond the readOnlyHint annotation by detailing search behavior (point, tolerance, layer filtering), defaults, and the 'map-click analogue' semantics.

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 sentences, each adding essential information: first defines purpose and point, second details remaining parameters. No fluff, every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with 4 parameters and no output schema, the description covers inputs well. Lacks mention of return format (e.g., feature IDs, attributes), but is sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, but the description fully explains each parameter: point, tolerance (with units), layer_ids (default visible vector layers), and limit. This compensates entirely for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool identifies features at a point, using specific verb-resource. It likens it to a map-click analogue, distinguishing it from selection tools like 'select_features'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains parameters like tolerance, layer_ids, and limit, indicating when to adjust search radius, scope layers, and cap results. However, it does not explicitly state when not to use this tool versus siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_layer_to_connectionImport Layer to ConnectionA
Destructive

Write a loaded vector layer into a saved connection as a new table (PostgreSQL, GeoPackage, ...). Fails if the table exists unless overwrite=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYes
schemaNo
layer_idYes
providerYes
overwriteNo
connectionYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a key safety behavior: 'Fails if the table exists unless overwrite=true', which complements the destructiveHint annotation by specifying the guardrail. Yet it does not detail what happens during overwrite (e.g., schema replacement) or permissions required, so coverage is moderate.

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?

The description is two sentences, front-loaded with the primary action and followed by a concise safety note. Every word adds value, with no fluff or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and no output schema, the description covers the essential operation and a key behavior. It misses details on the schema parameter and return values, but the core usage and safety are well addressed for a moderately complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description explains the core parameters: layer_id (loaded vector layer), connection (saved connection), table (new table), provider (PostgreSQL/GeoPackage), and overwrite (true allows replacing existing table). The optional 'schema' parameter is not mentioned, but most key parameters receive meaningful context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Write', the object 'a loaded vector layer', and the destination 'into a saved connection as a new table', with format examples (PostgreSQL, GeoPackage). This distinguishes it from sibling tools like add_layer_from_connection which perform the reverse operation.

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?

The description implies usage when a layer is loaded and a connection is saved, and explicitly notes the failure condition when the table exists. However, it does not mention alternatives or exclusions, such as 'use execute_connection_sql instead for custom SQL', leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_connectionsList ConnectionsA
Read-only

List the data source connections saved in QGIS (PostgreSQL, GeoPackage, SpatiaLite, MS SQL, Oracle, ...) - the Browser panel entries. Optionally filter by provider (e.g. 'postgres', 'ogr', 'spatialite'). Passwords are redacted from the URIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals safety, and the description adds a valuable behavioral detail: passwords are redacted from URIs. This provides extra transparency beyond the annotation and helps set expectations for the returned data.

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?

The description is three sentences, front-loaded with the verb and resource, and every sentence adds value (scope, filter, security note). No wordiness or redundant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single optional parameter and an output schema present, the description covers the essential aspects: what is listed, optional filtering, and a security concern. It is complete for this simple read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameter descriptions (0% coverage), but the description compensates by explaining the 'provider' parameter with concrete examples like 'postgres', 'ogr', 'spatialite'. This adds meaning beyond the bare schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and identifies the resource as 'data source connections saved in QGIS' with the context of Browser panel entries. It also names several example providers, making it clear this tool lists connections rather than tables or other entities, distinguishing it from siblings like list_connection_tables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the tool is for viewing saved connections and optionally filtering by provider, which provides enough context for an agent to decide when to use it. It does not explicitly mention alternatives or exclusions, but the intent is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_connection_tablesList Connection TablesA
Read-only

List tables reachable through a saved connection. On providers with schemas (PostgreSQL), omit schema to get the schema list first, then pass one. Returns each table's geometry column, CRS, primary key and kind.

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNo
providerYes
connectionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses the two-step behavior on providers with schemas and the exact return fields (geometry column, CRS, primary key, kind). This adds meaningful behavioral context without contradicting the annotation.

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 sentences with no fluff. The first sentence states the purpose, the second delivers key usage and return information. Perfectly front-loaded and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 doesn't need exhaustive return details, and it already summarizes key fields. The main workflow (schema handling) is covered. However, the lack of explanation for provider and connection parameters leaves a small gap in complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for all parameters. It explains the schema parameter in detail (omitting it returns schema list) but provides no guidance for the required provider and connection parameters, leaving them ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'List tables reachable through a saved connection.' This distinguishes it from sibling tools like list_connections (which lists connections) and add_layer_from_connection (which adds a layer from a connection).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear usage pattern for schema-based providers: 'omit schema to get the schema list first, then pass one.' This gives context on when to use the tool and how to handle schemas, though it doesn't explicitly mention alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_layoutsList LayoutsA
Read-only

List all print layouts in the current project with names and page counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only. The description adds that it returns names and page counts, which is consistent. No side effects or additional behavioral context is needed given the simplicity.

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?

The description is a single, clear sentence with no wasted words. It is front-loaded with the action and resource, 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description adequately explains what the tool does. Sibling tools provide context, and the description is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the burden on the description is minimal. A baseline score of 4 is appropriate as no parameter clarification is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all print layouts and specifies the returned information (names and page counts). It distinguishes itself from sibling tools that create, modify, or export layouts, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is used to get an overview of layouts, but it does not explicitly state when to use it versus alternatives. However, given the straightforward nature of listing vs. other operations, the intent is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pluginsList PluginsA
Read-only

List installed QGIS plugins with name, enabled status, and version. Set enabled_only=true to list only active plugins.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabled_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description safely confirms a read operation. It adds value by specifying the returned fields, which goes beyond the annotation. No contradictions detected.

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 sentences front-load the essential action and parameter use. No extraneous words; every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional param, output schema present), the description covers the main behavior and parameter. It doesn't mention error conditions or prerequisites, but these are less critical for a read-only list tool. Sufficient for context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully documents the sole parameter: 'Set enabled_only=true to list only active plugins.' This explains the parameter's effect clearly, meeting the need.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists installed QGIS plugins with specific fields (name, enabled status, version). This distinguishes it from sibling tools like 'get_plugin_info' (detail of a single plugin) and 'reload_plugin'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use the tool (to list plugins) and provides explicit guidance on the parameter 'enabled_only'. It lacks explicit exclusions or alternative tool mentions, but for this simple list operation, the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_processing_algorithmsList Processing AlgorithmsA
Read-only

Search for processing algorithms by keyword and/or provider. Returns id, name, provider for each match.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNo
providerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, so the description adds value by specifying the return structure (id, name, provider). This goes beyond annotations, though no additional behavioral traits like pagination or limits 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words. Front-loads the action and provides immediate context. Every part is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 optional params, output schema exists), the description is mostly complete. It covers search criteria and return fields. Missing details like ordering or error handling but acceptable for a straightforward list/search tool.

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_description_coverage is 0%, so the description must compensate. It maps 'keyword' to the search parameter and 'provider' to the provider parameter, but does not explain expected formats, constraints, or behavior (e.g., are searches case-sensitive?). Adequate but not comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool searches for processing algorithms by keyword and/or provider, and returns id, name, and provider. This differentiates it from sibling tools like get_processing_providers (lists providers) or execute_processing (runs algorithms).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. While the purpose is clear, there is no mention of get_processing_providers for listing providers or execute_processing for running algorithms, leaving the agent to infer use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_processing_modelsList Processing ModelsA
Read-only

List registered Processing models (the 'model' provider). Returns id, name, group for each. Use run_model to execute one.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, indicating no destructive side effects. Description adds that it returns id, name, group, which is useful but not essential beyond the output schema. No contradictions or additional behavioral traits 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, efficient and front-loaded. Every word adds value: identifies resource, specifies return fields, and links to sibling tool. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has zero parameters and an output schema exists (documenting return structure), the description is fully complete. It explains the resource type (model provider) and purpose, which is sufficient for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100% (empty). Description does not need to explain parameters. Baseline for zero params is 4, and description appropriately avoids adding irrelevant param info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists registered Processing models and specifies returned fields (id, name, group). It distinguishes from sibling run_model by advising to use that for execution. The verb "list" combined with resource "registered Processing models" is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions using run_model to execute a model, providing clear guidance on when to use this listing tool vs. the execution tool. However, it does not contrast with other listing tools like list_processing_algorithms or get_processing_providers, which could cause confusion. Still, the primary use case is well-stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_qgis_instancesList QGIS InstancesA
Read-only

List the configured QGIS instances: name, host, port, reachability, and - for each reachable one - which QGIS actually answered (version, process id, window title, profile). Use it to confirm a name maps to the window you mean before writing to it. Pass a name as the 'instance' argument of any other tool to target that QGIS window; omitting it targets the instance named 'default', or the first one listed when no instance is called 'default'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses the tool's output details (reachability, which QGIS answered) and the default instance selection logic. This gives the agent useful behavioral expectations for a read-only discovery tool without contradicting the annotation.

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 tight sentences: the first lists the output fields and the second gives practical usage guidance. No filler, every sentence serves a purpose, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only, no-parameter tool with an output schema, the description covers everything needed: what it does, what it returns, why to use it, and how it ties into the rest of the API. It is fully complete for the agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is complete and the description naturally adds no parameter-specific details. The baseline of 4 for 0 parameters applies here; the description still provides useful context about the 'instance' parameter used elsewhere, but not for this tool's own parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists configured QGIS instances with specific fields (name, host, port, reachability, version, PID, window title, profile). The verb 'List' combined with the resource 'configured QGIS instances' is specific and distinguishes it from the many sibling tools focused on layers, layouts, or project settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs use 'before writing to it' to confirm which window a name maps to. It also explains how the instance parameter behaves across other tools, including the fallback to 'default' or the first listed instance, giving clear when-to-use and how-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

load_projectLoad ProjectC

Load a QGIS project from a .qgs/.qgz file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully convey behavioral traits. It only states the action (loading a project) but does not disclose side effects (e.g., replacing the current project), requirements (file existence), or error handling. Essential transparency 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant information. It is concise, though its brevity sacrifices necessary detail. It earns a 4 for efficiency but is not a perfect 5 due to under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (1 parameter, no output schema, no annotations), the description omits important context such as return values, default behavior, or prerequisites. It is incomplete for reliable agent execution.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'path' has 0% schema description coverage, and the description adds no additional meaning beyond its name. It does not clarify path format, requirements, or allowed values, failing to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool loads a QGIS project from a .qgs/.qgz file path. The verb 'Load' and specific file extensions make the purpose unambiguous, and it distinguishes itself from sibling tools like create_new_project and save_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., load vs create_new_project), nor are prerequisites or limitations mentioned. The description lacks any context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_layer_to_groupMove Layer to GroupB

Move a layer into a layer group by group name.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes
group_nameYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description does not disclose key behaviors: whether the group is created if missing, whether it's a copy or move, or what happens to the layer's original position. Insufficient 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no superfluous words. Front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing details about failure modes (e.g., layer not found, group not found), return value, and support for nested groups. With no output schema, description should provide more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no meaning beyond the schema for the two parameters (layer_id, group_name). Schema description coverage is 0%, so the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('move'), the resource ('layer'), and the destination ('into a layer group by group name'). It distinguishes from sibling tools like create_layer_group or set_layer_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. No mention of prerequisites (e.g., group must exist) or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pingPingA
Read-only

Check connectivity to the QGIS plugin server. Returns pong if connected.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. Description adds that it returns 'pong' on success, which is beyond annotation info. Could mention error behavior but adequate for a simple check.

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 sentences, no wasted words, front-loaded with action. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with no parameters and output schema available. Description fully explains purpose and behavior. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, schema coverage 100%. Description adds no parameter info but none needed. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'Check' and resource 'connectivity to the QGIS plugin server', with explicit return value 'pong'. Distinguishes from many sibling tools that perform other operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for connectivity testing, but no explicit when-to-use or alternatives. Given simplicity, this is acceptable but not perfect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

raster_calculatorRaster CalculatorA

Band math via the QGIS raster calculator. Reference loaded raster layers in the expression as 'LayerName@band' (e.g. '("dem@1" > 1000) * 1'). Writes a GeoTIFF to output_path. Output grid/extent taken from reference_layer (layer id or name), defaulting to the first loaded raster.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYes
output_pathYes
reference_layerNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It explains output format and default behavior for reference_layer, but does not cover error handling, overwrite behavior, or permission requirements.

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 sentences, each contributing essential information. The first sentence states the core purpose, the second adds critical details on layer referencing, output format, and extent defaults. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description covers input parameters and behavior adequately. It could mention what the tool returns (e.g., success message or file path), but for a calculation tool, the current detail is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has no parameter descriptions, but the description explains expression syntax (e.g., 'dem@1'), output_path location, reference_layer optionality with default. This adds significant meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the tool as band math via the QGIS raster calculator, referencing layers with a specific syntax, writing to GeoTIFF, and specifying grid/extent behavior. It is distinct from sibling tools like sample_raster_values or zonal_statistics.

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?

The description implies use for band math calculations but does not explicitly state when to use this versus alternatives like sample_raster_values or field_calculator. No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redo_editsRedo EditsB

Redo previously undone edit operations on a layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNo
layer_idYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It states the operation type (redo) but omits important behavioral details like what happens if there are no undone edits, whether an edit session is required, or whether the operation is reversible. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no wasted words. It efficiently conveys the core action and target, though it is minimal in content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 no output schema, the description is incomplete. It lacks context about when redo is applicable, how the 'steps' parameter works, and potential error conditions, making it insufficient for an agent to invoke confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention layer_id or steps. The 'steps' parameter is ambiguous—its meaning as a count of undo steps is only inferable from the name, not from the description, which says 'operations' but does not clarify the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Redo' and resource 'previously undone edit operations on a layer', clearly distinguishing from sibling 'undo_edits'. It is more than just a restatement of the title.

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?

The phrase 'previously undone' implies usage after an undo, but it does not explicitly state when to use this vs alternatives like undo_edits, nor does it mention prerequisites such as being in an active editing session. Guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reload_pluginReload PluginA
Destructive

Reload a QGIS plugin by name. Cannot reload the MCP plugin itself. Useful during plugin development.

ParametersJSON Schema
NameRequiredDescriptionDefault
plugin_nameYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation destructiveHint: true already indicates the tool may have destructive effects. The description adds the specific exclusion that the MCP plugin cannot be reloaded, which is a behavioral constraint not inferable from annotations. However, it does not detail the consequences of reloading (e.g., state loss, UI refresh) or any authorization requirements. The bar is lowered because annotations exist, but the description adds only minimal extra context.

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?

The description is two sentences with no waste. The first sentence conveys the core action and target. The second adds an exclusion and a use case. It is front-loaded and every sentence earns its place. This is a model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, destructive annotation), the description is nearly complete. It states the action, constraint, and use case. However, it could mention what happens after successful reload (e.g., plugin reinitialized) or any failure conditions. For a simple tool with a sibling set focused on different operations, this is adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description must compensate by adding meaning beyond the schema. The description only mentions 'by name', which weakly echoes the parameter name. It does not specify what constitutes a valid plugin name, case sensitivity, or how to obtain names. The baseline of 3 is not warranted because coverage is low and the description fails to provide sufficient semantic detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Reload', the resource 'a QGIS plugin by name', and adds a specific constraint ('Cannot reload the MCP plugin itself'). It also provides a use case ('Useful during plugin development'). This is a specific verb+resource combination that distinguishes it from sibling tools like list_plugins or get_plugin_info, which are informational.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a negative guideline ('Cannot reload the MCP plugin itself') and a positive context ('Useful during plugin development'). It implies when to use the tool (during development) but does not explicitly contrast with alternatives or specify when not to use it beyond the MCP exclusion. Given the sibling tools do not include a reload function, this is sufficient but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_bookmarkRemove BookmarkA
Destructive

Remove a spatial bookmark by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookmark_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation already provides destructiveHint: true, so the description's statement of removal is consistent but adds no additional behavioral context beyond what the annotation indicates.

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?

Extremely concise single sentence, front-loaded with the verb and resource, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is nearly complete. However, it could mention that the bookmark must exist or that this action is irreversible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description barely references the parameter via 'by its ID', but provides no additional semantics such as format, example, or constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove'), the resource ('spatial bookmark'), and the method ('by its ID'). It effectively distinguishes from sibling tools like add_bookmark and get_bookmarks.

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?

The description implies usage as the removal counterpart to add_bookmark, but lacks explicit guidance on when to use or when not to use, and does not mention alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_layerRemove LayerA
Destructive

Remove a layer from the project by its layer ID. This is irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint: true, and the description adds 'This is irreversible,' reinforcing the irreversible nature. No contradictions, but it could mention other behavioral aspects like prerequisites or cascading effects.

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?

The description is two short sentences with no extraneous information. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single parameter, no output schema), the description covers the core action and its irreversible nature. It is mostly complete, though it could hint at prerequisites like layer existence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, and the description only mentions 'by its layer ID' without specifying format or how to obtain the ID. This provides minimal additional meaning beyond the schema's type and name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (remove a layer), the resource (layer), and how (by its layer ID). It distinguishes from sibling tools like duplicate_layer or delete_features, which deal with duplication or feature deletion, not layer removal.

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?

The description does not explicitly state when to use vs alternatives or provide exclusions. However, for a simple destructive tool, the purpose is clear enough and there is no direct alternative among siblings, so it is adequate but could be improved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_layoutRemove LayoutB
Destructive

Remove a print layout from the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
layout_nameYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description aligns with the destructiveHint annotation, confirming removal is destructive. However, it does not add further behavioral details beyond the annotation, such as whether removal is permanent or if confirmation is required. With annotations covering the destructive nature, a score of 3 is appropriate.

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?

A single sentence of 8 words that immediately conveys the action and target. No redundancy, no unnecessary detail. Perfectly front-loaded and efficient.

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?

For a simple 1-parameter tool with no output schema and destructiveHint present, the description is minimally adequate. However, it lacks notes on error handling, prerequisites, or what happens on success. A slightly richer description would improve completeness without sacrificing conciseness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single parameter layout_name. The description does not explain the parameter's meaning, format, or constraints beyond what the name implies. It fails to add value by clarifying required format (e.g., exact name) or consequences of providing a non-existent name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Remove a print layout from the project.' This is a specific verb (Remove) and resource (print layout) with context (from the project), clearly distinguishing it from sibling tools like create_layout, export_layout, and list_layouts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention prerequisites (e.g., layout must exist) or when not to use it. No comparison to similar tools like delete or remove operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_map_themeRemove Map ThemeB
Destructive

Remove a map theme by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation already indicates destructiveHint=true. The description adds no further behavioral details such as permanence, effect on applied themes, or error handling. Minimal additional value.

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?

The description is a single, front-loaded sentence with no unnecessary words. It conveys the essential information efficiently.

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?

For a simple tool with one parameter and no output schema, the description covers the basic operation. However, it lacks details on error handling, success/failure signals, or consequences of removal.

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 0%, so the description must compensate. It confirms that 'name' identifies the theme, but does not specify format, case sensitivity, or behavior for non-existent names. Adequate but not thorough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (remove), the resource (map theme), and the identifier (by name). It distinguishes from sibling tools like add_map_theme and apply_map_theme.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor does it mention prerequisites, side effects, or 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.

rename_fieldRename FieldC

Rename a field in a vector layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes
new_nameYes
old_nameYes

TDQS

C2.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only says 'rename' without any side effects, reversibility, or constraints. Completely opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise single sentence, but so sparse that it sacrifices essential details. Fine as a headline but not sufficient alone.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and 3 required parameters, the description is grossly incomplete. Does not address common concerns like error handling or behavior when fields don't exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%; description does not explain any parameter meanings beyond their names. Fails to compensate for lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (rename) and the target (field in a vector layer), making it distinct from sibling tools like add_field or delete_field.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 when not to. No prerequisites mentioned, such as the layer must exist or the old field must exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_mapRender MapB
Idempotent

Render the current map canvas to an image. Returns the image inline so you can see it. Optionally saves to a file path on disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
widthNo
heightNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true. The description adds that the image is returned inline, which is useful behavioral insight. However, it does not disclose any potential side effects beyond the optional file save, nor does it describe the format of the returned image.

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?

The description is concise, with two sentences. The first sentence covers the core action and return value, the second adds optional behavior. No redundant or extraneous information.

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?

Given no output schema, the description mentions the image is returned inline, but lacks details on format (e.g., base64, blob) or how to handle it. There is no differentiation from the similar sibling 'get_canvas_screenshot'. The description is adequate but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should compensate by explaining parameters. It only mentions the 'path' parameter for optional save, leaving 'width' and 'height' unexplained. While their roles are somewhat obvious, the description should still provide context, especially for missing schema details.

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?

The description clearly states the tool renders the current map canvas to an image and returns it inline, with an optional save to disk. This sets a clear purpose, but it could be more explicit in distinguishing it from the sibling 'get_canvas_screenshot' which may have similar functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'get_canvas_screenshot'. It does not specify prerequisites or context-dependent usage, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollback_editsRollback EditsA
Destructive

Discard every uncommitted change on a layer and close the edit session.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly discloses the destructive scope ('every uncommitted change') and the additional side effect of closing the edit session, which goes beyond the destructiveHint annotation. It provides helpful detail about what will be lost.

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?

The description is a single, clear sentence with no filler, front-loading the action and outcome.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers the operation's effect and side effect. It doesn't explicitly mention prerequisites like needing an active edit session, but this is implied and not a significant gap given the sibling tool names.

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?

The description says 'on a layer,' which maps directly to the layer_id parameter, but it provides no further detail about the parameter format or how to obtain the ID. With 0% schema coverage, the description offers only minimal compensation beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Discard'), identifies the resource ('layer'), and states the scope ('every uncommitted change') plus a side effect ('close the edit session'). This clearly differentiates the tool from siblings like undo_edits (which undoes individual changes) and commit_edits (which saves changes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the use case—when you need to discard all uncommitted edits and end the editing session. However, it does not explicitly mention alternatives or exclusions, such as 'use undo_edits to revert specific changes instead.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_modelRun ModelA

Run a Processing model by registered id (e.g. 'model:myflow') or by a .model3 file path. 'parameters' maps the model's input names to values (layer ids/paths, numbers, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes
parametersNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only explains parameter mapping, but does not mention side effects, return values, error handling, or whether the model may alter project state.

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 sentences efficiently convey purpose and parameter usage. No redundant information; every word adds value.

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?

Covers core usage but lacks details on return values, synchronous execution, prerequisites, or what happens if the model is invalid. For a 2-parameter tool without output schema, some additional context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds meaning for both parameters: 'model' can be an id or file path, 'parameters' maps input names to values (e.g., layer ids/paths). This clarifies usage beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a Processing model, specifying two distinct methods: by registered id or by a .model3 file path. This provides a specific verb and resource, distinguishing it from siblings like execute_processing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 execute_processing. It does not mention context, prerequisites, or 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.

sample_raster_valuesSample Raster ValuesA
Read-only

Sample raster pixel values at points. 'points' is a list of [x, y] in the raster's CRS. Omit 'band' to sample all bands. Use transform_coordinates first if your points are in a different CRS.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNo
pointsYes
raster_layerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so no contradiction. Description adds context about CRS requirements and sampling all bands, which complements the annotation. Could mention performance for many points, but not required.

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 sentences, each packed with essential information: what the tool does, parameter details, and a usage prerequisite. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the main behavioral aspects: CRS requirement, band behavior. With an output schema present, not explaining return values is fine. Missing details like error handling or limits, but acceptable for the complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. It does for 'points' (explains format and CRS) and 'band' (explains default behavior). 'raster_layer' is self-evident from the name, so overall adds sufficient meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Sample raster pixel values at points', which is a specific verb (sample) and resource (raster values at points). This distinguishes it from siblings like zonal_statistics (polygon-based) and get_raster_info (metadata).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use an alternative: 'Use transform_coordinates first if your points are in a different CRS.' Also advises on band usage: 'Omit 'band' to sample all bands.' This provides clear context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_projectSave ProjectB
Idempotent

Save the current project. Optionally specify a new path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint=true. The description adds no further behavioral context, such as what happens if the path already exists or whether it overwrites. With annotations, this is acceptable but not enhanced.

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?

Extremely concise with two sentences. Front-loaded with the main action. Every word serves a purpose, no fluff.

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?

Given the simplicity (single optional param, no output), the description covers the core purpose but lacks completeness in usage and parameter details. Adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain the 'path' parameter. It says 'Optionally specify a new path' but does not clarify format, restrictions, or default behavior. Insufficient guidance for a parameter with no schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action 'Save' and the resource 'current project'. Distinguishes from siblings like 'load_project' and 'create_new_project' by specifying it's for saving an existing project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. Does not mention typical usage context or exclusions. It merely states the action without any usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_style_qmlSave Style QMLC

Save a layer's style to a QGIS QML file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
layer_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description lacks behavioral details such as whether existing files are overwritten, if directories are created, or what happens if the layer has no style.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but too sparse to be effective. It does not waste words, but it lacks necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only 2 parameters and no schema descriptions or output schema, the description fails to provide essential context about the style file content, return value, or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage. The description does not explain the parameters 'path' or 'layer_id', leaving the agent without guidance on required format or source of the layer ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Save', the resource 'a layer's style', and the output format 'QGIS QML file'. It is specific and distinguishes from sibling tools like apply_style_qml.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as apply_style_qml or set_layer_style. Prerequisites or conditions are not mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_featuresSelect FeaturesB
Idempotent

Select features in a layer by expression or feature IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
fidsNo
layer_idYes
expressionNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide idempotentHint: true, which may be misleading as selection operations typically modify state. The description does not clarify selection behavior (e.g., replace vs add vs toggle) or side effects like clearing previous selections.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but lacks structure. It front-loads the purpose but omits necessary details, making it barely adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters, no output schema, and the complexity of selection operations (e.g., selection mode, clearing previous selections), the description is incomplete. It does not explain the result of selection or how the parameters interact.

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?

With 0% schema description coverage, the description adds some meaning by linking 'expression' and 'feature IDs' to the parameters, but does not explain their syntax, precedence, or default behavior. It provides a high-level semantic link but lacks depth.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Select', the resource 'features in a layer', and the methods 'by expression or feature IDs'. It distinguishes from sibling tools like get_selection and clear_selection by indicating it performs a selection operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. For instance, when to use select_features vs identify_features or get_selection is not addressed, nor are scenarios where selection should be avoided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_active_layerSet Active LayerB
Idempotent

Set the active layer in the QGIS layer panel by layer ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the idempotentHint annotation, the description does not disclose any behavioral traits (e.g., whether it affects the canvas, triggers events, or is required for other tools). The annotation covers idempotence, but the description adds no further insight.

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?

The description is a single, efficient sentence that immediately conveys the action and target. No extraneous words.

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?

For a simple setter, the description is adequate but misses the opportunity to explain the importance of the active layer for other QGIS operations (e.g., get_layer_features, zoom_to_layer). No mention of layer existence prerequisite.

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?

The description explains that layer_id is the ID of the layer, which adds meaning beyond the schema's bare type (string). However, it omits details like format (e.g., integer, UUID) or whether it must be an existing layer, leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (set), the resource (active layer), and the method (by layer ID). It distinguishes itself from the sibling tool get_active_layer which retrieves the active layer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 (e.g., set_layer_visibility, set_layer_property). It does not mention prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_canvas_extentSet Canvas ExtentA
Idempotent

Set the map canvas extent. Coordinates should be in the specified CRS (default: project CRS).

ParametersJSON Schema
NameRequiredDescriptionDefault
crsNo
xmaxYes
xminYes
ymaxYes
yminYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation indicates idempotentHint=true, meaning repeated calls have same effect. The description adds context about CRS usage but does not disclose other behaviors like validation, side effects, or error handling. No contradiction with annotations.

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?

The description is extremely concise: two sentences with no extra words. It efficiently conveys the core purpose and a key usage note without repetition.

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?

Given the simplicity of the tool and presence of annotations, the description is adequate but not comprehensive. It misses details like valid coordinate ranges, that xmin must be less than xmax, and that the extent replaces the current view.

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?

Since schema description coverage is 0%, the description partially compensates by stating that coordinates (xmin,ymin,xmax,ymax) should be in the specified CRS and that crs is optional. This adds meaning but lacks details like value constraints, ordering, or units.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set the map canvas extent') and the resource ('canvas extent'). It distinguishes from sibling tools like 'get_canvas_extent' and 'set_canvas_scale' by specifying 'set' and 'extent'.

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?

The description provides a guideline on coordinate reference system ('Coordinates should be in the specified CRS (default: project CRS)'). However, it does not specify when to use this tool versus alternatives (e.g., zoom_to_layer, set_canvas_scale) or mention any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_canvas_scaleSet Canvas ScaleA
Idempotent

Set the map canvas scale and/or rotation. Provide scale as denominator (e.g. 50000 for 1:50000). Rotation in degrees (0-360).

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
rotationNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the idempotentHint annotation, the description adds format details (denominator for scale, degrees for rotation) but does not explain behavior when only one parameter is given or constraints like min/max values.

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 concise sentences with front-loaded purpose and immediate format examples; no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately covers a simple tool with two optional parameters; could mention default behavior when both parameters are omitted, but overall sufficient given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Compensates for 0% schema documentation by clearly explaining scale denominator format and rotation degree range, adding critical meaning not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool sets map canvas scale and/or rotation, distinguishing it from sibling tools like set_canvas_extent or get_canvas_scale.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 set_canvas_extent, or what scenarios prefer scale vs rotation. Lacks context on prerequisites or side effects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_layer_crsSet Layer CRSA

Set the CRS of a layer (e.g. 'EPSG:4326'). This does NOT reproject data - it only changes how the layer's coordinates are interpreted.

ParametersJSON Schema
NameRequiredDescriptionDefault
crsYes
layer_idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It discloses a critical non-obvious behavior: changing CRS interpretation without reprojecting coordinates. It does not mention other side effects, but this is the key behavioral trait for this operation.

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 sentences with no filler. The first sentence states the purpose, the second immediately clarifies a critical caveat. Ideal conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description is complete. It covers the action, the format example, and the important caveat about not reprojecting. No further context is needed.

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 description coverage is 0%, so the description must compensate. It adds an example for the 'crs' parameter ('EPSG:4326'), which helps clarify expected format, but does not describe the 'layer_id' parameter beyond its name. The schema's string type is minimal, and the description adds only marginal meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Set the CRS of a layer' with an explicit example format. It distinguishes itself from sibling tools like get_layer_crs (which retrieves) and set_project_crs (which operates on the project).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear 'when not to use' by stating 'This does NOT reproject data', which helps agents avoid misuse. However, it does not name an alternative tool (e.g., transform_coordinates) for reprojection, so it stops short of full alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_layer_labelingSet Layer LabelingA

Configure labeling for a vector layer. Set enabled=false to disable labels. Set field_name to the attribute field to label with. Optional: font_size (float), color (hex like '#000000').

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNo
enabledNo
layer_idYes
font_sizeNo
field_nameNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. However, it only mentions configuration parameters and does not disclose side effects, such as whether updating labels triggers a map refresh or affects existing features. The description is minimal in this regard.

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?

The description is extremely concise with only two sentences, no fluff, and front-loaded with the core purpose. Every sentence serves a clear purpose.

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?

Given no output schema, no annotations, and 5 parameters (1 required), the description provides basic configuration details but lacks information on return value, error states, or behavior changes. It is adequate but not fully comprehensive.

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 description coverage is 0%, so the description must compensate. It explains 'enabled', 'field_name', 'font_size', and 'color' with example format for color. However, it does not explain the required 'layer_id' parameter, and lacks details like units for 'font_size'. The description adds some meaning but is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Configure labeling for a vector layer' with a specific verb ('Configure') and resource ('labeling for a vector layer'). It distinguishes from sibling tools like 'get_layer_labeling' which reads labeling, and others like 'set_layer_style' which configure symbology.

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?

The description provides basic usage guidance such as 'Set enabled=false to disable labels' and 'Set field_name to the attribute field to label with', but it does not explicitly state when to use this tool versus alternatives like 'get_layer_labeling' for reading or 'set_layer_style' for styling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_layer_orderSet Layer OrderA
Idempotent

Reorder layer tree nodes; tree order is draw order. layer_ids is the ordered list of layer ids from top (drawn last) to bottom; unlisted layers keep their slots. Clears any custom draw order (it freezes a snapshot list - layers added later would silently draw behind everything).

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idsYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses crucial behavioral traits beyond the idempotentHint annotation: it clears any custom draw order, freezes a snapshot list, and causes layers added later to silently draw behind everything. This gives the agent critical side-effect information that cannot be inferred from the schema or annotations.

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?

The description is extremely concise—two sentences—yet conveys purpose, parameter semantics, and a critical side-effect warning. Every word adds value; there is no repetition or filler. The structure front-loads the main action and then adds necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema, simple annotations), the description covers all essential aspects: what it does, how the parameter works, and an important behavioral caveat. It is complete for an agent to select and invoke this tool correctly without needing additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero description coverage for layer_ids, but the description fully compensates: it explains that layer_ids is an ordered list from top (drawn last) to bottom, and that unlisted layers keep their slots. This adds vital meaning beyond the raw schema, making the parameter behavior fully explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Reorder layer tree nodes.' It further clarifies that tree order equals draw order, which distinguishes it from other layer-related tools like set_layer_property or set_layer_visibility. The purpose is unambiguous and clearly separates it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: to change the visual stacking of layers. It implies its uniqueness among siblings (no other tool reorders layers), but does not explicitly name alternatives or list when not to use it. The warning about clearing custom draw order serves as an important consideration, effectively guiding usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_layer_propertySet Layer PropertyA
Idempotent

Set a layer property. Supported properties: opacity (0.0-1.0), name (string), min_scale, max_scale (float), scale_visibility (bool).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
layer_idYes
propertyYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that this tool sets properties and provides supported values with types/ranges. Annotations already include idempotentHint=true, and the description does not contradict or add major behavioral context beyond the property list. No side effects or prerequisites are mentioned.

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?

The description is extremely concise: one sentence followed by a clear list. It is front-loaded with the purpose and immediately provides the essential details. No unnecessary words or repetition.

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?

Given the tool's low complexity (3 params, no output schema), the description adequately covers the main action and supported properties. However, it lacks context about layer_id validity, error handling, or return behavior. With no output schema, a brief note on what the tool returns (or that it returns nothing) would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining the 'property' parameter's allowed values (opacity, name, min_scale, max_scale, scale_visibility) with types and ranges. It does not fully detail the expected format for 'value' (e.g., string representation of floats), but provides significant clarity beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Set a layer property' with a specific verb and resource, and lists supported properties (opacity, name, min_scale, max_scale, scale_visibility), distinguishing it from sibling tools like set_layer_visibility or set_layer_style which have more specific purposes.

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?

The description implies usage for setting basic layer properties by listing them, but does not explicitly exclude cases where siblings like set_layer_visibility or set_layer_style would be more appropriate. No guidance on when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_layer_styleSet Layer StyleA

Set symbology. style_type: 'single' (one symbol), 'categorized' (unique values), 'graduated' (numeric ranges). field required for categorized/graduated. color_ramp: QGIS ramp name (e.g. 'Spectral', 'Viridis', 'Blues'). classes: graduated class count (default 5).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldNo
classesNo
layer_idYes
color_rampNoSpectral
style_typeYes

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must fully disclose behavior. It only states 'Set symbology' without detailing side effects (e.g., overrides existing style) or prerequisites (e.g., layer must be loaded). Minimal transparency.

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?

Extremely concise, front-loaded with the main action, and uses a list format for parameters. Every sentence adds useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key parameters and style types adequately for a symbology tool. Missing context about return value (since no output schema) and confirmation of success, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 0% of parameter meanings; description adds meaning by explaining style_type options, field requirement, color_ramp names, and classes default. Adds significant value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Set symbology' and distinguishes three style types ('single', 'categorized', 'graduated') with required parameters, differentiating it from sibling tools like set_layer_crs 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use each style_type (e.g., 'field required for categorized/graduated') and default values for classes, but does not mention alternatives or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_layer_visibilitySet Layer VisibilityB
Idempotent

Set a layer's visibility in the layer tree (show/hide on map).

ParametersJSON Schema
NameRequiredDescriptionDefault
visibleYes
layer_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The idempotentHint annotation already indicates repeated calls have no additional effect. The description adds minimal extra behavioral context (e.g., that visibility is set in the layer tree), but does not detail error conditions or dependencies like requiring an existing layer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no extraneous words. It is efficient, though it could slightly expand on parameters without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two simple parameters, no output schema, and no nested objects, the description covers the core behavior (set visibility on map). It lacks error handling context but is generally complete given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It inferentially describes 'visible' (show/hide) but does not explain the 'layer_id' parameter, leaving ambiguity about required format or context. Only partial meaning is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set a layer's visibility') and the context ('in the layer tree (show/hide on map)'), making it unambiguous and distinct from sibling tools like set_active_layer or set_layer_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives, such as when to hide a layer versus removing it or adjusting its order. No when-not usage 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.

set_project_crsSet Project CRSA

Set the project coordinate reference system (e.g. 'EPSG:4326', 'EPSG:3857'). This changes how layers are projected on the map canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
crsYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavioral context. It states that it changes how layers are projected on the map canvas, but lacks details on side effects (e.g., reprojection of existing layers, refresh requirements).

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?

The description is very concise with two sentences, front-loading the action and examples without any wasted words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description is fairly complete. It explains the purpose and parameter format. Minor gap: could mention that the tool affects the map display immediately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates by giving real examples of valid CRS strings ('EPSG:4326', 'EPSG:3857'), indicating the expected format and common values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set'), the resource ('project coordinate reference system'), and provides concrete examples like 'EPSG:4326'. It distinguishes this tool from sibling 'set_layer_crs', which is for layers.

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?

The description implies usage when changing the project CRS, but does not explicitly state when to use this vs alternatives like 'set_layer_crs' or 'set_canvas_extent'. No exclusions or conditions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_project_variableSet Project VariableB
Idempotent

Set a project-level variable. Variables are accessible in expressions as @key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotency. The description adds context about expression usage (@key) but does not disclose other behavioral traits like overwrite behavior, persistence scope, or required permissions. It adds some value beyond annotations.

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 sentences, no filler, directly communicates the core functionality and usage hint. Every word is purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks details on idempotent behavior (e.g., overwriting existing keys), scope (project-level), and retrieval. Given no output schema and minimal schema coverage, the description is insufficient for complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for lack of parameter documentation. It provides no details about key format, value constraints, or allowed characters, leaving the agent without guidance on valid inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sets a project-level variable and explains the syntax for access in expressions. It unambiguously identifies the action and resource, distinguishing it from sibling tools like get_project_variables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 other variable-related tools. There is no mention of prerequisites, when to avoid use, or comparison with get_project_variables.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_raster_styleSet Raster StyleA

Set raster symbology. style_type: 'singleband_pseudocolor' (color ramp over one band), 'singleband_gray', 'multiband_color' (RGB), 'hillshade'. min_value/max_value default to the band statistics. color_ramp: QGIS ramp name (e.g. 'Viridis', 'Spectral', 'RdYlGn'). classification: continuous|equal_interval|quantile. interpolation: interpolated|discrete|exact. gradient (gray): black_to_white|white_to_black. contrast: none|stretch|clip|stretch_clip. hillshade uses band, azimuth, altitude, z_factor.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNo
azimuthNo
classesNo
altitudeNo
contrastNostretch
gradientNoblack_to_white
layer_idYes
red_bandNo
z_factorNo
blue_bandNo
max_valueNo
min_valueNo
color_rampNoViridis
green_bandNo
style_typeYes
interpolationNointerpolated
classificationNocontinuous

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It discloses meaningful behavior: min_value/max_value default to band statistics, hillshade uses band/azimuth/altitude/z_factor, and lists valid options for classification, interpolation, gradient, and contrast. It doesn't describe return values or persistence, but covers core behavior.

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?

The description is a single dense paragraph with no filler. It is front-loaded with the core action and every clause adds valuable parameter or option detail, making it an efficient reference for a 17-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 17 parameters, no annotations, and no output schema, the description covers most necessary invocation details, including style-type-specific parameter usage. It lacks explicit prerequisites (e.g., the layer must be a raster layer) and alternative-tool context, but the schema's required layer_id and the 'raster symbology' wording make this largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description compensates by explaining style_type variants, color_ramp examples, and parameter relationships (e.g., hillshade parameters). Some parameters like layer_id, red_band, green_band, blue_band, and classes are not explicitly defined, but they are partially inferable from the RGB and hillshade hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Set raster symbology' and expands with specific style_type variants ('singleband_pseudocolor', 'singleband_gray', 'multiband_color', 'hillshade'), making it distinct from the broader sibling set_layer_style and apply_style_qml tools.

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?

Usage context is implied by the tool name and 'raster symbology', and the description gives useful style-type choices, but it never explicitly says when to use this tool instead of alternatives like set_layer_style or apply_style_qml, nor does it mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_settingSet SettingC
Destructive

Write a QGIS setting. Use with care - incorrect settings can affect QGIS behavior.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation destructiveHint already signals that this tool can be destructive, and the description reinforces this by noting that incorrect settings can affect QGIS behavior. This adds a consequence dimension, but it does not disclose other behavioral traits such as persistence, whether a restart is required, whether the setting is validated, or if it overrides existing values. The description adds some value beyond the annotation but not rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with two short sentences that front-load the core purpose ('Write a QGIS setting') and follow with a brief warning. Every word earns its place, but the brevity comes at the cost of missing essential parameter and usage details. It is efficient but under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two simple string parameters and no output schema, the description is still incomplete. It lacks any mention of parameter semantics, valid settings, examples, or what the write operation returns (if anything). The warning about affecting QGIS behavior is helpful, but the overall context is insufficient for an agent to invoke the tool correctly without external knowledge of QGIS settings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain what 'key' and 'value' mean or how they interact. The tool name and description imply a key-value pair, but there is no elucidation of valid keys, value formats, or examples. The description entirely fails to compensate for the schema's lack of parameter documentation.

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?

The description clearly states 'Write a QGIS setting' with a specific verb and resource, distinguishing it from the sibling get_setting (read). However, it does not differentiate from set_project_variable or other setting-related tools, and the exact scope ('QGIS setting') remains somewhat generic without explaining whether it applies to global application settings or project-specific ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. The only added context is a cautionary warning ('Use with care'), which implies cautious use but does not state prerequisites, exclusions, or suggest alternatives like get_setting for reading. The description fails to help the agent decide between this tool and its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spatial_joinSpatial JoinA

Join attributes by location (native:joinattributesbylocation). predicates int list: 0=intersects 1=contains 2=equals 3=touches 4=overlaps 5=within 6=crosses (default [0]). method: 0=one-to-many 1=first match (default) 2=largest overlap. join_fields = copied columns (default all). No output_path = in-memory layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNo
prefixNo
join_layerYes
predicatesNo
join_fieldsNo
output_pathNo
target_layerYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries full burden. It discloses that the tool creates an in-memory layer if no output_path is given, and explains predicates and method options. It does not explicitly state it is non-destructive, but that is implied. This is sufficient for typical usage.

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?

The description is extremely concise and well-structured. Each key parameter is explained in a clear, bullet-like format without unnecessary words. Every sentence adds meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of spatial join (7 parameters) and no output schema, the description covers all essential aspects: parameter defaults, meaning, and output behavior. It could mention CRS compatibility or error handling, but it is still nearly complete for practical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameter descriptions, so the description must compensate. It does so excellently by explaining predicates (mapping integers to spatial relationships), method (three options with defaults), join_fields (copied columns, default all), and output_path behavior. This adds significant value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Join attributes by location', which is a specific verb+resource. It distinguishes from sibling tools like 'add_table_join' (attribute join) by emphasizing spatial join. The native function name is provided for clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool vs alternatives. It focuses solely on parameter details, with no mention of prerequisites, when not to use, or alternative methods like 'add_table_join' or 'execute_processing'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_editingStart EditingA

Open an edit session on a vector layer. Subsequent add/update/delete calls go to the undoable edit buffer instead of the data source, until commit_edits or rollback_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It reveals a key behavioral trait: edits are buffered rather than directly written until commit/rollback. This goes beyond a simple action statement, though it omits details like error handling or behavior if an edit session is already active.

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?

The description is a single sentence that is information-dense and directly to the point. Every part earns its place, explaining the action, the buffer behavior, and the termination conditions without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter command with no output schema, the description is largely complete: it states what the tool does, the effect on subsequent edits, and how to end the session. It lacks explicit mention of return values or preconditions, but these are not critical for this simple tool.

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?

The input schema provides only a string type for layer_id, and the description does not elaborate on the parameter. However, the phrase 'vector layer' and the self-explanatory name layer_id give sufficient context for a single-parameter tool, even though schema coverage is 0%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Open') and resource ('edit session on a vector layer'), clearly distinguishing this from sibling tools like commit_edits and rollback_edits by explaining it starts a session that redirects edits to an undoable buffer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states that subsequent add/update/delete calls go to the edit buffer until commit_edits or rollback_edits, giving clear context for when to call this tool and the expected lifecycle. It does not explicitly list alternatives but the relationship to commit/rollback is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transform_coordinatesTransform CoordinatesA
Read-only

Transform coordinates between CRS. Accepts a point {x, y}, a point list [{x, y}, ...], or a bbox {xmin, ymin, xmax, ymax}. Returns the same format.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNo
pointNo
pointsNo
source_crsYes
target_crsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so description need not reinforce safety. Description adds context on input formats and that output matches input format, but doesn't disclose potential errors (e.g., unsupported CRS) or that it doesn't modify any state.

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 sentences: first states action, second lists input/output formats. No fluff, front-loaded, every sentence earns its place. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (though not shown), description need not detail return values. It mentions 'Returns the same format', which is sufficient. Covers input formats and output guarantee. Could add CRS format expectations but not critical for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, so description carries full burden. It explains that point, points, and bbox accept specific structures ({x, y}, list, bbox format), which adds meaning beyond the schema's generic 'object' with additionalProperties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Transform' and the resource 'coordinates between CRS'. It lists acceptable input formats (point, point list, bbox) and output format. This distinguishes it from sibling CRS-related tools like get_layer_crs or set_layer_crs which operate on layer CRS settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description does not provide when to use this tool versus alternatives like set_layer_crs or set_project_crs. No explicit context on typical use cases or exclusions. Only states what it accepts, not guidance on selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undo_editsUndo EditsB

Undo the last edit operations on a layer (its own undo stack). Returns how many steps were actually undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNo
layer_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals that it returns the actual number of steps undone and that it operates on the layer's own undo stack. However, it does not disclose side effects, permission needs, or behavior when no edits are available, which would be valuable given the lack of annotations.

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 sentences, front-loaded with the action, no unnecessary words. Efficient and readable.

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?

For a simple undo tool, the description is adequate but lacks edge-case behavior (e.g., no edits to undo, invalid or negative steps, interaction with editing sessions). Since there is no output schema, mentioning the return count helps but more details would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate but does not explicitly explain the 'layer_id' or 'steps' parameters. The phrase 'last edit operations' and 'how many steps' imply the 'steps' parameter, but no direct mapping or details are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (undo), the resource (layer), and the scope (its own undo stack), distinguishing it from siblings like redo_edits or rollback_edits. The return value is also specified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It implies usage for undoing layer edits but does not mention when not to use it or how it differs from rollback_edits or redo_edits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_feature_geometryUpdate Feature GeometryA
Destructive

Replace feature geometries. updates: [{fid: 1, geometry_wkt: 'POINT(1 2)'}]. WKT must be in the layer's CRS. Inside an edit session the change is undoable; otherwise it is written straight to the data source.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYes
layer_idYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite the destructiveHint annotation, the description adds significant behavioral context: changes are undoable inside an edit session but written directly to the data source otherwise, and WKT must be in the layer's CRS. This goes well beyond the annotation and is critical for safe usage.

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?

The description is two concise, front-loaded sentences that pack essential information: purpose, example, CRS constraint, and undo behavior. Every sentence adds value with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description covers all necessary operational details: what it does, the update structure, CRS requirement, and transactional semantics. It is sufficiently complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, but the description compensates by giving a concrete example for the updates parameter ({fid: 1, geometry_wkt: 'POINT(1 2)'}) and stating the CRS requirement. Layer_id is self-explanatory, so overall parameter meaning is sufficiently conveyed, though slightly implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Replace feature geometries' and provides a concrete example of the update format, which distinguishes it from sibling tools like update_features (attributes). The verb and resource are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about behavior inside vs. outside an edit session, informing when it is safe to use and when changes are undoable. However, it does not explicitly name alternatives or mention when not to use this tool, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_featuresUpdate FeaturesA
Destructive

Update feature attributes. updates: [{fid: 1, attributes: {field: value}}]. Returns count of updated features.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYes
layer_idYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The destructiveHint annotation is present, indicating modification. The description adds the return count but does not disclose error handling, validation, or consequences of invalid fids. With annotations carrying the destructive hint, a score of 3 is appropriate.

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?

The description is two sentences, efficiently front-loaded with the purpose and an example. No redundant information.

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?

The description covers the basic operation and return value but lacks information on error handling, prerequisites, or behavior when features are missing. Given no output schema, additional context would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by providing an example structure for the `updates` parameter, clarifying the format beyond the schema's minimal definition. However, `layer_id` remains only named.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Update feature attributes.' It provides a concrete example of the update structure, distinguishing it from siblings like add_features or delete_features.

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?

The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., add_features, delete_features). It implicitly indicates use for modifying existing features but lacks context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_expressionValidate ExpressionA
Read-only

Validate a QGIS expression. Returns whether it's valid, any parse errors, and referenced column names. Optionally test against a layer's fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idNo
expressionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description adds value by detailing what the tool returns (validity, errors, column names) and the optional layer context, without contradicting annotations.

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 concise sentences, front-loaded with the core purpose, and every word adds value. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (two parameters, no nested objects) and the presence of an output schema, the description sufficiently covers its functionality. Minor gap: no mention of output format, but output schema likely covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining that 'expression' is validated and 'layer_id' optionally tests against layer fields. This adds meaningful context beyond parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it validates a QGIS expression and returns specific outputs (validity, parse errors, referenced column names). It also mentions optional testing against a layer's fields, fully distinguishing its purpose from siblings like evaluate_expression.

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?

The description implies usage for validating expressions but does not explicitly state when to use it versus alternatives (e.g., evaluate_expression). No when-not or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zonal_statisticsZonal StatisticsB

Per-polygon stats from a raster (native:zonalstatisticsfb). stats int codes: 0=count 1=sum 2=mean 3=median 4=stdev 5=min 6=max 7=range 8=minority 9=majority 10=variety 11=variance (default [0,1,2]). New columns prefixed by 'prefix'. No output_path = in-memory layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNo
statsNo
prefixNo_
output_pathNo
raster_layerYes
polygon_layerYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses default stats, prefix behavior, and in-memory layer for no output_path. However, lacks details on modification behavior, CRS requirements, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise, no wasted words. Could be structured slightly better (e.g., separate lines for clarity), but effectively conveys key info in minimal space.

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?

Covers basic functionality and key parameters, but omits details like CRS requirements, side effects on input layers, and output layer creation behavior. Adequate but not comprehensive for a 6-parameter tool with no output schema.

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?

Explains stats codes, prefix, and output_path semantics. Does not explain 'band' parameter; polygon_layer and raster_layer are self-explanatory but lack additional context. Schema coverage is 0%, so description partially compensates.

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?

Description clearly states it computes per-polygon statistics from a raster and identifies the algorithm. However, it does not explicitly differentiate from similar tools like sample_raster_values or spatial_join in sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 sample_raster_values or field_calculator. No contextual hints for appropriate scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zoom_to_layerZoom to LayerA
Idempotent

Zoom the map canvas to the full extent of the specified layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
layer_idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotation declares idempotentHint=true, so the tool is safe to call repeatedly. Description does not add further behavioral details (e.g., what happens if layer is not found, if it changes state beyond canvas). Neutral impact given annotations.

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?

Single sentence, no wasted words. Front-loaded with action and target. Appropriate length for a straightforward tool.

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?

Tool is simple with one parameter and no output schema. Description covers the basic purpose but lacks detail on parameter format and error handling. Acceptable for minimum viability but not fully informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has no descriptions for layer_id (0% coverage). Description only says 'specified layer' without clarifying whether layer_id is a layer name, ID, or how to obtain it. Does not compensate for schema deficiency.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (zoom) and target (map canvas to full extent of specified layer). Distinguishes from sibling set_canvas_extent which zooms to arbitrary coordinates.

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?

Description implies usage context (when you want to zoom to layer's extent) but does not explicitly state when not to use it or provide comparison to alternatives like set_canvas_extent. No exclusion criteria or prerequisites mentioned.

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.

  1. 4 tool updatesv0.14.0
    • Changedcreate_postgresql_connection15 fields changed
      • addedInput schema / properties / auth_config_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / auth_config_id / default
        Added value: +null
      • removedInput schema / properties / auth_config_id / type
        Removed value: -"string"
      • addedInput schema / properties / connection_mode
        Added value: +{
        +  "enum": [
        +    "endpoint_using_auth_manager",
        +    "service_using_auth_manager",
        +    "service_only"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / database / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / database / default
        Added value: +null
      • removedInput schema / properties / database / type
        Removed value: -"string"
      • addedInput schema / properties / host / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / host / default
        Added value: +null
      • removedInput schema / properties / host / type
        Removed value: -"string"
      • addedInput schema / properties / port / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / port / default
        Added value: +null
      • removedInput schema / properties / port / type
        Removed value: -"integer"
      • addedInput schema / properties / service
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • changedInput schema / required
        Previous value: -[
        -  "name",
        -  "host",
        -  "port",
        -  "database",
        -  "auth_config_id"
        -]New value: +[
        +  "name",
        +  "connection_mode"
        +]
    • Changedexecute_code1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Changedexecute_processing1 field changed
      • addedInput schema / properties / load_results
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Changedexecute_processing_batch1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
  2. 3 tool updatesv0.11.0
    • Changedadd_web_layer3 fields changed
      • addedInput schema / properties / crs / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / crs / default
        Previous value: -"EPSG:3857"New value: +null
      • removedInput schema / properties / crs / type
        Removed value: -"string"
    • Addedcreate_postgresql_connection
    • Changedexecute_processing1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
  3. 14 tool updatesv0.9.3
    • Addedadd_layer_from_connection
    • Addedcommit_edits
    • Addedexecute_connection_sql
    • Addedget_edit_status
    • Addedimport_layer_to_connection
    • Addedlist_connection_tables
    • Addedlist_connections
    • Addedlist_qgis_instances
    • Addedredo_edits
    • Addedrollback_edits
    • Addedset_raster_style
    • Addedstart_editing
    • Addedundo_edits
    • Addedupdate_feature_geometry
  4. 1 tool updatev0.8.1
    • Changedbatch_commands1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "title": "Result",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "batch_commandsOutput",
        +  "type": "object"
        +}
  5. 1 tool updatev0.6.1
    • Addedget_3d_screenshot
  6. 102 tool updatesv0.5.0
    • Addedadd_bookmark
    • Changedadd_features3 fields changed
      • removedInput schema / properties / features / title
        Removed value: -"Features"
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"add_featuresArguments"
    • Addedadd_field
    • Addedadd_layout_label
    • Addedadd_layout_legend
    • Addedadd_layout_map
    • Addedadd_layout_picture
    • Addedadd_layout_scalebar
    • Addedadd_layout_table
    • Addedadd_map_theme
    • Changedadd_raster_layer4 fields changed
      • removedInput schema / properties / name / title
        Removed value: -"Name"
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / properties / provider / title
        Removed value: -"Provider"
      • removedInput schema / title
        Removed value: -"add_raster_layerArguments"
    • Addedadd_table_join
    • Changedadd_vector_layer4 fields changed
      • removedInput schema / properties / name / title
        Removed value: -"Name"
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / properties / provider / title
        Removed value: -"Provider"
      • removedInput schema / title
        Removed value: -"add_vector_layerArguments"
    • Addedadd_web_layer
    • Addedapply_map_theme
    • Addedapply_style_qml
    • Addedbatch_commands
    • Changedclear_selection2 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"clear_selectionArguments"
    • Addedconfigure_atlas
    • Addedcreate_layer_group
    • Addedcreate_layout
    • Changedcreate_memory_layer5 fields changed
      • removedInput schema / properties / crs / title
        Removed value: -"Crs"
      • removedInput schema / properties / fields / title
        Removed value: -"Fields"
      • removedInput schema / properties / geometry_type / title
        Removed value: -"Geometry Type"
      • removedInput schema / properties / name / title
        Removed value: -"Name"
      • removedInput schema / title
        Removed value: -"create_memory_layerArguments"
    • Changedcreate_new_project2 fields changed
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / title
        Removed value: -"create_new_projectArguments"
    • Addedcreate_processing_model
    • Changeddelete_features4 fields changed
      • removedInput schema / properties / expression / title
        Removed value: -"Expression"
      • removedInput schema / properties / fids / title
        Removed value: -"Fids"
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"delete_featuresArguments"
    • Addeddelete_field
    • Changeddiagnose1 field changed
      • removedInput schema / title
        Removed value: -"diagnoseArguments"
    • Addedduplicate_layer
    • Addedevaluate_expression
    • Changedexecute_code2 fields changed
      • removedInput schema / properties / code / title
        Removed value: -"Code"
      • removedInput schema / title
        Removed value: -"execute_codeArguments"
    • Changedexecute_processing3 fields changed
      • removedInput schema / properties / algorithm / title
        Removed value: -"Algorithm"
      • removedInput schema / properties / parameters / title
        Removed value: -"Parameters"
      • removedInput schema / title
        Removed value: -"execute_processingArguments"
    • Addedexecute_processing_batch
    • Addedexecute_sql
    • Addedexport_atlas
    • Addedexport_layer
    • Addedexport_layout
    • Addedfield_calculator
    • Changedfind_layer2 fields changed
      • removedInput schema / properties / name_pattern / title
        Removed value: -"Name Pattern"
      • removedInput schema / title
        Removed value: -"find_layerArguments"
    • Changedget_active_layer1 field changed
      • removedInput schema / title
        Removed value: -"get_active_layerArguments"
    • Changedget_algorithm_help2 fields changed
      • removedInput schema / properties / algorithm_id / title
        Removed value: -"Algorithm Id"
      • removedInput schema / title
        Removed value: -"get_algorithm_helpArguments"
    • Addedget_bookmarks
    • Changedget_canvas_extent1 field changed
      • removedInput schema / title
        Removed value: -"get_canvas_extentArguments"
    • Changedget_canvas_scale1 field changed
      • removedInput schema / title
        Removed value: -"get_canvas_scaleArguments"
    • Changedget_canvas_screenshot1 field changed
      • removedInput schema / title
        Removed value: -"get_canvas_screenshotArguments"
    • Changedget_field_statistics3 fields changed
      • removedInput schema / properties / field_name / title
        Removed value: -"Field Name"
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"get_field_statisticsArguments"
    • Changedget_layer_crs2 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"get_layer_crsArguments"
    • Addedget_layer_extent
    • Changedget_layer_features6 fields changed
      • removedInput schema / properties / expression / title
        Removed value: -"Expression"
      • removedInput schema / properties / include_geometry / title
        Removed value: -"Include Geometry"
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedInput schema / properties / offset / title
        Removed value: -"Offset"
      • removedInput schema / title
        Removed value: -"get_layer_featuresArguments"
    • Changedget_layer_labeling2 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"get_layer_labelingArguments"
    • Addedget_layer_tree
    • Changedget_layers3 fields changed
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedInput schema / properties / offset / title
        Removed value: -"Offset"
      • removedInput schema / title
        Removed value: -"get_layersArguments"
    • Addedget_layout_info
    • Addedget_map_themes
    • Addedget_message_log
    • Addedget_plugin_info
    • Addedget_processing_providers
    • Changedget_project_info1 field changed
      • removedInput schema / title
        Removed value: -"get_project_infoArguments"
    • Addedget_project_variables
    • Changedget_qgis_info1 field changed
      • removedInput schema / title
        Removed value: -"get_qgis_infoArguments"
    • Changedget_raster_info2 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"get_raster_infoArguments"
    • Changedget_selection2 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"get_selectionArguments"
    • Addedget_setting
    • Addedget_unique_values
    • Addedidentify_features
    • Addedlist_layouts
    • Addedlist_plugins
    • Changedlist_processing_algorithms3 fields changed
      • removedInput schema / properties / provider / title
        Removed value: -"Provider"
      • removedInput schema / properties / search / title
        Removed value: -"Search"
      • removedInput schema / title
        Removed value: -"list_processing_algorithmsArguments"
    • Addedlist_processing_models
    • Changedload_project2 fields changed
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / title
        Removed value: -"load_projectArguments"
    • Addedmove_layer_to_group
    • Changedping1 field changed
      • removedInput schema / title
        Removed value: -"pingArguments"
    • Addedraster_calculator
    • Addedreload_plugin
    • Addedremove_bookmark
    • Changedremove_layer2 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"remove_layerArguments"
    • Addedremove_layout
    • Addedremove_map_theme
    • Addedrename_field
    • Changedrender_map4 fields changed
      • removedInput schema / properties / height / title
        Removed value: -"Height"
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / properties / width / title
        Removed value: -"Width"
      • removedInput schema / title
        Removed value: -"render_mapArguments"
    • Addedrun_model
    • Addedsample_raster_values
    • Changedsave_project2 fields changed
      • removedInput schema / properties / path / title
        Removed value: -"Path"
      • removedInput schema / title
        Removed value: -"save_projectArguments"
    • Addedsave_style_qml
    • Changedselect_features4 fields changed
      • removedInput schema / properties / expression / title
        Removed value: -"Expression"
      • removedInput schema / properties / fids / title
        Removed value: -"Fids"
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"select_featuresArguments"
    • Changedset_active_layer2 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"set_active_layerArguments"
    • Changedset_canvas_extent6 fields changed
      • removedInput schema / properties / crs / title
        Removed value: -"Crs"
      • removedInput schema / properties / xmax / title
        Removed value: -"Xmax"
      • removedInput schema / properties / xmin / title
        Removed value: -"Xmin"
      • removedInput schema / properties / ymax / title
        Removed value: -"Ymax"
      • removedInput schema / properties / ymin / title
        Removed value: -"Ymin"
      • removedInput schema / title
        Removed value: -"set_canvas_extentArguments"
    • Changedset_canvas_scale3 fields changed
      • removedInput schema / properties / rotation / title
        Removed value: -"Rotation"
      • removedInput schema / properties / scale / title
        Removed value: -"Scale"
      • removedInput schema / title
        Removed value: -"set_canvas_scaleArguments"
    • Changedset_layer_crs3 fields changed
      • removedInput schema / properties / crs / title
        Removed value: -"Crs"
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"set_layer_crsArguments"
    • Changedset_layer_labeling6 fields changed
      • removedInput schema / properties / color / title
        Removed value: -"Color"
      • removedInput schema / properties / enabled / title
        Removed value: -"Enabled"
      • removedInput schema / properties / field_name / title
        Removed value: -"Field Name"
      • removedInput schema / properties / font_size / title
        Removed value: -"Font Size"
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"set_layer_labelingArguments"
    • Addedset_layer_order
    • Addedset_layer_property
    • Changedset_layer_style6 fields changed
      • removedInput schema / properties / classes / title
        Removed value: -"Classes"
      • removedInput schema / properties / color_ramp / title
        Removed value: -"Color Ramp"
      • removedInput schema / properties / field / title
        Removed value: -"Field"
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / properties / style_type / title
        Removed value: -"Style Type"
      • removedInput schema / title
        Removed value: -"set_layer_styleArguments"
    • Changedset_layer_visibility3 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / properties / visible / title
        Removed value: -"Visible"
      • removedInput schema / title
        Removed value: -"set_layer_visibilityArguments"
    • Addedset_project_crs
    • Addedset_project_variable
    • Addedset_setting
    • Addedspatial_join
    • Addedtransform_coordinates
    • Changedupdate_features3 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / properties / updates / title
        Removed value: -"Updates"
      • removedInput schema / title
        Removed value: -"update_featuresArguments"
    • Addedvalidate_expression
    • Addedzonal_statistics
    • Changedzoom_to_layer2 fields changed
      • removedInput schema / properties / layer_id / title
        Removed value: -"Layer Id"
      • removedInput schema / title
        Removed value: -"zoom_to_layerArguments"
  7. 35 tool updates
    • Removedadd_bookmark
    • Removedadd_field
    • Removedadd_layout_map
    • Removedadd_map_theme
    • Removedadd_table_join
    • Removedadd_web_layer
    • Removedapply_map_theme
    • Removedapply_style_qml
    • Removedbatch_commands
    • Removedcreate_layer_group
    • Removedcreate_layout
    • Removeddelete_field
    • Removedexport_layout
    • Removedget_bookmarks
    • Removedget_layer_extent
    • Removedget_layer_tree
    • Removedget_map_themes
    • Removedget_message_log
    • Removedget_plugin_info
    • Removedget_project_variables
    • Removedget_setting
    • Removedlist_layouts
    • Removedlist_plugins
    • Removedmove_layer_to_group
    • Removedreload_plugin
    • Removedremove_bookmark
    • Removedremove_map_theme
    • Removedrename_field
    • Removedsave_style_qml
    • Removedset_layer_property
    • Removedset_project_crs
    • Removedset_project_variable
    • Removedset_setting
    • Removedtransform_coordinates
    • Removedvalidate_expression
  8. 76 tool updatesv0.3.0
    • First observedadd_bookmark
    • First observedadd_features
    • First observedadd_field
    • First observedadd_layout_map
    • First observedadd_map_theme
    • First observedadd_raster_layer
    • First observedadd_table_join
    • First observedadd_vector_layer
    • First observedadd_web_layer
    • First observedapply_map_theme
    • First observedapply_style_qml
    • First observedbatch_commands
    • First observedclear_selection
    • First observedcreate_layer_group
    • First observedcreate_layout
    • First observedcreate_memory_layer
    • First observedcreate_new_project
    • First observeddelete_features
    • First observeddelete_field
    • First observeddiagnose
    • First observedexecute_code
    • First observedexecute_processing
    • First observedexport_layout
    • First observedfind_layer
    • First observedget_active_layer
    • First observedget_algorithm_help
    • First observedget_bookmarks
    • First observedget_canvas_extent
    • First observedget_canvas_scale
    • First observedget_canvas_screenshot
    • First observedget_field_statistics
    • First observedget_layer_crs
    • First observedget_layer_extent
    • First observedget_layer_features
    • First observedget_layer_labeling
    • First observedget_layer_tree
    • First observedget_layers
    • First observedget_map_themes
    • First observedget_message_log
    • First observedget_plugin_info
    • First observedget_project_info
    • First observedget_project_variables
    • First observedget_qgis_info
    • First observedget_raster_info
    • First observedget_selection
    • First observedget_setting
    • First observedlist_layouts
    • First observedlist_plugins
    • First observedlist_processing_algorithms
    • First observedload_project
    • First observedmove_layer_to_group
    • First observedping
    • First observedreload_plugin
    • First observedremove_bookmark
    • First observedremove_layer
    • First observedremove_map_theme
    • First observedrename_field
    • First observedrender_map
    • First observedsave_project
    • First observedsave_style_qml
    • First observedselect_features
    • First observedset_active_layer
    • First observedset_canvas_extent
    • First observedset_canvas_scale
    • First observedset_layer_crs
    • First observedset_layer_labeling
    • First observedset_layer_property
    • First observedset_layer_style
    • First observedset_layer_visibility
    • First observedset_project_crs
    • First observedset_project_variable
    • First observedset_setting
    • First observedtransform_coordinates
    • First observedupdate_features
    • First observedvalidate_expression
    • First observedzoom_to_layer

TDQS

C2.9/5.0

Scored across 118 tools

Disambiguation4/5

Tools are mostly distinct with explicit descriptions that differentiate similar operations (e.g., execute_sql vs execute_connection_sql, get_canvas_screenshot vs render_map). However, with 118 tools there are a few potential overlaps like add_field vs field_calculator and multiple layer-addition tools, though descriptions mitigate most confusion.

Naming Consistency4/5

All tool names use snake_case consistently, and the vast majority follow a verb_noun pattern (get_layer_features, set_layer_style). A few exceptions like ping, diagnose, field_calculator, and batch_commands deviate from the verb_noun convention but remain readable and consistent in style.

Tool Count1/5

118 tools is far beyond the recommended 3-15 range and exceeds the 50+ threshold for extreme mismatch. While QGIS is a broad domain, this count is likely to overwhelm agents and dilute tool selection efficiency.

Completeness5/5

The toolset covers an enormous breadth of QGIS operations: project/layer/feature CRUD, raster processing, layouts, connections, processing models, expressions, canvas control, and even multi-instance support. Escape hatches like execute_code and execute_processing further reduce dead ends. Only minor gaps exist (e.g., no direct layout item removal), which are workable via code execution.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that connects Claude AI to QGIS, enabling direct interaction with the GIS software for project creation, layer manipulation, code execution, and processing algorithms through natural language prompts.
    15
    10
    Creative Commons Zero v1.0 Universal
  • A
    license
    Not graded
    quality
    C
    maintenance
    A geospatial MCP server that provides tools for geocoding, routing, elevation profiles, and spatial analysis. It enables AI agents to process GIS file formats like GeoJSON and Shapefiles while performing complex coordinate transformations and distance calculations.
    4
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A comprehensive MCP server providing 30 tools for geocoding, routing, and OpenStreetMap data analysis. It enables AI assistants to search for locations, calculate travel routes, and perform quality assurance checks on map data.
    30
    98 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Deploy QGIS in Docker as an MCP server, enabling AI assistants to perform spatial analysis, data loading, cartography, and multi-format export without local installation.
    10
    MIT