Skip to main content
Glama
skywinder

OSM Edit MCP Server

by skywinder

OSM Edit MCP 服务器

CI PyPI version Python License: MIT Code style: black

一个强大的 模型上下文协议(MCP) 服务器,使 AI 助手能够与 OpenStreetMap 数据交互。安全地读取、搜索、验证和编辑地图数据,并内置保护机制。

🌟 你能做什么?

  • 🔍 搜索地点:查找餐厅、咖啡馆、医院、学校等

  • 📍 验证位置:检查坐标并获取详细的位置信息

  • 🗺️ 探索区域:发现任何地理区域内的内容

  • ✏️ 安全编辑:先在开发服务器上进行地图编辑

  • 🤖 自然语言:用简单的英语描述你想要的内容

Related MCP server: Magic Lane MCP Server

📦 前提条件

  • Python 3.10+

  • (可选)uv 用于快速依赖管理

    # Install uv (optional but recommended)
    curl -LsSf https://astral.sh/uv/install.sh | sh

🚀 快速开始(5 分钟)

1️⃣ 安装

git clone https://github.com/skywinder/osm-edit-mcp
cd osm-edit-mcp
uv sync --dev  # Installs both base and development dependencies

2️⃣ 配置

cp .env.example .env
# Defaults target the development sandbox (OSM_USE_DEV_API=true), which is safe
# to experiment with. See "Switching to the Production API" below before pointing
# this at the real map.

3️⃣ 测试

uv run python status_check.py

4️⃣ 连接到 MCP 客户端

重要:MCP 服务器通过 stdin/stdout 与 MCP 客户端通信。不要直接运行 main.py

而是在你的 MCP 客户端中配置服务器:

  • Cursor IDE:设置 → 功能 → MCP

  • Claude Desktop:参见 MCP 客户端设置

  • VSCode (Cline):添加到 settings.json

要在没有客户端的情况下测试功能:

uv run python test_comprehensive.py

🔐 启用写操作(可选)

要创建或编辑地图数据,你需要 OAuth 认证:

第 1 步:创建开发账户

访问 https://api06.dev.openstreetmap.org 并注册(与主 OSM 分开)。

第 2 步:创建 OAuth 应用

  1. 前往你的开发账户设置 → OAuth 2 应用程序

  2. 注册新应用程序:

    • 名称OSM Edit MCP Dev

    • 重定向 URIhttps://localhost:8080/callback

    • 权限:选择所有复选框

第 3 步:添加凭据

编辑 .env 并添加你的 OAuth 凭据:

OSM_DEV_CLIENT_ID=your_client_id_here
OSM_DEV_CLIENT_SECRET=your_client_secret_here

第 4 步:认证

uv run python oauth_auth.py

第 5 步:验证

uv run python test_comprehensive.py

此套件执行真实的写入——它会打开变更集并创建节点。它被固定到开发 API,如果配置解析为生产环境,它将拒绝启动,因此即使你的 .env 指向生产环境,运行它也是安全的。

对于单元测试(无网络,无写入):

uv run pytest

🌍 切换到生产 API

默认情况下,.env.example 指向开发沙箱。指向真实的 OpenStreetMap 数据库是一个刻意的、单独的步骤——你进行的每次编辑都会成为地图上公开的、永久的更改,其他人必须审查或回滚。

第 1 步:注册生产 OAuth 应用

登录 https://www.openstreetmap.org我的设置 → OAuth 2 应用程序 → 注册新应用程序

  • 重定向 URIhttps://localhost:8080/callback

  • 权限:至少 read_prefswrite_apiwrite_changesets

这是一个不同于你的开发沙箱应用的应用程序;凭据不会在两个服务器之间共享。

第 2 步:配置

.env 中:

OSM_USE_DEV_API=false                      # switches every tool to the live API
OSM_PROD_CLIENT_ID=your_prod_client_id
OSM_PROD_CLIENT_SECRET=your_prod_client_secret
OSM_PROD_REDIRECT_URI=https://localhost:8080/callback

保持 OSM_CLIENT_ID / OSM_CLIENT_SECRET 未设置——这些旧变量在存在时会覆盖开发/生产切换。

第 3 步:针对生产环境进行认证

uv run python oauth_auth.py

这会写入 .osm_token_prod.json(开发令牌位于 .osm_token_dev.json;服务器会选择与 OSM_USE_DEV_API 匹配的文件,因此两者永远不会混合)。

第 4 步:确认目标

uv run python status_check.py

启动时,服务器会记录一条 PRODUCTION MODE 警告,指明实时 API。如果你没有看到它,说明你仍在沙箱中。

注意: test_comprehensive.py 始终针对开发 API 运行,无论这些设置如何,这是设计使然——验证绝不能将测试数据写入实时地图。

📖 可用工具

🔍 搜索与发现

工具

描述

示例

find_nearby_amenities

查找某个位置周围的地点

"查找 500 米内的餐厅"

get_place_info

按名称搜索地点

"中央公园在哪里?"

search_osm_elements

对任何元素进行文本搜索

"搜索咖啡店"

smart_geocode

将地址转换为坐标

"伦敦唐宁街 10 号"

📍 位置工具

工具

描述

示例

validate_coordinates

检查坐标是否有效

51.5074, -0.1278

get_osm_elements_in_area

获取一个框内的所有元素

"这个区域里有什么?"

get_osm_statistics

区域统计

"有多少家餐厅?"

🗺️ OSM 数据访问

工具

描述

示例

get_osm_node

按 ID 获取节点

节点详情

get_osm_way

按 ID 获取路径

街道/建筑信息

get_osm_relation

按 ID 获取关系

复杂要素

✏️ 编辑工具(需要认证)

工具

描述

示例

create_changeset

开始编辑会话

编辑必需

close_changeset

结束编辑会话

发布编辑

create_osm_node

添加新点

"在这里添加餐厅"

update_osm_node

移动或重新标记一个点

"更改其营业时间"

create_place_from_description

自然语言创建

"添加一家名为 Bean There 的咖啡店,位于..."

不可用: 创建或更新路径和关系,以及删除任何内容。这些代码路径存在于 write_tools.py 中,但只构建请求预览而不发送,因此它们故意不注册为 MCP 工具——能够调用它们的代理会在编辑中途失败。要编辑路径、关系或删除元素,请使用 JOSMiD

💡 使用示例

查找附近的餐厅

# Find Italian restaurants near the Colosseum
result = await find_nearby_amenities(
    lat=41.8902, lon=12.4922,
    radius_meters=500,
    amenity_type="restaurant"
)

验证坐标

# Check if coordinates are valid and get location info
result = await validate_coordinates(51.5074, -0.1278)
# Returns: "London, England, United Kingdom"

自然语言搜索

# Parse natural language requests
result = await parse_natural_language_osm_request(
    "Find coffee shops near the Eiffel Tower"
)

🖥️ MCP 客户端集成

流行客户端的快速设置

// With uv (Recommended)
{
  "mcpServers": {
    "osm-edit": {
      "command": "uv",
      "args": ["run", "python", "main.py"],
      "cwd": "/path/to/osm-edit-mcp",
      "env": {
        "OSM_USE_DEV_API": "true",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

// Alternative: Using wrapper script (if uv has path issues)
{
  "mcpServers": {
    "osm-edit": {
      "command": "/path/to/osm-edit-mcp/run_mcp.sh",
      "args": [],
      "env": {
        "OSM_USE_DEV_API": "true",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

添加到 Cursor 设置 → 功能 → MCP

你也可以使用提供的包装脚本 run_mcp.sh 直接在 ~/.cursor/mcp.json 中配置开发和生产条目。

{
  "mcpServers": {
    "osm-edit-dev": {
      "command": "/Users/pk/repo/_mine/osm-edit-mcp/run_mcp.sh",
      "args": [],
      "env": {
        "OSM_USE_DEV_API": "true",
        "LOG_LEVEL": "INFO",
        "DEVELOPMENT_MODE": "true"
      },
      "enabled": false,
      "_comment": "OSM Edit MCP Server - Development (safe testing with api06.dev.openstreetmap.org)"
    },
    "osm-edit-prod": {
      "command": "/Users/pk/repo/_mine/osm-edit-mcp/run_mcp.sh",
      "args": [],
      "env": {
        "OSM_USE_DEV_API": "false",
        "LOG_LEVEL": "INFO",
        "DEVELOPMENT_MODE": "false"
      },
      "enabled": false,
      "_comment": "OSM Edit MCP Server - Production (uses api.openstreetmap.org). Use with extreme caution; write operations require OAuth and explicit confirmation."
    }
  }
}

提示:根据需要将绝对路径替换为你的本地路径。在完全配置并理解风险之前,保持生产条目禁用。

// With uv (Recommended)
{
  "mcpServers": {
    "osm-edit": {
      "command": "uv",
      "args": ["run", "python", "main.py"],
      "cwd": "/path/to/osm-edit-mcp",
      "env": {
        "OSM_USE_DEV_API": "true",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

// Alternative: Using wrapper script (if uv has path issues)
{
  "mcpServers": {
    "osm-edit": {
      "command": "/path/to/osm-edit-mcp/run_mcp.sh",
      "args": [],
      "env": {
        "OSM_USE_DEV_API": "true",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(Mac)

{
  "mcpServers": [
    {
      "name": "osm-edit",
      "command": "uv",
      "args": ["run", "python", "main.py"],
      "cwd": "/path/to/osm-edit-mcp"
    }
  ]
}

添加到 ~/.continue/config.json

{
  "cline.mcpServers": {
    "osm-edit": {
      "command": "uv",
      "args": ["run", "python", "main.py"],
      "cwd": "./osm-edit-mcp"
    }
  }
}

添加到 VSCode 设置或 .vscode/settings.json

📖 完整的 MCP 客户端设置指南 - 所有客户端的详细说明

示例查询

  • "查找时代广场附近的餐厅"

  • "坐标 48.8584, 2.2945 处有什么?"

  • "搜索西雅图的医院"

🛡️ 安全功能

服务器目前实际强制执行的内容:

  • 写入需要 OAuth — 变更集、节点创建和节点更新操作在没有有效令牌时拒绝运行。

  • 变更集管理 — 编辑被分组到你打开和关闭的变更集中。

  • 坐标验证 — 在任何写入之前检查纬度/经度边界。

  • XML 转义 — 标签键和值被转义,因此包含引号或与号的名称不能破坏或注入变更集。

  • 测试套件固定到沙箱test_comprehensive.py 会中止而不是写入实时地图。

  • 启动时生产警告 — 服务器在配置为针对实时 API 时记录一条响亮的警告。

尚未实现 — require_user_confirmationrate_limit_per_minutemax_changeset_size 和缓存设置被接受为配置,但没有代码路径对其执行操作。不要依赖它们作为防护措施。

📊 项目状态

  • 版本:0.1.0(alpha)

  • Python:3.10+

  • 许可证:MIT

  • 读取/搜索工具:针对实时 API 工作

  • 写入工具create_changesetclose_changesetcreate_osm_nodeupdate_osm_node

  • 未实现:路径和关系的创建/更新,以及所有删除操作。这些未注册为 MCP 工具——参见 可用工具

🌐 远程部署(使其可从任何地方访问)

OSM Edit MCP 服务器可以部署为可从任何地方访问的 Web 服务。这对于以下情况很有用:

  • 团队协作

  • 与 Web 应用程序集成

  • 在云服务器上运行

  • 从多个设备访问

🚀 使用 Docker 快速部署

1. 前提条件

  • 已安装 Docker 和 docker-compose

  • 具有公共 IP 或域名的服务器

  • SSL 证书(或使用自签名证书进行测试)

2. 部署步骤

# Clone the repository
git clone https://github.com/skywinder/osm-edit-mcp
cd osm-edit-mcp

# Configure environment
cp .env.example .env
# Edit .env with your OAuth credentials and API_KEY

# Deploy with Docker
chmod +x deploy.sh
./deploy.sh

部署脚本将:

  • 构建 Docker 容器

  • 生成 SSL 证书(开发用自签名)

  • 在端口 8000 上启动 Web 服务器

  • 在端口 443 上设置 Nginx 反向代理

3. 访问你的服务器

部署后,在以下地址访问你的服务器:

  • https://your-server-ip/(使用 Nginx SSL)

  • http://your-server-ip:8000/(直接访问)

  • API 文档:http://your-server-ip:8000/docs

📡 API 使用

所有 MCP 功能都通过 REST API 端点公开。使用你的 API 密钥进行认证:

# Example: Find nearby amenities
curl -X POST https://your-server-ip/api/nearby-amenities \
  -H "Authorization: Bearer your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "lat": 51.5074,
    "lon": -0.1278,
    "radius_meters": 500,
    "amenity_type": "restaurant"
  }'

🔐 安全配置

  1. API 密钥:在 .env 文件中设置强 API_KEY

  2. SSL 证书:将自签名证书替换为生产环境的真实证书

  3. 防火墙:仅暴露必要的端口(80、443)

  4. 速率限制:通过 .env 中的 RATE_LIMIT_PER_MINUTE 配置

☁️ 云平台部署

# Launch EC2 instance (Ubuntu 22.04 recommended)
# Install Docker
sudo apt update
sudo apt install docker.io docker-compose

# Clone and deploy
git clone https://github.com/skywinder/osm-edit-mcp
cd osm-edit-mcp
sudo ./deploy.sh
# Create a Droplet with Docker pre-installed
# SSH into your droplet
ssh root@your-droplet-ip

# Clone and deploy
git clone https://github.com/skywinder/osm-edit-mcp
cd osm-edit-mcp
./deploy.sh
# Build and push to Container Registry
gcloud builds submit --tag gcr.io/PROJECT-ID/osm-edit-mcp

# Deploy to Cloud Run
gcloud run deploy osm-edit-mcp \
  --image gcr.io/PROJECT-ID/osm-edit-mcp \
  --platform managed \
  --allow-unauthenticated \
  --set-env-vars API_KEY=your-api-key

🔧 高级配置

自定义域名和 SSL

# Update nginx.conf with your domain
server_name yourdomain.com;

# Use Let's Encrypt for free SSL
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

环境变量

所有配置都通过环境变量完成。关键设置:

  • OSM_USE_DEV_API:使用开发(true)或生产(false)API

  • API_KEY:API 访问的认证密钥

  • RATE_LIMIT_PER_MINUTE:API 速率限制

  • LOG_LEVEL:日志详细程度

监控

# View logs
docker-compose logs -f

# Check health
curl https://your-server/health

# Monitor resources
docker stats

📊 生产环境检查清单

  • 使用生产 OSM API(OSM_USE_DEV_API=false

  • 设置强 API_KEY

  • 安装真实的 SSL 证书

  • 配置防火墙规则

  • 设置监控/警报

  • 启用自动备份

  • 配置日志轮转

  • 在 docker-compose.yml 中设置资源限制

🧪 测试

# Quick test
python quick_test.py

# Full test suite
python test_comprehensive.py

# Check your edits
# Visit: https://api06.dev.openstreetmap.org/user/YOUR_USERNAME/history

🚨 故障排除

问题

解决方案

运行 main.py 时"服务器挂起"

这是正常现象!MCP 服务器会等待客户端输入。请改用 uv run python test_comprehensive.py

"401 未授权"

运行 uv run python oauth_auth.py

"客户端认证失败"

检查 .env 中的 OAuth 凭据

导入错误

运行 uv sync --dev

看不到变更集

检查开发服务器 URL(不是主 OSM)

uv:找不到命令

安装 uv:curl -LsSf https://astral.sh/uv/install.sh | sh

如何使用服务器?

在 MCP 客户端中配置,或运行 uv run python explain_mcp_server.py

📚 文档

🤝 贡献

我们欢迎贡献!请参阅 CONTRIBUTING.md 了解指南。

🔗 链接


准备好探索世界地图数据了吗?从上面的快速入门开始吧!🌍

Available Tools

28 tools
analyze_gpx_trackB
Read-onlyIdempotent

Inspect a GPX file and list its independently selectable track segments.

ParametersJSON Schema
NameRequiredDescriptionDefault
gpx_xmlNo
gpx_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, and the description's 'Inspect/list' wording is consistent with those. It adds the detail that segments are 'independently selectable', giving useful context about the output's role, but it discloses no additional behavioral constraints beyond what annotations already cover.

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, front-loaded with the verb, and no filler. Every word contributes to the purpose, making it easy to scan and remember.

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 two optional parameters and no input guidance, an agent cannot reliably know how to pass the GPX data. The output schema may describe return values, but the description lacks the minimal usage context needed to invoke the tool 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 coverage is 0% and the description does not explain the gpx_xml and gpx_path parameters or how to choose between them. The parameter names are somewhat self-explanatory, but the description adds no meaning beyond the schema field 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 specifies the verb 'Inspect' and the resource 'GPX file', with a precise outcome: list independently selectable track segments. This clearly differentiates it from sibling track selection/editing tools like create_track_selection or apply_track_road_edit, which operate on selections rather than analyze files.

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 create_track_selection or other track-related siblings. The description only states what it does, leaving the agent to infer its role in the workflow.

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

apply_osm_editB
DestructiveIdempotent

Apply a reviewed proposal after a separate client-host confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYes
changeset_idNo
proposal_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate that this is destructive and not read-only, and the description adds a useful workflow safeguard ('reviewed proposal', 'client-host confirmation'). However, it does not disclose what gets modified or destroyed, what happens on application, or any safety considerations beyond what the annotations imply. The description is consistent with annotations, so no 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?

The description is a single, front-loaded sentence with no filler or repetition. It states the core action first and then the key precondition, which is an efficient structure for an agent to parse quickly.

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 destructive mutation tool with two required parameters and no parameter-level documentation, this description is too sparse. It omits how the proposal_digest should be used, what the changeset_id does, and what outcome the agent should expect after applying. The output schema and annotations help, but they do not fill the gap left by the absent parameter semantics.

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 provides no explanation of proposal_id, proposal_digest, or changeset_id, nor how they relate to the review/confirmation workflow. The description does not compensate for the missing schema parameter documentation at all, leaving an agent to guess the meaning and provenance of required arguments.

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 uses a specific verb ('Apply') and a clear resource ('a reviewed proposal'), so an agent can tell this is the mutation step in an OSM editing workflow. It does not explicitly differentiate from sibling tools like verify_osm_edit or apply_track_road_edit, but 'proposal' narrows the scope enough to avoid major ambiguity.

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 phrase 'after a separate client-host confirmation' establishes a clear prerequisite and workflow context: this tool should only be called once confirmation has happened. It does not mention alternatives or when not to use it, but the conditional context is explicit enough for most invocation decisions.

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

apply_track_road_editC
DestructiveIdempotent

Apply an exact dev-API digest after separate host confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYes
proposal_idYes
changeset_idNo
proposal_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already mark this as destructive and non-read-only, so the description does not need to restate that. It adds a small amount of context with 'exact' and 'after separate host confirmation,' but it does not disclose what will be modified, whether the change is reversible, or what happens on failure. For a destructive tool, this is insufficient behavioral transparency.

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 with no filler. It front-loads the action and adds a condition, making it efficient. However, the extreme brevity sacrifices useful detail, so it earns a 4 rather than 5.

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 that this is a destructive, write-oriented tool with four parameters (three required) and no parameter descriptions, a one-sentence cryptic description is not complete enough for an agent to invoke it safely. The output schema may cover return values, but the surrounding workflow, parameter semantics, and destructive impact remain unexplained.

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 undocumented parameters. It weakly aligns with 'proposal_digest' and 'confirm,' but 'proposal_id' and the optional 'changeset_id' receive no explanation, and there is no guidance on how the parameters relate or why 'confirm' is required.

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

Purpose3/5

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

The description states a verb ('Apply') and a target ('an exact dev-API digest'), and the tool name adds 'track road edit' context. However, it is jargon-heavy and does not clearly explain what the tool actually does to a track road edit, nor does it distinguish itself from siblings like preview_track_road_edit or apply_osm_edit.

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 phrase 'after separate host confirmation' provides a weak usage condition, implying the tool should be run only after an external confirmation step. But there is no explicit guidance about when to use this tool versus alternatives, no prerequisites, and no warning about 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.

check_authenticationA
Read-onlyIdempotent

Check authentication status and get current user information.

Returns: Dictionary containing authentication status and user info

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false, which fully cover the safety profile. The description adds that the result is a dictionary containing authentication status and user information, which is consistent with annotations and mildly useful, but not substantially beyond them.

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 short, front-loaded, and contains no filler. The return-type note is brief and does not burden the agent with unneeded 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?

For a no-argument status-checking tool with an output schema, this description is complete. It identifies the tool's purpose and result type, and there are no parameters or hidden prerequisites that an agent would need to know before invoking it.

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 zero parameters and schema description coverage is 100%, so there is no parameter ambiguity. The 0-parameter case warrants a baseline of 4, and no description compensation 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 states a clear, specific action: 'Check authentication status and get current user information.' This is a distinct purpose and is not confused with any sibling OSM data or editing tool.

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 makes the tool's context obvious: it is for retrieving authentication state and user identity. It does not explicitly mention ahead of edit operations, but no alternative tool competes for this purpose, so the usage context is clear despite lacking exclusions.

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

create_track_selectionC
Read-onlyIdempotent

Select one continuous subsection of an analyzed GPX without copying it.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_latNo
end_lonNo
end_timeNo
track_idYes
start_latNo
start_lonNo
segment_idYes
start_timeNo
end_point_indexNo
start_point_indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral nuance that the selection does not copy the GPX data and that it is a continuous subsection, which is useful context beyond the annotations. No contradiction exists.

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 concise sentence with no filler and the core action is front-loaded. However, for a tool with 10 parameters and no schema documentation, the brevity leaves important context unaddressed, so it is not a perfect structure for this 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?

The description is not complete enough for correct invocation. It does not explain how to specify the continuous subsection (e.g., by coordinate pair, time range, or point indices), what relationship the selection has to later sibling tools, or what the output represents. While annotations and the output schema reduce some burden, the 10-parameter surface with 0% schema coverage demands 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?

Schema description coverage is 0%, so the description carries the full burden for explaining the 10 parameters. It provides no information about how start_lat/start_lon, start_time, start_point_index, and their end_ counterparts relate to one another, which parameters are required, or how the selection determines the subsection. Parameter names are somewhat self-explanatory, but that is not sufficient compensation.

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 states a clear verb and resource: 'Select one continuous subsection of an analyzed GPX.' The qualifier 'without copying it' adds useful distinction. However, it does not explicitly differentiate the tool from sibling tools like match_track_selection or analyze_gpx_track.

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 no explicit guidance on when to use this tool versus alternatives, and it does not mention prerequisites or follow-up steps. The phrase 'of an analyzed GPX' only weakly implies that analysis must happen first, which is not enough for confident tool selection.

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

export_osm_dataA
Read-onlyIdempotent

Export OSM data from a bounding box in various formats.

Args: bbox: Bounding box as "min_lon,min_lat,max_lon,max_lat" format: Export format (json, xml, geojson) include_metadata: Whether to include metadata like changeset info

Returns: Dictionary containing exported data

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxYes
formatNojson
include_metadataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already convey readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only the return shape and parameter-driven behavior; it does not disclose limits, auth needs, or other operational traits, so it provides moderate 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.

Conciseness4/5

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

The description is front-loaded with a clear one-line purpose, followed by a compact Args/Returns breakdown. The Returns line is slightly redundant since an output schema exists, but the overall structure is efficient and free of fluff.

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?

All three parameters are documented, the return type is indicated, and annotations cover safety and side effects. It lacks comparison with sibling tools and any guidance on large bbox exports, but for a straightforward export operation the description is nearly 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?

Schema description coverage is 0%, but the Args block fully compensates by explaining the exact bbox string format, listing allowed format values (json, xml, geojson), and clarifying include_metadata. This is essential semantic information the agent would otherwise lack.

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 ('Export') and resource ('OSM data from a bounding box'), and names the supported output formats. This makes the tool's purpose clear and semantically distinct from sibling getters, searches, and editing 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 given on when to use this tool versus alternatives like get_osm_elements_in_area or search_osm_elements. There are no exclusions, prerequisites, or conditions stated, only the basic operation.

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

find_nearby_amenitiesA
Read-onlyIdempotent

Find nearby amenities around a location using Overpass API.

Args: lat: Latitude coordinate lon: Longitude coordinate radius_meters: Search radius in meters (default: 1000) amenity_type: Type of amenity to search for (restaurant, cafe, hospital, etc.)

Returns: Dictionary containing nearby amenities with their details

ParametersJSON Schema
NameRequiredDescriptionDefault
latYes
lonYes
amenity_typeNorestaurant
radius_metersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the tool uses the Overpass API and returns a dictionary of amenities, which is useful context. However, it does not disclose potential external API behavior, rate limits, or data freshness, though these are less critical given the read-only 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 concise and well-structured: a one-sentence purpose statement followed by a compact parameter list and a brief return note. Every line adds value, 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.

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 does not need to detail return fields. It covers all input parameters with meaningful semantics and the tool's underlying API. It is complete enough for invocation, though it lacks usage differentiation from siblings, which is more of a usage-guidance gap.

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 carries the burden of explaining parameters. It provides meaningful explanations for all four parameters: lat/lon as coordinates, radius_meters in meters, and amenity_type with concrete examples. This is clear and goes beyond what the schema titles alone provide, though it could include bounds or accepted amenity values.

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 a specific verb ('find') and resource ('nearby amenities') around a location via Overpass API. This distinguishes it from generic OSM element retrieval tools like get_osm_node or search_osm_elements, though it does not explicitly name any alternative.

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 sibling tools such as search_osm_elements, get_place_info, or get_osm_elements_in_area. No alternatives or exclusions are mentioned, leaving the agent to infer appropriate usage from the name alone.

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

get_changesetB
Read-onlyIdempotent

Get information about a changeset.

Args: changeset_id: The ID of the changeset to retrieve

Returns: Dictionary containing changeset information

ParametersJSON Schema
NameRequiredDescriptionDefault
changeset_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, which cover the safety profile. The description does not contradict these annotations and adds that it returns a dictionary, but it provides no additional behavioral details such as error cases, authentication needs, or scope limitations.

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 compact and front-loaded with a clear one-line summary. The Args and Returns sections are somewhat redundant with the input and output schemas, but they are standard and do not add meaningful bloat.

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?

This is a simple single-parameter read-only tool, and the annotations plus output schema cover a substantial portion of what the agent needs. The main gap is the lack of usage differentiation from get_changeset_history and any notes on edge cases or response semantics.

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's Args section explains changeset_id as 'The ID of the changeset to retrieve,' which adds operational meaning beyond the schema's type and title. It could be improved with examples or constraints, but it sufficiently clarifies the only parameter.

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 states a specific operation, 'Get information about a changeset,' with a clear resource. However, it does not explicitly differentiate from the sibling get_changeset_history, leaving some potential ambiguity about which changeset-related tool to choose.

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 such as get_changeset_history. There is no mention of prerequisites, context, or exclusions, so the agent must infer usage solely from the name.

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

get_changeset_historyB
Read-onlyIdempotent

Get changeset history for analysis and tracking.

Args: user_id: Optional user ID to filter changesets limit: Maximum number of changesets to return

Returns: Dictionary containing changeset history

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds no meaningful behavioral information beyond a generic 'Returns: Dictionary containing changeset history' and does not disclose ordering, pagination, or filtering behavior beyond what the schema already shows.

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 short and organized into Args and Returns sections, with the main purpose front-loaded. 'For analysis and tracking' is slightly vague filler, but overall every major part earns its place and no unnecessary detail bloats the text.

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 that an output schema exists and annotations cover safety, the description is minimally viable: it states purpose, defines parameters, and notes the return type. However, it lacks enough context to help an agent distinguish this from get_changeset and does not mention sorting, pagination, or the meaning of 'history' (e.g., creation vs. edit history). These gaps make it adequate but not comprehensive.

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 schema description coverage at 0%, the description compensates by explaining both parameters: 'user_id: Optional user ID to filter changesets' and 'limit: Maximum number of changesets to return.' This adds clear meaning to the raw schema types and defaults. It does not cover edge cases like maximum allowed limit or user_id format, but the core semantics are present.

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 uses a specific verb and resource: 'Get changeset history for analysis and tracking.' This clearly identifies the tool's function. However, it does not explicitly distinguish itself from the sibling tool get_changeset, which could be confused with it.

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 phrase 'for analysis and tracking' provides a weak contextual hint but no concrete guidance on when to use this tool versus get_changeset or other sibling tools. There is no mention of alternatives, exclusions, or prerequisites, leaving the agent to infer appropriate usage.

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

get_edit_capabilitiesC
Read-onlyIdempotent

Describe the active safety profile and optional local services.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

The annotations already declare this read-only, idempotent, and non-destructive, so the description does not need to repeat that. However, the description only names the resource without explaining what behavior to expect, such as what status is returned or what these services actually are.

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?

At nine words, the description is genuinely concise and front-loaded. It avoids repeating annotation details, though the terseness comes at the cost of specificity, so it is not a perfect 5.

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 zero parameters, safe read-only annotations, and an output schema present, the description can afford to be brief. Still, it leaves 'active safety profile' and 'optional local services' undefined and provides no reason an agent would select this tool over similar read-only siblings.

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 description has no parameter burden. The baseline of 4 applies because there is nothing structurally missing; the empty schema is accurately complemented by a description that does not claim parameters.

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

Purpose3/5

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

The description states a verb, 'describe', and names two resources, 'active safety profile' and 'optional local services', so it is not a pure tautology. However, those resources are undefined jargon, and the description does not distinguish this tool from siblings like check_authentication or get_server_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 given about when to call this tool or when a sibling would be more appropriate. The text simply restates the tool's subject matter, leaving the agent to infer any usage context.

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

get_osm_elements_in_areaA
Read-onlyIdempotent

Get OSM elements within a bounding box.

Args: bbox: Bounding box as "min_lon,min_lat,max_lon,max_lat"

Returns: Dictionary containing all elements in the area

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare the operation as read-only, idempotent, and non-destructive. The description adds that it returns a dictionary containing 'all elements' without filtering, but it does not disclose potential size limits, coordinate validation behavior, or what element types are included. This is adequate 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.

Conciseness5/5

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

The description is compact and front-loaded: the core purpose appears in the first sentence, followed by a minimal Args section and a brief Returns line. Every sentence contributes needed information, with no filler or repetition.

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 has a single parameter, explicit bbox formatting in the description, an output schema, and rich read-only/idempotent annotations, the description covers what an agent needs to call it safely. It could add a note about whether all element types (nodes, ways, relations) are returned, but that is a minor gap.

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 carries the full burden for the bbox parameter. It explicitly documents the required string format ('min_lon,min_lat,max_lon,max_lat'), which is essential for correct invocation and goes well beyond the bare property title 'Bbox'.

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 clear verb ('Get'), a clear resource ('OSM elements'), and a specific scope ('within a bounding box'). This distinguishes it from singular resource tools like get_osm_node or get_osm_way, and from search-oriented siblings like search_osm_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?

The description implies it should be used when you have a bounding box and want all OSM elements in that area. However, it provides no explicit guidance about when to prefer this over alternatives such as search_osm_elements or get_osm_node/way/relation, and no exclusion criteria.

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

get_osm_nodeA
Read-onlyIdempotent

Get an OSM node by ID.

Args: node_id: The ID of the node to retrieve

Returns: Dictionary containing node data including coordinates and tags

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds a useful but limited return-shape note ('Dictionary containing node data including coordinates and tags') without discussing error handling or external data volatility.

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, front-loaded with the core purpose, and uses clear Args/Returns sections with no filler. Every sentence 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 simple single-parameter read-only tool with output schema and safety annotations, the description covers the essential purpose, parameter, and return content. It does not mention edge cases like nonexistent node IDs, but the operation is simple enough that this is not a major gap.

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 provides a basic semantic for node_id ('The ID of the node to retrieve'), but this mostly restates the property name and does not add constraints, examples, or format guidance beyond the integer type 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?

The description states a specific verb ('Get'), a clear resource ('OSM node'), and a precise selection mechanism ('by ID'). It distinguishes itself from siblings like get_osm_way and get_osm_relation through the explicit resource type.

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 'by ID' phrasing clearly conveys that this tool is for retrieving a node when its ID is known, which provides clear context. However, it does not explicitly mention when not to use it or point to alternatives such as search_osm_elements.

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

get_osm_relationA
Read-onlyIdempotent

Get an OSM relation by ID.

Args: relation_id: The ID of the relation to retrieve

Returns: Dictionary containing relation data including members and tags

ParametersJSON Schema
NameRequiredDescriptionDefault
relation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds a useful behavioral detail beyond annotations by stating the return shape: a dictionary with relation data including members and tags. It does not discuss not-found behavior, but for a simple lookup with an output schema present this is acceptable.

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 docstring is compact and front-loaded with the core purpose, then offers an Args/Returns structure. Every sentence is informative and there is 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 one-parameter read-only lookup, the definition is complete: the resource, retrieval key, and return shape are present, annotations cover safety/idempotence, and an output schema exists to define the exact return fields.

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 needed to compensate, but it only restates the schema's 'Relation Id' title: 'relation_id: The ID of the relation to retrieve'. This is enough for a single obvious integer parameter but adds no deeper detail about valid ID ranges, formats, or the meaning of members/tags.

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 ('Get'), a specific resource ('OSM relation'), and the retrieval key ('by ID'). This clearly distinguishes the tool from sibling operations like get_osm_node, get_osm_way, and spatial queries.

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 use case is obvious: use whenever you need a relation by its numeric ID. The description does not explicitly name alternatives or exclusions, but the simple fetch-by-ID context makes the when-to-use clear enough without more.

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

get_osm_statisticsA
Read-onlyIdempotent

Get statistics and analytics for OSM data in a bounding box.

Args: bbox: Bounding box as "min_lon,min_lat,max_lon,max_lat"

Returns: Dictionary containing comprehensive statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds that the return value is a dictionary containing statistics, which is useful but not deeply detailed; the output schema likely covers return structure.

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 short, front-loaded with the primary purpose, and uses a clear Args/Returns structure. Every sentence serves a purpose, and there is 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?

For a simple one-parameter read-only tool, the description provides the necessary bbox format and indicates the return type. The output schema and annotations cover remaining details, though the description could mention what kinds of statistics are included to make the tool more self-explanatory.

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 only defines bbox as a string with no format guidance. The description fully compensates by specifying the exact bounding box format as min_lon,min_lat,max_lon,max_lat, which is the key information needed to invoke the tool correctly.

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 gets statistics and analytics for OSM data in a bounding box, combining a specific verb with a concrete resource. It is distinguishable from sibling tools like get_osm_node or get_osm_way, though it does not explicitly name them.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention related tools such as get_osm_elements_in_area or smart_geocode, nor does it state what types of requests should or should not be routed here.

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

get_osm_wayA
Read-onlyIdempotent

Get an OSM way by ID.

Args: way_id: The ID of the way to retrieve

Returns: Dictionary containing way data including nodes and tags

ParametersJSON Schema
NameRequiredDescriptionDefault
way_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds that the returned dictionary includes nodes and tags, which is a small behavioral detail beyond annotations, but it does not disclose error behavior, not-found handling, or any API-specific quirks. This is adequate but not rich.

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

Conciseness5/5

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

The description is compact and front-loaded: a one-sentence purpose, followed by tidy Args and Returns sections. No filler or redundant background information appears, and the structure makes the single parameter and return type easy to scan.

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, read-only lookup tool, this is nearly complete. The output schema covers return structure, annotations cover safety and idempotency, and the description states what data is included. The main missing piece is any mention of behavior for invalid or nonexistent way IDs, but overall an agent has enough to invoke it correctly.

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 carry parameter meaning. It says way_id is 'the ID of the way to retrieve,' which clarifies the integer's referent but does little more than restate the parameter name. No format, example, range, or source hint is provided, so it only partially compensates for the 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 opens with a specific verb and resource: 'Get an OSM way by ID.' This clearly identifies the operation and the OSM element type, distinguishing it from sibling tools like get_osm_node and get_osm_relation even without naming them. The returns line adds that the result includes nodes and tags, further narrowing the 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?

The description gives no guidance on when to choose this tool over the sibling get_osm_node or get_osm_relation, nor any conditions, exclusions, or alternatives. The only usage signal is the implicit need for a way ID, which is already obvious from the parameter name and schema.

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

get_place_infoB
Read-onlyIdempotent

Get information about a place by name using OSM Nominatim.

Args: place_name: Name of the place to search for

Returns: Dictionary containing place information and coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
place_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds that it uses OSM Nominatim and returns a dictionary with coordinates, which is useful context. However, it does not disclose potential ambiguity, external service dependency, rate limits, or behavior when no place is found. 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 concise and well-structured with Args and Returns sections. Every sentence serves a purpose, and there is minimal redundancy. It could be slightly improved by folding the Args section into a more natural sentence, but it remains 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 the single parameter, strong annotations, and an existing output schema, the description is mostly adequate. It conveys the core behavior, input, and return type. However, it omits context about when an agent should prefer this over smart_geocode or search_osm_elements, and leaves room for ambiguity about how place names are interpreted by Nominatim.

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 schema's lack of details. It does explain place_name as 'Name of the place to search for,' but this adds little beyond the schema's existing 'Place Name' title and string type. It offers no examples, formatting hints, or guidance on ambiguity (e.g., 'Paris, France' vs 'Paris, Texas').

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 states a clear verb and resource: 'Get information about a place by name using OSM Nominatim.' It also specifies the mechanism (Nominatim) and the output (information and coordinates). It does not explicitly differentiate itself from siblings like smart_geocode or search_osm_elements, but 'by name' gives a reasonably distinct 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 about when to use this tool versus alternatives. Sibling tools such as smart_geocode, get_osm_node, and search_osm_elements overlap conceptually, and the description gives no exclusions, conditions, or preferred use cases. The agent must infer usage from the tool name and the phrase 'by name.'

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

get_server_infoA
Read-onlyIdempotent

Get information about the OSM Edit MCP server.

Returns: Dictionary containing server configuration and status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, idempotentHint=true, and destructiveHint=false, covering side-effect safety. The description adds the high-level return payload ('Dictionary containing server configuration and status'), which is useful but not extensive. No contradictions 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 two short lines, front-loaded with the action, with no filler or repetition. The 'Returns' line earns its place by giving the output shape at a high level.

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 zero-parameter read-only info endpoint with rich annotations and an output schema, the description sufficiently covers what the tool does and what it returns. No critical operational detail is missing for this simple 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 zero properties, so there are no parameters to document. With 0 params and 100% schema coverage, the description need not provide additional parameter details.

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 action ('Get information') on a specific resource ('the OSM Edit MCP server') and notes the return type. This clearly distinguishes it from sibling data-retrieval tools like get_osm_node or get_changeset.

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 purpose is clear enough that an agent would invoke it when needing server configuration or status, but no explicit when-to-use guidance or alternative routing is provided. Sibling check_authentication is also a meta tool and could be confused, yet the description does not differentiate.

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

inspect_map_contextC
Read-onlyIdempotent

Return stable OSM IDs, versions, tags and GeoJSON for a small bbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxYes
highway_onlyNo
max_elementsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the useful 'stable OSM IDs' and 'small bbox' constraints, but it does not disclose bbox format, element limits, or how results are returned beyond GeoJSON.

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 wasted words, and the core purpose is immediately visible. However, it is so terse that some important invocation details are missing, keeping it from a top 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?

The output schema exists, so return structure is covered elsewhere, and annotations cover safety behavior. Still, with zero schema param coverage, no bbox format detail, no explanation of highway_only or max_elements, and no usage guidance, the description is incomplete for an agent to confidently invoke the tool 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%, yet the description only mentions 'bbox' vaguely as a small bbox. It does not explain the required bbox format (e.g., coordinate order or syntax), and highway_only and max_elements are entirely omitted from the narrative, leaving the agent without needed semantic meaning.

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 a specific action and resource: it returns stable OSM IDs, versions, tags, and GeoJSON for a small bbox. This is more specific than sibling tools like get_osm_elements_in_area or get_osm_node, though it does not explicitly name and differentiate itself from 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?

The description gives no guidance on when to use this tool versus alternatives such as get_osm_elements_in_area or search_osm_elements. The phrase 'small bbox' implies a scale limitation, but there is no explicit when-to-use or when-not-to-use context.

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

list_edit_proposalsA
Read-onlyIdempotent

List local proposal metadata without exposing raw GPX coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint: false, so the safety profile is known. The description adds value by disclosing that raw GPX coordinates are intentionally excluded and that only metadata is returned, which is not captured by the 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 sentence that puts the verb first, states the resource, and adds the key security constraint without any filler. Every word contributes to understanding.

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 an output schema exists and the annotations cover read-only/idempotent behavior, the description provides the essential purpose and privacy constraint needed for safe invocation. The only minor gap is that status values are undocumented, but the parameter is optional with a null default, so the tool remains usable.

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 never mentions the limit or status parameters. The agent receives no additional meaning beyond the bare schema types and defaults, leaving the status parameter especially underspecified.

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 'List', a clear verb, and names the exact resource: 'local proposal metadata'. The qualifier 'without exposing raw GPX coordinates' clarifies the scope and distinguishes this read-only listing from mutation-heavy sibling tools like apply_osm_edit or apply_track_road_edit.

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 'local proposal metadata' implies the tool is for inspecting proposals before applying edits, which gives some usage context. However, the description does not explicitly state when to use this tool versus siblings like preview_track_road_edit or apply_osm_edit, nor does it mention filtering by status or limits.

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

match_track_selectionB
Read-onlyIdempotent

Map-match a selected GPX subsection using the configured local Valhalla.

ParametersJSON Schema
NameRequiredDescriptionDefault
costingNoauto
selection_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

The description adds a behavioral dependency—the operation uses a 'configured local Valhalla'—which goes beyond the readOnly/idempotent annotations. However, it doesn't disclose other behavioral traits like failure modes or what transformations occur, and the annotations already 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. The verb and resource come first, and the remaining words add meaningful scope and context.

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 is adequate for a simple read-only tool, especially since an output schema exists and annotations cover safety. But it leaves key gaps: where selection_id comes from, how to choose costing, and what the local Valhalla configuration implies for 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?

With schema description coverage at 0%, the description needed to explain the parameters but only loosely relates selection_id to a GPX subsection. The costing parameter is entirely unexplained, including valid values or the meaning of the 'auto' default.

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 states a specific operation, 'Map-match', on a clear resource, 'a selected GPX subsection', and adds useful context with 'using the configured local Valhalla'. It is semantically distinct from siblings like analyze_gpx_track or create_track_selection, though it doesn't explicitly name alternatives.

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 the tool (when you need to map-match a selected GPX subsection) but gives no explicit when-not or alternative guidance. It also doesn't mention prerequisites such as creating a selection first with create_track_selection.

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

parse_natural_language_osm_requestA
Read-onlyIdempotent

Parse a natural language request into structured OSM data.

Args: request: Natural language request for OSM operations

Returns: Dictionary containing parsed components of the request

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already cover readOnly, idempotent, openWorld, and non-destructive behavior, so the description does not need to repeat those. It adds that the tool returns a dictionary of parsed components, which is useful but minimal. No contradiction with annotations exists.

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 and well-structured, starting with a clear purpose sentence followed by concise Args and Returns sections. Every sentence adds value, and there is no redundant 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 simple one-parameter parser, the description covers purpose and parameter meaning, while the output schema handles return structure. However, it does not explain how the parsed output connects to other OSM tools or what types of natural language requests are supported, leaving slight ambiguity.

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. The Args section defines 'request' as a natural language request for OSM operations, providing the essential meaning. It is helpful but lacks examples, language constraints, or scope details.

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: parsing a natural language request into structured OSM data. This distinguishes it from sibling tools that query, edit, or analyze OSM data directly. The verb 'Parse' and resource 'natural language request' 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 Guidelines3/5

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

The description implies usage when a natural language request needs to be converted into structured OSM data, but it gives no explicit guidance on when to prefer this tool over alternatives or how it fits into an OSM workflow. There are 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.

preview_track_road_editB
Read-onlyIdempotent

Build a non-writing GeoJSON and element diff preview for a road edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
actionYes
gpx_xmlNo
gpx_pathNo
segment_idNo
selection_idNo
evidence_kindNosurvey_gpx
target_way_idsNo
changeset_sourceYes
changeset_commentYes
evidence_providerNo
evidence_observed_atNo
simplify_tolerance_mNo
max_alignment_distance_mNo
connect_endpoints_to_waysNo
endpoint_snap_tolerance_mNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds modest context by specifying that the output is a GeoJSON and element diff preview, but it does not explain other behavioral aspects such as validation or failure cases. There is 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.

Conciseness3/5

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

The description is a single efficient sentence with no wasted words and the key 'non-writing preview' concept is front-loaded. However, for a tool with 16 parameters and no other descriptive material, the one-sentence description is arguably too thin to be appropriately sized.

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 (16 parameters, 3 required, 0% schema parameter coverage), a single sentence describing the output is not enough for an agent to understand how to call it correctly. The output schema may cover return values, but the description leaves key context such as action values, changeset requirements, evidence inputs, and relationships to sibling preview/apply tools unexplained.

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 provides no explanation of the 16 parameters, including the three required ones (action, changeset_comment, changeset_source). The parameter names and types are present in the schema, but the description does not compensate for the complete lack of schema-level 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 states a specific verb ('Build') and a specific resource ('non-writing GeoJSON and element diff preview for a road edit'). The 'non-writing preview' phrasing clearly distinguishes it from the sibling apply_track_road_edit, so an agent can tell what this tool produces at a glance.

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 word 'preview' and 'non-writing' imply this is meant to be used before an apply operation, but the description never explicitly says 'use this before apply_track_road_edit' or states when not to use it. Usage context is implied rather than stated.

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

search_osm_elementsA
Read-onlyIdempotent

Search for OSM elements using Overpass API with a text query.

Args: query: Search query (e.g., "coffee shop", "hospital", "park") element_type: Type of element to search for (node, way, relation, or all)

Returns: Dictionary containing search results

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
element_typeNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds only that it uses the Overpass API and returns a dictionary; no result limits, timeout behavior, or API quirks 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.

Conciseness4/5

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

The description is short and front-loaded, with a clear one-sentence purpose followed by compact Args/Returns sections. The 'Dictionary containing search results' line is vague but does not add meaningful bulk.

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 read-only 2-parameter tool with rich annotations and an output schema, the invocation-critical details are mostly present. It lacks context for choosing among the many sibling tools and says nothing about Overpass API behavior such as rate limits, result caps, or query interpretation, so completeness is adequate but not strong.

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%, and the description fully compensates: it explains the query with concrete examples and enumerates the four element_type options. This is exactly the information an agent needs to fill both parameters correctly.

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

Purpose4/5

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

States a specific verb ('Search'), resource ('OSM elements'), and method ('Overpass API') with a text query, making its core function clear. It doesn't explicitly call out sibling alternatives like get_osm_elements_in_area or parse_natural_language_osm_request, so differentiation is left to the reader.

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 query examples ('coffee shop', 'hospital', 'park') imply it is for free-text POI/category searches, so usage is inferable. There is no explicit when-to-use or when-to-prefer-sibling guidance, no exclusions, and no mention of ID- or area-based alternatives.

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

smart_geocodeB
Read-onlyIdempotent

Enhanced geocoding with address parsing and multiple search strategies.

Args: address_or_description: Full address or location description

Returns: Dictionary containing geocoding results with multiple candidates

ParametersJSON Schema
NameRequiredDescriptionDefault
address_or_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral context by mentioning address parsing, multiple search strategies, and returning 'multiple candidates,' but it stops short of explaining what strategies are used or how ambiguous inputs are handled.

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 compact and organized into purpose, args, and returns, with no filler or repetition. The main geocoding capability is front-loaded and the parameter explanation is direct, though a small example would have made it even more useful.

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 only one parameter, strong annotations, and an output schema present, the description does not need to explain return values in depth. However, it lacks guidance on when to use this tool versus the many sibling search/geocoding tools, and the vague 'multiple search strategies' leaves behavioral ambiguity. It is adequate for basic invocation but not fully complete.

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 carries the burden of explaining the parameter. It does add meaning beyond the schema by defining address_or_description as 'Full address or location description,' but this is minimal and lacks examples, format constraints, or clarification about what kind of descriptions are acceptable.

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 performs 'geocoding' with 'address parsing and multiple search strategies,' which identifies the core function of converting an address or description into geocode candidates. It is more specific than a bare verb+resource but does not explicitly differentiate itself from sibling tools like search_osm_elements or get_place_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?

The description implies the tool accepts a full address or location description, but it gives no explicit guidance on when to choose smart_geocode over related tools such as parse_natural_language_osm_request, validate_coordinates, or search_osm_elements. There are no exclusions, alternative references, or context-based selection criteria.

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

suggest_track_road_candidatesB
Read-onlyIdempotent

Suggest nearby OSM highway ways without selecting or modifying any way.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
gpx_xmlNo
gpx_pathNo
segment_idNo
selection_idNo
search_radius_mNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds a useful side-effect guarantee about not selecting ways, but it does not disclose how suggestions are computed, what inputs take precedence, or any behavioral details beyond 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, clear, front-loaded sentence with no filler. It is efficient, though slightly under-sized for a tool with six parameters and multiple possible input sources.

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 output schema may cover return values, and annotations cover side-effect safety, but the description leaves major invocation questions unanswered: Which of gpx_xml, gpx_path, segment_id, or selection_id should be provided? Are they mutually exclusive or combined? What does 'nearby' depend on? This is insufficient for correct tool use.

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 mention or explain any of the six parameters (limit, gpx_xml, gpx_path, segment_id, selection_id, search_radius_m). An agent gets no guidance on which input source to supply or how the parameters relate to 'nearby'.

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 action ('Suggest'), a specific resource ('nearby OSM highway ways'), and an explicit non-behavior ('without selecting or modifying any way'). This clearly distinguishes it from sibling tools that create selections or apply 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 phrase 'without selecting or modifying any way' implies this is for read-only candidate suggestions, but it does not explicitly say when to use this tool versus alternatives like match_track_selection or preview_track_road_edit. No direct sibling or exclusion strategy is named.

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

validate_coordinatesB
Read-onlyIdempotent

Validate coordinates and provide information about the location.

Args: lat: Latitude coordinate lon: Longitude coordinate

Returns: Dictionary containing validation results and location information

ParametersJSON Schema
NameRequiredDescriptionDefault
latYes
lonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the tool returns a dictionary and provides location information, but it does not explain behavior for invalid or out-of-range coordinates, network dependencies, or any other operational nuance. This is acceptable but not rich.

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

Conciseness5/5

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

The description is compact and well-structured with an opening summary, an Args section, and a Returns section. There is no wasted text, and the core purpose is front-loaded in the first sentence.

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 only two required parameters and an output schema, so heavy documentation is not necessary. Still, the description lacks detail on what validation is performed, what location information means, and when this tool is preferable to siblings. These gaps make it minimally acceptable but not fully complete for an agent deciding how to use it.

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 carries the responsibility for explaining parameters. It labels each argument as 'Latitude coordinate' and 'Longitude coordinate,' which adds basic human-readable meaning beyond the schema titles 'Lat' and 'Lon.' However, it omits valid ranges (e.g., lat -90 to 90, lon -180 to 180) and any format or precision constraints, so the semantics are only minimally complete.

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 states a clear action and resource: 'Validate coordinates and provide information about the location.' This distinguishes it from the sibling validate_osm_data, which targets OSM data objects rather than raw coordinates. However, it does not specify exactly what 'validate' means (range checking, OSM coverage, reverse geocoding) or what location information is included.

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_place_info, smart_geocode, or validate_osm_data. There are no use cases, exclusions, or context clues beyond the name itself, so an agent must infer when this is the appropriate choice.

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

validate_osm_dataA
Read-onlyIdempotent

Validate OSM data for quality assurance before uploading.

Args: data: Dictionary containing OSM data to validate (tags, coordinates, etc.)

Returns: Dictionary containing validation results and suggestions

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds that it takes a dictionary and returns validation results and suggestions, which is useful but still generic. No behavioral detail about validation scope or edge cases is provided.

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 and well-structured: a one-sentence purpose followed by Args/Returns sections. There is no fluff or redundancy; every sentence 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?

For a simple one-parameter validation tool, the description is adequate but leaves gaps: it does not specify what kinds of OSM data are accepted (e.g., single element vs. full edit), what validation checks are performed, or what the suggestion dictionary contains. The output schema may fill some gaps, but it is not visible 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?

The schema has a single 'data' parameter with zero description coverage. The Args section says 'Dictionary containing OSM data to validate (tags, coordinates, etc.)', which adds some meaning beyond the bare schema, but remains vague about required structure and keys.

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 uses a specific verb and resource: 'Validate OSM data for quality assurance before uploading.' This clearly identifies the action and domain, but it does not explicitly differentiate from sibling tools like validate_coordinates or verify_osm_edit.

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?

'before uploading' gives a clear context for when the tool is intended to be used, but the description does not mention alternatives or conditions where another tool would be more appropriate. There is no explicit 'vs alternatives' guidance.

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

verify_osm_editA
Read-onlyIdempotent

Re-fetch every element recorded in an applied proposal receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the re-fetch behavior but does not disclose details such as what happens when an element is missing, whether errors are returned per element, or any rate/scale considerations. 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 a single sentence with no filler, and the core action 'Re-fetch every element' is front-loaded. It is appropriately sized for a one-parameter 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?

The tool is simple, has a strong annotation set, and an output schema exists, so the description does not need to cover return values. However, it lacks usage guidance and clear parameter provenance, leaving the agent to infer the connection between proposal_id and an 'applied proposal receipt'. It is minimally adequate but not 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?

Schema description coverage is 0%, so the description must compensate. It does not mention proposal_id directly, only implying that it identifies an applied proposal receipt; it omits how to obtain it, whether it is a string ID from a previous apply call, or any expected format.

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 (re-fetch) and a concrete resource (every element recorded in an applied proposal receipt), making the tool's operation clear. It also differentiates this tool from sibling getters like get_osm_node/way/relation because it operates at the level of an entire proposal receipt.

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 word 'applied' implies this is meant for post-application verification, but the description never explicitly states when to use it versus alternatives. It does not name a sibling such as apply_osm_edit or explain 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 28 tool updatesv0.2.1
    • First observedanalyze_gpx_track
    • First observedapply_osm_edit
    • First observedapply_track_road_edit
    • First observedcheck_authentication
    • First observedcreate_track_selection
    • First observedexport_osm_data
    • First observedfind_nearby_amenities
    • First observedget_changeset
    • First observedget_changeset_history
    • First observedget_edit_capabilities
    • First observedget_osm_elements_in_area
    • First observedget_osm_node
    • First observedget_osm_relation
    • First observedget_osm_statistics
    • First observedget_osm_way
    • First observedget_place_info
    • First observedget_server_info
    • First observedinspect_map_context
    • First observedlist_edit_proposals
    • First observedmatch_track_selection
    • First observedparse_natural_language_osm_request
    • First observedpreview_track_road_edit
    • First observedsearch_osm_elements
    • First observedsmart_geocode
    • First observedsuggest_track_road_candidates
    • First observedvalidate_coordinates
    • First observedvalidate_osm_data
    • First observedverify_osm_edit

TDQS

B3.2/5.0

Scored across 28 tools

Disambiguation3/5

Several tools overlap in their query surface: get_osm_elements_in_area, export_osm_data, and get_osm_statistics all operate on a bbox, while get_place_info, smart_geocode, and search_osm_elements cover adjacent geocoding/search tasks. The descriptions help separate them, but an agent could easily pick the wrong one.

Naming Consistency5/5

All tool names are lowercase snake_case and follow a clear verb_noun pattern (get_osm_node, create_track_selection, apply_osm_edit, verify_osm_edit). The longer names like parse_natural_language_osm_request are verbose but still fit the same convention.

Tool Count2/5

With 28 tools, the surface is heavy for an editing server and exceeds the 25-tool threshold. Many read/search/geocode helpers could be consolidated, and the GPX workflow adds a second large sub-domain on top of the core OSM editing flow.

Completeness4/5

The set covers a full edit workflow: discover, validate, propose, apply, and verify, along with GPX track analysis and export. It lacks explicit element-level create/update/delete and changeset management tools, but those seem intentionally funneled through apply_osm_edit.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers