Postman
OfficialThe Postman MCP Server connects AI tools to Postman's API platform, enabling AI agents and assistants to manage Postman resources, automate workflows, and interact using natural language.
Capabilities:
Collection Management: Create, update, duplicate, and retrieve collections; add requests and responses; run collections with environment variables and iteration control; sync bidirectionally with API specifications.
Workspace Management: Create and manage workspaces with different visibility types (personal, private, public, team, partner); list and filter workspaces by type and creator.
Environment Management: Create, update, and retrieve environments; manage environment variables including secret and default types with descriptions.
API Specification Management: Create and manage single or multi-file specifications (OpenAPI 3.0, AsyncAPI 2.0); generate collections from specs and specs from collections; sync specifications and collections bidirectionally.
Mock Server Management: Create, update, publish, and retrieve mock servers linked to collections.
Code Generation: Generate production-ready client code from API definitions (available in "Code" tool configuration).
Discovery & Search: Get authenticated user information; retrieve entities by tags; check status of asynchronous tasks; discover enabled tools.
Advanced Features: Support for multiple authentication types (Basic, Bearer, OAuth1/2, AWS Signature, JWT, API Key, and more); configure protocol profiles (SSL, redirects, HTTP versions, TLS); handle async operations with polling.
Multiple Tool Configurations: Operate in Minimal (37 essential tools), Full (100+ tools), or Code (code generation) modes to suit different use cases.
Provides comprehensive tools for managing Postman workspaces, collections, environments, and API requests. Enables programmatic interaction with the Postman API including creating, updating, and deleting collections, managing environments, and performing API operations.
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., "@Postmanrun the latest test suite from my 'Payment API' collection"
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.
Postman MCP Server
The Postman MCP Server implements the Model Context Protocol (MCP) to connect AI agents and coding assistants — including Claude Code, Cursor, VS Code Copilot, GitHub Copilot CLI, and Gemini CLI — directly to your Postman workspaces, collections, specifications, and environments.
Postman also offers the server as an npm package.
For the full installation guide with agent-specific setup, see Postman's MCP Server product page.
Postman MCP Server collection
The Postman MCP Server collection is the quickest way to explore, test, and connect to the Postman MCP Server. Use it to:
Browse the complete list of available tools across all configurations.
Connect to and test the local server.
Related MCP server: Postman MCP Generator
Tool configurations
Minimal — (Default) Only includes essential tools for basic Postman operations. Ideal for users who want to modify a single Postman element, such as collections, workspaces, or environments.
Code — Includes tools to generate high-quality, well-organized client code from public and internal API definitions. Ideal for users who need to consume APIs or get API context to their agents.
Full — Includes all available Postman API tools (100+ tools). Ideal for users who engage in advanced collaboration and Postman's Enterprise features.
Learn — Searches Postman Docs for guides, tutorials, and reference content. Ideal for agents who need to discover Postman features, look up API concepts, or find learning resources.
Authentication
For the best developer experience and fastest setup, use OAuth on the remote server (https://mcp.postman.com). OAuth is fully compliant with the MCP Authorization specification and requires no manual API key configuration.
The EU remote server and the local server support only Postman API key authentication.
Quick start
Remote (any OAuth-compatible MCP host):
Add this URL to your MCP host's configuration:
https://mcp.postman.com/minimalChange /minimal to /code or /mcp for Code or Full mode. For EU or API key auth, pass Authorization: Bearer <POSTMAN_API_KEY> as a header.
Local:
npx @postman/postman-mcp-serverAdd --code or --full for Code or Full mode. Set POSTMAN_API_KEY as an environment variable.
For IDE-specific setup instructions, see the following table. For more information, see the Postman MCP Server docs.
Supported agents and IDEs
Agent / IDE | Remote | Local |
Claude Code | ||
Claude Desktop | ||
Cursor | ||
VS Code | ||
Codex | ||
Antigravity CLI | ||
GitHub Copilot CLI | ||
Kiro | ||
Docker | — |
EU support
The Postman MCP Server supports the EU region for remote and local servers:
For streamable HTTP, the remote server is available at
https://mcp.eu.postman.com/mcp(Full),https://mcp.eu.postman.com/code, andhttps://mcp.eu.postman.com/minimal.For the STDIO public package, use the
--region euflag, or set thePOSTMAN_API_BASE_URLenvironment variable directly.OAuth isn't supported for the EU server. The EU remote server only supports API key authentication.
Use cases
API Testing — Continuously test your API using your Postman collection. Use the local server to test local APIs, as the remote server won't have network access to your workstation.
Code synchronization — Keep your code in sync with your Postman Collections and specs.
Collection management — Create and tag collections, update documentation, add comments, or perform actions across multiple collections without leaving your editor.
Workspace and environment management — Create workspaces and environments, plus manage environment variables.
Automatic spec creation — Create specs from your code and use them to generate collections.
Client code generation — Generate production-ready client code that consumes APIs following best practices and project conventions.
Docker
For Docker setup and installation, see DOCKER.md.
Contributing
Bug reports, tool requests, and documentation fixes are all welcome — see CONTRIBUTING.md.
The MCP tool definitions and the server implementation here are synced from Postman's
internal source of truth, so changes to files under src/ can't be merged in this
repository — but issues are how those changes get made, and we credit contributions
that ship. Documentation and repository tooling accept pull requests directly.
Found a security issue? See SECURITY.md — please don't open a public issue.
Questions and support
See Add your MCP requests to your collections to learn how to use Postman to perform MCP requests.
Visit the Postman Community to share what you've built, ask questions, and get help.
You can connect to both the remote and local servers and test them using the Postman MCP Server collection.
Report bugs and request tools in GitHub Issues. See SUPPORT.md for which channel fits your question.
Keywords
Model Context Protocol · MCP Server · Postman · AI Agents · Claude Code · Cursor · VS Code · Specifications · REST API · API Testing · TypeScript · OpenAPI
Available Tools
42 toolscreateCollectionCreate a collectionBInspect
Creates a collection using the Postman Collection v2.1.0 schema format.
Note:
If you do not include the `workspace` query parameter, the system creates the collection in the oldest personal Internal workspace you own.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes | The workspace's ID. | |
| collection | No | Information about the collection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the operation non-read-only, non-destructive, and non-idempotent. The description adds one useful behavioral detail beyond that—the default workspace behavior when the workspace parameter is omitted—but it still does not reveal validation behavior, authorization requirements, or what happens on repeated identical calls. The added value is moderate but incomplete.
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 sentences with no filler: the first defines what the tool does and includes the schema format link; the second is a clearly separated default‑behavior note. The most important piece (creates a collection) is front-loaded, and the note is compact.
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 collection body is exhaustively specified in the schema and the safety annotations cover the core misuse, so the description can be lightweight. Still, no output schema exists and the description does not state what a successful call returns, nor does it mention any prerequisites such as workspace-level permissions. The tool is adequately described for basic invocation but leaves return behavior and preconditions undetermined.
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 already documents both parameters with high coverage, so the description does not need to re-explain them. The only added semantic note about the workspace parameter being optional is at odds with the schema's requirement of workspace, which can mislead an agent into constructing an invalid request. This makes the description's extra parameter information a drawback rather than a benefit.
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 ('Creates') and resource ('a collection') with the exact Postman Collection v2.1.0 schema format, giving a clear and unambiguous purpose. It is easy to distinguish from sibling tools like createCollectionRequest, generateCollection, or duplicateCollection without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance relative to the many sibling create/update tools; it never names an alternative or states conditions for choosing this tool. The note about workspace default is about behavior rather than use-case selection, and it creates ambiguity because it says the workspace can be omitted while the input schema marks it as required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCollectionRequestCreate a requestAInspect
Creates a request in a collection. For a complete list of properties, refer to the Request entry in the Postman Collection Format documentation.
Note:
It is recommended that you pass the `name` property in the request body. If you do not, the system uses a null value. As a result, this creates a request with a blank name.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The request's URL. | |
| auth | No | The request's authorization settings. | |
| data | No | The request body's form or urlencoded data. | |
| name | No | The request's name. It is recommended that you pass the `name` property in the request body. If you do not, the system uses a null value. As a result, this creates a request with a blank name. | |
| events | No | The request's pre-request and test scripts. | |
| folder | No | The folder ID in which to create the request. By default, the system creates the request at the collection level. | |
| method | No | The request's HTTP method. | |
| dataMode | No | The request body's data mode. | |
| headerData | No | The request's headers. | |
| dataOptions | No | Additional options for the request body data. | |
| description | No | The request's description. | |
| queryParams | No | The request's query parameters. | |
| rawModeData | No | The request body's raw mode data. | |
| collectionId | Yes | The collection's ID. | |
| graphqlModeData | No | The request body's GraphQL mode data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a behavioral detail that omitting 'name' results in a blank name, which goes beyond the schema. However, it does not disclose idempotency, side effects, or what happens on error. The annotations already indicate readOnlyHint=false and destructiveHint=false, so there is no contradiction, but the behavioral context is limited to the null-name note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose. The note about name is concise and relevant. The external documentation link adds value without overloading the expression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not explain what the tool returns or how the generated collection request is identified. It also does not mention that collectionId is required or the implications of folder placement, leaving an important gap for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all 15 parameters, so the schema provides the parameter meaning and the description adds no significant extra insight beyond the external documentation link. The name recommendation is repeated from the schema, offering no additional parameter 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 clear states a specific verb and resource: 'Creates a request in a collection.' It distinguishes itself from siblings like createCollection and createCollectionResponse by specifying 'request' and the container 'collection'.
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 tool is for creating new requests in a collection, but it does not explicitly state when to use it vs. updateCollectionRequest or other creation tools. The note about name is a practical recommendation, but it does not provide explicit 'when to use' or 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCollectionResponseCreate a responseBInspect
Creates a request response in a collection. For a complete list of request body properties, refer to the Response entry in the Postman Collection Format documentation.
Note:
It is recommended that you pass the `name` property in the request body. If you do not, the system uses a null value. As a result, this creates a response with a blank name.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The associated request's URL. | |
| mime | No | The response's MIME type. | |
| name | No | The response's name. It is recommended that you pass the `name` property in the request body. If you do not, the system uses a null value. As a result, this creates a response with a blank name. | |
| text | No | The raw text of the response body. | |
| time | No | The time taken by the request to complete, in milliseconds. | |
| method | No | The associated request's HTTP method. | |
| status | No | The response's HTTP status text. | |
| cookies | No | The response's cookie data. | |
| headers | No | The response's headers. | |
| request | Yes | The parent request's ID. | |
| dataMode | No | The associated request body's data mode. | |
| language | No | The response body's language type. | |
| dataOptions | No | Additional options for the associated request body data. | |
| description | No | The response's description. | |
| rawDataType | No | The response's raw data type. | |
| rawModeData | No | The associated request body's raw mode data. | |
| collectionId | Yes | The collection's ID. | |
| responseCode | No | The response's HTTP response code information. | |
| requestObject | No | A JSON-stringified representation of the associated request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false (write operation) and destructiveHint=false. The description adds a useful behavioral note: omitting `name` results in a null value and a blank response name. This adds value beyond the annotations, though it doesn't discuss other behaviors like required dependency on an existing request or error cases. Given the annotation coverage, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a single purpose sentence followed by a focused, bolded 'Note' about the `name` property. The core purpose is front-loaded, and the note earns its place by flagging a common pitfall. Slightly more detail could be added, but overall it is appropriately sized for the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with 19 parameters and no output schema, the description is reasonably complete given the schema's 100% parameter coverage and the external documentation link. However, it does not explain what happens on success (e.g., returned object or status), any validation constraints, or dependencies on an existing request—which an agent might need since there is no output schema to clarify return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 19 parameters including enums and nested structures. The description adds a note about the `name` property recommendation, but this same detail is already present in the schema's `name` property description ('It is recommended that you pass the `name` property...'). Therefore the description adds minimal value beyond the schema, warranting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Creates a request response in a collection.' This is specific enough to understand the operation, but it does not explicitly differentiate from close siblings like `createCollectionRequest` or `updateCollectionRequest`, relying on the name's 'Response' component to hint at the distinction. Overall, the purpose is clear and not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are no exclusions, prerequisites, or mentions of sibling tools like `createCollectionRequest` to clarify context. The only contextual note is the recommendation about the `name` property, which is a parameter-level detail rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createEnvironmentCreate an environmentAInspect
Creates an environment.
Note:
The request body size cannot exceed the maximum allowed size of 30MB.
If you receive an HTTP `411 Length Required` error response, manually pass the `Content-Length` header and its value in the request header.
If you do not include the `workspace` query parameter, the system creates the environment in the oldest personal Internal workspace you own.
Only shared variable values can be modified through the Postman API. A shared variable is an environment variable with its value synced and stored in the Postman cloud, and can be accessed by your teammates in the environment's workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes | The workspace's ID. | |
| environment | No | Information about the environment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: request body size limit (30MB), handling of 411 error, default workspace selection, and the limitation on modifying only shared variable values. These details help the agent understand side effects and constraints without contradicting the readOnlyHint=false annotation.
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 main description is concise, and the note is structured with bullet points. However, the note about shared variables is lengthy and could be trimmed, though it is relevant. Overall, it is not excessively verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers operational details like size limits and error handling, but it does not mention the success return value or any prerequisites. The workspace parameter discrepancy (optional in description vs required in schema) leaves some ambiguity. Given the tool's complexity and lack of output schema, more detail on creation outcomes would be helpful.
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 baseline is 3. The description adds meaningful semantics for the workspace parameter (defaults to oldest personal Internal workspace when omitted) and for the values parameter (only shared variable values can be modified via API). However, there is a contradiction: the schema marks workspace as required, while the description implies it is optional, which could confuse the agent.
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 starts with 'Creates an environment.' which clearly states a specific verb and resource. It distinguishes from sibling tools like createCollection and createWorkspace by specifically targeting environments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about default workspace behavior and error handling, but does not explicitly state when to use this tool versus alternatives (e.g., updateEnvironment). There is no mention of exclusions or comparison with sibling create tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createMockCreate a mock server (provide collection UID)AInspect
Creates a mock server in a collection.
Pass the collection UID (ownerId-collectionId), not the bare collection ID.
If you only have a `collectionId`, resolve the UID first:
Prefer GET `/collections/{collectionId}` and read `uid`, or
Construct `{ownerId}-{collectionId}` using ownerId from GET `/me`:
For team-owned collections: `ownerId = me.teamId`
For personal collections: `ownerId = me.user.id`
Use the `workspace` query to place the mock in a specific workspace. Prefer explicit workspace scoping.
| Name | Required | Description | Default |
|---|---|---|---|
| mock | No | Information about the mock server to create. | |
| workspace | Yes | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-readonly, non-idempotent, and non-destructive. The description adds a meaningful behavioral requirement: the collection property must be a UID (ownerId-collectionId), not a bare ID, and gives two ways to resolve it. It also clarifies workspace placement, going beyond the structured annotation data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then uses short actionable bullets for UID resolution and workspace guidance. Every line earns its place: the UID requirement is essential, the resolution steps are compact, and the workspace preference is a one-line reinforcement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the schema fully documents the mock/name/private/environment fields and the description covers the non-obvious UID requirement and workspace handling, the agent has everything needed to construct a valid call. No output schema exists, so return values do not need explanation. The description closes the main correctness gap left by 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?
Though schema coverage is 100%, the description materially enriches the `collection` parameter by warning that bare IDs are wrong and explaining how to derive the UID. It also upgrades `workspace` from a simple ID to a placement scoping hint with the instruction to prefer explicit workspace scoping. This adds high-value meaning beyond the JSON Schema descriptions.
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 'Creates a mock server in a collection,' a clear verb-resource statement that identifies the tool's core action. The title and description together differentiate createMock from the sibling updateMock, publishMock, getMock, and getMocks.
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 concrete when-to-use guidance by requiring the collection UID and providing a resolution path (GET /collections/{id}, GET /me) and by recommending explicit workspace scoping. It does not explicitly say 'use updateMock when the server already exists,' so it misses formal alternative comparison, but it is far above merely implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createSpecCreate a specAInspect
Creates an API specification in Postman's Spec Hub. Specifications can be single or multi-file.
Note:
Postman supports OpenAPI (2.0, 3.0, and 3.1), AsyncAPI (2.0 and 3.0), protobuf (2 and 3), GraphQL, and Smithy specifications.
If the file path contains a `/` (forward slash) character, then a folder is created. For example, if the path is the `components/schemas.json` value, then a `components` folder is created with the `schemas.json` file inside.
Multi-file specifications can only have one root file.
Files cannot exceed a maximum of 12 MB in size.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The specification's name. | |
| type | Yes | The type of API specification. | |
| files | Yes | A list of the specification's files and their contents. | |
| workspaceId | Yes | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as a write operation (readOnlyHint:false), and the description adds valuable behavioral details: file size limit (12 MB), folder creation when paths contain '/', and the requirement that multi-file specs have exactly one ROOT file. These constraints go beyond the schema and help set expectations.
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 front-loaded with the primary action, followed by a focused bullet list of five relevant notes. No redundant content; each note addresses a likely usage question (supported formats, folder behavior, file size).
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 create operation with a complex 'files' array, the description covers supported formats, folder creation, root file constraints, and file size limits. It doesn't describe the return value or error conditions, but given the annotations and schema, this is largely sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all four parameters. The description adds meaningful context about the 'files' parameter, specifically how path separators create folders and the ROOT/DEFAULT file type requirement for multi-file specs, which is not fully evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Creates an API specification in Postman's Spec Hub', specifying the action and resource. It also distinguishes itself by mentioning single or multi-file specs, making it clear this creates a spec rather than merely adding files to an existing one (as with createSpecFile).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides rich context about supported formats and constraints, but it doesn't explicitly state when to use this tool versus createSpecFile or other spec-related siblings. There's no explicit alternative or exclusion, so an agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createSpecFileCreate a spec fileAInspect
Creates a file for an OpenAPI or a protobuf 2 or 3 specification.
Note:
If the file path contains a `/` (forward slash) character, then a folder is created. For example, if the path is the `components/schemas.json` value, then a `components` folder is created with the `schemas.json` file inside.
Creating a spec file assigns it the `DEFAULT` file type.
Multi-file specifications can only have one root file.
Files cannot exceed a maximum of 10 MB in size.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The file's path. Accepts JSON or YAML files. | |
| specId | Yes | The spec's ID. | |
| content | Yes | The file's stringified contents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive, non-idempotent operation. The description adds valuable behavioral details beyond annotations: folder creation when '/' is in the path, DEFAULT file type assignment, single root file limit for multi-file specs, and a 10 MB file size cap. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single-sentence purpose followed by four focused bullet points. It front-loads the main action and uses formatting that makes the additional notes easy to scan. Every sentence contributes useful information (folder behavior, file type, root file rule, size limit).
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 create operation with no output schema and full annotation coverage, the description covers creation behavior, file type, size limits, and multi-file constraints. It does not explain response behavior or what happens if the file already exists, but the annotations (non-destructive) and sibling context mitigate that gap. Overall sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters with descriptions (100% coverage), so the baseline is 3. The description adds specific semantic value for the 'path' parameter—explaining that a forward slash triggers folder creation—which goes beyond the schema's 'file's path' description. It does not add much for 'specId' or 'content', but the path insight is meaningful.
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 ('Creates') and resource ('a file for an OpenAPI or a protobuf 2 or 3 specification'), clearly distinguishing it from sibling tools like createSpec (which creates a spec) and updateSpecFile (which modifies). It also scopes the file types supported, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: to create a file within a spec, with notes about folder creation and multi-file root constraints. It does not explicitly name alternatives, but the context of 'file for a specification' reasonably separates it from createSpec. The note on multi-file roots adds usage-relevant guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createWorkspaceCreate a workspaceAInspect
Creates a new workspace.
Note:
This endpoint returns a 403 `Forbidden` response if the user does not have permission to create workspaces. Admins and Super Admins can configure workspace permissions to restrict users and/or user groups from creating workspaces or require approvals for the creation of team workspaces.
Private and Partner Workspaces are available on Postman Team and Enterprise plans.
There are rate limits when publishing public workspaces.
Public team workspace names must be unique.
The `teamId` property must be passed in the request body if Postman Organizations is enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Information about the workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish non-readonly, non-destructive, open-world behavior, so the bar is lower; the description clears it by disclosing concrete failure behavior (403), rate-limit constraints on publishing, public workspace name uniqueness, and the conditional teamId requirement. These operational details add genuine context beyond the annotation hints, though no response-format or rollback info is 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?
The description is front-loaded with the one-sentence purpose followed by five tightly-scoped bullets, each carrying operational weight—permissions, plan restrictions, rate limits, naming, and conditional requirements. Every sentence earns its place, though it's slightly long for the simplest read of the action.
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 create operation with no output schema, the description covers the key edge cases: permission failures, plan limits, uniqueness, and a conditional required field. It's thorough given the tool's simplicity, leaving no major operational gap, though it doesn't describe the returned workspace object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the nested workspace object fully documented, so the baseline is 3. The description's teamId note is duplicative of the schema's own teamId property description, and it adds no new parameter semantics beyond what the schema captures.
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 the specific verb-resource pairing 'Creates a new workspace,' which unambiguously states the operation and target. This clearly distinguishes it from siblings like getWorkspaces, getWorkspace, and updateWorkspace in the broader CRUD family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides rich operational context—403 Forbidden behavior when permissions are lacking, rate limits on public workspaces, and name-uniqueness constraints—which implies when the call will fail. However, it never explicitly tells the agent when to select this tool over alternatives (e.g., updateWorkspace for modifications), so usage guidance 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.
duplicateCollectionDuplicate a collectionAInspect
Creates a duplicate of the given collection in another workspace.
Use the GET `/collection-duplicate-tasks/{taskId}` endpoint to get the duplication task's current status.
| Name | Required | Description | Default |
|---|---|---|---|
| suffix | No | An optional suffix to append to the duplicated collection's name. | |
| workspace | Yes | The workspace ID in which to duplicate the collection. | |
| collectionId | Yes | The collection's unique ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the description's 'creates' is consistent. It adds valuable behavioral context by indicating the operation is asynchronous (via the status endpoint) and not destructive, going beyond the basic write-operation hint. It does not detail permissions or potential side effects, but the async nature is key context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the core purpose, and the second provides an essential follow-up action (checking status). No redundant words, and the critical information is front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description points to the status endpoint, implicitly suggesting the response contains a task ID, but does not explicitly define the return value. It covers the main flow (kick off duplication, then poll status) but could benefit from stating the response format or task ID. Given the tool's moderate complexity and lack of nested objects, this is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes all three parameters (suffix, workspace, collectionId) with clear descriptions. The tool description does not add additional meaning or examples beyond what the schema provides, so it meets the baseline for high schema coverage but contributes no extra 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 clearly states the action: 'Creates a duplicate of the given collection in another workspace.' It specifies the verb (creates), the resource (collection duplicate), and the destination (another workspace), distinguishing it from other collection-related tools like putCollection or getCollection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a follow-up instruction for checking task status but does not explicitly state when to use this tool versus alternatives or any exclusions. It implies use for duplication but lacks explicit guidance on when not to use it or what alternatives exist, such as copying within the same workspace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generateCollectionGenerate a collection from specAInspect
Creates a collection from the given API specification. The specification must already exist or be created before it can be used to generate a collection. The response contains a polling link to the task status.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The generated collection's name. | |
| specId | Yes | The spec's ID. | |
| options | Yes | The advanced creation options and their values. For more details, see Postman's [OpenAPI to Postman Collection Converter OPTIONS documentation](https://github.com/postmanlabs/openapi-to-postman/blob/develop/OPTIONS.md). These properties are case-sensitive. | |
| elementType | Yes | The `collection` element type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey openness (openWorldHint=true) and non-read-only nature (readOnlyHint=false), which the description aligns with via 'Creates a collection.' The description adds valuable behavioral context beyond annotations: the prerequisite constraint and the asynchronous polling-link response pattern. It could be enhanced by noting side effects or rate-limit concerns for this resource-creating operation, but the annotation disclosure is non-contradictory and sufficiently augmented.
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 sentences, each earning its place: first defines the action, second states the prerequisite, third describes the response. Front-loaded with the most important information and contains zero fluff or filler. This is a model of concise, value-dense description 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?
With a moderately complex nested `options` object (9 sub-fields) and no output schema, the description does well to highlight the async nature via the polling link. The schema carries the full load on parameters, which it does thoroughly. A note on return type or error cases (e.g., what happens on invalid specId) could push this higher, but for the given scope, it's largely sufficient. The polling-link hint meaningfully compensates for the absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 4 required parameters, so the baseline is 3, and the description adds no parameter-level details beyond what's in the schema. The description's mention of the spec existence requirement and the polling response is tangentially related but doesn't add new parameter semantics. With no param gaps in the schema, the description is not penalized further, but neither does it earn bonus credit — exactly the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Creates'), resource ('collection'), and source ('from the given API specification'), which is specific and distinguishes it from sibling tools like `createCollection`. However, it doesn't explicitly contrast itself with siblings like `createCollection` or `syncCollectionWithSpec`, so it misses the full 5. The prerequisite note ('specification must already exist') adds useful scope definition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: after a spec exists ('must already exist or be created before it can be used') and informs the agent about the async response behavior ('response contains a polling link to the task status'). However, it doesn't explicitly mention when NOT to use it or name alternatives, which would be needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generateSpecFromCollectionGenerate spec from collectionAInspect
Generates an OpenAPI 2.0, 3.0, or 3.1 specification for the given collection. The response contains a polling link to the task status.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The API specification's name. | |
| type | Yes | The specification's type. | |
| format | Yes | The format of the API specification. | |
| elementType | Yes | The `spec` value. | |
| collectionUid | Yes | The collection's unique ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutating operation (readOnlyHint=false) but not destructive. The description adds that the response contains a polling link to task status, disclosing the asynchronous nature of the operation. This is valuable behavioral context beyond annotations, though it doesn't detail other side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, and no wasted words. It states what it does and mentions the asynchronous result link concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters (all schema-documented) and no output schema, the description is mostly complete. It explains the main behavior and notes the polling link for status. It could mention prerequisites (e.g., collection must exist) but that is implicit and acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no new information about parameters beyond reinforcing the spec type via 'OpenAPI 2.0, 3.0, or 3.1'. Baseline of 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an OpenAPI specification (2.0, 3.0, or 3.1) for a given collection. It uses a specific verb+resource structure and differentiates from siblings like createSpec or generateCollection by focusing on the conversion from collection to spec.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (for a given collection) but does not explicitly contrast with alternatives or state when not to use it. It lacks the explicit when/when-not guidance seen in higher-scoring tools, though the context is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAllSpecsGet all specsARead-onlyIdempotentInspect
Gets all API specifications in a workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | The maximum number of rows to return in the response. | |
| cursor | No | The pointer to the first record of the set of paginated results. To view the next response, use the `nextCursor` value for this parameter. | |
| workspaceId | Yes | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the workspace scoping constraint but does not disclose pagination behavior, response format, or potential large result sets. Some value added, but limited beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence: 'Gets all API specifications in a workspace.' Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the description is mostly sufficient: full schema coverage, clear safety annotations, and a concise purpose. However, it lacks explicit pagination behavior (despite cursor schema) and alternative tool guidance, so it falls short of perfect completeness.
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 (workspaceId, limit, cursor) have clear descriptions. The tool description adds no additional parameter meaning, 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?
Description clearly states 'Gets all API specifications in a workspace' – a specific verb ('gets'), resource ('all API specifications'), and scope ('in a workspace'). This distinguishes it from siblings like getSpec (singular) and getSpecFiles (files, not specs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It doesn't mention using getSpec for a single spec or how pagination with limit/cursor works. With 35+ sibling tools, the lack of explicit usage context is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAuthenticatedUserGet authenticated user (current user context)ARead-onlyIdempotentInspect
Gets information about the authenticated user.
This endpoint provides “current user” context (`user.id`, `username`, `teamId`, roles).
When a user asks for “my …” (e.g., “my workspaces, my information, etc.”), call this first to resolve the user ID.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. Description adds no extra behavioral traits beyond clarifying the purpose; it does not mention side effects or permissions, but that is covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise two-sentence description with a bullet point, no unnecessary fluff, and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is sufficient. It explains what the tool does and when to use 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?
No parameters exist, so schema coverage is complete. Description need not add parameter details.
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?
Clearly states it gets the authenticated user's information, with a specific verb and resource. The mention of fields (user.id, username, teamId, roles) further clarifies purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use: when the user asks for 'my ...' to resolve the user ID. This is a strong usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCollectionARead-onlyIdempotentInspect
Get information about a collection. By default this tool returns the lightweight collection map (metadata + recursive itemRefs). Use the model parameter to opt in to Postman's full API responses:
model=minimal — root-level folder/request IDs only
model=full — full Postman collection payload.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optional response shape override. Omit to receive the lightweight collection map. Set to `minimal` for the Postman minimal model or `full` for the complete collection payload. | |
| access_key | No | A collection's read-only access key. Using this query parameter does not require an API key to call the endpoint. | |
| collectionId | Yes | The collection ID must be in the form <OWNER_ID>-<UUID> (e.g. 12345-33823532ab9e41c9b6fd12d0fd459b8b). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds behavioral context about the default response shape (lightweight map) and the model parameter to opt into full payloads, aligning with read-only nature.
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 sentences, concise and front-loaded. The first sentence states the purpose, the second explains the key parameter. No extraneous 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 read-only collection retrieval tool with three parameters and no output schema, the description covers the default response, model options, and the nature of the return data (metadata + itemRefs). It lacks details on response structure relative to other tools, but is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters fully described. The description does not add new meaning beyond the schema; it only reiterates the model parameter's options. Baseline score 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 clearly states the verb and resource ('Get information about a collection') and explains the default lightweight response and optional model parameter. It implicitly distinguishes from the sibling `getCollections` by its singular naming, but does not explicitly contrast it.
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 does not provide explicit guidance on when to use this tool versus alternatives like `getCollections`. It focuses on the model parameter options but lacks context for selection among similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCollectionsGet all collectionsCRead-onlyIdempotentInspect
The workspace ID query is required for this endpoint. If not provided, the LLM should ask the user to provide it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter results by collections whose name exactly matches the given value. Partial or substring matches are not supported. | |
| limit | No | The maximum number of rows to return in the response. | |
| offset | No | The zero-based offset of the first item to return. | |
| workspace | Yes | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds no behavioral details like return format or pagination, and the workspace requirement is already in the schema. Thus it adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that directly instructs the LLM about the required parameter. It is concise, though it duplicates schema info slightly, it earns its place by instructing the agent to ask the user.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete for a list endpoint: it does not state that it returns collections, nor mention any filtering or pagination behavior implied by the parameters. It focuses only on the workspace requirement, leaving the agent to infer the tool's function from its name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are documented. The description only restates that workspace is required, which is already in the schema; it adds no additional semantic meaning.
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 title states 'Get all collections' but the description only mentions the required workspace ID, not the tool's actual purpose. It does not explicitly say it retrieves collections, so the purpose is vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific guideline about asking the user for the workspace ID if missing, but does not indicate when to use this tool versus alternatives like 'getCollection' or 'searchPostmanElements'. No exclusions or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getDuplicateCollectionTaskStatusGet duplication task statusARead-onlyIdempotentInspect
Gets the status of a collection duplication task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The task's unique ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool's safety profile is covered. The description adds no further behavioral details (e.g., polling semantics, task lifecycle). While minimal, this meets the baseline for simple getter with good 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, clear sentence with no extraneous words. Perfectly front-loaded and appropriately brief for a simple getter.
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 tool with one parameter, comprehensive annotations, and no output schema, the description is sufficient. It lacks details about return format or error cases, but these are not required given the tool's simplicity and the absence of an output schema. A minor deduction because it doesn't reference the asynchronous nature of duplication tasks, but this is not critical.
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% for the single taskId parameter. The description does not mention parameters at all, relying entirely on the schema. Per guidelines, with high coverage, baseline is 3, and no extra value is added here.
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 'Gets the status of a collection duplication task' uses a specific verb ('Gets') and identifies the exact resource ('status of a collection duplication task'). It clearly differentiates from sibling tools like 'duplicateCollection' and other getters, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking status after duplication, but does not explicitly state when to use it versus alternatives or mention any preconditions. There's no direct guidance on when not to use it, but the context of sibling tools suggests this is a status-checking operation. This aligns with 'implied usage' (score 3).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getEnabledToolsARead-onlyIdempotentInspect
IMPORTANT: Run this tool first when a requested tool is unavailable. Returns information about which tools are enabled in the full and minimal tool sets, helping you identify available alternatives.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint as true. The description adds behavioral context beyond annotations by specifying the intended invocation order and the purpose of identifying alternatives. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero waste. The first sentence is an imperative instruction, the second explains the output. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there are no parameters and no output schema, the description adequately covers the tool's purpose and usage. It could optionally describe the output format (e.g., list of tool names), but the current text is sufficient for a simple informational tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist in the input schema, so the description does not need to add parameter semantics. Baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: returns information about enabled tools. It also provides a specific usage context: run it first when a requested tool is unavailable. This distinguishes it from all sibling tools which deal with collections, specs, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use the tool ('when a requested tool is unavailable') and what it helps with ('identifying available alternatives'). This is a direct and helpful usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getEnvironmentGet an environmentCRead-onlyIdempotentInspect
Gets information about an environment.
| Name | Required | Description | Default |
|---|---|---|---|
| environmentId | Yes | The environment's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description only says 'Gets information', which adds no extra context beyond what annotations state. It does not describe output format, potential error cases, or any additional behavioral traits, so it fails to add value beyond the structured metadata.
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 short sentence with no fluff, making it concise. However, it is so minimal that it lacks substance; the sentence 'Gets information about an environment' is almost a tautology of the title. It is appropriately short but underdelivers on useful information, so a 3 is fair.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity (1 param, no output schema), the description is too sparse. It does not hint at what 'information' is returned, nor does it mention any constraints like authentication scope. With no output schema, the agent is left guessing about the response structure. The description fails to round out the tool's context, so it scores 2.
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 schema fully describes the single parameter environmentId, achieving 100% coverage. The description does not contribute any additional meaning, but the baseline for full coverage is 3. Since the tool is simple and the parameter is well-documented, a 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 the verb 'Gets' and resource 'environment', which is clear. However, it does not explicitly differentiate from sibling tools like getEnvironments (which likely lists environments) or hint that it retrieves a single environment by ID. The title and schema imply this, but the description itself lacks that distinction, so it scores 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention that getEnvironments is for listing or that this is for a specific environment. There is no context about prerequisites or typical API workflows, so the agent gets no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getEnvironmentsGet all environmentsARead-onlyIdempotentInspect
Gets information about all of your environments.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds the scope (all environments) and links to docs, but doesn't disclose behavior like pagination, response format, or workspace filtering effects beyond 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?
One sentence with a helpful documentation link. No wasted words, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter and full schema coverage, the description is adequate. It could mention that workspace is optional and what happens if omitted, but the schema already indicates it's not required. No output schema, but the tool name and description imply a list of environments.
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% (workspace parameter described as 'The workspace's ID.'). The description doesn't add extra meaning beyond the schema, but the schema is sufficient. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets information about all environments, with a link to documentation. It distinguishes from getEnvironment (singular) and createEnvironment, though it doesn't explicitly contrast with 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?
The description implies usage for retrieving all environments, but doesn't provide explicit when-to-use vs alternatives. The optional workspace parameter suggests filtering, but no guidance on when to use this vs getEnvironment or getWorkspaces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getGeneratedCollectionSpecsGet generated specBRead-onlyIdempotentInspect
Gets the API specification generated for the given collection.
| Name | Required | Description | Default |
|---|---|---|---|
| elementType | Yes | The `spec` value. | |
| collectionUid | Yes | The collection's unique ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description's 'Gets' is consistent. The description adds the context that the spec is generated for the collection, but it does not disclose any behavior when no generated spec exists or what format the spec is returned in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded, and directly states the core action. It contains no filler, fluff, or redundant repetition of the tool name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple two-parameter read-only retrieval tool, and the description plus schema and annotations are largely sufficient. Since there is no output schema, the description could be slightly more complete by explaining what form the API specification is returned in.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both 'collectionUid' and 'elementType'. The description does not add parameter-specific detail, but it also does not need to since the input schema already carries that burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Gets the API specification generated for the given collection.' This clearly identifies what the tool returns and ties it to a collection, which distinguishes it from broader getter tools like getAllSpecs. However, it does not explicitly contrast with similar sibling read tools such as getSpec or getSpecCollections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like getSpec, getSpecCollections, or generateSpecFromCollection. There is no mention of prerequisites, such as whether a spec must first be generated for the collection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMockGet a mock serverARead-onlyIdempotentInspect
Gets information about a mock server.
Resource: Mock server entity. Response includes the associated `collection` UID and `mockUrl`.
Use the `collection` UID to navigate back to the source collection.
| Name | Required | Description | Default |
|---|---|---|---|
| mockId | Yes | The mock's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds value by detailing response fields (collection UID and mockUrl) without contradicting any annotations. This gives the agent useful behavioral context beyond the structured metadata.
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 concise and efficiently structured: a clear opening sentence and a bullet point for the response details. No filler or redundant information, and it is front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation with one parameter, the description, combined with annotations (read-only, idempotent) and schema (full parameter description), covers all necessary aspects: action, resource, response fields, and safety. The lack of an output schema is mitigated by the explicit mention of the returned fields.
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 sole parameter mockId is fully described in the schema as 'The mock's ID,' covering 100% of the schema. The description does not add extra meaning to the parameter, but with complete schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Gets information about a mock server,' specifying the action (gets) and the resource (mock server). It distinguishes from siblings like getMocks (plural) by focusing on a single mock entity, and it adds response details (collection UID, mockUrl) that clarify what information is returned.
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 context about the response, advising to use the collection UID for navigation, but it does not explicitly contrast with alternatives like getMocks or state when this tool should be selected. The purpose is clear enough to imply usage, but explicit selection criteria are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMocksGet mock servers (filter by workspace or team)ARead-onlyIdempotentInspect
Gets all active mock servers. By default, returns only mock servers you created across all workspaces.
Always pass either the `workspace` or `teamId` query to scope results. Prefer `workspace` when known.
If you need team-scoped results, set `teamId` from the current user: call GET `/me` and use `me.teamId`.
If both `teamId` and `workspace` are passed, only `workspace` is used.
| Name | Required | Description | Default |
|---|---|---|---|
| teamId | No | Return only results that belong to the given team ID. - For team-scoped requests, set this from GET `/me` (`me.teamId`). | |
| workspace | No | Return only results found in the given workspace ID. - Prefer this parameter when the user mentions a specific workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint, idempotentHint, and destructiveHint, the description adds valuable behavioral context: that it returns only servers the user created, and that workspace takes precedence over teamId. These nuances go beyond the annotations without contradicting them, covering key aspects like ownership filtering and parameter precedence.
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 concise and well-structured: a clear main sentence followed by three bullet points with actionable guidance. No redundant information or filler. Each sentence earns its place, effectively communicating purpose and usage in under 80 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 list tool with two optional parameters, the description covers the essential aspects: what it returns (active mock servers, user-created by default), how to scope results, and parameter precedence. While it doesn't describe the response format or pagination, the tool's name and purpose make these implicit, and the annotations cover safety. This is adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented. The description adds cross-parameter constraints and guidance (prefer workspace, how to set teamId from /me, and precedence rules) that enrich the schema's per-field descriptions. This goes beyond the baseline, providing actionable context for parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets all active mock servers, and specifies that by default it returns only the user's own mock servers across workspaces. This distinguishes it from siblings like getMock (singular) by explicitly focusing on listing multiple servers, and adds scope details that clarify its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: always pass either workspace or teamId, prefer workspace, and explains how to obtain teamId via GET /me. It also clarifies precedence when both are passed. However, it does not explicitly contrast with alternative tools (e.g., getMock for single server), so it falls short of full 'when-not' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSpecGet a specBRead-onlyIdempotentInspect
Gets information about an API specification.
| Name | Required | Description | Default |
|---|---|---|---|
| specId | Yes | The spec's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no additional behavioral details such as error handling or what 'information' is returned, but it does not contradict 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?
The description is a single, front-loaded sentence with no wasted words. However, it is nearly redundant with the title 'Get a spec' and provides minimal additional value.
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, the description is vague about what the return value contains. The tool is simple and annotations cover safety, but the description lacks enough detail to fully understand the tool's output, especially compared to sibling tools like getSpecDefinition.
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 covers 100% of the single parameter specId with a description. The tool description adds no extra 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 'Gets information about an API specification' clearly identifies a get operation on a spec resource. However, it does not differentiate between sibling tools like getSpecDefinition, getSpecFile, or getSpecCollections, making the purpose clear but not distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus the many sibling get tools. The agent is given no selection criteria or context for choosing getSpec over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSpecCollectionsGet a spec's generated collectionsARead-onlyIdempotentInspect
Gets all of an API specification's generated collections.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | The maximum number of rows to return in the response. | |
| cursor | No | The pointer to the first record of the set of paginated results. To view the next response, use the `nextCursor` value for this parameter. | |
| specId | Yes | The spec's ID. | |
| elementType | Yes | The `collection` element type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'generated collections' scope but does not disclose pagination behavior, ordering, or response details beyond what the schema already suggests.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose with no filler or repetition. It is concise and every word contributes 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 simple read-only listing tool with rich annotations and a fully documented schema, the description is largely sufficient. The only minor gap is that 'all' is not reconciled with limit/cursor pagination, but the schema provides cursor and nextCursor guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter is already documented in the input schema, including the const value for elementType and cursor semantics. The description adds no additional parameter-level meaning beyond the schema, 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 'Gets all of an API specification's generated collections' has a specific verb, resource, and scope. It clearly distinguishes itself from siblings like getCollection (single collection) and getGeneratedCollectionSpecs (the reverse direction) by focusing on a spec's generated collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as getCollections or generateCollection. The description simply states what the tool does without any context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSpecDefinitionGet a spec's definitionBRead-onlyIdempotentInspect
Gets the complete contents of an OpenAPI or AsyncAPI specification's definition.
| Name | Required | Description | Default |
|---|---|---|---|
| specId | Yes | The spec's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a read-only, idempotent, non-destructive operation. The description adds the scope 'complete contents' and the supported spec types (OpenAPI or AsyncAPI), but it does not disclose output format, error behavior, or any additional behavioral nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant wording. It communicates the essential action and resource efficiently.
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?
This is a simple one-parameter read tool, and the annotations plus schema cover most important context. The description sufficiently states what is returned ('complete contents of a definition'), though it could be improved by clarifying how it differs from getSpec and getSpecFile.
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 fully describes the single parameter 'specId' with a clear description ('The spec's ID.'). The tool description adds no extra parameter-level information, so the schema carries the load and the baseline score 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 uses a specific verb ('Gets') and names the resource ('OpenAPI or AsyncAPI specification's definition'), making the core purpose clear. It does not explicitly differentiate itself from sibling tools like getSpec or getSpecFile, which introduces slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of alternatives. Given the many sibling tools that also deal with specs, the description provides no context or exclusions to help an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSpecFileGet a spec fileARead-onlyIdempotentInspect
Gets the contents of an API specification's file.
| Name | Required | Description | Default |
|---|---|---|---|
| specId | Yes | The spec's ID. | |
| filePath | Yes | The path to the file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds no additional behavioral context beyond what the annotations provide, such as output format or error behavior. It does not contradict annotations, so a baseline score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence: 'Gets the contents of an API specification's file.' It is front-loaded with the action and resource, contains no redundant words, and fully conveys the core purpose without any fluff. This is an exemplary model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (two parameters, no output schema), and the annotations cover safety. The description clearly indicates the tool retrieves file contents, which is sufficient for basic use. However, it does not specify the return format (e.g., raw text, JSON) or any path conventions, which could be considered a minor gap. Given the low complexity, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters have descriptions in the schema: specId ('The spec's ID.') and filePath ('The path to the file.'). The description itself does not elaborate on parameter meaning or usage, so it adds no extra value beyond the schema. Baseline of 3 reflects that the schema handles parameter documentation.
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 exactly what the tool does: 'Gets the contents of an API specification's file.' It uses a specific verb (Gets) and a clear resource (contents of a file within an API spec), which distinguishes it from siblings like getSpecFiles (listing files) and getSpecDefinition (specific definition). This is a clear, non-tautological purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is for a specific file's contents as opposed to listing files with getSpecFiles or retrieving the whole spec with getSpec. No exclusions or alternative tool references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSpecFilesGet a spec's filesARead-onlyIdempotentInspect
Gets all the files in an API specification.
| Name | Required | Description | Default |
|---|---|---|---|
| specId | Yes | The spec's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds the 'all files' scope, but does not disclose return shape, pagination, error behavior, or whether file contents are included. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no redundant phrasing. It is front-loaded, scannable, and every word contributes to understanding the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one required parameter and strong annotations, the description is sufficient to convey the core operation. It does not describe the output format, but the absence of an output schema and the simplicity of the tool make this a minor gap rather than a critical omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter specId is already documented in the schema with 100% coverage, so the description does not need to add much. It does reinforce that 'spec' refers to an API specification, but adds no syntax, format, or lookup details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Gets') and resource ('all the files in an API specification'), clearly distinguishing it from the singular getSpecFile and related getSpec/getSpecDefinition tools. The 'all the files' scope adds precision beyond just the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a caller needs all files belonging to a spec, but it does not explicitly name alternatives like getSpecFile or state when not to use this tool. The sibling tool names provide context, but the description itself offers no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTaggedEntitiesGet elements by tagARead-onlyIdempotentInspect
Requires an Enterprise plan. Tagging is only available on Postman Enterprise plans. This tool returns a 404 error on Free, Basic, and Professional accounts.
Gets Postman elements (entities) by a given tag. Tags enable you to organize and search workspaces, APIs, and collections that contain shared tags.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The tag's ID within a team or individual (non-team) user scope. | |
| limit | No | The maximum number of tagged elements to return in a single call. | |
| cursor | No | The cursor to get the next set of results in the paginated response. If you pass an invalid value, the API only returns the first set of results. | |
| direction | No | The ascending (`asc`) or descending (`desc`) order to sort the results by, based on the time of the entity's tagging. | desc |
| entityType | No | Filter results for the given entity type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
尽管注解已声明 readOnlyHint=true,描述仍主动补充了关键行为:Enterprise plan 要求、各计划下的 404 错误行为,以及通过 tags 组织实体的语义。这种对失败场景的显式披露非常有价值。
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?
两段式结构清晰:首句突出企业版要求的警告,次句点明功能。所有企业版后续处理需求都在描述中,没有冗余信息。略失分在于缺少一个最终总结或示例。
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?
在注解和 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?
模式覆盖率为 100%,所有五个参数(slug, limit, cursor, direction, entityType)在 schema 中都有详细描述。描述本身未添加参数语义,但 schema 已足够完整、自解释,因此维持基线 3 分。
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?
描述明确使用动词 "Gets" 和资源 "Postman elements by a given tag",并补充了'organize and search workspaces, APIs, and collections'的场景说明。虽然未显式区分兄弟工具,但资源范围清晰,足以让 agent 理解核心功能。
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?
明确指出需要 Enterprise plan 及非企业版返回 404 的关键约束,这是重要的触发条件。但未提供何时选择其他兄弟工具(如 searchPostmanElements)的指导,也没有说明与按标签筛选、按关键词搜索等替代方案的区别。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getWorkspaceGet a workspaceBRead-onlyIdempotentInspect
Gets information about a workspace.
Note:
This endpoint's response contains the `visibility` field. Visibility determines who can access the workspace:
`personal` — Only you can access the workspace.
`team` — All team members can access the workspace.
`private` — Only invited team members can access the workspace (Team and Enterprise plans only).
`public` — Everyone can access the workspace.
`partner` — Only invited team members and partners can access the workspace (Team and Enterprise plans only).
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | A comma-separated list of values to include in the endpoint's response: - `scim` — Return the SCIM user IDs of the workspace creator and who last modified it. - `team` — Return the workspace's team ID. Returns a null value if the workspace isn't associated with a team. - `mocks:deactivated` — Include all deactivated mock servers in the response. | |
| workspaceId | Yes | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds valuable context about the 'visibility' field, explaining its possible values, access implications, and plan restrictions. This enriches the behavioral understanding beyond the bare 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?
The core purpose is stated in a single sentence, but the description then expands into a lengthy, detailed explanation of the visibility field with sub-bullets and multiple links. While informative, this makes the description longer than necessary for a simple GET tool and could have been condensed without losing essential 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?
The tool is a straightforward GET with two parameters and no output schema. The description explains one field (visibility) but does not provide an overview of other typical workspace properties returned. Given the simplicity and annotation coverage, the description is adequate but could have briefly summarized the general response structure to be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter descriptions in the schema are clear (workspaceId and include). The tool description does not add any extra meaning to the parameters; it only discusses the visibility field in the response. With full schema coverage, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Gets information about a workspace' with a clear verb and resource, which is unambiguous. However, it does not explicitly distinguish it from sibling tools like getWorkspaces (which lists multiple workspaces), relying on the singular/plural name difference. The main body focuses on the visibility field, which is additional but not primary purpose elaboration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention when to call getWorkspace instead of getWorkspaces, nor does it describe any prerequisites or context for use. The description is purely about the visibility field semantics, not about usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getWorkspacesGet workspaces (filtered and user-scoped)ARead-onlyIdempotentInspect
Gets all workspaces you have access to.
For “my …” requests, first call GET `/me` and pass `createdBy={me.user.id}`.
This endpoint's response contains the visibility field. Visibility determines who can access the workspace:
`personal` — Only you can access the workspace.
`team` — All team members can access the workspace.
`private` — Only invited team members can access the workspace (Professional and Enterprise).
`public` — Everyone can access the workspace.
`partner` — Invited team members and partners (Professional and Enterprise).
For tools that require the workspace ID, and no workspace ID is provided, ask the user to provide the workspace ID. If the user does not provide the workspace ID, call this first with the createdBy parameter to use the first workspace.
Results are paginated. Use the `cursor` parameter to retrieve additional pages.
Examples:
“List my workspaces” → GET `/me`, then GET `/workspaces?createdBy={me.user.id}&limit=100`
“List my personal workspaces” → GET `/me`, then GET `/workspaces?type=personal&createdBy={me.user.id}&limit=100`
“List all public workspaces” → GET `/workspaces?type=public&limit=100`
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | The type of workspace to filter the response by. One of: `personal`, `team`, `private`, `public`, `partner`. - For “my …” requests, this can be combined with `createdBy`. If type is not specified, it will search across all types for that user. | |
| limit | No | The maximum number of workspaces to return per page. Defaults to 100. | |
| cursor | No | The cursor to get the next set of results in a paginated response. Get this value from the `meta.nextCursor` field in the previous response. | |
| include | No | Include the following information in the endpoint's response: - `mocks:deactivated` — Include all deactivated mock servers in the response. - `scim` — Return the SCIM user IDs of the workspace creator and who last modified it. | |
| createdBy | No | Return only workspaces created by the specified Postman user ID. - For “my …” requests, set `createdBy` to the current user’s ID from GET `/me` (`me.user.id`). - If the user's ID is not known, first call GET `/me`, then retry with `createdBy`. | |
| elementId | No | Filter results to return the workspace where the given element's ID is located. When filtering by collection, you must use the collection's unique ID (`userId`-`collection`). If you pass this query parameter, you must also pass the `elementType` query parameter. | |
| elementType | No | Filter results to return the workspace where the given element type is located. If you pass this query parameter, you must also pass the `elementId` query parameter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds valuable behavioral context: it explains the visibility field and its values, which affects what the agent can infer about access control. It also mentions pagination behavior and the need to call /me first for user-scoped queries. This adds context beyond the annotations, though it doesn't describe the full response structure (no output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and examples, making it easy to scan. It's a bit long but each section adds value: purpose, visibility explanation, usage notes, pagination, and examples. The front-loading is good (purpose first), and the examples are concrete. It could be slightly more concise, but the detail is justified given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema, no required parameters), the description is quite complete. It covers the main use cases, explains the visibility field, provides examples, and mentions pagination. The only gap is that it doesn't describe the response structure, but since there's no output schema, the agent might need to infer that. However, the description does mention the 'meta.nextCursor' field, which gives some response context. Overall, it's sufficient for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters. The description adds value by explaining the 'createdBy' parameter's role in 'my …' requests and providing examples of how to combine parameters (e.g., type=personal&createdBy=...). It also clarifies the 'type' parameter's behavior when not specified. This goes beyond the schema's basic descriptions, though the schema already covers the parameter meanings well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Gets all workspaces you have access to.' It specifies the resource (workspaces) and the action (get), and distinguishes it from sibling tools like getWorkspace (singular) and createWorkspace by focusing on listing/filtering workspaces with user-scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it explains when to call GET /me first for 'my …' requests, how to handle missing workspace IDs, and includes concrete examples for different scenarios. It also mentions pagination with cursor, which is a clear usage instruction. This goes beyond just stating the purpose and helps the agent decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publishMockPublish a mock serverAInspect
Publishes a mock server. Publishing a mock server sets its Access Control configuration setting to public.
| Name | Required | Description | Default |
|---|---|---|---|
| mockId | Yes | The mock's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the side effect of setting Access Control to public, which is a meaningful behavioral detail beyond the annotations that only indicate mutability. It does not contradict 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?
The description is concise, with two sentences: one for the primary action and one for the key side effect. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for a simple operation: it states what it does and the main effect (setting access control to public). It does not mention return values, but no output schema exists, and the information given is adequate for the tool's purpose.
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 schema already fully describes the mockId parameter with 'The mock's ID.' The description adds no additional parameter-specific meaning, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Publishes a mock server.' The verb 'publishes' and resource 'mock server' are specific, and the tool is distinguishable from siblings like createMock or getMock.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you want to make a mock public (by setting access control to public) but does not explicitly state when to use this tool vs alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
putCollectionReplace a collection's dataAIdempotentInspect
Replaces the contents of a collection using the Postman Collection v2.1.0 schema format. Include the collection's ID values in the request body. If you do not, the endpoint removes the existing items and creates new items.
To perform an update asynchronously, use the `Prefer` header with the `respond-async` value. When performing an async update, this endpoint returns a HTTP `202 Accepted` response.
For a complete list of properties and information, see the Postman Collection Format documentation.
For protocol profile behavior, refer to Postman's Protocol Profile Behavior documentation.
Note:
The maximum collection size this endpoint accepts cannot exceed 100 MB.
Use the GET `/collection-updates-tasks/{taskId}` endpoint to get the collection's update status when performing an asynchronous update.
If you don't include the collection items' ID values from the request body, the endpoint removes the existing items and recreates the items with new ID values.
To copy another collection's contents to the given collection, remove all ID values before you pass it in this endpoint. If you do not, this endpoint returns an error. These values include the `id`, `uid`, and `postman_id` values.
| Name | Required | Description | Default |
|---|---|---|---|
| Prefer | No | The `respond-async` header to perform the update asynchronously. | |
| collection | No | The new collection contents that replace the existing collection. | |
| collectionId | Yes | The collection ID must be in the form <OWNER_ID>-<UUID> (e.g. 12345-33823532ab9e41c9b6fd12d0fd459b8b). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by disclosing critical behavioral details: the destructive nature of omitting ID values (removes existing items and recreates them), the 100 MB size limit, the async behavior with 202 Accepted responses, and the error condition when copying from another collection without removing IDs. The annotations mark destructiveHint=false, but the description appropriately warns about data loss when IDs are omitted, which is valuable context. It doesn't contradict the annotations since the tool itself isn't inherently destructive—it's the user's input that determines destructiveness.
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 well-structured with clear sections and bullet points. It front-loads the core purpose and the most critical warning about ID values. The additional documentation links are useful but somewhat verbose; the protocol profile behavior link and the repeated note about ID removal could be consolidated. Overall, it's appropriately sized for a complex tool with significant behavioral nuances.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested collection schema, async behavior, destructive potential), the description covers the essential operational aspects: the schema format, ID handling rules, size limit, async option, and status-check endpoint. There's no output schema, but the description mentions the 202 response for async operations. It could mention the success response for synchronous operations, but the core information needed to call the tool correctly is present.
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 schema has 100% description coverage, so the baseline is 3. The description adds meaningful value by explaining the critical ID-related behavior: including IDs preserves items, omitting them removes and recreates items, and copying from another collection requires removing all ID values. This directly informs how to construct the 'collection' parameter. The Prefer parameter is also explained in the description with the async behavior and response code.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool replaces the contents of a collection using the Postman Collection v2.1.0 schema format. It distinguishes itself from sibling tools like createCollection (which creates new collections) and updateCollectionRequest (which updates individual requests) by focusing on full replacement of collection data. The title 'Replace a collection's data' reinforces the specific verb-resource relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: it's for replacing collection contents, and it warns about the critical behavior of ID handling. It also mentions the async update option via the Prefer header and directs users to the GET /collection-updates-tasks/{taskId} endpoint for status checks. While it doesn't explicitly name sibling alternatives, the replacement semantics are clear enough to distinguish from create/update operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
putEnvironmentReplace an environment's dataBIdempotentInspect
Replaces all the contents of an environment with the given information.
Note:
The request body size cannot exceed the maximum allowed size of 30MB.
If you receive an HTTP `411 Length Required` error response, manually pass the `Content-Length` header and its value in the request header.
Only shared variable values can be modified through the Postman API. A shared variable is an environment variable with its value synced and stored in the Postman cloud, and can be accessed by your teammates in the environment's workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | No | Information about the environment. | |
| environmentId | Yes | The environment's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful operational details such as the 30MB request limit, the 411 Content-Length workaround, and the shared-variable limitation. However, it contradicts the annotations: destructiveHint is false while 'Replaces all the contents' describes a destructive overwrite of existing environment data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: one purpose sentence followed by three focused note bullets. Each bullet adds operational value, and there is no redundant or filler 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?
For a write tool with no output schema, the description covers replacement semantics, body size limits, error handling, and the shared-variable API constraint. It lacks explicit return-value information and prerequisites, but the rich schema and annotations compensate for most 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?
The input schema has 100% schema_description_coverage and rich descriptions for every parameter and nested property. The description adds no additional parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence uses the specific verb 'Replaces' with the resource 'environment' and scope 'all the contents', making the operation unmistakable. It clearly distinguishes this from sibling tools like createEnvironment or getEnvironment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for overwriting an existing environment's data, but it does not explicitly state when to use this tool versus createEnvironment or any other alternative. No exclusions or preferred conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runCollectionAIdempotentInspect
Runs a Postman collection by ID with detailed test results and execution statistics. Supports optional environment for variable substitution. Note: Advanced parameters like custom delays and other runtime options are not yet available.
| Name | Required | Description | Default |
|---|---|---|---|
| stopOnError | No | Gracefully halt on errors (default: false) | |
| abortOnError | No | Abruptly halt on errors (default: false) | |
| collectionId | Yes | The collection ID in the format <OWNER_ID>-<UUID> (e.g. 12345-33823532ab9e41c9b6fd12d0fd459b8b). | |
| environmentId | No | Optional environment ID to use for variable substitution during the run. | |
| scriptTimeout | No | Script timeout in milliseconds (default: 5000) | |
| stopOnFailure | No | Gracefully halt on test failures (default: false) | |
| abortOnFailure | No | Abruptly halt on test failures (default: false) | |
| iterationCount | No | Number of iterations to run (default: 1) | |
| requestTimeout | No | Request timeout in milliseconds (default: 60000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give idempotentHint=true and destructiveHint=false. The description adds that it returns detailed results and statistics, and notes limitations on advanced parameters. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and output, second notes limitations. No fluff, front-loaded with key info.
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 9 parameters and no output schema, the description covers the return value (detailed results/statistics) and key limitation. Lacks details on error handling but schema covers that.
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 description doesn't need to explain parameters. It mentions collectionId and environmentId but not others, which is acceptable since schema descriptions are sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a Postman collection by ID and provides detailed test results and execution statistics. It distinguishes itself from sibling tools like createCollection or getCollection by focusing on execution.
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 mentions optional environment support and notes that advanced parameters are not available, guiding users on when to use (basic runs) and when to avoid (if advanced options needed). It doesn't explicitly mention alternatives but contextually clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchPostmanElementsARead-onlyIdempotentInspect
Search for Postman entities (requests, collections, workspaces, specs, flows, environments, mocks, and documents).
Ownership:
organization— Search within all resources owned by your organization (default).external— Search within the public Postman network (third-party and community APIs).all— Search across all scopes.
When to use each ownership value and filters:
Goal | Recommended approach |
Find an internal API (e.g. "our notification service") |
|
Find a trusted API published to the Private Network |
|
Find an internal API in all resources of organization and are visible to the organization only |
|
Find an API by your organization that is made publicly visible |
|
Find a third party publicly visible API (e.g. "Stripe API", "Twilio API") |
|
User says "our APIs", "internal", "team" |
|
Search across all scopes |
|
Element Types:
requests: Search for individual API requests.collections: Search for API collections.workspaces: Search for Postman workspaces.specs: Search for API specifications.flows: Search for Postman Flows.environments: Search for Postman Environments.mocks: Search for Postman Mock Servers.documents: Search for Postman workspace documents.
Filters:
Use the filters parameter to narrow results. The top-level key must be $and with an array of condition objects. Each condition object must contain exactly one field key.
Supported filter fields:
Field | Operators | Notes |
|
| All element types. |
|
| Requests and collections only. |
|
| Values: |
|
| Boolean. All element types. |
|
| Boolean. All element types. |
|
| HTTP methods (GET, POST, etc.). Requests only. |
|
| Workspaces and collections only. |
|
| Requests only. |
|
| Specs only. |
|
| Flows only. |
|
| Documents only. |
|
| All element types. |
|
| All element types. |
|
| All element types. |
|
| Boolean. Workspaces, collections, requests, specs, flows, environments, mocks, documents. |
|
| Requests only. |
Filter examples:
Private API Network only:
{"$and":[{"privateNetwork":{"$eq":true}}]}Single workspace:
{"$and":[{"workspaceId":{"$eq":"ws-abc123"}}]}Multiple workspaces:
{"$and":[{"workspaceId":{"$in":["ws-1","ws-2"]}}]}Public visibility:
{"$and":[{"visibility":{"$eq":"public"}}]}GET requests only:
{"$and":[{"method":{"$eq":"GET"}}]}Combine conditions:
{"$and":[{"visibility":{"$eq":"public"}},{"workspaceId":{"$eq":"ws-abc123"}}]}Environments in a workspace:
{"$and":[{"workspaceId":{"$eq":"ws-abc123"}}]}
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | The search query (e.g. "payment API", "notification service", "Stripe"). | |
| limit | No | The maximum number of search results to return. Maximum: 25. | |
| cursor | No | The cursor to get the next set of results in the paginated response. Pass the `nextCursor` value from the previous response. | |
| filters | No | Structured filter expression. Top-level key must be "$and" with an array of condition objects. Each condition: { "<field>": { "<operator>": <value> } }. Example: {"$and":[{"privateNetwork":{"$eq":true}}]} | |
| ownership | No | The ownership scope. Use `organization` to search all resources in your organization (default), `external` to search the public Postman network, or `all` to search across all scopes. | organization |
| entityType | No | The type of Postman entity to search for: `requests` (individual API requests), `collections` (API collections), `workspaces` (Postman workspaces), `specs` (API specifications), `flows` (Postman Flows), `environments` (Postman Environments), `mocks` (Postman Mock Servers), or `documents` (Postman workspace documents). | requests |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses extensive behavioral semantics: ownership scope meaning, filter structure with $and and operator rules, which filter fields apply to which element types, and examples of valid filter expressions. This goes well beyond what annotations 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?
The description is long but extremely well-structured with clear sections, tables, and bullet points. Every part adds necessary information for a complex tool with nested filters and multiple entity types. It earns its length, though it could be slightly trimmed by avoiding some repetition with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers ownership, element types, filters, and examples comprehensively. It does not explicitly describe the response format or pagination behavior, but the cursor parameter in the schema hints at pagination. For a complex search tool with no output schema, this is nearly complete but leaves return structure implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds substantial meaning beyond the schema: it explains ownership values with decision criteria, lists all element types with context, and provides a comprehensive filter field/operator table plus multiple examples. This is far more than the schema's per-parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for Postman entities across multiple types (requests, collections, workspaces, etc.) and scopes (organization, external, all). The verb 'Search' and resource are specific, and the ownership scope distinguishes it from simple retrieval tools like getCollections or getWorkspaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a detailed table mapping user goals to ownership values and recommended filters, which is clear contextual guidance. However, it does not explicitly name sibling tools as alternatives or say when not to use this tool in favor of a more specific getter, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncCollectionWithSpecSync collection with specAIdempotentInspect
Syncs a collection generated from an API specification. This is an asynchronous endpoint that returns an HTTP `202 Accepted` response.
Note:
This endpoint only supports the OpenAPI 2.0, 3.0, and 3.1 specification types.
You can only sync collections generated from the given spec ID.
| Name | Required | Description | Default |
|---|---|---|---|
| specId | Yes | The spec's ID. | |
| collectionUid | Yes | The collection's unique ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the async behavior: 'This is an asynchronous endpoint that returns an HTTP 202 Accepted response.' This goes beyond the annotations and informs the agent that success is not a completed sync. It also adds restrictions around supported spec types and the generation relationship, though it does not mention how to track or confirm the async completion.
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 short, front-loaded, and uses bulleted notes for detail. Every sentence serves a purpose: defining the operation, flagging async behavior, and listing key constraints. No redundant text or padding.
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 operation with simple parameters and no output schema, the description is sufficiently complete: it covers purpose, async behavior, supported spec types, and a required relationship with the passed spec ID. It lacks an explicit statement about what happens after the 202 response or whether a separate status-check tool is needed, but this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters clearly with 100% coverage. The description adds meaningful context by saying 'You can only sync collections generated from the given spec ID,' which clarifies the relationship between specId and collectionUid. It also implies that collectionUid should be a collection generated from specId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Syncs a collection generated from an API specification.' It identifies the resource (a collection) and the operation (sync), and clarifies the spec types supported. However, it does not explicitly distinguish this tool from its sibling syncSpecWithCollection, so sibling differentiation is weaker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: the tool is for collections generated from specs, supports only OpenAPI 2.0/3.0/3.1, and can only sync collections generated from the given spec ID. But it does not explain when to choose this over alternatives like syncSpecWithCollection or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncSpecWithCollectionSync spec with collectionAIdempotentInspect
Syncs an API specification linked to a collection. This is an asynchronous endpoint that returns an HTTP `202 Accepted` response.
Note:
This endpoint only supports the OpenAPI 2.0, 3.0, and 3.1 specification types.
You can only sync collections generated from the given specification ID.
| Name | Required | Description | Default |
|---|---|---|---|
| specId | Yes | The spec's ID. | |
| collectionUid | Yes | The collection's unique ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, idempotent, non-destructive operation. The description adds valuable behavioral context beyond this: it explicitly states the endpoint is asynchronous and returns HTTP 202 Accepted, and further constrains the operation to specific OpenAPI versions and collection origins.
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 concise: two sentences plus a short bulleted list. It front-loads the core action and then efficiently presents the key constraints. No redundant 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-parameter tool with no output schema, the description covers the essential invocation context: async behavior, supported spec types, and a precondition on the collection. It does not explain what the sync actually updates or how to poll for completion, but this is moderately covered by the annotations and the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters, so baseline is 3. The description adds semantic linkage between specId and collectionUid by stating that only collections generated from the given spec ID can be synced, which clarifies how the parameters relate and what values are valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Syncs an API specification linked to a collection') with a clear subject and resource. The direction (spec to collection) is implied by the constraint that only collections generated from the spec ID can be synced, which distinguishes it from the sibling syncCollectionWithSpec, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes important usage constraints: it is asynchronous, supports only OpenAPI 2.0/3.0/3.1, and requires collections generated from the given spec ID. However, it does not explicitly mention when to use this tool versus the reverse sibling syncCollectionWithSpec, nor does it provide alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateCollectionRequestUpdate a requestAIdempotentInspect
Updates a request in a collection. For a complete list of properties, refer to the Request entry in the Postman Collection Format documentation.
Note:
You must pass a collection ID (`12ece9e1-2abf-4edc-8e34-de66e74114d2`), not a collection(`12345678-12ece9e1-2abf-4edc-8e34-de66e74114d2`), in this endpoint.
This endpoint does not support changing the folder of a request.
This endpoint acts like a PATCH method. It only updates the values that you pass in the request body.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The request's URL. | |
| auth | No | The request's authorization settings. | |
| data | No | The request body's form or urlencoded data. | |
| name | No | The request's name. | |
| events | No | The request's pre-request and test scripts. | |
| method | No | The request's HTTP method. | |
| dataMode | No | The request body's data mode. | |
| requestId | Yes | The request's ID. | |
| headerData | No | The request's headers. | |
| dataOptions | No | Additional options for the request body data. | |
| description | No | The request's description. | |
| queryParams | No | The request's query parameters. | |
| rawModeData | No | The request body's raw mode data. | |
| collectionId | Yes | The collection's ID. | |
| graphqlModeData | No | The request body's GraphQL mode data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly explains the PATCH-like behavior, which is critical for understanding that omitted fields are not reset. It also states the limitation about folder changes. Annotations declare idempotentHint=true (consistent with PATCH) and destructiveHint=false; the description aligns well, adding behavioral nuance beyond 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?
The description is concise and structured: a clear primary sentence followed by a list of notes. It front-loads the core action and then presents important caveats in an easy-to-parse list. No unnecessary fluff, though the note about the collection ID could be more prominent.
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 15 parameters, the description provides complete, necessary context: it clarifies the ID requirement, PATCH semantics, and the folder limitation. Since there is no output schema, the description doesn't need to explain return values, but it covers the main operational traps, making it sufficient for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines every parameter. The description adds context for specific parameters like collectionId (explaining the ID vs UID distinction), but does not elaborate on the update semantics for each field (e.g., how auth or headers are handled). Thus, it adds some value beyond schema, but the schema carries most of the weight.
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 'Updates a request in a collection', clearly identifying the verb (update) and the resource (request within a collection). It distinguishes itself from createCollectionRequest and other update tools, but does not explicitly name a sibling or contrast with them. The title aligns well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides key usage guidance: it specifies that collectionId must be the collection ID not the collection UID (with an illustrative example), and notes that folder changes are not supported, and that it acts as a PATCH (only updates provided values). However, it does not explicitly say when not to use this tool versus alternatives like createCollectionRequest or putCollection, but the guidance on scope is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateMockUpdate a mock serverAIdempotentInspect
Updates a mock server.
Resource: Mock server entity associated with a collection UID.
Use this to change name, environment, privacy, or default server response.
To activate a server response, set `config.serverResponseId` to the server response's `id`. Pass `null` to deactivate.
| Name | Required | Description | Default |
|---|---|---|---|
| mock | No | The mock server fields to update. | |
| mockId | Yes | The mock's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a mutating but non-destructive, idempotent operation. The description adds useful behavioral detail by explaining how setting `config.serverResponseId` activates a server response and passing `null` deactivates it. It does not contradict 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?
The description is compact, uses bullet points for scannability, and front-loads the core purpose. Every line carries useful information: the resource, the actionable fields, and the special activation behavior. There is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter update tool with a fully documented schema and annotations covering safety and idempotency, the description provides the essential operational context. It explains what can be updated and the key behavioral nuance for `serverResponseId`, making it complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameter meanings. The description's activation/deactivation note largely repeats the schema text for `serverResponseId`, adding no significant semantic information beyond what the schema provides. This meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Updates a mock server') and a specific resource ('Mock server entity associated with a collection UID'). It also enumerates the fields that can be changed, making its purpose clear and distinct from creation, publishing, or other mock-related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to change name, environment, privacy, or default server response,' which gives clear when-to-use guidance. It does not explicitly mention alternatives or exclusions, such as pointing to createMock or publishMock, so it falls short of full 5-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateSpecFileUpdate a spec fileAIdempotentInspect
Updates a file for an OpenAPI or protobuf 2 or 3 specification.
Note:
This endpoint does not accept an empty request body. You must pass one of the accepted values.
This endpoint does not accept multiple request body properties in a single call. For example, you cannot pass both the `content` and `type` property at the same time.
Multi-file specifications can only have one root file.
When updating a file type to `ROOT`, the previous root file is updated to the `DEFAULT` file type.
Files cannot exceed a maximum of 10 MB in size.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The file's name. | |
| type | No | The type of file: - `ROOT` — The file containing the full OpenAPI structure. This serves as the entry point for the API spec and references other (`DEFAULT`) spec files. Multi-file specs can only have one root file. - `DEFAULT` — A file referenced by the `ROOT` file. | |
| specId | Yes | The spec's ID. | |
| content | No | The specification's stringified contents. | |
| filePath | Yes | The path to the file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false, destructiveHint=false), but the description adds valuable behavioral details: no empty body, cannot pass multiple body properties, root file switching behavior, and file size limit. This covers important side effects and constraints beyond the annotations, improving transparency.
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 highly concise, front-loading the purpose and then using bullet points for critical notes. No superfluous text; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of output schema, the description covers essential constraints (no empty body, no multi-property, root-file behavior, size limit) that are critical for correct usage. It does not explicitly address error conditions, but the provided notes are substantial enough for a complex mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 5 parameters at 100%, so baseline is 3. The description adds cross-parameter constraints (cannot pass both content and type simultaneously) and explains the root file behavior, which enriches the parameter semantics beyond individual field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates a spec file for OpenAPI or protobuf, using a specific verb+resource. It implicitly distinguishes from createSpecFile (updating vs creating), though it doesn't explicitly name alternative tools. The title and description align well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives context on when to use (updating existing spec files) but does not explicitly mention when not to use it or contrast with sibling tools like createSpecFile or updateSpecProperties. The constraints (no empty body, one property at a time, root file rules) are helpful but are more about how to use than when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateSpecPropertiesUpdate a spec's propertiesBIdempotentInspect
Updates an API specification's properties, such as its name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The spec's name. | |
| specId | Yes | The spec's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond what the annotations already convey. Annotations indicate the operation is not read-only, not destructive, and idempotent, but the description does not mention permissions, side effects, or what happens to unspecified properties. There is no contradiction with annotations, but there is also no added transparency.
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 focused sentence with no wasted words. It is front-loaded with the verb and object, making it easy to scan.
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 update operation with complete schema coverage, the description is minimally adequate. However, it does not clarify the update's scope (e.g., whether only metadata like name is affected, versus file contents or definition), nor does it mention return or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters clearly documented. The description's mention of 'such as its name' only repeats the schema's existing parameter description and adds no meaningful semantic detail, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Updates an API specification's properties') and gives a concrete example ('such as its name'). This distinguishes it from sibling tools like updateSpecFile or updateWorkspace by focusing on spec property metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like updateSpecFile, createSpec, or putSpec. The description only restates the basic action without any context, exclusions, or relationships to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateWorkspaceUpdate a workspaceAIdempotentInspect
Updates a workspace's property, such as its name or visibility.
Note:
This endpoint does not support the following visibility changes:
`private` to `public`, `public` to `private`, and `private` to `personal` for Free and Solo plans.
`public` to `personal` for team users only.
There are rate limits when publishing public workspaces.
Public team workspace names must be unique.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | The workspace fields to update. | |
| workspaceId | Yes | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, destructive, and idempotency hints, so the remaining burden is added context. The description contributes meaningful behavioral details: unsupported visibility changes by plan/audience, rate limits when publishing public workspaces, and a uniqueness requirement for public team workspace names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is concise and specific, and the note list is scannable. There is minor redundancy with the schema's type field description, but the additional notes earn their place and clarify failure modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with the rich schema and annotations, the description covers the key failure modes and constraints for an agent making a workspace update. It does not describe the response shape, but the main risks for this operation are behavioral and are disclosed here.
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 description is not required to restate field definitions. It adds value with parameter-level constraints, especially the uniqueness rule for public team workspace names and rate-limit implications when setting public visibility.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'updates' with a workspace resource and gives concrete examples such as name or visibility. It clearly distinguishes the tool from sibling read/create operations without being a tautology of the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for modifying an existing workspace and gives important constraints such as unsupported visibility transitions, rate limits, and unique public team names. It does not explicitly direct agents to choose this tool over alternatives like createWorkspace or getWorkspace, so the guidance is present but not proactive.
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.
8 tool updates
v2.12.3- Changed
createCollection1 field changed- added
Input schema / properties / collection / descriptionAdded value: +"Information about the collection."
- Changed
createCollectionRequest6 fields changed- changed
Input schema / properties / auth / descriptionPrevious value: -"The request's authentication information."New value: +"The request's authorization settings." - changed
Input schema / properties / data / descriptionPrevious value: -"The request body's form data."New value: +"The request body's form or urlencoded data." - changed
Input schema / properties / dataOptions / descriptionPrevious value: -"Additional configurations and options set for the request body's various data modes."New value: +"Additional options for the request body data." - changed
Input schema / properties / events / descriptionPrevious value: -"A list of scripts configured to run when specific events occur."New value: +"The request's pre-request and test scripts." - added
Input schema / properties / folderAdded value: +{ + "description": "The folder ID in which to create the request. By default, the system creates the request at the collection level.", + "type": "string" +} - removed
Input schema / properties / folderIdRemoved value: -{ - "description": "The folder ID in which to create the request. By default, the system will create the request at the collection level.", - "type": "string" -}
- Changed
createCollectionResponse3 fields changed- changed
Input schema / properties / dataOptions / descriptionPrevious value: -"Additional configurations and options set for the request body's various data modes."New value: +"Additional options for the associated request body data." - changed
Input schema / properties / headers / descriptionPrevious value: -"A list of headers."New value: +"The response's headers." - changed
Input schema / properties / method / descriptionPrevious value: -"The request's HTTP method."New value: +"The associated request's HTTP method."
- Changed
createMock1 field changed- added
Input schema / properties / mock / descriptionAdded value: +"Information about the mock server to create."
- Changed
putCollection3 fields changed- added
Input schema / properties / collection / descriptionAdded value: +"The new collection contents that replace the existing collection." - added
Input schema / properties / collection / properties / info / properties / createdAtAdded value: +{ + "description": "The date and time when the collection was created.", + "format": "date-time", + "type": "string" +} - removed
Input schema / properties / collection / properties / info / properties / createdatRemoved value: -{ - "description": "The date and time when the collection was created.", - "format": "date-time", - "type": "string" -}
- Changed
updateCollectionRequest4 fields changed- changed
Input schema / properties / auth / descriptionPrevious value: -"The request's authentication information."New value: +"The request's authorization settings." - changed
Input schema / properties / data / descriptionPrevious value: -"The request body's form data."New value: +"The request body's form or urlencoded data." - changed
Input schema / properties / dataOptions / descriptionPrevious value: -"Additional configurations and options set for the request body's various data modes."New value: +"Additional options for the request body data." - changed
Input schema / properties / events / descriptionPrevious value: -"A list of scripts configured to run when specific events occur."New value: +"The request's pre-request and test scripts."
- Changed
updateMock1 field changed- added
Input schema / properties / mock / descriptionAdded value: +"The mock server fields to update."
- Changed
updateWorkspace1 field changed- added
Input schema / properties / workspace / descriptionAdded value: +"The workspace fields to update."
8 tool updates
v2.12.0- Changed
createCollection3 fields changed- removed
Input schema / properties / collection / properties / info / properties / schema / constRemoved value: -"https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - changed
Input schema / properties / collection / properties / info / properties / schema / descriptionPrevious value: -"The \"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\" Postman Collection Format v2.1.0 schema."New value: +"The \"https://schema.postman.com/json/collection/v2.1.0/collection.json\" Postman Collection Format v2.1.0 schema." - added
Input schema / properties / collection / properties / info / properties / schema / enumAdded value: +[ + "https://schema.postman.com/json/collection/v2.1.0/collection.json", + "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" +]
- Changed
createCollectionRequest3 fields changed- removed
Input schema / properties / events / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": false, - "properties": { - "listen": { - "description": "The event type.", - "enum": [ - "test", - "prerequest" - ], - "type": "string" - }, - "script": { - "additionalProperties": false, - "description": "Information about the Javascript code that can be used to to perform setup or teardown operations in a response.", - "properties": { - "exec": { - "description": "A list of script strings, where each line represents a line of code. Separate lines makes it easy to track script changes.", - "items": { - "type": [ - "string", - "null" - ] - }, - "type": "array" - }, - "id": { - "description": "The script's ID.", - "type": "string" - }, - "type": { - "description": "The type of script. For example, `text/javascript`.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / events / itemsAdded value: +{ + "additionalProperties": false, + "properties": { + "listen": { + "description": "The event type.", + "enum": [ + "test", + "prerequest" + ], + "type": "string" + }, + "script": { + "additionalProperties": false, + "description": "Information about the Javascript code that can be used to to perform setup or teardown operations in a response.", + "properties": { + "exec": { + "description": "A list of script strings, where each line represents a line of code. Separate lines makes it easy to track script changes.", + "items": { + "type": [ + "string", + "null" + ] + }, + "type": "array" + }, + "id": { + "description": "The script's ID.", + "type": "string" + }, + "type": { + "description": "The type of script. For example, `text/javascript`.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" +} - added
Input schema / properties / events / typeAdded value: +"array"
- Changed
createEnvironment5 fields changed- removed
Input schema / properties / environment / properties / values / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / environment / properties / values / items / anyOfAdded value: +[ + { + "additionalProperties": false, + "description": "Information about the variable.", + "properties": { + "description": { + "description": "The variable's description.", + "maxLength": 512, + "type": "string" + }, + "enabled": { + "description": "If true, the variable is enabled.", + "type": "boolean" + }, + "key": { + "description": "The variable's name.", + "type": "string" + }, + "type": { + "description": "The variable's type:\n- `secret` — The variable value is masked.\n- `default` — The variable value is visible in plain text.\n", + "enum": [ + "secret", + "default" + ], + "type": "string" + }, + "value": { + "description": "The variable's value.", + "type": "string" + } + }, + "type": "object" + }, + { + "additionalProperties": false, + "description": "Information about the variable stored in the Postman Vault. This property only returns when a variable is defined as secret.", + "properties": { + "description": { + "description": "The variable's description.", + "maxLength": 512, + "type": "string" + }, + "enabled": { + "description": "If true, the variable is enabled.", + "type": "boolean" + }, + "key": { + "description": "The variable's name.", + "type": "string" + }, + "secret": { + "description": "If true, the variable is marked as secret and its value is retrieved from the mentioned provider in the source field.", + "type": "boolean" + }, + "source": { + "additionalProperties": false, + "description": "Information about the source of the variable's value.", + "properties": { + "postman": { + "additionalProperties": false, + "description": "Information about the Postman-specific source of the variable's value.", + "properties": { + "secretId": { + "description": "The variable's secret ID.", + "type": "string" + }, + "type": { + "const": "cloud", + "description": "The variable's type:\n- `cloud` — The variable value is synced and stored in the Postman Cloud.\n", + "type": "string" + }, + "vaultId": { + "description": "The variable's ID in the Postman Vault.", + "type": "string" + } + }, + "type": "object" + }, + "provider": { + "const": "postman", + "description": "The secret's provider.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The variable's type:\n- `secret` — The variable value is masked.\n- `default` — The variable value is visible in plain text.\n", + "enum": [ + "secret", + "default" + ], + "type": "string" + }, + "value": { + "description": "The variable's value.", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / environment / properties / values / items / descriptionRemoved value: -"Information about the environment's variables." - removed
Input schema / properties / environment / properties / values / items / propertiesRemoved value: -{ - "description": { - "description": "The variable's description.", - "maxLength": 512, - "type": "string" - }, - "enabled": { - "description": "If true, the variable is enabled.", - "type": "boolean" - }, - "key": { - "description": "The variable's name.", - "type": "string" - }, - "type": { - "description": "The variable's type:\n- `secret` — The variable value is masked.\n- `default` — The variable value is visible in plain text.\n", - "enum": [ - "secret", - "default" - ], - "type": "string" - }, - "value": { - "description": "The variable's value.", - "type": "string" - } -} - removed
Input schema / properties / environment / properties / values / items / typeRemoved value: -"object"
- Changed
getWorkspace3 fields changed- changed
Input schema / properties / include / descriptionPrevious value: -"Include the following information in the endpoint's response:\n- `mocks:deactivated` — Include all deactivated mock servers in the response.\n- `scim` — Return the SCIM user IDs of the workspace creator and who last modified it.\n"New value: +"A comma-separated list of values to include in the endpoint's response:\n- `scim` — Return the SCIM user IDs of the workspace creator and who last modified it.\n- `team` — Return the workspace's team ID. Returns a null value if the workspace isn't associated with a team.\n- `mocks:deactivated` — Include all deactivated mock servers in the response.\n" - removed
Input schema / properties / include / enumRemoved value: -[ - "mocks:deactivated", - "scim" -] - added
Input schema / properties / include / patternAdded value: +"^(?!.*(?:^|,)(team|scim|mocks:deactivated),(?:.*,)?\\1(?:$|,))(team|scim|mocks:deactivated)(,(team|scim|mocks:deactivated))*$"
- Changed
putCollection13 fields changed- removed
Input schema / properties / collection / properties / info / properties / schema / constRemoved value: -"https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - changed
Input schema / properties / collection / properties / info / properties / schema / descriptionPrevious value: -"The \"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\" Postman Collection Format v2.1.0 schema."New value: +"The \"https://schema.postman.com/json/collection/v2.1.0/collection.json\" Postman Collection Format v2.1.0 schema." - added
Input schema / properties / collection / properties / info / properties / schema / enumAdded value: +[ + "https://schema.postman.com/json/collection/v2.1.0/collection.json", + "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" +] - removed
Input schema / properties / collection / properties / item / items / properties / variable / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / collection / properties / item / items / properties / variable / items / anyOfAdded value: +[ + { + "additionalProperties": false, + "description": "Information about the variable.", + "properties": { + "description": { + "description": "The variable's description.", + "maxLength": 512, + "type": "string" + }, + "disabled": { + "default": false, + "description": "If true, the variable is not enabled. Doesn't apply to path parameter variables.", + "type": "boolean" + }, + "enabled": { + "default": true, + "description": "If true, the variable is enabled.", + "type": "boolean" + }, + "id": { + "description": "The variable's ID. Doesn't apply to collection-level variables.", + "type": "string" + }, + "key": { + "description": "The variable's key (name).", + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "integer" + } + ], + "description": "The key's value." + } + }, + "type": "object" + }, + { + "additionalProperties": false, + "description": "Information about the secret variable.", + "properties": { + "description": { + "description": "The variable's description.", + "maxLength": 512, + "type": "string" + }, + "enabled": { + "default": true, + "description": "If true, the variable is enabled.", + "type": "boolean" + }, + "id": { + "description": "The variable's ID. Doesn't apply to collection-level variables.", + "type": "string" + }, + "key": { + "description": "The variable's key (name).", + "type": "string" + }, + "secret": { + "description": "If true, the variable is marked as secret and its value is retrieved from the mentioned provider in the source field.", + "type": "boolean" + }, + "source": { + "additionalProperties": false, + "description": "Information about the source of the variable's value.", + "properties": { + "postman": { + "additionalProperties": false, + "description": "Information about the Postman-specific source of the variable's value.", + "properties": { + "secretId": { + "description": "The variable's secret ID.", + "type": "string" + }, + "type": { + "const": "cloud", + "description": "The variable's type:\n- `cloud` — The variable value is synced and stored in the Postman Cloud.\n", + "type": "string" + }, + "vaultId": { + "description": "The variable's ID in the Postman Vault.", + "type": "string" + } + }, + "type": "object" + }, + "provider": { + "const": "postman", + "description": "The secret's provider.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } +] - removed
Input schema / properties / collection / properties / item / items / properties / variable / items / descriptionRemoved value: -"Information about the variable." - removed
Input schema / properties / collection / properties / item / items / properties / variable / items / propertiesRemoved value: -{ - "description": { - "description": "The variable's description.", - "maxLength": 512, - "type": "string" - }, - "disabled": { - "default": false, - "description": "If true, the variable is not enabled. Doesn't apply to path parameter variables.", - "type": "boolean" - }, - "id": { - "description": "The variable's ID. Doesn't apply to collection-level variables.", - "type": "string" - }, - "key": { - "description": "The variable's key (name).", - "type": "string" - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "boolean" - }, - { - "type": "integer" - } - ], - "description": "The key's value." - } -} - removed
Input schema / properties / collection / properties / item / items / properties / variable / items / typeRemoved value: -"object" - removed
Input schema / properties / collection / properties / variable / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / collection / properties / variable / items / anyOfAdded value: +[ + { + "additionalProperties": false, + "description": "Information about a collection-level variable. Collection variables don't support `id`, `description`, or `enabled` fields. Use `disabled` to control whether a variable is active.", + "properties": { + "disabled": { + "default": false, + "description": "If true, the variable is not enabled.", + "type": "boolean" + }, + "key": { + "description": "The variable's key (name).", + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "integer" + } + ], + "description": "The key's value." + } + }, + "type": "object" + }, + { + "additionalProperties": false, + "description": "Information about a collection-level secret variable. Collection variables don't have an `id` field.", + "properties": { + "description": { + "description": "The variable's description.", + "maxLength": 512, + "type": "string" + }, + "enabled": { + "default": true, + "description": "If true, the variable is enabled.", + "type": "boolean" + }, + "key": { + "description": "The variable's key (name).", + "type": "string" + }, + "secret": { + "description": "If true, the variable is marked as secret and its value is retrieved from the mentioned provider in the source field.", + "type": "boolean" + }, + "source": { + "additionalProperties": false, + "description": "Information about the source of the variable's value.", + "properties": { + "postman": { + "additionalProperties": false, + "description": "Information about the Postman-specific source of the variable's value.", + "properties": { + "secretId": { + "description": "The variable's secret ID.", + "type": "string" + }, + "type": { + "const": "cloud", + "description": "The variable's type:\n- `cloud` — The variable value is synced and stored in the Postman Cloud.\n", + "type": "string" + }, + "vaultId": { + "description": "The variable's ID in the Postman Vault.", + "type": "string" + } + }, + "type": "object" + }, + "provider": { + "const": "postman", + "description": "The secret's provider.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } +] - removed
Input schema / properties / collection / properties / variable / items / descriptionRemoved value: -"Information about the variable." - removed
Input schema / properties / collection / properties / variable / items / propertiesRemoved value: -{ - "description": { - "description": "The variable's description.", - "maxLength": 512, - "type": "string" - }, - "disabled": { - "default": false, - "description": "If true, the variable is not enabled. Doesn't apply to path parameter variables.", - "type": "boolean" - }, - "id": { - "description": "The variable's ID. Doesn't apply to collection-level variables.", - "type": "string" - }, - "key": { - "description": "The variable's key (name).", - "type": "string" - }, - "value": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "boolean" - }, - { - "type": "integer" - } - ], - "description": "The key's value." - } -} - removed
Input schema / properties / collection / properties / variable / items / typeRemoved value: -"object"
- Changed
putEnvironment5 fields changed- removed
Input schema / properties / environment / properties / values / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / environment / properties / values / items / anyOfAdded value: +[ + { + "additionalProperties": false, + "description": "Information about the variable.", + "properties": { + "description": { + "description": "The variable's description.", + "maxLength": 512, + "type": "string" + }, + "enabled": { + "description": "If true, the variable is enabled.", + "type": "boolean" + }, + "key": { + "description": "The variable's name.", + "type": "string" + }, + "type": { + "description": "The variable's type:\n- `secret` — The variable value is masked.\n- `default` — The variable value is visible in plain text.\n", + "enum": [ + "secret", + "default" + ], + "type": "string" + }, + "value": { + "description": "The variable's value.", + "type": "string" + } + }, + "type": "object" + }, + { + "additionalProperties": false, + "description": "Information about the variable stored in the Postman Vault. This property only returns when a variable is defined as secret.", + "properties": { + "description": { + "description": "The variable's description.", + "maxLength": 512, + "type": "string" + }, + "enabled": { + "description": "If true, the variable is enabled.", + "type": "boolean" + }, + "key": { + "description": "The variable's name.", + "type": "string" + }, + "secret": { + "description": "If true, the variable is marked as secret and its value is retrieved from the mentioned provider in the source field.", + "type": "boolean" + }, + "source": { + "additionalProperties": false, + "description": "Information about the source of the variable's value.", + "properties": { + "postman": { + "additionalProperties": false, + "description": "Information about the Postman-specific source of the variable's value.", + "properties": { + "secretId": { + "description": "The variable's secret ID.", + "type": "string" + }, + "type": { + "const": "cloud", + "description": "The variable's type:\n- `cloud` — The variable value is synced and stored in the Postman Cloud.\n", + "type": "string" + }, + "vaultId": { + "description": "The variable's ID in the Postman Vault.", + "type": "string" + } + }, + "type": "object" + }, + "provider": { + "const": "postman", + "description": "The secret's provider.", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The variable's type:\n- `secret` — The variable value is masked.\n- `default` — The variable value is visible in plain text.\n", + "enum": [ + "secret", + "default" + ], + "type": "string" + }, + "value": { + "description": "The variable's value.", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / environment / properties / values / items / descriptionRemoved value: -"Information about the environment's variables." - removed
Input schema / properties / environment / properties / values / items / propertiesRemoved value: -{ - "description": { - "description": "The variable's description.", - "maxLength": 512, - "type": "string" - }, - "enabled": { - "description": "If true, the variable is enabled.", - "type": "boolean" - }, - "key": { - "description": "The variable's name.", - "type": "string" - }, - "type": { - "description": "The variable's type:\n- `secret` — The variable value is masked.\n- `default` — The variable value is visible in plain text.\n", - "enum": [ - "secret", - "default" - ], - "type": "string" - }, - "value": { - "description": "The variable's value.", - "type": "string" - } -} - removed
Input schema / properties / environment / properties / values / items / typeRemoved value: -"object"
- Changed
searchPostmanElements3 fields changed- changed
Input schema / properties / entityType / descriptionPrevious value: -"The type of Postman entity to search for: `requests` (individual API requests), `collections` (API collections), `workspaces` (Postman workspaces), `specs` (API specifications), `flows` (Postman Flows), `environments` (Postman Environments), or `mocks` (Postman Mock Servers)."New value: +"The type of Postman entity to search for: `requests` (individual API requests), `collections` (API collections), `workspaces` (Postman workspaces), `specs` (API specifications), `flows` (Postman Flows), `environments` (Postman Environments), `mocks` (Postman Mock Servers), or `documents` (Postman workspace documents)." - changed
Input schema / properties / entityType / enumPrevious value: -[ - "requests", - "collections", - "workspaces", - "specs", - "flows", - "environments", - "mocks" -]New value: +[ + "requests", + "collections", + "workspaces", + "specs", + "flows", + "environments", + "mocks", + "documents" +] - added
Input schema / properties / filters / properties / $and / items / properties / documentIdAdded value: +{ + "$ref": "#/properties/filters/properties/$and/items/properties/workspaceId" +}
- Changed
updateCollectionRequest3 fields changed- removed
Input schema / properties / events / anyOfRemoved value: -[ - { - "items": { - "additionalProperties": false, - "properties": { - "listen": { - "description": "The event type.", - "enum": [ - "test", - "prerequest" - ], - "type": "string" - }, - "script": { - "additionalProperties": false, - "description": "Information about the Javascript code that can be used to to perform setup or teardown operations in a response.", - "properties": { - "exec": { - "description": "A list of script strings, where each line represents a line of code. Separate lines makes it easy to track script changes.", - "items": { - "type": [ - "string", - "null" - ] - }, - "type": "array" - }, - "id": { - "description": "The script's ID.", - "type": "string" - }, - "type": { - "description": "The type of script. For example, `text/javascript`.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -] - added
Input schema / properties / events / itemsAdded value: +{ + "additionalProperties": false, + "properties": { + "listen": { + "description": "The event type.", + "enum": [ + "test", + "prerequest" + ], + "type": "string" + }, + "script": { + "additionalProperties": false, + "description": "Information about the Javascript code that can be used to to perform setup or teardown operations in a response.", + "properties": { + "exec": { + "description": "A list of script strings, where each line represents a line of code. Separate lines makes it easy to track script changes.", + "items": { + "type": [ + "string", + "null" + ] + }, + "type": "array" + }, + "id": { + "description": "The script's ID.", + "type": "string" + }, + "type": { + "description": "The type of script. For example, `text/javascript`.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" +} - added
Input schema / properties / events / typeAdded value: +"array"
1 tool update
v2.9.1- Changed
searchPostmanElements2 fields changed- changed
Input schema / properties / entityType / descriptionPrevious value: -"The type of Postman entity to search for: `requests` (individual API requests), `collections` (API collections), `workspaces` (Postman workspaces), `specs` (API specifications), `flows` (Postman Flows), or `environments` (Postman Environments)."New value: +"The type of Postman entity to search for: `requests` (individual API requests), `collections` (API collections), `workspaces` (Postman workspaces), `specs` (API specifications), `flows` (Postman Flows), `environments` (Postman Environments), or `mocks` (Postman Mock Servers)." - changed
Input schema / properties / entityType / enumPrevious value: -[ - "requests", - "collections", - "workspaces", - "specs", - "flows", - "environments" -]New value: +[ + "requests", + "collections", + "workspaces", + "specs", + "flows", + "environments", + "mocks" +]
3 tool updates
v2.9.0- Changed
createSpec3 fields changed- changed
Input schema / properties / files / items / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "content": { - "description": "The file's stringified contents.", - "type": "string" - }, - "path": { - "description": "The file's path. Accepts .json, .yaml, .proto and .graphql file types.", - "type": "string" - }, - "type": { - "description": "The type of file. This property is required when creating multi-file specifications:\n- `ROOT` — The file containing the full OpenAPI structure. This serves as the entry point for the API spec and references other (`DEFAULT`) spec files. Multi-file specs can only have one root file.\n- `DEFAULT` — A file referenced by the `ROOT` file.\n", - "enum": [ - "DEFAULT", - "ROOT" - ], - "type": "string" - } - }, - "required": [ - "path", - "content", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "content": { - "description": "The file's stringified contents.", - "type": "string" - }, - "path": { - "description": "The file's path. Accepts .json, .yaml, .proto and .graphql file types.", - "type": "string" - } - }, - "required": [ - "path", - "content" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "content": { + "description": "The file's stringified contents.", + "type": "string" + }, + "path": { + "description": "The file's path. Accepts .json, .yaml, and .proto types.", + "type": "string" + }, + "type": { + "description": "The type of file. This property is required when creating multi-file specifications:\n- `ROOT` — The file containing the full OpenAPI structure. This serves as the entry point for the API spec and references other (`DEFAULT`) spec files. Multi-file specs can only have one root file.\n- `DEFAULT` — A file referenced by the `ROOT` file.\n", + "enum": [ + "DEFAULT", + "ROOT" + ], + "type": "string" + } + }, + "required": [ + "path", + "content", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "content": { + "description": "The file's stringified contents.", + "type": "string" + }, + "path": { + "description": "The file's path. Accepts .json, .yaml, .proto, .graphql, and .smithy file types.", + "type": "string" + } + }, + "required": [ + "path", + "content" + ], + "type": "object" + } +] - changed
Input schema / properties / type / descriptionPrevious value: -"The specification's type."New value: +"The type of API specification." - changed
Input schema / properties / type / enumPrevious value: -[ - "OPENAPI:2.0", - "OPENAPI:3.0", - "OPENAPI:3.1", - "ASYNCAPI:2.0", - "PROTOBUF:2", - "PROTOBUF:3", - "GRAPHQL" -]New value: +[ + "OPENAPI:2.0", + "OPENAPI:3.0", + "OPENAPI:3.1", + "ASYNCAPI:2.0", + "ASYNCAPI:3.0", + "PROTOBUF:2", + "PROTOBUF:3", + "GRAPHQL", + "SMITHY:2.0" +]
- Changed
putCollection1 field changed- changed
Input schema / properties / collection / properties / auth / properties / type / enumPrevious value: -[ - "basic", - "bearer", - "apikey", - "digest", - "oauth1", - "oauth2", - "hawk", - "awsv4", - "ntlm", - "edgegrid", - "jwt", - "asap" -]New value: +[ + "basic", + "bearer", + "apikey", + "digest", + "oauth1", + "oauth2", + "hawk", + "awsv4", + "ntlm", + "edgegrid", + "jwt", + "asap", + "noauth" +]
- Added
searchPostmanElements
3 tool updates
v2.8.9- Changed
createCollection1 field changed- added
Input schema / properties / collection / properties / item / items / properties / itemAdded value: +{ + "description": "A list of items contained in this folder. Use this property to create folder structures within the collection. Each item can be a request (with a 'request' property) or a nested folder (with its own 'item' property). Omit the 'request' property for folder items.", + "items": { + "additionalProperties": false, + "description": "A nested collection item — either a request (has 'request') or a folder (has 'item').", + "properties": { + "description": { + "description": "The item's description.", + "type": [ + "string", + "null" + ] + }, + "item": { + "description": "Nested folder items for deeper folder structures.", + "items": { + "additionalProperties": false, + "properties": { + "description": { + "description": "The item's description.", + "type": [ + "string", + "null" + ] + }, + "item": { + "description": "Further nested folder items.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "request": { + "additionalProperties": false, + "properties": { + "method": { + "type": "string" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": false, + "properties": { + "raw": { + "type": "string" + } + }, + "type": "object" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "The item's name.", + "type": "string" + }, + "request": { + "additionalProperties": false, + "description": "The request definition.", + "properties": { + "body": { + "additionalProperties": false, + "properties": { + "mode": { + "type": "string" + }, + "raw": { + "type": "string" + } + }, + "type": "object" + }, + "header": { + "items": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "method": { + "enum": [ + "GET", + "PUT", + "POST", + "PATCH", + "DELETE", + "COPY", + "HEAD", + "OPTIONS", + "LINK", + "UNLINK", + "PURGE", + "LOCK", + "UNLOCK", + "PROPFIND", + "VIEW" + ], + "type": "string" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": false, + "properties": { + "raw": { + "type": "string" + } + }, + "type": "object" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "The item's name.", + "type": "string" + }, + "request": { + "additionalProperties": false, + "description": "The request definition. Include for request items, omit for folder items.", + "properties": { + "auth": { + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "noauth", + "basic", + "bearer", + "apikey", + "digest", + "oauth1", + "oauth2", + "hawk", + "awsv4", + "ntlm", + "edgegrid" + ], + "type": "string" + } + }, + "type": "object" + }, + "body": { + "additionalProperties": false, + "properties": { + "mode": { + "enum": [ + "raw", + "urlencoded", + "formdata", + "file", + "graphql" + ], + "type": "string" + }, + "options": { + "additionalProperties": false, + "properties": { + "raw": { + "additionalProperties": false, + "properties": { + "language": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "raw": { + "type": "string" + } + }, + "type": "object" + }, + "header": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "method": { + "description": "The HTTP method.", + "enum": [ + "GET", + "PUT", + "POST", + "PATCH", + "DELETE", + "COPY", + "HEAD", + "OPTIONS", + "LINK", + "UNLINK", + "PURGE", + "LOCK", + "UNLOCK", + "PROPFIND", + "VIEW" + ], + "type": "string" + }, + "url": { + "anyOf": [ + { + "description": "The request's URL string.", + "type": "string" + }, + { + "additionalProperties": false, + "properties": { + "host": { + "items": { + "type": "string" + }, + "type": "array" + }, + "path": { + "items": { + "type": "string" + }, + "type": "array" + }, + "protocol": { + "type": "string" + }, + "query": { + "items": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "raw": { + "description": "The request's raw URL.", + "type": "string" + } + }, + "type": "object" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" +}
- Changed
getCollections1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Filter results by collections that match the given name."New value: +"Filter results by collections whose name exactly matches the given value. Partial or substring matches are not supported."
- Changed
putCollection2 fields changed- added
Input schema / properties / collection / properties / item / items / properties / itemAdded value: +{ + "description": "A list of items contained in this folder. Use this property to create folder structures within the collection. Each item can be a request (with a 'request' property) or a nested folder (with its own 'item' property). Omit the 'request' property for folder items.", + "items": { + "additionalProperties": false, + "description": "A nested collection item — either a request (has 'request') or a folder (has 'item').", + "properties": { + "description": { + "description": "The item's description.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "The collection item's ID.", + "type": "string" + }, + "item": { + "description": "Nested folder items for deeper folder structures.", + "items": { + "additionalProperties": false, + "properties": { + "description": { + "description": "The item's description.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "The collection item's ID.", + "type": "string" + }, + "item": { + "description": "Further nested folder items.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "request": { + "additionalProperties": false, + "properties": { + "method": { + "type": "string" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": false, + "properties": { + "raw": { + "type": "string" + } + }, + "type": "object" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "The item's name.", + "type": "string" + }, + "request": { + "additionalProperties": false, + "description": "The request definition.", + "properties": { + "body": { + "additionalProperties": false, + "properties": { + "mode": { + "type": "string" + }, + "raw": { + "type": "string" + } + }, + "type": "object" + }, + "header": { + "items": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "method": { + "enum": [ + "GET", + "PUT", + "POST", + "PATCH", + "DELETE", + "COPY", + "HEAD", + "OPTIONS", + "LINK", + "UNLINK", + "PURGE", + "LOCK", + "UNLOCK", + "PROPFIND", + "VIEW" + ], + "type": "string" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": false, + "properties": { + "raw": { + "type": "string" + } + }, + "type": "object" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "The item's name.", + "type": "string" + }, + "request": { + "additionalProperties": false, + "description": "The request definition. Include for request items, omit for folder items.", + "properties": { + "auth": { + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "noauth", + "basic", + "bearer", + "apikey", + "digest", + "oauth1", + "oauth2", + "hawk", + "awsv4", + "ntlm", + "edgegrid" + ], + "type": "string" + } + }, + "type": "object" + }, + "body": { + "additionalProperties": false, + "properties": { + "mode": { + "enum": [ + "raw", + "urlencoded", + "formdata", + "file", + "graphql" + ], + "type": "string" + }, + "options": { + "additionalProperties": false, + "properties": { + "raw": { + "additionalProperties": false, + "properties": { + "language": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "raw": { + "type": "string" + } + }, + "type": "object" + }, + "header": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "type": "string" + }, + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "method": { + "description": "The HTTP method.", + "enum": [ + "GET", + "PUT", + "POST", + "PATCH", + "DELETE", + "COPY", + "HEAD", + "OPTIONS", + "LINK", + "UNLINK", + "PURGE", + "LOCK", + "UNLOCK", + "PROPFIND", + "VIEW" + ], + "type": "string" + }, + "url": { + "anyOf": [ + { + "description": "The request's URL string.", + "type": "string" + }, + { + "additionalProperties": false, + "properties": { + "host": { + "items": { + "type": "string" + }, + "type": "array" + }, + "path": { + "items": { + "type": "string" + }, + "type": "array" + }, + "protocol": { + "type": "string" + }, + "query": { + "items": { + "additionalProperties": false, + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "raw": { + "description": "The request's raw URL.", + "type": "string" + } + }, + "type": "object" + } + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" +} - changed
Input schema / properties / collection / properties / item / items / properties / request / properties / auth / properties / type / enumPrevious value: -[ - "basic", - "bearer", - "apikey", - "digest", - "oauth1", - "oauth2", - "hawk", - "awsv4", - "ntlm", - "edgegrid", - "jwt", - "asap" -]New value: +[ + "basic", + "bearer", + "apikey", + "digest", + "oauth1", + "oauth2", + "hawk", + "awsv4", + "ntlm", + "edgegrid", + "jwt", + "asap", + "noauth" +]
12 tool updates
v2.8.7- Changed
createCollection2 fields changed- changed
Input schema / properties / collection / properties / info / properties / name / descriptionPrevious value: -"The collection's name."New value: +"The collection's name. Must not be empty." - added
Input schema / properties / collection / properties / info / properties / name / minLengthAdded value: +1
- Changed
createCollectionRequest12 fields changed- added
Input schema / properties / authAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "apikey": { + "description": "The API key's authentication information.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "asap": { + "description": "The attributes for ASAP authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "awsv4": { + "description": "The attributes for AWS Signature authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "basic": { + "description": "The attributes for Basic Auth.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "bearer": { + "description": "The attributes for Bearer Token authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "digest": { + "description": "The attributes for Digest access authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "edgegrid": { + "description": "The attributes for Akamai Edgegrid authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "hawk": { + "description": "The attributes for Hawk authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "jwt": { + "description": "The attributes for JWT authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "ntlm": { + "description": "The attributes for NTLM authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "oauth1": { + "description": "The attributes for OAuth1 authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "oauth2": { + "description": "The attributes for OAuth2 authentication.", + "items": { + "additionalProperties": false, + "description": "Information about the supported Postman [authorization type](https://learning.postman.com/docs/sending-requests/authorization/authorization-types/).", + "properties": { + "key": { + "description": "The auth method's key value.", + "type": "string" + }, + "type": { + "description": "The value's type.", + "enum": [ + "string", + "boolean", + "number", + "array", + "object", + "any" + ], + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "additionalProperties": {}, + "type": "object" + }, + "type": "array" + } + ], + "description": "The key's value." + } + }, + "required": [ + "key" + ], + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "The authorization type.", + "enum": [ + "basic", + "bearer", + "apikey", + "digest", + "oauth1", + "oauth2", + "hawk", + "awsv4", + "ntlm", + "edgegrid", + "jwt", + "asap", + "noauth" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The request's authentication information." +} - added
Input schema / properties / dataAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "description": "The form data's description.", + "type": "string" + }, + "enabled": { + "description": "If true, the form data entry is enabled.", + "type": "boolean" + }, + "key": { + "description": "The form data's key.", + "type": "string" + }, + "type": { + "description": "The form data's type.", + "enum": [ + "text", + "file" + ], + "type": "string" + }, + "uuid": { + "description": "The form data entry's unique identifier.", + "type": "string" + }, + "value": { + "description": "The form data's value.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "The request body's form data." +} - added
Input schema / properties / dataModeAdded value: +{ + "description": "The request body's data mode.", + "enum": [ + "raw", + "urlencoded", + "formdata", + "binary", + "graphql" + ], + "type": "string" +} - added
Input schema / properties / dataOptionsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "binary": { + "additionalProperties": {}, + "description": "Options for the `binary` data mode.", + "type": "object" + }, + "graphql": { + "additionalProperties": {}, + "description": "Options for the `graphql` data mode.", + "type": "object" + }, + "params": { + "additionalProperties": {}, + "description": "Options for the `params` data mode.", + "type": "object" + }, + "raw": { + "additionalProperties": false, + "description": "Options for the `raw` data mode.", + "properties": { + "language": { + "description": "The raw mode data's language type.", + "type": "string" + } + }, + "type": "object" + }, + "urlencoded": { + "additionalProperties": {}, + "description": "Options for the `urlencoded` data mode.", + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Additional configurations and options set for the request body's various data modes." +} - added
Input schema / properties / descriptionAdded value: +{ + "description": "The request's description.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / eventsAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": false, + "properties": { + "listen": { + "description": "The event type.", + "enum": [ + "test", + "prerequest" + ], + "type": "string" + }, + "script": { + "additionalProperties": false, + "description": "Information about the Javascript code that can be used to to perform setup or teardown operations in a response.", + "properties": { + "exec": { + "description": "A list of script strings, where each line represents a line of code. Separate lines makes it easy to track script changes.", + "items": { + "type": [ + "string", + "null" + ] + }, + "type": "array" + }, + "id": { + "description": "The script's ID.", + "type": "string" + }, + "type": { + "description": "The type of script. For example, `text/javascript`.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "A list of scripts configured to run when specific events occur." +} - added
Input schema / properties / graphqlModeDataAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "query": { + "description": "The GraphQL query.", + "type": "string" + }, + "variables": { + "description": "The GraphQL query variables, in JSON format.", + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The request body's GraphQL mode data." +} - added
Input schema / properties / headerDataAdded value: +{ + "description": "The request's headers.", + "items": { + "additionalProperties": false, + "properties": { + "description": { + "description": "The header's description.", + "type": "string" + }, + "key": { + "description": "The header's key.", + "type": "string" + }, + "value": { + "description": "The header's value.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / methodAdded value: +{ + "description": "The request's HTTP method.", + "enum": [ + "GET", + "PUT", + "POST", + "PATCH", + "DELETE", + "COPY", + "HEAD", + "OPTIONS", + "LINK", + "UNLINK", + "PURGE", + "LOCK", + "UNLOCK", + "PROPFIND", + "VIEW" + ], + "type": "string" +} - added
Input schema / properties / queryParamsAdded value: +{ + "description": "The request's query parameters.", + "items": { + "additionalProperties": false, + "properties": { + "description": { + "description": "The query parameter's description.", + "type": "string" + }, + "enabled": { + "description": "If true, the query parameter is enabled.", + "type": "boolean" + }, + "key": { + "description": "The query parameter's key.", + "type": "string" + }, + "value": { + "description": "The query parameter's value.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / rawModeDataAdded value: +{ + "description": "The request body's raw mode data.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / urlAdded value: +{ + "description": "The request's URL.", + "type": [ + "string", + "null" + ] +}
- Changed
createCollectionResponse19 fields changed- added
Input schema / properties / cookiesAdded value: +{ + "description": "The response's cookie data.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / dataModeAdded value: +{ + "description": "The associated request body's data mode.", + "enum": [ + "raw", + "urlencoded", + "formdata", + "binary", + "graphql" + ], + "type": "string" +} - added
Input schema / properties / dataOptionsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "binary": { + "additionalProperties": {}, + "description": "Options for the `binary` data mode.", + "type": "object" + }, + "graphql": { + "additionalProperties": {}, + "description": "Options for the `graphql` data mode.", + "type": "object" + }, + "params": { + "additionalProperties": {}, + "description": "Options for the `params` data mode.", + "type": "object" + }, + "raw": { + "additionalProperties": false, + "description": "Options for the `raw` data mode.", + "properties": { + "language": { + "description": "The raw mode data's language type.", + "type": "string" + } + }, + "type": "object" + }, + "urlencoded": { + "additionalProperties": {}, + "description": "Options for the `urlencoded` data mode.", + "type": "object" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Additional configurations and options set for the request body's various data modes." +} - added
Input schema / properties / descriptionAdded value: +{ + "description": "The response's description.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / headersAdded value: +{ + "description": "A list of headers.", + "items": { + "additionalProperties": false, + "description": "Information about the header.", + "properties": { + "description": { + "description": "The header's description.", + "type": [ + "string", + "null" + ] + }, + "key": { + "description": "The header's key, such as `Content-Type` or `X-Custom-Header`.", + "type": "string" + }, + "value": { + "description": "The header key's value.", + "type": "string" + } + }, + "required": [ + "key", + "value" + ], + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / languageAdded value: +{ + "description": "The response body's language type.", + "type": "string" +} - added
Input schema / properties / methodAdded value: +{ + "description": "The request's HTTP method.", + "enum": [ + "GET", + "PUT", + "POST", + "PATCH", + "DELETE", + "COPY", + "HEAD", + "OPTIONS", + "LINK", + "UNLINK", + "PURGE", + "LOCK", + "UNLOCK", + "PROPFIND", + "VIEW" + ], + "type": "string" +} - added
Input schema / properties / mimeAdded value: +{ + "description": "The response's MIME type.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / rawDataTypeAdded value: +{ + "description": "The response's raw data type.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / rawModeDataAdded value: +{ + "description": "The associated request body's raw mode data.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / requestAdded value: +{ + "description": "The parent request's ID.", + "type": "string" +} - removed
Input schema / properties / requestIdRemoved value: -{ - "description": "The parent request's ID.", - "type": "string" -} - added
Input schema / properties / requestObjectAdded value: +{ + "description": "A JSON-stringified representation of the associated request.", + "type": "string" +} - added
Input schema / properties / responseCodeAdded value: +{ + "additionalProperties": false, + "description": "The response's HTTP response code information.", + "properties": { + "code": { + "description": "The response's HTTP response status code.", + "type": "number" + }, + "name": { + "description": "The name of the status code.", + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / statusAdded value: +{ + "description": "The response's HTTP status text.", + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / textAdded value: +{ + "description": "The raw text of the response body.", + "type": "string" +} - added
Input schema / properties / timeAdded value: +{ + "description": "The time taken by the request to complete, in milliseconds.", + "type": "string" +} - added
Input schema / properties / urlAdded value: +{ + "description": "The associated request's URL.", + "type": [ + "string", + "null" + ] +} - changed
Input schema / requiredPrevious value: -[ - "collectionId", - "requestId" -]New value: +[ + "collectionId", + "request" +]
- Changed
createSpec2 fields changed- changed
Input schema / properties / files / items / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "content": { - "description": "The file's stringified contents.", - "type": "string" - }, - "path": { - "description": "The file's path. Accepts JSON or YAML files.", - "type": "string" - }, - "type": { - "description": "The type of file. This property is required when creating multi-file specifications:\n- `ROOT` — The file containing the full OpenAPI structure. This serves as the entry point for the API spec and references other (`DEFAULT`) spec files. Multi-file specs can only have one root file.\n- `DEFAULT` — A file referenced by the `ROOT` file.\n", - "enum": [ - "DEFAULT", - "ROOT" - ], - "type": "string" - } - }, - "required": [ - "path", - "content", - "type" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "content": { - "description": "The file's stringified contents.", - "type": "string" - }, - "path": { - "description": "The file's path. Accepts JSON or YAML files.", - "type": "string" - } - }, - "required": [ - "path", - "content" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "content": { + "description": "The file's stringified contents.", + "type": "string" + }, + "path": { + "description": "The file's path. Accepts .json, .yaml, .proto and .graphql file types.", + "type": "string" + }, + "type": { + "description": "The type of file. This property is required when creating multi-file specifications:\n- `ROOT` — The file containing the full OpenAPI structure. This serves as the entry point for the API spec and references other (`DEFAULT`) spec files. Multi-file specs can only have one root file.\n- `DEFAULT` — A file referenced by the `ROOT` file.\n", + "enum": [ + "DEFAULT", + "ROOT" + ], + "type": "string" + } + }, + "required": [ + "path", + "content", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "content": { + "description": "The file's stringified contents.", + "type": "string" + }, + "path": { + "description": "The file's path. Accepts .json, .yaml, .proto and .graphql file types.", + "type": "string" + } + }, + "required": [ + "path", + "content" + ], + "type": "object" + } +] - changed
Input schema / properties / type / enumPrevious value: -[ - "OPENAPI:3.0", - "ASYNCAPI:2.0" -]New value: +[ + "OPENAPI:2.0", + "OPENAPI:3.0", + "OPENAPI:3.1", + "ASYNCAPI:2.0", + "PROTOBUF:2", + "PROTOBUF:3", + "GRAPHQL" +]
- Changed
createWorkspace2 fields changed- added
Input schema / properties / workspace / properties / teamIdAdded value: +{ + "description": "The team ID to assign to the workspace. This property is required if Postman [Organizations](https://learning.postman.com/docs/administration/managing-your-team/overview) is enabled.", + "type": "string" +} - changed
Input schema / properties / workspace / properties / type / descriptionPrevious value: -"The type of workspace:\n- `personal`\n- `private` — Private workspaces are available on Postman [**Professional** and **Enterprise** plans](https://www.postman.com/pricing).\n- `public`\n- `team`\n- `partner` — [Partner Workspaces](https://learning.postman.com/docs/collaborating-in-postman/using-workspaces/partner-workspaces/) are available on Postman [**Professional** and **Enterprise** plans](https://www.postman.com/pricing)).\n"New value: +"The type of workspace:\n- `personal`\n- `private` — Private workspaces are available on Postman [**Team** and **Enterprise** plans](https://www.postman.com/pricing).\n- `public`\n- `team`\n- `partner` — [Partner Workspaces](https://learning.postman.com/docs/collaborating-in-postman/using-workspaces/partner-workspaces/) are available on Postman [**Team** and **Enterprise** plans](https://www.postman.com/pricing)).\n"
- Changed
generateCollection5 fields changed- removed
Input schema / properties / options / defaultRemoved value: -{ - "enableOptionalParameters": true, - "folderStrategy": "Paths" -} - changed
Input schema / properties / options / properties / parametersResolution / defaultPrevious value: -"Schema"New value: +"Example" - changed
Input schema / properties / options / properties / parametersResolution / descriptionPrevious value: -"Whether to generate the request and response parameters based on the specification or the specification's examples."New value: +"Determines how parameter values are generated in the collection. Must be set to \"Example\" — the \"Schema\" value is no longer supported by the Postman API and will result in an error. Always use \"Example\" to generate parameters from example values in the spec." - removed
Input schema / properties / options / properties / parametersResolution / enumRemoved value: -[ - "Schema", - "Example" -] - changed
Input schema / requiredPrevious value: -[ - "specId", - "elementType", - "name" -]New value: +[ + "specId", + "elementType", + "name", + "options" +]
- Changed
generateSpecFromCollection2 fields changed- removed
Input schema / properties / type / constRemoved value: -"OPENAPI:3.0" - added
Input schema / properties / type / enumAdded value: +[ + "OPENAPI:2.0", + "OPENAPI:3.0", + "OPENAPI:3.1" +]
- Added
getDuplicateCollectionTaskStatus - Removed
getStatusOfAnAsyncApiTask - Changed
getWorkspaces4 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to get the next set of results in a paginated response. Get this value from the `meta.nextCursor` field in the previous response.\n", + "type": "string" +} - added
Input schema / properties / elementIdAdded value: +{ + "description": "Filter results to return the workspace where the given element's ID is located. When filtering by collection, you must use the collection's unique ID (`userId`-`collection`). If you pass this query parameter, you must also pass the `elementType` query parameter.", + "type": "string" +} - added
Input schema / properties / elementTypeAdded value: +{ + "description": "Filter results to return the workspace where the given element type is located. If you pass this query parameter, you must also pass the `elementId` query parameter.", + "enum": [ + "collection", + "specification" + ], + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "default": 100, + "description": "The maximum number of workspaces to return per page. Defaults to 100.\n", + "maximum": 100, + "minimum": 1, + "type": "integer" +}
- Changed
putCollection2 fields changed- added
Input schema / properties / collection / properties / item / items / properties / createdAtAdded value: +{ + "description": "The date and time at which the collection item was created.", + "format": "date-time", + "type": "string" +} - added
Input schema / properties / collection / properties / item / items / properties / updatedAtAdded value: +{ + "description": "The date and time at which the collection item was updated.", + "format": "date-time", + "type": "string" +}
- Added
updateCollectionRequest
40 tool updates
- First observed
createCollection - First observed
createCollectionRequest - First observed
createCollectionResponse - First observed
createEnvironment - First observed
createMock - First observed
createSpec - First observed
createSpecFile - First observed
createWorkspace - First observed
duplicateCollection - First observed
generateCollection - First observed
generateSpecFromCollection - First observed
getAllSpecs - First observed
getAuthenticatedUser - First observed
getCollection - First observed
getCollections - First observed
getEnabledTools - First observed
getEnvironment - First observed
getEnvironments - First observed
getGeneratedCollectionSpecs - First observed
getMock - First observed
getMocks - First observed
getSpec - First observed
getSpecCollections - First observed
getSpecDefinition - First observed
getSpecFile - First observed
getSpecFiles - First observed
getStatusOfAnAsyncApiTask - First observed
getTaggedEntities - First observed
getWorkspace - First observed
getWorkspaces - First observed
publishMock - First observed
putCollection - First observed
putEnvironment - First observed
runCollection - First observed
syncCollectionWithSpec - First observed
syncSpecWithCollection - First observed
updateMock - First observed
updateSpecFile - First observed
updateSpecProperties - First observed
updateWorkspace
TDQS
Scored across 42 tools
Many tools are individually clear, but there are several near-miss pairs such as createCollection/generateCollection, syncCollectionWithSpec/syncSpecWithCollection, getSpecDefinition/getSpecFile, and getSpecCollections/getGeneratedCollectionSpecs. These overlapping creation/sync/generation relationships could cause an agent to select the wrong tool despite helpful descriptions.
The tool set overwhelmingly follows a verb-noun camelCase pattern like getCollection, createWorkspace, updateMock, and runCollection. Minor deviations such as getAllSpecs instead of getSpecs, the meta-tool getEnabledTools, and the put vs update distinction require a bit of inference but do not break the overall pattern.
With 42 tools, this server is well beyond the 25+ threshold and spans many Postman resources including collections, specs, environments, workspaces, mocks, search, tags, and user metadata. The count feels heavy and would likely be better split into multiple focused servers or consolidated around core workflows.
The server provides broad create/read/update coverage across collections, environments, workspaces, specs, and mocks, but lacks delete operations for nearly every resource. This is a significant lifecycle gap that will cause agent failures when users need to clean up or manage resources end-to-end.
Maintenance
Related MCP Connectors
Let AI agents query data and act across all your business apps via MCP.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Discover and call 10,000+ production APIs from one MCP server. Pay-per-call billing for AI agents.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that generates AI agent tools from Postman collections and requests. This server integrates with the Postman API to convert API endpoints into type-safe code that can be used with various AI frameworks.113MIT
- FlicenseNot gradedqualityDmaintenanceAutomatically converts Postman API collections into MCP-compatible tools for AI assistants. Enables users to interact with any API through natural language by generating JavaScript tools from Postman requests.-
- FlicenseNot gradedqualityDmaintenanceAn MCP server that converts Postman API requests into executable tools for LLMs using the Postman Runtime. It supports complex authentication types and enables seamless integration between Postman collections and MCP clients like Claude Desktop.-
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that provides seamless integration with the Postman API, enabling AI assistants and applications to interact with Postman workspaces, collections, requests, environments, and folders programmatically.191331MIT