postmcp
Provides a dedicated tool for sending GraphQL queries and mutations with variable injection.
Allows importing Postman Collections (v2) into the server for API request automation and testing.
Allows importing Swagger/OpenAPI definitions from JSON/YAML files or URLs, including response status codes and schemas, to generate Markdown references.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@postmcpCreate a project called 'My API' and send a GET request to /health."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
postmcp 🚀 - API Request & Automation Testing MCP Server
English
A high-performance Model Context Protocol (MCP) server written in Node.js (TypeScript) designed for API request automation and automated testing. It features a unified local SQLite database storage allowing LLM agents to manage projects, configure environment variables and credential tokens, run REST and WebSocket requests, evaluate assertions, and audit execution histories.
✨ Features
🗄️ SQLite Unified Storage: Consolidates projects, profiles, variables, cache tokens, history logs, and test suites into
~/.postmcp/postmcp.dbunder user-only file permissions (0600).📁 Multi-Project Workspaces: Easily partition different API workspaces (e.g. e-commerce-api, auth-service).
⚙️ Environment Profiles: Configure separate environments (e.g.
dev,prod,local) with specific base URLs (supports{{var}}interpolation), headers, cookies, authentication methods, and default timeout.🔐 Automatic OAuth2 Flow & Token Injection: Full Support for Bearer Tokens, API Keys, and automated OAuth2 Client Credentials and Password grants with expiration caching.
📥 WebSocket persistent connection pool: Persistent socket clients with message buffering, and regex patterns wait features (block and wait for expected responses).
⏱️ Assertion Engine & Diff Engine: Evaluates request status codes, times, response headers, and JSONPath body expressions. Easily generates Markdown structural differences comparing two requests (supports
tableandunifieddiff formats).📊 Chaining Test Suite Runner: Executes multi-step API scenarios, automatically extracting dynamic variables (e.g. dynamic IDs, authorization tokens) and injecting them into subsequent steps.
🧪 GraphQL Support: Dedicated
graphql_requesttool for sending GraphQL queries/mutations with variable injection.📁 File Upload Support: Upload files via
form-databody type usingfileFieldsparameter.💾 Test Suite Persistence: Save, load, list, and delete test suites in the database for reuse.
📤 Import/Export Ecosystem: Import Postman Collections, export/import environments and projects as portable JSON.
📖 Swagger/OpenAPI Import (Enhanced): Now includes response status codes and response body schemas in generated Markdown.
🔍 Advanced History Filtering: Filter audit logs by method, status code, URL keyword, and date range.
📋 History Export: Export audit logs as JSON for external analysis.
🛡️ Outbound & File Safety: Outbound HTTP, WebSocket, OAuth2, and Swagger URLs require an explicit allowlist and are checked against DNS-resolved private/reserved addresses. Local file reads are sandboxed, size-limited, and require explicit confirmation.
🔒 Secret Protection: Credentials are masked in environment listings, variables, exports, and request history. Secret reads/exports and destructive operations require explicit confirmation.
🛠️ Setup & Build
Published package: @bencibro/postmcp.
For the published package, install the MCP server globally:
npm install -g @bencibro/postmcp
postmcpOr run it without a global install:
npm install @bencibro/postmcp
npx -y @bencibro/postmcpThe local install form is useful when the MCP client configuration runs from a project directory. The package exposes the postmcp executable through its bin entry.
To develop from this repository instead:
Install dependencies:
npm installCompile TypeScript:
npm run build
Before sending any outbound request, configure an explicit allowlist with env_set_allowlist. An empty list denies all outbound requests. For trusted local services, use the explicit private: form, for example:
{ "domains": ["api.example.com", "private:localhost"] }Local file tools (fileFields, test_run_suite.dataSource, swagger_import.filePath, and postman_import) require confirmFileAccess: true. Files must be inside POSTMCP_FILE_ROOTS (defaults to the project directory), cannot be protected credential files, and are limited to 10 MiB by default. Set POSTMCP_MAX_FILE_BYTES to adjust the limit up to 100 MiB.
🚀 First MCP Workflow
After connecting an MCP client, run these tools in order:
project_create { "name": "My API" }
env_configure { "name": "dev", "baseUrl": "https://api.example.com" }
env_set_allowlist { "domains": ["api.example.com"] }
http_request { "url": "/health", "method": "GET", "returnBody": false }
history_list { "limit": 5 }The allowlist step is required. An empty allowlist denies all outbound requests.
⚙️ Integrate with Claude Desktop
Add this configuration to your Claude Desktop config (usually at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"postmcp": {
"command": "npx",
"args": ["-y", "@bencibro/postmcp"]
}
}
}📖 MCP Tool Guide
Guide & Instructions:
mcp_usage_guide(dynamically returns workflow guidelines on variables, chaining, and socket testing).Projects (
project_*):project_create,project_switch,project_list,project_delete(requiresexpectedProjectNameandconfirm: true),project_rename.Environments (
env_*):env_configure(withtimeout,oauth2Configpassword grant),env_switch,env_list,env_delete(requiresexpectedEnvironmentNameandconfirm: true),env_rename,env_set_variable,env_get_variable(useincludeSecret+confirmSecret: trueto reveal a sensitive value),env_delete_variable,env_list_variables(useincludeSecrets+confirmSecrets: trueto reveal sensitive values),env_set_allowlist,env_get_allowlist.HTTP Requests:
http_request(REST requests with file upload viafileFieldsand any HTTP method),graphql_request(dedicated GraphQL query tool),test_run_suite(sequential scenario runner; localdataSourcefiles requireconfirmFileAccess: true).WebSocket Client (
ws_*):ws_connect,ws_send,ws_read(regex waiting support),ws_close,ws_list.Test Suite Persistence (
suite_*):suite_save,suite_load,suite_list,suite_delete(requiresexpectedSuiteNameandconfirm: true; suites are isolated to the active project).Request History (
history_*):history_list(with advanced filters: method, statusCode, urlKeyword, dateFrom, dateTo),history_get(detail log),history_compare(diff logs, supportstableandunifiedformat),history_clear(requiresconfirm: true),history_export.Database Maintenance (
db_*):db_status(returns database file path, file size in KB, and table row counts),db_reset(factory reset DB, requiresconfirm: true).Swagger Import (
swagger_import):swagger_import(imports routes and schemas from JSON/YAML files or URLs into Markdown references; now includes response status codes and schemas).Import/Export:
postman_import(Postman Collection v2; requiresconfirmFileAccess: true),env_export,env_import,project_export,project_import. Exports mask secrets by default; useincludeSecrets: truetogether withconfirmSecrets: trueonly when needed.
🧪 Integration Tests
npx tsx src/test/runTests.ts
npm run test:negative
npm run test:stress📚 Additional Documentation
ai_instructions.md: Full tool reference and recommended agent workflows.walkthrough.md: Architecture and end-to-end walkthrough.postmcp_vs_postman.md: Feature comparison and current gaps.ROADMAP_v2.0.md: Planned future capabilities.
Related MCP server: mcp-playwright-test
中文说明
postmcp 是使用 Node.js (TypeScript) 编写的高性能 Model Context Protocol (MCP) 服务,专为 API 接口自动化请求与集成测试设计。采用统一的本地 SQLite 数据库作为存储,支持多项目切换、多环境配置(如 dev, prod)、OAuth2 认证缓存,以及详尽的请求历史审计与响应对比(Diff)功能。
✨ 功能特性
🗄️ SQLite 统一存储:将项目、环境、变量、缓存 token、请求日志和测试套件集中持久化到
~/.postmcp/postmcp.db,使用 Unix 用户独占权限 (0600) 保护。📁 多项目工作区:支持创建和隔离多个独立的 API 测试项目(例如
PaymentGateway、UserAuth)。⚙️ 环境配置文件:每个项目下可配置多个环境(如
dev、prod、local),每个环境可包含不同的 Base URL(支持{{var}}插值)、变量池、默认 Headers、Cookies、鉴权配置及默认超时时间。🔐 OAuth2 自动换单与 Token 注入:支持 Bearer Token、API Key,以及 OAuth2 Client Credentials 和 Password 模式的自动获取、过期校验与缓存。
📥 WebSocket 状态连接池:维护持久化的 socket 连接,支持发送/接收消息,并支持基于正则的
waitForPattern异步阻塞监听。⏱️ 断言与差异对比引擎:提供多类型断言验证(状态码、响应时间、Header、JSONPath 表达式),并能对比两个请求记录的响应差异(支持
table和unified两种 diff 格式)。📊 串联测试用例运行器 (Test Suite):按顺序执行多步 API 请求,支持通过 JSONPath 提取响应参数,并自动注入到后续请求中。
🧪 GraphQL 支持:专用
graphql_request工具发送 GraphQL 查询/变更,自动拼接 body。📁 文件上传支持:通过
fileFields参数在 form-data 中上传本地文件。💾 测试套件持久化:在数据库中保存、加载、列举和删除测试套件。
📤 导入导出生态:导入 Postman Collection,导出/导入环境和项目的可移植 JSON。
📖 Swagger/OpenAPI 导入(增强):现在包含响应状态码和响应体 Schema。
🔍 高级历史过滤:按请求方法、状态码、URL 关键词、时间范围过滤审计日志。
📋 历史导出:将审计日志导出为 JSON 用于外部分析。
🛡️ 出站与文件安全:HTTP、WebSocket、OAuth2 和 Swagger 远程 URL 必须先加入显式白名单,并会校验 DNS 解析结果是否指向私网或保留地址。本地文件读取受目录沙箱、大小限制和显式确认保护。
🔒 敏感信息保护:环境列表、变量查询、导出数据和请求历史默认脱敏;读取秘密和执行破坏性操作都需要显式确认。
🛠️ 安装与编译
已发布 npm 包: @bencibro/postmcp。
发布版安装:
npm install -g @bencibro/postmcp
postmcp也可以不全局安装,直接运行:
npm install @bencibro/postmcp
npx -y @bencibro/postmcp在项目目录中本地安装后,也可以在 MCP 客户端配置中使用 npx -y @bencibro/postmcp 启动。该包通过 bin 字段提供 postmcp 命令。
如果需要从源码开发:
安装依赖包:
npm install编译 TypeScript:
npm run build
发送任何出站请求前,请先使用 env_set_allowlist 配置明确的域名白名单。空白名单会拒绝所有出站请求。访问可信本地服务时,必须明确使用 private: 前缀,例如:
{ "domains": ["api.example.com", "private:localhost"] }本地文件工具(fileFields、test_run_suite.dataSource、swagger_import.filePath、postman_import)必须传入 confirmFileAccess: true。文件必须位于 POSTMCP_FILE_ROOTS(默认是项目目录)内,受保护的凭据文件会被拒绝,默认大小上限为 10 MiB。可通过 POSTMCP_MAX_FILE_BYTES 调整,上限为 100 MiB。
🚀 首次使用流程
连接 MCP 客户端后,按以下顺序调用工具:
project_create { "name": "My API" }
env_configure { "name": "dev", "baseUrl": "https://api.example.com" }
env_set_allowlist { "domains": ["api.example.com"] }
http_request { "url": "/health", "method": "GET", "returnBody": false }
history_list { "limit": 5 }白名单配置是必需步骤。空白名单会拒绝所有出站请求。
⚙️ 对接 Claude 桌面客户端
在您的 Claude Desktop 配置文件中(通常位于 macOS 的 ~/Library/Application Support/Claude/claude_desktop_config.json),添加以下配置:
{
"mcpServers": {
"postmcp": {
"command": "npx",
"args": ["-y", "@bencibro/postmcp"]
}
}
}📖 MCP 工具接口使用指南
帮助与指南 (
mcp_usage_guide):mcp_usage_guide:让 AI 助手直接获取关于变量插值、串联测试、WebSocket 异步监听等的高级使用说明。
项目管理 (
project_*):project_create:创建一个新的项目测试空间。project_switch:切换当前活动的项目空间。project_list:列出所有项目。project_delete:删除指定项目(级联删除关联的环境及历史记录),必须提供准确的expectedProjectName和confirm: true。project_rename:重命名项目。
环境配置 (
env_*):env_configure:在活动项目下创建或修改环境(支持 timeout、oauth2Config password grant)。env_switch:切换活动环境。env_list:列出当前项目下的环境列表(敏感 Token 会自动脱敏遮蔽)。env_delete:删除环境配置文件,必须提供准确的expectedEnvironmentName和confirm: true。env_rename:重命名环境。env_set_variable:往当前活动环境写入自定义变量,在请求中通过{{variableName}}引用。env_get_variable:查询指定变量的值;敏感变量需要includeSecret: true和confirmSecret: true才会返回原值。env_delete_variable:删除指定变量。env_list_variables:列出所有环境变量;敏感值默认脱敏,必须同时提供includeSecrets: true和confirmSecrets: true才会返回原值。env_set_allowlist:设置安全出站域名白名单。env_get_allowlist:查询当前白名单配置。
HTTP 接口请求:
http_request:发送单次 API 请求,支持文件上传 (fileFields) 和任意 HTTP 方法;文件上传需要confirmFileAccess: true。graphql_request:发送 GraphQL 查询/变更。test_run_suite:执行串联式多步 API 测试场景,支持变量提取与传递。
WebSocket 客户端 (
ws_*):ws_connect:发起 WebSocket 连接,维持长连接状态。ws_send:发送文本或 JSON 数据帧。ws_read:读取已收到的消息缓存,支持传入waitForPattern正则阻塞等待响应。ws_close:关闭 WebSocket 连接。ws_list:列出当前所有活跃的 socket 连接 ID。
测试套件持久化 (
suite_*):suite_save:保存测试套件到数据库。suite_load:加载并运行已保存的测试套件。suite_list:列出已保存的测试套件。suite_delete:删除已保存的测试套件,必须提供准确的expectedSuiteName和confirm: true。
历史日志与响应对比 (
history_*):history_list:分页查询历史记录(支持 method、statusCode、urlKeyword、dateFrom、dateTo 高级过滤)。history_get:根据 ID 检索单次请求响应的详细报文。history_compare:对两个历史请求进行多维度比对(支持table和unified两种格式)。history_clear:清理历史审计记录,必须提供confirm: true。history_export:导出历史记录为 JSON。
数据库维护 (
db_*):db_status:查询本地 SQLite 数据库的文件路径、大小(KB)及各个表的数据量。db_reset:危险操作:重置数据库(需要confirm: true确认)。
Swagger 导入 (
swagger_import):swagger_import:读取本地或远程 Swagger/OpenAPI 文件,生成结构化 Markdown 文档(含响应状态码和 Schema)。
导入/导出:
postman_import:导入 Postman Collection v2 文件(需要confirmFileAccess: true)。env_export/env_import:导出/导入环境配置 JSON;导出默认脱敏,导出秘密需要includeSecrets: true和confirmSecrets: true。project_export/project_import:导出/导入项目(含所有环境)JSON;导出默认脱敏,导出秘密需要includeSecrets: true和confirmSecrets: true。
🧪 本地集成测试
您可以启动内置的 Mock 服务器并对所有功能模块进行全自动回归测试:
npx tsx src/test/runTests.ts
npm run test:negative
npm run test:stressAvailable Tools
42 toolsdb_resetADestructiveIdempotent
DANGER: Factory reset the SQLite database. Closes database, deletes the database file, and recreates a fresh blank schema with a DefaultProject.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm the destructive reset operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the bar is lower, yet the description still adds concrete behavior: the database is closed first, the file is deleted, and a fresh blank schema seeded with a DefaultProject is recreated. That tells the agent precisely what state will exist after the call, which annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the safety warning is front-loaded so the agent sees the risk before anything else. Every clause carries information about scope or outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive utility with no output schema, the description covers the trigger, the mechanism, and the post-state well enough to call it correctly. It omits whether data is recoverable or backed up and what happens to concurrent sessions, both of which matter for an irreversible operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema coverage is 100%, with the schema itself stating 'Must be true to confirm the destructive reset operation'. The description adds nothing about the confirm flag, but the baseline of 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Factory reset the SQLite database') and enumerates the exact operations performed. Clearly distinguishable from sibling db_status, which only inspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'DANGER:' prefix and 'factory reset' framing give clear context that this is a last-resort operation, not routine maintenance. It does not explicitly name alternatives (e.g. project_delete, history_clear) or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_statusA
Get statistics about the local SQLite database, including database file path, file size, and row counts of all tables.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral load; 'Get statistics' makes the read-only, side-effect-free nature evident, and it discloses the shape of the returned information without any output schema. It stops short of stating what the file size units are or whether counts include internal tables.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first and the returned fields trailing. Every clause earns its place; nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description adequately covers what the agent gets back (path, size, row counts) and that it is a read. Minor gaps remain around units and exact return structure, but an agent can call this correctly without more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The enumerated return contents go beyond parameter concerns without adding noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get statistics') and resource ('local SQLite database'), and enumerates what is reported: file path, file size, table row counts. This is clearly distinguishable from the only related sibling, db_reset, though it does not explicitly name that distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the self-explanatory name and the 'statistics' framing, but the description never says when to call this versus alternatives or what conditions make it useful (e.g., diagnostics before db_reset). No exclusions offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_configureB
Configure or create an environment profile (e.g. dev, prod) inside the active project. Saves credentials directly into the local SQLite DB.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of environment (e.g., dev, prod, local) | |
| baseUrl | No | Base URL for API requests (e.g. https://api.dev.example.com). Supports {{var}} interpolation from environment variables. | |
| cookies | No | Default cookies | |
| headers | No | Default headers | |
| timeout | No | Default request timeout in milliseconds (default: 30000) | |
| authType | No | none | |
| authToken | No | Static token value (Bearer or API Key) | |
| variables | No | Default variables key-value mapping | |
| oauth2Config | No | ||
| apiKeyHeaderName | No | Custom API Key header name (default: x-api-key) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose one important behavioral trait beyond the schema: credentials are persisted into the local SQLite DB. However, it is silent on the critical create-vs-configure ambiguity (does calling it on an existing name overwrite or merge settings?) and on secret-handling or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the resource and the persistence side effect front-loaded; no filler. Slight ambiguity from pairing 'configure' with 'create' in one verb phrase, but the size is appropriate for a 10-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 10 parameters, nested oauth2Config, no output schema and no annotations, yet the description is only two sentences. It omits what happens when the name already exists, the response shape, and whether stored credentials are masked or retrievable — gaps an agent would want before a mutating call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, with rich per-parameter descriptions including {{var}} interpolation and defaults, so the schema does most of the work. The description adds only the notion that the values are 'credentials', which is marginally useful but below what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('configure or create') and resource ('environment profile') and clarifies scope with 'inside the active project' plus examples of profile names. It implicitly separates itself from env_rename/env_set_variable by covering full-profile creation, but never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or alternatives. It does not say whether to use env_set_variable for a single value, env_switch to activate the profile, or env_rename to change its name, leaving the agent to infer routing from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_deleteCDestructiveIdempotent
Delete an environment profile.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm deletion | |
| environmentId | Yes | Database ID of the environment to delete | |
| expectedEnvironmentName | Yes | Must exactly match the environment name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=false, so safety and repeatability are covered structurally. The description adds no behavioral context of its own — nothing about whether variables within the environment are removed, whether it can be undone, or what errors occur on name mismatch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clean sentence with no filler, but it is under-specified rather than genuinely concise — brevity here comes at the cost of the usage and consequence information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive tool with full annotation coverage and a fully documented schema, so the essentials are present. It still leaves the blast radius (do environment variables and allowlists go with it?) and post-deletion state unstated, which matters for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; all three parameters, including the name-matching guard and the confirm flag, are documented in the schema. The description adds nothing beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (delete) plus resource (environment profile), and 'profile' distinguishes it from the sibling env_delete_variable, which removes a single variable rather than the whole environment. It stops short of naming that sibling explicitly, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no conditions for when to use this rather than env_delete_variable, env_switch, or env_rename, and no prerequisites or caveats. An agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_delete_variableB
Delete a variable from the active environment configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Variable name to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for a destructive mutation and discloses almost nothing: not whether deletion is permanent, whether the config is persisted automatically, or whether a missing key errors or is a no-op. It confirms a write occurs but adds no behavioral context beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, scope front-loaded after the verb, zero filler. Nothing is wasted and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with full schema coverage and no output schema, the description is minimally sufficient — an agent can call it. But as an unannotated destructive operation it should say more about irreversibility and missing-key behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100% ("Variable name to delete"), so the schema already does the work. The description adds nothing about key format, case-sensitivity, or qualification, which is the baseline-3 case for a fully documented single param.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Delete a variable") scoped to "the active environment configuration", which distinguishes it from env_delete (whole environment) and env_configure. It never names a sibling outright, so an agent must still infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb — no statement of when to prefer this over env_delete/env_set_variable, no prerequisites, and no note about deleting a non-existent key. An agent can guess the intent but gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_exportC
Export an environment configuration as a portable JSON object.
| Name | Required | Description | Default |
|---|---|---|---|
| environmentId | Yes | ID of the environment to export | |
| confirmSecrets | No | Must be true when includeSecrets is true | |
| includeSecrets | No | Include credentials and cookies instead of masking them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says the output is a portable JSON object but does not disclose whether export is read-only, whether secrets are masked by default, what permissions are required, or what happens if confirmSecrets is omitted when includeSecrets is true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for the core purpose, though that conciseness comes at the cost of behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is too thin. It omits critical safety context around secret export, return format expectations, and conditional parameter behavior, leaving the agent to rely entirely on the schema and assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema. The description adds only the general concept of portability and does not add meaning about the conditional relationship between includeSecrets and confirmSecrets beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Export an environment configuration as a portable JSON object.' An agent can tell this is an export operation rather than an import or mutation. It does not explicitly differentiate itself from siblings like env_import or project_export, but the resource scope is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus env_import, project_export, or env_get_variable. No prerequisites or exclusions are mentioned. The agent must infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_get_allowlistB
Get the current URL allowlist configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. "Get" implies a read, but it never states that the call is side-effect free, what happens if no allowlist is configured (empty vs default), or whether the allowlist is workspace- or environment-scoped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the key concept front-loaded. It is efficient, though its brevity is partly under-specification rather than tight writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, yet the description says nothing about the shape of the returned configuration (list of URLs? wildcard patterns? enabled flag?) or how it relates to env_set_allowlist. For a zero-param getter this is the main missing piece an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Get the current URL allowlist configuration" names a specific verb and resource, and the resource (allowlist) is distinctive enough to separate it from the other env_* siblings. It does not explicitly name its write counterpart env_set_allowlist, but the read/write split is still inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus env_set_allowlist or env_list, and no mention of scope (global vs per-environment) or preconditions. The agent must infer that this is the read side of the allowlist pair purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_get_variableC
Get the value of a specific variable from the active environment.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Variable name | |
| confirmSecret | No | Must be true when includeSecret is true | |
| includeSecret | No | Return a sensitive value instead of masking it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention the secret-handling behavior (masking vs. returning sensitive values) or that confirmSecret must be true when includeSecret is true, leaving the agent to infer from the schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and is free of unnecessary words. It could be slightly more informative, but it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no annotations or output schema, the description covers the core action but omits important context about secret handling and the relationship between includeSecret and confirmSecret. This gap makes it only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters, so the schema already explains their meaning. The description adds only the phrase 'specific variable', which lightly reinforces the key parameter but offers no additional semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (value of a specific variable from the active environment), clearly distinguishing it from list or set operations. However, it does not explicitly name sibling tools for comparison, so a 4 is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like env_list_variables or env_get_allowlist. It simply states the action without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_importC
Import an environment configuration from a portable JSON object.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Exported environment JSON object (from env_export) | |
| projectId | No | Optional: target project ID (default: active project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden yet says nothing about mutation semantics: does it create a new environment, overwrite an existing one with the same name, or merge into the active env? Questions of destructive impact, name collisions, required permissions, and response shape are all unaddressed for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the verb and resource with zero filler. Nothing in it is redundant or wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating import tool with a nested payload, no annotations, and no output schema, the description is too thin — an agent cannot predict what state the environment or project will be in after the call, or how failure and conflicts are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the nested data object and the optional projectId override are already documented in the schema. The description adds no format constraints, size limits, or nesting rules beyond restating the schema's content, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (import) and resource (environment configuration) plus the input form (portable JSON object). An agent can distinguish it from env_export as the inverse operation, though the description never names the sibling or clarifies how it differs from project_import.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use framing at all: nothing says whether to reach for this versus env_configure or env_set_variable when building an environment, and no preconditions (e.g., must the project exist first) are given. The only hint of intent, that the payload comes from env_export, lives in the schema parameter description rather than the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_listA
List all environments configured under the active project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden alone. It discloses the scoping constraint (active project) but not whether the call fails without an active project, whether it's a cheap read, or what each listed environment contains. For a zero-parameter read this is acceptable but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, and the scoping qualifier is included without padding. Nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should say at least roughly what is returned (environment names, IDs) and how it behaves when no project is active. It covers scope only, leaving the agent to discover the rest by calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema is trivially complete (100% coverage) and the description correctly introduces no parameter claims. No credit is possible beyond baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource with scope: 'List all environments configured under the active project.' An agent can distinguish it from env_list_variables (variables inside an environment) and project_list, though the description never explicitly names those distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase 'under the active project' – an agent can infer a project must be active, but the description gives no explicit when-to-use, no mention of env_get or env_list_variables as follow-up alternatives, and no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_list_variablesB
List all variables defined in the active environment.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmSecrets | No | Must be true when includeSecrets is true | |
| includeSecrets | No | Return sensitive variable values instead of masking them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing: not that values are masked by default, not that includeSecrets/confirmSecrets gate sensitive output, not that the operation is read-only. The one bit of behavior an agent most needs (that secrets are hidden unless explicitly requested) exists only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding or redundancy. It is appropriately sized, though the space saved is not reinvested in behavior or parameter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should explain what comes back (variable names plus masked values) and flag the secrets gate, but it says nothing about output shape or sensitivity. For a tool whose main risk is secret exposure, this leaves a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are self-documenting booleans with their dependency rule stated, so the baseline of 3 applies. The description adds no extra meaning about when or why to set includeSecrets.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all variables') and scopes it to the 'active environment', which separates it from env_list_variables-style siblings such as env_get_variable (single variable) and env_list. It does not explicitly name those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'active environment' implicitly tells the agent that env_switch must select the target first, but there is no explicit when-to-use guidance, no exclusions, and no pointer to env_get_variable for single-value lookups. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_renameC
Rename an existing environment profile.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New name for the environment | |
| environmentId | Yes | Database ID of the environment to rename |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It doesn't say whether names must be unique, whether the rename breaks references in saved requests or linked variables, whether it is reversible, or what identifier is returned — all material for a mutation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its terseness reflects under-specification rather than disciplined compression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description should at least address uniqueness and side effects on existing references. The schema is fully documented, but the behavioral contract of renaming is entirely missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (environmentId, name) are documented in the schema with clear meanings, so the description adds nothing beyond it. Baseline 3 applies when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rename) and resource (environment profile), which is enough to tell it apart from project_rename and env_configure by the resource noun. It does not explicitly name a sibling alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'an existing environment profile' hints that the environment must already exist, but there is no statement of when to use this versus env_configure, env_switch, or project_rename, and no prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_set_allowlistA
Configure explicit target domains allowed for outgoing requests. Empty denies all. Use private:host only for trusted internal hosts.
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes | List of safe domains |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses that an empty list denies all traffic and flags the private:host risk, but omits whether the call replaces or merges existing entries, whether it takes effect immediately, and what permissions are required — significant gaps for a security-sensitive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences, each carrying a distinct fact: what it configures, the empty-list behavior, and the private:host caveat. Nothing is redundant and the key constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers purpose, default behavior, and entry syntax. It is nearly complete; the main omission is replace-vs-merge semantics for an existing allowlist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single parameter is documented, and the description adds real meaning beyond the schema by explaining that an empty array denies all and that private:host entries should be reserved for trusted internal hosts. This directly informs how to populate the array.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: configuring the explicit allowlist of domains permitted for outgoing requests. This clearly distinguishes it from the read-only sibling env_get_allowlist. It stops short of naming that sibling or other alternatives explicitly, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides some operational guidance ('Empty denies all', 'Use private:host only for trusted internal hosts'), which implies when the tool matters, but never states when to use this versus env_get_allowlist or env_configure, nor any prerequisites. Usage context is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_set_variableB
Set a variable key-value pair inside the active environment configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Variable name | |
| value | Yes | Variable string/number value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a mutation. It never states whether setting an existing key overwrites it, whether the change persists to disk or is session-only, what permissions are needed, or what happens on failure — all material for a write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though the terseness comes partly at the cost of missing behavioral detail rather than being fully earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with full schema coverage and no output schema, the description is minimally adequate. The overwrite/persistence semantics of "set" remain unaddressed, which is the main gap for a write operation with zero annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema, so the baseline of 3 applies. The description's "key-value pair" wording confirms the two-parameter shape but adds no format, escaping, or type-coercion detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Set") plus resource ("variable key-value pair") and scope ("inside the active environment configuration"). It is distinguishable from env_get_variable and env_delete_variable by the write verb, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "active environment" implies the tool operates on whichever env is currently switched in, which is useful scoping, but the description gives no explicit when-to-use, when-not-to-use, or alternative (e.g. env_configure or env_import).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
env_switchB
Switch active environment within the project workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| environmentId | Yes | Database ID of the environment to switch to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about what 'switching' changes, whether the selection persists across requests or sessions, what happens if the environment ID is invalid, or what the call returns. For a state-changing operation this is a significant disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no filler, and the action appears first. It is efficient, though its brevity reflects under-specification rather than a deliberate minimalism.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, single-parameter tool with complete schema coverage and no output schema, the description is minimally adequate. However, with no annotations, it leaves the behavioral consequences of the switch and error conditions entirely undocumented, which an agent needs in order to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Database ID of the environment to switch to'), so the schema already explains it fully. The description adds no further detail such as how to obtain the ID, which is acceptable at the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (switch) and resource (active environment) scoped to the project workspace, so the action is unambiguous. It does not name or distinguish itself from the closely related sibling project_switch, which also changes the 'active' context, so an agent must infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the purpose statement; there is no explicit guidance on when to switch environments, no prerequisites (e.g., must a project be active first), and no mention of alternatives such as project_switch or env_list for discovering environment IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graphql_requestBDestructive
Send a GraphQL query/mutation to a GraphQL endpoint. Automatically injects credentials and variables.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | GraphQL endpoint URL (absolute or relative path) | |
| query | Yes | GraphQL query or mutation string | |
| headers | No | Additional request headers | |
| timeout | No | ||
| variables | No | GraphQL variables object (optional) | |
| operationName | No | GraphQL operation name (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/openWorld/not-idempotent, so the safety profile is covered. The description adds genuinely new behavior: credentials are injected automatically, meaning the agent does not need to supply auth headers, and variables are wired through. It stops short of saying whether mutation responses include partial errors or whether injected credentials can be overridden via the headers parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action first, no filler. The second sentence is slightly ambiguous ('injects variables' when variables is a caller-supplied parameter), which costs a point but not readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that can execute destructive mutations and has no output schema, the description says nothing about what comes back (GraphQL data/errors envelope) or how errors surface. Credential injection is covered, but URL resolution for relative paths and failure behavior are not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, with descriptions on url, query, headers, variables, and operationName, so the schema carries most of the meaning. The description adds nothing about the undocumented timeout parameter or the interaction between the variables parameter and the claimed automatic variable injection. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb (send) plus resource (GraphQL query/mutation) and target (GraphQL endpoint), which unambiguously identifies it as the GraphQL transport rather than a REST call. It never names the closest sibling, http_request, so the distinction is left for the agent to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over http_request, ws_connect, or a suite/test tool, and no mention of prerequisites such as which environment's credentials are injected or whether an active project is required. The agent must guess the selection criteria 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.
history_clearBDestructiveIdempotent
Delete logs from history table.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm history deletion | |
| olderThanSeconds | No | Optionally clear logs older than boundary seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so removals score against a lower bar. The description names the deletion target but does not disclose the critical behavioral fact that omitting olderThanSeconds wipes the entire history, nor whether deletion is recoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficiently written, though the brevity reflects under-specification rather than disciplined trimming of a richer statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, irreversible-looking operation with no output schema, the description never clarifies the blast radius (all history vs. time-bounded), what happens on confirm=false, or whether anything is returned. Annotations signal danger but not the scope needed to invoke safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the confirm and olderThanSeconds semantics are already fully documented in the schema. The description adds no interpretation of its own, which is acceptable at baseline 3 given the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete logs from history table'), which is clearly distinct from read-oriented siblings like history_list and history_get. It stops short of differentiating itself from history_export or clarifying the scope of what counts as a 'log'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus history_list/history_get/history_export, and no mention of a recommended backup step before destructive clearing. The caller must infer that this is the pruning operation rather than an archive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_compareB
Compare two request executions, checking metrics and structural JSON response body differences.
| Name | Required | Description | Default |
|---|---|---|---|
| id1 | Yes | First audit record ID | |
| id2 | Yes | Second audit record ID | |
| format | No | Diff output format: table (default) or unified (compact diff style) | table |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are given, so the description carries the full burden. It does disclose a meaningful behavioral trait — the body comparison is *structural* (schema/shape), not value-by-value, which prevents misuse. However it omits that this is a read-only operation, what happens if an ID does not exist or lacks a JSON body, and any limits on size of records compared.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the what and the compared facets arrive immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read/compare tool with full schema coverage and no output schema, the description is minimally sufficient but does not describe the shape of the diff result (e.g. table vs unified rendering, how metric deltas are presented), and no output schema exists to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: id1/id2 are labeled 'audit record IDs' and format has an enum with per-value explanation, so the schema does the heavy lifting. The description adds no extra semantics (e.g. whether IDs must belong to the same request or can be arbitrary), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare) and two specific resources (request executions), then narrows what facets are compared: metrics and structural JSON body differences. That is far more informative than the sibling history_get/history_list names imply, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, and no mention of the obvious alternatives (history_get to inspect a single record, history_list to find IDs). The agent must infer that id1/id2 come from history_list and that this tool is the diffing path rather than a lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_exportB
Export request history as a JSON array.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Optional: export only for a specific project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It does disclose one real behavioral trait — the return format is a JSON array — which is valuable since no output schema exists. However, it says nothing about whether exporting is non-destructive, whether it clears or preserves history (a live question given the history_clear sibling), or how large an export can get.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification given the tool has siblings that return overlapping data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter read tool this covers the essentials: what it does and what it returns. It is still thin on default scope (all projects when projectId is omitted) and on the read-vs-destructive question, which matters because history_clear sits right beside it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter (projectId, optional, scopes the export to one project) is fully documented in the schema. The description adds nothing beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Export') plus the resource ('request history') and the output shape ('JSON array'). It implicitly separates itself from history_list/history_get by framing this as an export rather than a query/list, but never names or contrasts those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to reach for this versus history_list or history_get, which return the same underlying data in a different form. The only usage hint is the optional project-scoping parameter inherited from the schema, not from the prose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_getA
Retrieve details of a specific request audit log by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Audit ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. 'Retrieve' implies a safe read, but the description does not mention permissions, behavior when the ID is missing, or whether results are cached or live. For a simple single-item read, this is minimally adequate rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no wasted words. It states the action and scope immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full schema coverage, the definition is sufficient to invoke it correctly. It could do slightly more to clarify what 'details' are returned, especially since there is no output schema, but the core invocation needs are met.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 'Audit ID'. The description adds no additional syntax, format, or meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Retrieve') and resource ('request audit log') scoped by ID, which is clear enough to distinguish it from list/compare siblings. It does not explicitly name the sibling alternative, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies this is the tool for fetching one known audit entry, contrasting implicitly with history_list. However, it does not state when to use it versus history_list, history_compare, or history_export, nor does it mention prerequisites or error conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_listB
List previous request-response audit records stored in the SQLite database.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dateTo | No | Filter records up to this ISO date/time (inclusive) | |
| method | No | Filter by HTTP method | |
| offset | No | ||
| dateFrom | No | Filter records from this ISO date/time (inclusive) | |
| statusCode | No | Filter by response status code | |
| urlKeyword | No | Filter by URL keyword | |
| environmentId | No | Filter logs by a specific environment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that records are request-response audit entries stored in SQLite, but omits read-only safety, pagination/ordering behavior, and return characteristics for an 8-parameter list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It states the operation and data source immediately, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no annotations and no output schema, the one-sentence description is too thin. It does not explain return structure or pagination behavior, and it leaves two parameters (limit, offset) undocumented, so an agent lacks context needed to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, with most filter parameters documented in the schema, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides, and limit/offset are undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('previous request-response audit records'), making the tool's purpose clear. It does not explicitly differentiate itself from siblings such as history_get, history_compare, history_clear, or history_export, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Listing implies the tool is for retrieving multiple history records, but the description gives no explicit when-to-use guidance, exclusions, or comparison to sibling tools like history_get or history_export. Usage is only implied by the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
http_requestADestructive
Send a RESTful HTTP request. Automatically injects credentials and cookies from the active environment. Evaluates assertions and logs request/response details to history database.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Request path or full URL | |
| body | No | Request payload (string or stringified JSON) | |
| method | No | HTTP method (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, or any custom method) | GET |
| params | No | ||
| headers | No | ||
| timeout | No | Request timeout in ms (overrides environment default) | |
| bodyType | No | json | |
| cacheTtl | No | Cache TTL in ms for GET/HEAD requests. Same URL within TTL returns cached response. Saves network calls. | |
| assertions | No | ||
| fileFields | No | File uploads: {"fieldName": "/path/to/file"} for form-data body type | |
| retryCount | No | Auto-retry count on network errors or 5xx (default: 0) | |
| retryDelay | No | Delay between retries in ms (default: 1000) | |
| returnBody | No | Set false to skip response body (silent mode). Returns only status + duration. Saves tokens. | |
| assertBefore | No | Conditional request: only return full response if condition is met (saves tokens on failures) | |
| jsonpathFilter | No | Extract specific parts of response payload | |
| confirmFileAccess | No | Must be true when fileFields reads local files | |
| maxResponseLength | No | Max response body length in chars (default: 15000). Set higher for full responses, lower to save tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations covering the risk profile (destructive=true, openWorld=true, idempotent=false), the description adds genuinely useful behavior: credentials and cookies are auto-injected from the active environment, assertions run automatically, and every request/response is persisted to the history database. It does not warn that non-GET methods can mutate remote state, which is the main residual gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then the two behaviors an agent most needs to know. No filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, nested-object, destructive, open-world tool with no output schema, the description covers environment injection and history logging but says nothing about the response shape or token-saving controls (returnBody, maxResponseLength, jsonpathFilter) that materially affect how the tool should be called.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 76% across 17 parameters, so the schema itself documents most fields. The description adds nothing parameter-specific — it only alludes to assertions and history logging, without clarifying bodyType, returnBody, jsonpathFilter, or confirmFileAccess semantics beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Send a RESTful HTTP request") and adds two distinctive behaviors: credential/cookie injection and assertion evaluation. It doesn't explicitly name sibling alternatives like graphql_request or the ws_* tools, so an agent must infer which transport to use, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: this is the generic HTTP transport, while graphql_request and ws_connect exist in the sibling set for other protocols. The description never says when to pick this over those, and offers no exclusions or prerequisites beyond the credential-injection note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_usage_guideA
Read the instructions and workflow guidelines for LLM agents to use this MCP server effectively (explains variables, interpolation, chaining, and websockets).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. 'Read' implies a non-mutating operation and the parenthetical discloses the content areas the guide covers, which is useful. However, it says nothing about return format, length, or whether it must be consulted before other tools, leaving meaningful behavioral gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a useful parenthetical enumerating covered topics; nothing extraneous. Minor redundancy between 'instructions' and 'workflow guidelines' costs little but keeps it just shy of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, annotation-free, output-schema-free documentation tool, the description covers what it is and what topics it explains. It would be stronger if it stated when in the workflow to call it (e.g., first call on an unfamiliar server), but nothing essential for invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly signals a no-input call by framing it as a plain 'Read'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (instructions and workflow guidelines for LLM agents using this MCP server), and enumerates the topics covered (variables, interpolation, chaining, websockets). No sibling tool is a documentation/help tool, so differentiation is implicit rather than stated, but an agent can still tell exactly what this does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to use this MCP server effectively' hints this is an onboarding/help read, but the description never says 'call this first' or 'call when unsure about variables/chaining syntax'. Usage is implied rather than prescribed, so an agent must infer when to reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
postman_importB
Import a Postman Collection v2 JSON file, generating a structured Markdown API reference.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Absolute path to the Postman Collection JSON file | |
| confirmFileAccess | Yes | Must be true to read the local file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden yet only discloses that it generates Markdown. It says nothing about which project the import lands in, overwrite/idempotency behavior, failure modes, or auth requirements for file access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the action and outcome front-loaded and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-param import with no output schema, the description covers the input and rough output, but omits target location (project scoping) and error/overwrite behavior an agent would want before invoking a mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so filePath and confirmFileAccess are already documented including the 'must be true' guard. The description adds nothing parameter-specific beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Import a Postman Collection v2 JSON file') plus the resulting output ('structured Markdown API reference'). It clearly differs from swagger_import by naming Postman v2, though it does not explicitly call out the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (importing a Postman collection for docs generation) but gives no explicit when/when-not or direction toward swagger_import or project_import as alternatives. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_createB
Create a new API testing project workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique name of the project (e.g. PaymentAPI) | |
| description | No | Optional project details |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the tool creates a workspace but does not mention required permissions, whether the new project becomes the active project, uniqueness enforcement beyond the schema, side effects, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero waste. It communicates the core operation efficiently without burying the purpose in unnecessary wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, with only two well-documented parameters and no nested objects or output schema. However, with no annotations, the description should ideally clarify behavioral details such as whether creation activates the project or what happens on duplicate names. It is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both the required unique name and optional description parameters. The description adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: creating a new API testing project workspace. It is clear what the tool does, though it does not explicitly differentiate itself from sibling project tools such as project_switch or project_rename.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. Creation is implied by the verb 'Create', but the description does not mention sibling tools or the conditions under which a new project should be created.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_deleteADestructiveIdempotent
Delete a project workspace (cascades and deletes its environments, credentials, and test history).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm cascading deletion | |
| projectId | Yes | Database ID of the project to delete | |
| expectedProjectName | Yes | Must exactly match the current project name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=true, so the description's job is to add specifics — and it does, enumerating exactly what is destroyed (environments, credentials, test history). It stops short of saying the deletion is permanent/irreversible or that a matching expectedProjectName is the guard, which would have pushed this to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the destructive action front-loaded and the cascade consequences parenthesized immediately after. Nothing can be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description covers the essential thing an agent needs — what disappears. The safety mechanics are carried by the schema (confirm, expectedProjectName) and annotations (destructive). Only the permanence/recoverability question is left unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (projectId, expectedProjectName, confirm) are already documented in the schema, including the confirm-must-be-true requirement. The description adds no extra meaning about how these interact with the cascade, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Delete a project workspace") and immediately clarifies the blast radius by naming the resources that go with it (environments, credentials, test history). That scope note is what separates it from the narrower env_delete sibling, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reach for this versus env_delete, project_rename, or project_export, and no stated preconditions or exclusions. An agent must infer from the word "cascades" that this is a last-resort operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_exportC
Export a project (including all its environments) as a portable JSON object.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to export | |
| confirmSecrets | No | Must be true when includeSecrets is true | |
| includeSecrets | No | Include credentials and cookies instead of masking them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about authorization requirements, whether masking is the default, how large the payload may be, or that the operation is non-destructive. 'Portable JSON object' is the sole hint at return shape, and it is thin for a tool that can include credentials.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the scope qualifier in parentheses and no filler. It is efficient, though the brevity borders on under-specification rather than pure economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param export with a secrets toggle and no output schema, the description covers what the tool produces at a high level but omits safety/permission context and the re-import counterpart. The fully documented schema compensates for much but not all of the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the confirmSecrets/includeSecrets dependency, so the schema does the heavy lifting ('Must be true when includeSecrets is true'). The description adds no meaning beyond that, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Export a project') and clarifies scope with 'including all its environments', which implicitly separates it from env_export and history_export. It stops short of naming the siblings it contrasts with, so an agent must infer the routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not guidance, and no mention of the obvious pairing with project_import for backup/migration workflows. The only usage-like signal is the scope note about environments, which is about content, not invocation conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_importC
Import a project (including all its environments) from a portable JSON object.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Exported project JSON object (from project_export) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that environments are imported too, which is useful, but it says nothing about overwrite/merge behavior, conflict handling, required permissions, or what the call returns – significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the verb and resource while adding the key scope detail. No wasted words or buried clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and a nested-object input, the description is under-specified. It omits whether an existing project may be overwritten, how conflicts are resolved, and what the caller receives, leaving the agent without essential behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100%, with the schema itself noting the object comes from 'project_export'. The description adds no additional meaning about the expected shape or nested fields, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Import a project') and adds meaningful scope ('including all its environments'), which distinguishes it from project_create and project_export. It does not explicitly name the sibling it is the inverse of or contrast with postman_import, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use or when-not-to-use guidance and does not mention alternatives such as project_create, project_export, or postman_import. The only hint of context is that the input comes from a portable JSON object, which the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_listB
List all project workspaces in the database.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden; 'List all' signals a non-mutating, unfiltered read, which is useful. However, it says nothing about ordering, pagination, whether it flags the active project, or the returned fields, and there is no output schema to fill that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every word contributes to identifying the resource and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description covers the action but not the shape of the result. A brief note on what each workspace entry contains would close the only meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly implies no filtering options exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (project workspaces), making the read-oriented listing purpose clear. It doesn't explicitly contrast with siblings like project_switch or project_export, but the verb alone differentiates it adequately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus project_switch or project_create; the agent must infer that this is a discovery step before switching. The word 'all' implies no filtering, but alternatives are never named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_renameC
Rename an existing project workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New unique name for the project | |
| projectId | Yes | Database ID of the project to rename |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden and mostly drops it. It does not say whether the rename is reversible, whether the name must be globally unique (only the schema hints at it), what happens if the projectId is invalid, whether the active project context is affected, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded, unambiguous, and free of filler. Its brevity, however, reflects under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with full schema coverage and no output schema, the description is minimally adequate. Missing are the safety profile (permanence, uniqueness constraint, error on unknown projectId) that would let an agent invoke it confidently without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: projectId ('Database ID of the project to rename') and name ('New unique name for the project') are documented inline. The description adds nothing beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (rename) and a specific resource (existing project workspace), so the agent knows exactly what the operation does. It does not distinguish this tool from nearby siblings such as project_create, project_delete, or env_rename, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Existing' is the only hint about preconditions, implying the project must already be present. There is no explicit when-to-use, when-not-to-use, or alternative (e.g., use project_create for new projects) to guide selection among the many project_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_switchC
Switch active project workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Database ID of the project to switch to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does not say whether the switch is session-scoped or persistent, whether it changes state for subsequent tool calls, what happens if the ID is invalid, or whether it requires the project to exist. 'Active project workspace' implies global mutable state but the consequences of invoking it are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action and object front-loaded and no wasted words. Its terseness is efficient but edges into under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-mutating switch with no annotations, no output schema, and no return-value information, the description omits the essentials an agent needs: persistence of the switch, error behavior on an unknown projectId, and any permission requirement. The tool is simple, but the gaps are the ones that affect correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already documents itself as the database ID of the target project. The description adds nothing beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: switching the active project workspace. An agent can distinguish it from project_list or project_delete, though the description never names the closely related env_switch, so it does not explicitly route between the two switch tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to switch versus when to read (project_list) or how this differs from env_switch, which appears in the sibling list. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suite_deleteCDestructiveIdempotent
Delete a saved test suite.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to confirm deletion | |
| suiteId | Yes | Database ID of the suite to delete | |
| expectedSuiteName | Yes | Must exactly match the saved suite name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that, which fits the reduced bar, but it also omits any note that the suite's contents are irrecoverably removed, so it leaves no added value over 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundancy. It is appropriately short, though the brevity comes at the cost of any operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully specifies the confirmation and name-matching requirements, so an agent can call the tool correctly from structured data alone. However, for an irreversible destructive operation, the description says nothing about what is lost or what the caller should verify, leaving a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: suiteId, expectedSuiteName, and confirm are all documented in the schema, including the exact-match and must-be-true semantics. The description contributes no additional parameter meaning, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a saved test suite'), which is unambiguous on its own. It does not differentiate itself from adjacent siblings such as suite_save, suite_load, suite_list, or test_run_suite, but the verb is distinct enough that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives, no mention of prerequisites, and no warning about the destructive outcome beyond the bare verb. The agent must infer everything about timing and risk from the single word 'Delete'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suite_listA
List all saved test suites under the active project.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. The word "List" and "saved" imply a non-mutating read of persisted state scoped to the active project, which is useful context, but it says nothing about ordering, result size, or whether an unselected project causes an error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the scope qualifier front-loaded at the end of the phrase; no filler. Slightly under-specified rather than verbose, but structurally sound.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only source of truth about this tool. For a simple zero-param list it is adequate to identify the call, but it leaves the return shape and the dependency on an active project unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no filtering inputs are accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("List") plus resource ("saved test suites") and a clear scope qualifier ("under the active project"). It distinguishes itself from suite_save/suite_load/suite_delete by naming the read/list action, though it does not explicitly reference those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "List all saved test suites under the active project" — an agent can infer this is the inventory call before suite_load or suite_delete. However, there is no explicit statement of when to use this versus suite_load, nor any prerequisite such as needing a project selected first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suite_loadC
Load a saved test suite by ID and execute it immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| suiteId | Yes | Database ID of the saved suite |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does disclose the critical side effect that the suite is executed immediately, but says nothing about what happens on an invalid or missing ID, whether execution is against the active environment, whether it blocks until tests finish, or what it returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the execution behavior front-loaded and zero filler. It is efficient, though the brevity borders on under-specification rather than tight completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description should at minimum explain the run-vs-load distinction from test_run_suite and what an invocation produces. Neither is present, so the agent is left to infer the tool's role among suite_list, suite_save, and test_run_suite.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single suiteId parameter is documented as the 'Database ID of the saved suite'. The description's 'by ID' merely restates the schema and adds no format, range, or example detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource (load a saved test suite) and adds the key qualifier that it executes immediately, which goes beyond the tool name. It does not, however, distinguish itself from the sibling test_run_suite, so an agent still cannot tell from the description alone which of the two to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says when to prefer this over test_run_suite, whether the suite must first be created with suite_save, or whether the currently selected environment matters. The execution side effect is stated but no selection criteria or preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suite_saveB
Save or update a named test suite in the database under the active project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Suite name (unique per project) | |
| steps | Yes | Array of step objects (same format as test_run_suite steps) | |
| description | No | Optional suite description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only that the write targets the database under the active project; it says nothing about whether saving an existing name overwrites or merges steps, whether that is destructive, what permissions are needed, or what is returned. For a mutation tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is one front-loaded sentence with no filler, and scope is stated before anything else. It is arguably too terse given the undisclosed upsert semantics, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a simple three-parameter schema, no output schema, and no annotations, the definition is close to sufficient, but an agent cannot tell from it whether an existing suite is overwritten or whether a result body comes back. The active-project dependency is covered, which is the main contextual unknown.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented, including the per-project uniqueness of `name` and the step format. The description adds only the active-project scoping, which the schema does not state, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair (save/update) and resource (named test suite) with an explicit scope (under the active project), which clearly separates it from suite_load, suite_list, and suite_delete. It stops short of naming those siblings explicitly, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Save or update' implies an upsert, so an agent can infer it is the write path versus suite_load's read path, but this is never stated. There are no explicit when-to-use conditions, no guidance on when to prefer this over suite_load, and no note on what happens when the name already exists in the project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swagger_importARead-onlyIdempotent
Import API routes and schemas from a local Swagger/OpenAPI file or remote URL, outputting a structured Markdown API Reference.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public URL to download swagger.json or openapi.json/yaml | |
| filePath | No | Absolute path to local JSON/YAML Swagger specification | |
| confirmFileAccess | No | Must be true when filePath is used |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered; the description adds the important behavioral fact that the operation returns a structured Markdown API Reference. With no output schema, this disclosure is genuinely valuable. It doesn't cover failure behavior for unreachable URLs or malformed specs, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the verb, both input modes and the output form front-loaded; nothing is redundant and nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-optional-parameter import tool with no output schema, the description covers sources and the return format, which is what an agent needs to decide and invoke. Minor gaps: no note on mutual exclusivity of url vs filePath or on the confirmFileAccess requirement beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a description, so the schema carries the semantics. The description only restates 'local file or remote URL' at a high level without adding format or constraint detail, which is the expected baseline-3 outcome.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Import') plus the resources ('API routes and schemas') and both source types (local file / remote URL), which clearly separates it from siblings like postman_import. It stops short of naming postman_import as the alternative importer, so the differentiation is by resource name rather than an explicit sibling reference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you have a Swagger/OpenAPI spec, local or remote), but gives no explicit when-not guidance and never contrasts with postman_import, the closest sibling. The 'filePath requires confirmFileAccess' prerequisite lives only in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_run_suiteB
Execute multiple sequential REST requests, extract dynamic fields to active environment variables, run assertions, and output a testing Markdown report.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | ||
| suiteName | Yes | Suite label | |
| dataSource | No | Data-Driven Testing: load test data from CSV/JSON file and run suite for each row. Use {{row.columnName}} in step fields. | |
| confirmFileAccess | No | Must be true when dataSource reads a local file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses two behaviors — sequential execution and writing extracted values into active environment variables (a real side effect) — but says nothing about failure handling (does it abort on the first failed assertion?), whether extracted variables persist after the run, or permission/file-read implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence covering the full pipeline with no filler. The comma-separated capability list is efficient, though it reads as an inventory rather than prioritized guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, no annotations, four parameters and deeply nested step/assertion objects, the description omits data-driven mode, the report's contents, and failure semantics. An agent would have to infer too much about how errors in one step affect the rest of the suite.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema largely documents the parameters; the description only aligns with extractVariables ('extract dynamic fields to active environment variables'). It adds no guidance on steps structure, assertion semantics, or when dataSource/confirmFileAccess are needed beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb (execute) with a clear resource (multiple sequential REST requests) plus the additional behaviors — variable extraction, assertions, Markdown report. 'Multiple sequential' implicitly separates it from the single-request http_request sibling, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the enumeration of capabilities (test-suite style execution), but the description never says when to pick this over http_request or suite_save/suite_load, nor does it state prerequisites such as an active environment or the confirmFileAccess requirement for dataSource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_closeC
Close connection.
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden and delivers almost none: nothing about whether this is idempotent, what happens to in-flight or buffered messages, what error an unknown/closed connectionId produces, or that it is destructive to the session state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words, zero waste and front-loaded, but this is brevity by omission rather than tight writing. It is appropriately sized only for a tool whose behavior needs no explanation, which is not the case here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A state-changing lifecycle tool with no annotations, no output schema, and an undocumented required parameter. An agent cannot tell whether closing is reversible, whether it frees the connectionId for reuse, or what a success response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter connectionId has 0% schema description coverage, and the description adds nothing about it — not where the ID comes from (presumably ws_connect or ws_list), nor whether it is a local handle or a server-side identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Close connection" names a specific verb and object, which is enough to identify it as the teardown counterpart of ws_connect. However it never says which kind of connection (WebSocket) or scopes it against siblings like ws_list/ws_read, so the purpose is only inferable from the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus simply letting a session lapse, no prerequisite (must ws_connect first), and no mention of what to do with an unread buffer before closing. The agent must guess the lifecycle rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_connectA
Open a persistent WebSocket connection, backed by headers and cookies from active environment. Returns connectionId.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ws:// or wss:// URL (can be path if base URL matches) | |
| headers | No | ||
| timeout | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-read-only, open-world, non-idempotent operation. The description adds useful context beyond that: the connection is persistent and is backed by headers and cookies from the active environment. It stops short of explaining timeout behavior or connection lifecycle constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with zero waste, front-loading the action and then the return value. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It is complete enough to make the basic call because the required url parameter is documented in the schema and the return value is named. However, for a persistent connection tool it omits important lifecycle context such as when to close the connection, what timeout does, and how the connection interacts with ws_send/ws_read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description must carry more weight, but it says nothing about the optional headers object or the timeout parameter. Its mention of environment-backed headers and cookies may even be confused with the explicit headers parameter, and it does not clarify timeout semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Open a persistent WebSocket connection,' and adds that it returns a connectionId. This clearly separates it from ws_send, ws_read, ws_close, and ws_list by action, though it does not explicitly call out those siblings as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: opening a connection naturally precedes ws_send/ws_read and should pair with ws_close, but the description never states when to use this tool versus those siblings. There is no explicit when-not guidance or lifecycle instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_listB
List active socket connection IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. "List" implies a non-destructive read, but it does not state whether the result is scoped to this client/session, whether closed or stale connections are excluded, or what the return shape is (bare array of IDs vs objects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-output-schema listing tool the description is minimally viable — it names the returned artifact. But with no annotations and no output schema, it should say what a caller does with the IDs (e.g., pass to ws_read/ws_send) and whether the list is per-client or global.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Nothing in the text wrongly implies optional filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List active socket connection IDs" gives a specific verb (list) and resource (active socket connections), which cleanly separates it from the sibling action tools ws_connect, ws_send, ws_read and ws_close. It stops short of explicitly naming those siblings or stating that the returned IDs are the handles those tools consume, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is offered: nothing says to call this before ws_send/ws_read/ws_close to obtain a valid connection ID, nor whether it is needed after ws_connect. An agent must infer the workflow from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_readB
Read the latest buffered messages. Can wait for specific regex pattern to arrive.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| timeout | No | ||
| connectionId | Yes | ||
| waitForPattern | No | Wait for specific message to be logged |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose genuinely useful behavior — messages are buffered and a read can block waiting for a pattern — but it omits whether reading drains or preserves the buffer, what timeout does by default, or how it fails on a closed/missing connection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the primary action front-loaded and the optional wait mode second. No waste, though the terseness leaves little room for the missing behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Placeholder check: this should be lower. For a 4-parameter, no-annotation, no-output-schema tool, the description says nothing about return shape (array of messages? count? empty result?), timeout semantics, or buffer-consumption behavior — substantial gaps an agent needs filled before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, and the one documented parameter (waitForPattern) is the only one the description touches. limit, timeout, and the required connectionId get no added meaning — no units for timeout, no cap semantics for limit, no source for connectionId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read the latest buffered messages', with the added capability of waiting for a regex pattern. It reads as a message-consumption tool distinct from ws_send/ws_close/ws_list, though it never names those siblings to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied rather than stated: read buffered messages, optionally blocking until a pattern arrives. There is no guidance on when to prefer this over ws_list, when to use the wait mode versus a plain poll, or what the required connectionId should come from (ws_connect/ws_list).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ws_sendC
Send a text or JSON frame down a WebSocket connection.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Message payload | |
| connectionId | Yes | ID returned by ws_connect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about what happens if the connection is closed or unknown, whether the call blocks until the frame is flushed, or how a JSON payload must be formatted/serialized. For a write-side network operation with zero annotation coverage this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler and the key distinction (text vs JSON frame) surfaced immediately. It is perhaps slightly too terse for a network mutation, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple two-parameter tool with full schema coverage and no output schema, so the description does not need to explain return values. However, it omits the failure/error behavior and the connection-lifecycle dependency, which an agent calling a send operation would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'message' (payload) and 'connectionId' (from ws_connect) are documented in the schema. The description adds no format, size, or framing detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Send') and resource ('a text or JSON frame down a WebSocket connection'), which is clearly distinct from ws_read, ws_close, and ws_connect in the sibling list. It stops short of naming those siblings explicitly, so an agent must infer the routing rather than being told.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no prerequisites stated in the description. The requirement for a live connection is only inferable from the schema's 'ID returned by ws_connect' text, not from the description itself.
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.
42 tool updates
v1.0.4- First observed
db_reset - First observed
db_status - First observed
env_configure - First observed
env_delete - First observed
env_delete_variable - First observed
env_export - First observed
env_get_allowlist - First observed
env_get_variable - First observed
env_import - First observed
env_list - First observed
env_list_variables - First observed
env_rename - First observed
env_set_allowlist - First observed
env_set_variable - First observed
env_switch - First observed
graphql_request - First observed
history_clear - First observed
history_compare - First observed
history_export - First observed
history_get - First observed
history_list - First observed
http_request - First observed
mcp_usage_guide - First observed
postman_import - First observed
project_create - First observed
project_delete - First observed
project_export - First observed
project_import - First observed
project_list - First observed
project_rename - First observed
project_switch - First observed
suite_delete - First observed
suite_list - First observed
suite_load - First observed
suite_save - First observed
swagger_import - First observed
test_run_suite - First observed
ws_close - First observed
ws_connect - First observed
ws_list - First observed
ws_read - First observed
ws_send
TDQS
Scored across 42 tools
Tools are grouped by clear resource prefixes (project_, env_, ws_, history_, suite_, db_) plus dedicated protocol tools (http_request, graphql_request), so most selections are unambiguous. The main overlap is test_run_suite vs suite_load (which also executes immediately) and env_configure vs env_set_variable, but descriptions distinguish these adequately.
The dominant convention is resource_action (project_create, env_set_variable, ws_connect, history_compare, suite_save), applied consistently across nearly all tools. Minor deviations like mcp_usage_guide and test_run_suite break the pattern slightly but remain readable and predictable.
42 tools is heavy for what is essentially an API-testing client, and the surface exceeds the 25-tool threshold where each tool clearly earns its place. Several clusters (five env variable tools, five ws tools, five history tools, four suite tools) could be consolidated without losing capability.
Coverage is strong across the domain: full project and environment lifecycles, import/export, WebSocket sessions, history audit/compare, and saved suites. The main gap is the absence of standalone named-request CRUD outside suites, so reusable single requests can only live in a suite.
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI access to Swagger by SmartBear.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that dynamically converts any OpenAPI or REST API into MCP tools, allowing for real-time server switching and schema reloading. It supports variable substitution for headers and bodies, enabling seamless authentication and interaction with multiple API environments.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that automates Playwright-based UI and API testing, supporting test case generation from requirements or API specs, and execution with detailed reports.8 npm1MIT
- AlicenseNot gradedqualityDmaintenanceA standalone MCP server for API testing and management, allowing AI assistants to interact with RESTful APIs through natural language.10 npm29MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for end-to-end API testing with PostgreSQL integration, HTTP requests, Go build automation, and debugging support.1MIT