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 "Install 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 collectionAInspect
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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context by referencing the Postman Collection v2.1.0 schema format and explaining the default workspace behavior when the workspace parameter is omitted. It does not contradict the annotations (readOnlyHint=false, destructiveHint=false). However, it does not disclose other potential side effects or error conditions, though annotations lower the burden.
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 succinct: two sentences plus a link. It is front-loaded with the main purpose and the note is directly relevant. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex nested collection parameter and the absence of an output schema, the link to the external schema format is essential and provided. The workspace fallback is clarified. A minor gap is that the description does not explicitly state whether the collection parameter is required, though the schema marks only workspace as required.
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 description links to the full Postman Collection v2.1.0 schema, which compensates for the complex 'collection' parameter with 50% schema coverage. It also adds meaning to the 'workspace' parameter by explaining the fallback behavior if omitted. This goes beyond the schema's simple 'The workspace's ID' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Creates a collection' using the Postman Collection v2.1.0 schema format. This clearly distinguishes it from sibling tools like createCollectionRequest and createCollectionResponse, which target individual requests/responses rather than the collection as a whole.
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 explicit when-to-use or when-not-to-use guidance relative to alternatives such as putCollection (update) or createCollectionRequest. The only behavioral note about workspace fallback is operational context, not tool-selection guidance.
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 authentication information. | |
| data | No | The request body's form 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 | A list of scripts configured to run when specific events occur. | |
| method | No | The request's HTTP method. | |
| dataMode | No | The request body's data mode. | |
| folderId | No | The folder ID in which to create the request. By default, the system will create the request at the collection level. | |
| headerData | No | The request's headers. | |
| dataOptions | No | Additional configurations and options set for the request body's various data modes. | |
| 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 valuable behavioral caveat about the `name` property resulting in a blank name if omitted, which is not in annotations. It also directs to comprehensive documentation. However, it doesn't disclose other behaviors like authentication requirements or response content, but annotations already cover mutation and non-destructiveness, so the added context is sufficient.
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 extremely concise: two short paragraphs. The first provides the core purpose and a useful link to documentation, while the second is a focused note on the `name` pitfall. No unnecessary words or repetition.
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 tool with 15 parameters and no output schema, the description does not explain what the response will be (e.g., created request object) or common use cases beyond creation. It does point to docs and highlights the name issue, but given the tool's complexity, it could be more complete. The schema is thorough, so this is acceptable but not excellent.
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 extra semantic value by emphasizing the `name` parameter recommendation and its consequence, and it links to the full property list in documentation. This goes beyond the schema descriptions, earning a 4.
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: 'Creates a request in a collection.' This is a specific verb and resource, and it distinguishes from sibling tools like updateCollectionRequest (updates) and createCollection (creates collections). No 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?
The description implies the tool is for creating requests but provides no explicit guidance on when to use it versus alternatives (e.g., updateCollectionRequest). It does not mention exclusion criteria or alternative tools, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCollectionResponseCreate a responseAInspect
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 request's HTTP method. | |
| status | No | The response's HTTP status text. | |
| cookies | No | The response's cookie data. | |
| headers | No | A list of 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 configurations and options set for the request body's various data modes. | |
| 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?
The annotations are sparse (readOnlyHint false, destructiveHint false). The description adds a useful behavioral note about the name property defaulting to null, resulting in a blank name. This is extra context beyond the annotations. It doesn't contradict any annotation and provides a specific behavioral quirk that could affect usage.
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 purpose sentence, an external documentation link, and one note about the name property. It is front-loaded with the purpose and does not waste words. However, the note could be seen as a caveat, and the link is not inline but still provides reference. It is appropriately sized for a tool with a well-specified 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 tool is complex with 19 parameters and nested objects, but the schema covers all parameters extensively. The description is very brief and points to external docs for full property details. It does not mention the required parameters (collectionId, request) explicitly or what the tool returns. Given the complexity, the description could be more complete, but the schema and link partially compensate. It meets a minimum viable level but lacks richer context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the description does not need to re-explain each field. The description adds only a note about the name property, which is already present in the schema's parameter description. It does not add significant semantic value beyond what the schema provides, 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 verb+resource: 'Creates a request response in a collection.' This distinguishes it from sibling tools like createCollectionRequest (creates a request) and createCollection (creates a collection). It is specific and unambiguous about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives some context (that it creates a response in a collection) but does not explicitly state when to use this tool versus alternatives. There is no guidance on when not to use it or which sibling tools might be more appropriate. It implies usage for creating a response but lacks explicit exclusions or alternative references.
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 | ||
| workspace | Yes | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating operation (readOnlyHint=false, destructiveHint=false). The description adds valuable context about the requirement for a collection UID rather than a bare ID, and explains the resolution process, which goes beyond the structured 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 well-structured with bullets and numbered steps. It front-loads the main purpose and then provides necessary details. While a bit long, every sentence adds essential information for correct invocation.
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 nested object schema, the absence of an output schema, and the potential ambiguity around collection IDs, the description covers the critical aspects: UID resolution, workspace scoping, and default behavior. The agent has enough information to call 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 only 50%, but the description compensates by clearly explaining that the 'collection' parameter expects a UID in the ownerId-collectionId format and provides resolution steps. It also clarifies the purpose of the 'workspace' parameter.
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 a mock server in a collection' with a specific verb and resource. This distinguishes it from sibling tools like getMock, updateMock, and publishMock, which serve different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on how to obtain the collection UID and recommends explicit workspace scoping. It does not name alternative tools for when not to use this tool, but the overall context and steps make the usage clear.
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 | ||
| 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?
Even though annotations mark destructiveHint: false, the description accurately discloses potentially destructive behavior (removing existing items if IDs not included). It also explains async behavior (returns 202), the 100 MB size limit, and error conditions when copying collections with IDs – all beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear main sentence, bullets, and notes, but contains redundancy (the same warning about removing items without IDs appears twice). It is somewhat long given the amount of information, but not excessively wordy.
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 a large schema and no output schema, the description covers key behavioral aspects: format link, async update endpoint, protocol behavior link, size limit, and copy error conditions. It does not describe sync response format, but that's minor given the 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 high (67% of top-level parameters have descriptions, and the collection object itself is heavily documented). The description adds critical guidance about including ID values in the request body and the Prefer header for async, which goes beyond 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 clearly states 'Replaces the contents of a collection' – a specific verb+resource. It also specifies the format (Postman Collection v2.1.0 schema) and distinguishes from siblings like 'createCollection' or 'duplicateCollection' by focusing on replacement of existing data.
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 explains behavior (e.g., removing items if IDs not included, async usage via Prefer header) but does not explicitly state when to use this tool versus alternatives. It implies full-replacement use case but lacks a clear 'when not to use' or comparison with updateCollectionRequest or createCollection.
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 authentication information. | |
| data | No | The request body's form data. | |
| name | No | The request's name. | |
| events | No | A list of scripts configured to run when specific events occur. | |
| 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 configurations and options set for the request body's various data modes. | |
| 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?
Beyond the annotations (idempotent, non-destructive), the description explicitly states PATCH-like behavior, the restriction on folder changes, and the requirement for a collection ID. This gives the agent a clear understanding of side effects and constraints, exceeding what annotations alone provide.
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 one-line purpose, then bullet-point notes for critical usage details. No redundant or filler content. It efficiently communicates essential information without unnecessary length.
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 comprehensive parameter descriptions in the schema and the clear behavioral notes in the description, the tool is fully described for its intended use. It covers required parameters, limitations (folder change), and update semantics (PATCH). No output schema is present, but the description appropriately focuses on input and 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?
The schema already provides detailed descriptions for all 15 parameters. The tool description adds a specific note about the collectionId format (must be a collection ID, not a collection object), which is valuable. However, it does not add much more to the parameter understanding beyond the schema's existing coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Updates a request in a collection.' This is a specific verb-resource combination that distinguishes it from create/get operations. The additional notes about PATCH behavior and folder limitations further clarify its scope.
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 useful usage context, such as requiring a collection ID (not a collection), not supporting folder changes, and behaving like a PATCH (only updates provided fields). However, it does not explicitly compare or contrast with alternative tools like createCollectionRequest or updateMock, which would enhance the guidance.
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 | ||
| 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 non-read-only, non-destructive, idempotent operation. The description adds useful behavioral detail by explaining how to activate or deactivate a server response via config.serverResponseId, without contradicting 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 three short, front-loaded bullet lines with no filler. Each sentence contributes distinct operational information, making it easy to parse quickly.
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 annotations and schema, the description adequately covers the target resource, updatable fields, and the non-obvious server response activation mechanism. It does not explain partial-versus-full update semantics or return value, but the schema and annotations fill most remaining context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover most parameter meanings, including the null-deactivation behavior for serverResponseId. The tool description mostly restates these semantics rather than adding new meaning, though it does highlight the primary updatable fields and the collection-UID association.
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 'Updates a mock server' and clarifies the resource as a mock server associated with a collection UID. It names concrete updatable aspects (name, environment, privacy, default server response), which clearly distinguishes it from siblings like createMock, getMock, and publishMock.
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 states when to use it: 'Use this to change name, environment, privacy, or default server response.' This provides clear usage context, though it does not name alternative tools or include explicit 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.
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 | ||
| workspaceId | Yes | The workspace's ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral details not covered by annotations, such as unsupported visibility transitions for specific plans, rate limits on publishing public workspaces, and uniqueness constraints for public team workspace names. These go beyond the readOnlyHint/idempotentHint/destructiveHint annotations and inform the agent of potential pitfalls.
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: the main purpose is in the first sentence, followed by clearly bulleted notes. Each note provides relevant constraints without unnecessary fluff, making it easy to scan and understand.
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 key behavioral constraints (plan limitations, rate limits, uniqueness) that are critical for execution success. It does not mention response format or error behavior, but there is no output schema, and for an update tool the annotations already signal idempotency and non-destructiveness. Overall, it is sufficiently complete for a moderate-complexity API.
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 description mentions 'name or visibility' as examples but does not add substantive meaning for the workspace object or workspaceId beyond what the input schema already provides. With only 50% schema coverage, the description could compensate but fails to explain the full set of updatable fields or the workspaceId parameter.
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: 'Updates a workspace's property, such as its name or visibility.' This uses a specific verb and resource, and the examples (name, visibility) help clarify its scope. It is easily distinguished from sibling tools like createWorkspace or getWorkspace based on the action.
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 modifying an existing workspace but does not explicitly compare with alternatives or provide when/when-not guidance. It offers constraints (e.g., unsupported visibility changes) but no clear direction on when to choose this tool over createWorkspace or other sibling tools.
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. Dates show when Glama detected each change.
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
Most tools have distinct purposes, but some overlap exists: createCollection vs generateCollection vs duplicateCollection, and putCollection vs updateCollectionRequest could cause confusion. Overall, tools are well-named and descriptions help disambiguate.
All tools follow a consistent verb_noun camelCase pattern (e.g., createCollection, getCollection, putEnvironment). No mixing of conventions.
42 tools is high, covering a broad domain. While each tool serves a distinct purpose, the count feels heavy for an MCP server, bordering on excessive but still scoped to Postman's API surface.
Tools cover create, read, update for most entities, but deletion is notably missing (no deleteCollection, deleteEnvironment, deleteMock, etc.). Also lacks folder management within collections. Several operations are missing for a full lifecycle.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.192531MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/postmanlabs/postman-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server