> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Postman MCP server

The Postman MCP connector routes your AI agent's tool calls to Postman's own MCP server through Scalekit. Each user signs in to Postman once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 41 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Developer Tools, Automation, AI
**Tools:** 41: 20 read, 21 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=POSTMANMCP)

## What you can do

- **Manage collections**: create, get, replace, and duplicate collections, and add or update their requests and responses
- **Work with API specs**: create and edit specifications and their files, and generate collections from specs or specs from collections
- **Manage environments**: create, list, fetch, and replace environments and their variables
- **Run mock servers**: create, update, publish, and list mock servers for collections
- **Organize workspaces**: create, list, and update workspaces and search for requests, collections, and specs

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Postman MCP connection

   In **AgentKit > Connections**, create a Postman MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Postman MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'postmanmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Postman MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'postmanmcp_getauthenticateduser',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "postmanmcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Postman MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="postmanmcp_getauthenticateduser",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'postmanmcp_getallspecs',
  toolInput: {
    workspaceId: '<workspaceId>',
  },
  connector: 'postmanmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="postmanmcp_getallspecs",
    tool_input={
        "workspaceId": "<workspaceId>",
    },
    connection_name="postmanmcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `postmanmcp_getallspecs`

Get All Specs · Read-only

Gets all API specifications in a workspace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspaceId` (`string`, required): The workspace's ID.
- `cursor` (`string`, optional): The pointer to the first record of the set of paginated results. To view the next response, use the `nextCursor` value for this parameter.
- `limit` (`integer`, optional): The maximum number of rows to return in the response. Default: `10`.

Example input: `{"workspaceId":"<workspaceId>"}`

### `postmanmcp_getauthenticateduser`

Get Authenticated User · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `postmanmcp_getcollection`

Get Collection · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collectionId` (`string`, required): The collection ID must be in the form <OWNER_ID>-<UUID> (e.g. 12345-33823532ab9e41c9b6fd12d0fd459b8b).
- `access_key` (`string`, optional): A collection's read-only access key. Using this query parameter does not require an API key to call the endpoint.
- `model` (`string`, optional): 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. One of: `minimal`, `full`.

Example input: `{"collectionId":"<collectionId>"}`

### `postmanmcp_getcollections`

Get Collections · Read-only

The workspace ID query is required for this endpoint. If not provided, the LLM should ask the user to provide it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace` (`string`, required): The workspace's ID.
- `limit` (`integer`, optional): The maximum number of rows to return in the response.
- `name` (`string`, optional): Filter results by collections whose name exactly matches the given value. Partial or substring matches are not supported.
- `offset` (`integer`, optional): The zero-based offset of the first item to return.

Example input: `{"workspace":"<workspace>"}`

### `postmanmcp_getduplicatecollectiontaskstatus`

Get Duplicate Collection Task Status · Read-only

Gets the status of a collection duplication task.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `taskId` (`string`, required): The task's unique ID.

Example input: `{"taskId":"<taskId>"}`

### `postmanmcp_getenabledtools`

Get Enabled Tools · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `postmanmcp_getenvironment`

Get Environment · Read-only

Gets information about an environment.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `environmentId` (`string`, required): The environment's ID.

Example input: `{"environmentId":"<environmentId>"}`

### `postmanmcp_getenvironments`

Get Environments · Read-only

Gets information about all of your [environments](https://learning.postman.com/docs/sending-requests/managing-environments/).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspace` (`string`, optional): The workspace's ID.

Example input: `{}`

### `postmanmcp_getgeneratedcollectionspecs`

Get Generated Collection Specs · Read-only

Gets the API specification generated for the given collection.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collectionUid` (`string`, required): The collection's unique ID.
- `elementType` (`string`, required): The `spec` value.

Example input: `{"collectionUid":"<collectionUid>","elementType":"<elementType>"}`

### `postmanmcp_getmock`

Get Mock · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `mockId` (`string`, required): The mock's ID.

Example input: `{"mockId":"<mockId>"}`

### `postmanmcp_getmocks`

Get Mocks · Read-only

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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `teamId` (`string`, optional): Return only results that belong to the given team ID.
- For team-scoped requests, set this from GET `/me` (`me.teamId`).
- `workspace` (`string`, optional): Return only results found in the given workspace ID.
- Prefer this parameter when the user mentions a specific workspace.

Example input: `{}`

### `postmanmcp_getspec`

Get Spec · Read-only

Gets information about an API specification.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `specId` (`string`, required): The spec's ID.

Example input: `{"specId":"<specId>"}`

### `postmanmcp_getspeccollections`

Get Spec Collections · Read-only

Gets all of an API specification's generated collections.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `elementType` (`string`, required): The `collection` element type.
- `specId` (`string`, required): The spec's ID.
- `cursor` (`string`, optional): The pointer to the first record of the set of paginated results. To view the next response, use the `nextCursor` value for this parameter.
- `limit` (`integer`, optional): The maximum number of rows to return in the response. Default: `10`.

Example input: `{"elementType":"<elementType>","specId":"<specId>"}`

### `postmanmcp_getspecdefinition`

Get Spec Definition · Read-only

Gets the complete contents of an OpenAPI or AsyncAPI specification's definition.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `specId` (`string`, required): The spec's ID.

Example input: `{"specId":"<specId>"}`

### `postmanmcp_getspecfile`

Get Spec File · Read-only

Gets the contents of an API specification's file.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `filePath` (`string`, required): The path to the file.
- `specId` (`string`, required): The spec's ID.

Example input: `{"filePath":"<filePath>","specId":"<specId>"}`

### `postmanmcp_getspecfiles`

Get Spec Files · Read-only

Gets all the files in an API specification.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `specId` (`string`, required): The spec's ID.

Example input: `{"specId":"<specId>"}`

### `postmanmcp_gettaggedentities`

Get Tagged Entities · Read-only

**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.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `slug` (`string`, required): The tag's ID within a team or individual (non-team) user scope.
- `cursor` (`string`, optional): 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` (`string`, optional): The ascending (`asc`) or descending (`desc`) order to sort the results by, based on the time of the entity's tagging. One of: `asc`, `desc`. Default: `desc`.
- `entityType` (`string`, optional): Filter results for the given entity type. One of: `api`, `collection`, `workspace`.
- `limit` (`integer`, optional): The maximum number of tagged elements to return in a single call. Default: `10`.

Example input: `{"slug":"<slug>"}`

### `postmanmcp_getworkspace`

Get Workspace · Read-only

Gets information about a workspace.

**Note:**

This endpoint's response contains the \`visibility\` field. [Visibility](https://learning.postman.com/docs/collaborating-in-postman/using-workspaces/managing-workspaces/#changing-workspace-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](https://www.postman.com/pricing)).
- \`public\` — Everyone can access the workspace.
- \`partner\` — Only invited team members and [partners](https://learning.postman.com/docs/collaborating-in-postman/using-workspaces/partner-workspaces/) can access the workspace ([**Team** and **Enterprise** plans only](https://www.postman.com/pricing)).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspaceId` (`string`, required): The workspace's ID.
- `include` (`string`, optional): 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. One of: `mocks:deactivated`, `scim`.

Example input: `{"workspaceId":"<workspaceId>"}`

### `postmanmcp_getworkspaces`

Get Workspaces · Read-only

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\`

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `createdBy` (`integer`, optional): 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`.
- `cursor` (`string`, optional): 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.
- `elementId` (`string`, optional): 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` (`string`, optional): 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. One of: `collection`, `specification`.
- `include` (`string`, optional): 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. One of: `mocks:deactivated`, `scim`.
- `limit` (`integer`, optional): The maximum number of workspaces to return per page. Defaults to 100. Default: `100`.
- `type` (`string`, optional): 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. One of: `personal`, `team`, `private`, `public`, `partner`.

Example input: `{}`

### `postmanmcp_searchpostmanelements`

Search Postman Elements · Read-only

Search for Postman entities (requests, collections, workspaces, specs, flows, environments, and mocks).

**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") | `ownership: organization` |
| Find a trusted API published to the Private Network | `ownership: organization` + `privateNetwork: true` filter |
| Find an internal API in all resources of organization and are visible to the organization only | `ownership: organization` + `visibility: internal` filter |
| Find an API by your organization that is made publicly visible | `ownership: organization` + `visibility: public` filter |
| Find a third party publicly visible API (e.g. "Stripe API", "Twilio API") | `ownership: external` + `visibility: public` filter |
| User says "our APIs", "internal", "team" | `ownership: organization` |
| Search across all scopes | `ownership: all` |

**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.

**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 |
|-------|-----------|-------|
| `workspaceId` | `$eq`, `$ne`, `$in`, `$nin` | All element types. `$in`/`$nin` accept arrays. |
| `collectionId` | `$eq`, `$ne`, `$in`, `$nin` | Requests and collections only. |
| `visibility` | `$eq`, `$ne` | Values: `public`, `partner`, `internal`. All element types. |
| `privateNetwork` | `$eq`, `$ne` | Boolean. All element types. |
| `publisherIsVerified` | `$eq`, `$ne` | Boolean. All element types. |
| `method` | `$eq`, `$ne`, `$in`, `$nin` | HTTP methods (GET, POST, etc.). Requests only. |
| `tags` | `$eq`, `$ne`, `$in`, `$nin` | Workspaces and collections only. |
| `requestId` | `$eq`, `$ne`, `$in`, `$nin` | Requests only. |
| `specificationId` | `$eq`, `$ne`, `$in`, `$nin` | Specs only. |
| `flowId` | `$eq`, `$ne`, `$in`, `$nin` | Flows only. |
| `createdBy` | `$eq`, `$ne`, `$in`, `$nin` | All element types. |
| `organizationId` | `$eq`, `$ne`, `$in`, `$nin` | All element types. |
| `teamId` | `$eq`, `$ne`, `$in`, `$nin` | All element types. |
| `isGitConnected` | `$eq`, `$ne` | Boolean. Workspaces, collections, requests, specs, flows, environments, mocks. |
| `type` | `$eq`, `$ne`, `$in`, `$nin` | 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"}}]}`

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): The cursor to get the next set of results in the paginated response. Pass the `nextCursor` value from the previous response.
- `entityType` (`string`, optional): 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). One of: `requests`, `collections`, `workspaces`, `specs`, `flows`, `environments`, `mocks`. Default: `requests`.
- `filters` (`object`, optional): 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}}]}
- `limit` (`integer`, optional): The maximum number of search results to return. Maximum: 25. Default: `10`.
- `ownership` (`string`, optional): 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. One of: `organization`, `external`, `all`. Default: `organization`.
- `q` (`string`, optional): The search query (e.g. "payment API", "notification service", "Stripe").

Example input: `{}`

### `postmanmcp_createcollection`

Create Collection · Write

Creates a collection using the [Postman Collection v2.1.0 schema format](https://schema.postman.com/collection/json/v2.1.0/draft-07/docs/index.html).

**Note:**

If you do not include the \`workspace\` query parameter, the system creates the collection in the oldest personal Internal workspace you own.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `workspace` (`string`, required): The workspace's ID.
- `collection` (`object`, optional): No description.

Example input: `{"workspace":"<workspace>"}`

### `postmanmcp_createcollectionrequest`

Create Collection Request · Write

Creates a request in a collection. For a complete list of properties, refer to the **Request** entry in the [Postman Collection Format documentation](https://schema.postman.com/collection/json/v2.1.0/draft-07/docs/index.html).

**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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collectionId` (`string`, required): The collection's ID.
- `auth` (`string`, optional): The request's authentication information.
- `data` (`string`, optional): The request body's form data.
- `dataMode` (`string`, optional): The request body's data mode. One of: `raw`, `urlencoded`, `formdata`, `binary`, `graphql`.
- `dataOptions` (`string`, optional): Additional configurations and options set for the request body's various data modes.
- `description` (`string`, optional): The request's description.
- `events` (`string`, optional): A list of scripts configured to run when specific events occur.
- `folderId` (`string`, optional): The folder ID in which to create the request. By default, the system will create the request at the collection level.
- `graphqlModeData` (`string`, optional): The request body's GraphQL mode data.
- `headerData` (`array`, optional): The request's headers.
- `method` (`string`, optional): The request's HTTP method. One of: `GET`, `PUT`, `POST`, `PATCH`, `DELETE`, `COPY`, `HEAD`, `OPTIONS`, `LINK`, `UNLINK`, `PURGE`, `LOCK`, `UNLOCK`, `PROPFIND`, `VIEW`.
- `name` (`string`, optional): 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.
- `queryParams` (`array`, optional): The request's query parameters.
- `rawModeData` (`string`, optional): The request body's raw mode data.
- `url` (`string`, optional): The request's URL.

Example input: `{"collectionId":"<collectionId>"}`

### `postmanmcp_createcollectionresponse`

Create Collection Response · Write

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](https://schema.postman.com/collection/json/v2.1.0/draft-07/docs/index.html).

**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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collectionId` (`string`, required): The collection's ID.
- `request` (`string`, required): The parent request's ID.
- `cookies` (`string`, optional): The response's cookie data.
- `dataMode` (`string`, optional): The associated request body's data mode. One of: `raw`, `urlencoded`, `formdata`, `binary`, `graphql`.
- `dataOptions` (`string`, optional): Additional configurations and options set for the request body's various data modes.
- `description` (`string`, optional): The response's description.
- `headers` (`array`, optional): A list of headers.
- `language` (`string`, optional): The response body's language type.
- `method` (`string`, optional): The request's HTTP method. One of: `GET`, `PUT`, `POST`, `PATCH`, `DELETE`, `COPY`, `HEAD`, `OPTIONS`, `LINK`, `UNLINK`, `PURGE`, `LOCK`, `UNLOCK`, `PROPFIND`, `VIEW`.
- `mime` (`string`, optional): The response's MIME type.
- `name` (`string`, optional): 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.
- `rawDataType` (`string`, optional): The response's raw data type.
- `rawModeData` (`string`, optional): The associated request body's raw mode data.
- `requestObject` (`string`, optional): A JSON-stringified representation of the associated request.
- `responseCode` (`object`, optional): The response's HTTP response code information.
- `status` (`string`, optional): The response's HTTP status text.
- `text` (`string`, optional): The raw text of the response body.
- `time` (`string`, optional): The time taken by the request to complete, in milliseconds.
- `url` (`string`, optional): The associated request's URL.

Example input: `{"collectionId":"<collectionId>","request":"<request>"}`

### `postmanmcp_createenvironment`

Create Environment · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `workspace` (`string`, required): The workspace's ID.
- `environment` (`object`, optional): Information about the environment.

Example input: `{"workspace":"<workspace>"}`

### `postmanmcp_createmock`

Create Mock · Write

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:
  1) Prefer GET \`/collections/{collectionId}\` and read \`uid\`, or
  2) 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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `workspace` (`string`, required): The workspace's ID.
- `mock` (`object`, optional): No description.

Example input: `{"workspace":"<workspace>"}`

### `postmanmcp_createspec`

Create Spec · Write

Creates an API specification in Postman's [Spec Hub](https://learning.postman.com/docs/design-apis/specifications/overview/). 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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `files` (`array`, required): A list of the specification's files and their contents.
- `name` (`string`, required): The specification's name.
- `type` (`string`, required): The type of API specification. One of: `OPENAPI:2.0`, `OPENAPI:3.0`, `OPENAPI:3.1`, `ASYNCAPI:2.0`, `ASYNCAPI:3.0`, `PROTOBUF:2`, `PROTOBUF:3`, `GRAPHQL`, `SMITHY:2.0`.
- `workspaceId` (`string`, required): The workspace's ID.

Example input: `{"files":[],"name":"<name>","type":"OPENAPI:2.0","workspaceId":"<workspaceId>"}`

### `postmanmcp_createspecfile`

Create Spec File · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content` (`string`, required): The file's stringified contents.
- `path` (`string`, required): The file's path. Accepts JSON or YAML files.
- `specId` (`string`, required): The spec's ID.

Example input: `{"content":"<content>","path":"<path>","specId":"<specId>"}`

### `postmanmcp_createworkspace`

Create Workspace · Write

Creates a new [workspace](https://learning.postman.com/docs/collaborating-in-postman/using-workspaces/creating-workspaces/).

**Note:**

- This endpoint returns a 403 \`Forbidden\` response if the user does not have permission to create workspaces. [Admins and Super Admins](https://learning.postman.com/docs/collaborating-in-postman/roles-and-permissions/#team-roles) 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](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).
- 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](https://learning.postman.com/docs/administration/onboarding-checklist) is enabled.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `workspace` (`object`, optional): Information about the workspace.

Example input: `{}`

### `postmanmcp_duplicatecollection`

Duplicate Collection · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collectionId` (`string`, required): The collection's unique ID.
- `workspace` (`string`, required): The workspace ID in which to duplicate the collection.
- `suffix` (`string`, optional): An optional suffix to append to the duplicated collection's name.

Example input: `{"collectionId":"<collectionId>","workspace":"<workspace>"}`

### `postmanmcp_generatecollection`

Generate Collection · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `elementType` (`string`, required): The `collection` element type.
- `name` (`string`, required): The generated collection's name.
- `options` (`object`, required): 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.
- `specId` (`string`, required): The spec's ID.

Example input: `{"elementType":"<elementType>","name":"<name>","options":{},"specId":"<specId>"}`

### `postmanmcp_generatespecfromcollection`

Generate Spec From Collection · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collectionUid` (`string`, required): The collection's unique ID.
- `elementType` (`string`, required): The `spec` value.
- `format` (`string`, required): The format of the API specification. One of: `JSON`, `YAML`.
- `name` (`string`, required): The API specification's name.
- `type` (`string`, required): The specification's type. One of: `OPENAPI:2.0`, `OPENAPI:3.0`, `OPENAPI:3.1`.

Example input: `{"collectionUid":"<collectionUid>","elementType":"<elementType>","format":"JSON","name":"<name>","type":"OPENAPI:2.0"}`

### `postmanmcp_publishmock`

Publish Mock · Write

Publishes a mock server. Publishing a mock server sets its **Access Control** configuration setting to public.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `mockId` (`string`, required): The mock's ID.

Example input: `{"mockId":"<mockId>"}`

### `postmanmcp_putcollection`

Put Collection · Write

Replaces the contents of a collection using the [Postman Collection v2.1.0 schema format](https://schema.postman.com/collection/json/v2.1.0/draft-07/docs/index.html). 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](https://schema.postman.com/collection/json/v2.1.0/draft-07/docs/index.html).
- For protocol profile behavior, refer to Postman's [Protocol Profile Behavior documentation](https://github.com/postmanlabs/postman-runtime/blob/develop/docs/protocol-profile-behavior.md).

**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.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collectionId` (`string`, required): The collection ID must be in the form <OWNER_ID>-<UUID> (e.g. 12345-33823532ab9e41c9b6fd12d0fd459b8b).
- `collection` (`object`, optional): No description.
- `Prefer` (`string`, optional): The `respond-async` header to perform the update asynchronously.

Example input: `{"collectionId":"<collectionId>"}`

### `postmanmcp_putenvironment`

Put Environment · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `environmentId` (`string`, required): The environment's ID.
- `environment` (`object`, optional): Information about the environment.

Example input: `{"environmentId":"<environmentId>"}`

### `postmanmcp_synccollectionwithspec`

Sync Collection With Spec · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collectionUid` (`string`, required): The collection's unique ID.
- `specId` (`string`, required): The spec's ID.

Example input: `{"collectionUid":"<collectionUid>","specId":"<specId>"}`

### `postmanmcp_syncspecwithcollection`

Sync Spec With Collection · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collectionUid` (`string`, required): The collection's unique ID.
- `specId` (`string`, required): The spec's ID.

Example input: `{"collectionUid":"<collectionUid>","specId":"<specId>"}`

### `postmanmcp_updatecollectionrequest`

Update Collection Request · Write

Updates a request in a collection. For a complete list of properties, refer to the **Request** entry in the [Postman Collection Format documentation](https://schema.postman.com/collection/json/v2.1.0/draft-07/docs/index.html).

**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.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collectionId` (`string`, required): The collection's ID.
- `requestId` (`string`, required): The request's ID.
- `auth` (`string`, optional): The request's authentication information.
- `data` (`string`, optional): The request body's form data.
- `dataMode` (`string`, optional): The request body's data mode. One of: `raw`, `urlencoded`, `formdata`, `binary`, `graphql`.
- `dataOptions` (`string`, optional): Additional configurations and options set for the request body's various data modes.
- `description` (`string`, optional): The request's description.
- `events` (`string`, optional): A list of scripts configured to run when specific events occur.
- `graphqlModeData` (`string`, optional): The request body's GraphQL mode data.
- `headerData` (`array`, optional): The request's headers.
- `method` (`string`, optional): The request's HTTP method. One of: `GET`, `PUT`, `POST`, `PATCH`, `DELETE`, `COPY`, `HEAD`, `OPTIONS`, `LINK`, `UNLINK`, `PURGE`, `LOCK`, `UNLOCK`, `PROPFIND`, `VIEW`.
- `name` (`string`, optional): The request's name.
- `queryParams` (`array`, optional): The request's query parameters.
- `rawModeData` (`string`, optional): The request body's raw mode data.
- `url` (`string`, optional): The request's URL.

Example input: `{"collectionId":"<collectionId>","requestId":"<requestId>"}`

### `postmanmcp_updatemock`

Update Mock · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `mockId` (`string`, required): The mock's ID.
- `mock` (`object`, optional): No description.

Example input: `{"mockId":"<mockId>"}`

### `postmanmcp_updatespecfile`

Update Spec File · Write

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.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `filePath` (`string`, required): The path to the file.
- `specId` (`string`, required): The spec's ID.
- `content` (`string`, optional): The specification's stringified contents.
- `name` (`string`, optional): The file's name.
- `type` (`string`, optional): 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. One of: `DEFAULT`, `ROOT`.

Example input: `{"filePath":"<filePath>","specId":"<specId>"}`

### `postmanmcp_updatespecproperties`

Update Spec Properties · Write

Updates an API specification's properties, such as its name.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `name` (`string`, required): The spec's name.
- `specId` (`string`, required): The spec's ID.

Example input: `{"name":"<name>","specId":"<specId>"}`

### `postmanmcp_updateworkspace`

Update Workspace · Write

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](https://www.postman.com/pricing/).
  - \`public\` to \`personal\` for team users only.
- There are rate limits when publishing public workspaces.
- Public team workspace names must be unique.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `workspaceId` (`string`, required): The workspace's ID.
- `workspace` (`object`, optional): No description.

Example input: `{"workspaceId":"<workspaceId>"}`

## Related

Other Developer Tools connectors ([all 94](/agentkit/connectors/?category=developer-tools)):

- [GitHub](/agentkit/connectors/github/): Scalekit connector, OAuth, 217 tools
- [Datadog](/agentkit/connectors/datadog/): Scalekit connector, API key, 105 tools
- [Linear](/agentkit/connectors/linear/): Scalekit connector, OAuth, 62 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
