| name | qa-postman |
| description | [Testing] Postman MCP collections โ create, configure, verify, and export collections with proper variables, auth, and endpoints |
| argument-hint | create <purpose> | env <profile> | verify <collection> | export <collection> | list | examples |
| disable-model-invocation | true |
/qa-postman โ Postman Collection Builder
Author Postman collections via Postman MCP with correct variable scoping, authentication, endpoint construction, and request chaining. Execution happens outside the MCP โ via Newman CLI, Postman CLI, the Postman desktop/web app, or Postman Monitors.
Problem this solves: Agents create broken Postman collections because they hardcode URLs, forget auth tokens, misuse variable scopes, or build requests with wrong body formats. This skill is the single source of truth for how to use Postman MCP tools correctly.
The Postman MCP does NOT execute collections. There is no runCollection tool. To execute, export and run with Newman/Postman CLI, or schedule via a Postman Monitor (createMonitor โ full toolset). Use the verify mode below to validate collection content before handing off to a runner.
Reference Files
Read the relevant file before invoking the matching Postman MCP tools.
Arguments
| Argument | Description |
|---|
create <purpose> | Create a new collection for a specific purpose (e.g., create catalog CRUD, create auth testing) |
env <profile> | Create a Postman environment from .env variables for a profile (qa, staging, full) |
verify <collection> | Fetch the full collection payload (getCollection model=full) and audit it: schema, auth at every request, test scripts, variable usage |
export <collection> | Output a Newman/Postman-CLI-ready run command for a collection + environment pair (the MCP cannot execute collections directly) |
list | List all collections and environments in the workspace |
examples | Show copy-paste-ready examples for common Postman MCP operations |
Workflow
Step 0 โ Read the Reference Files
At minimum: mcp-tools.md. Read the others on demand based on what you're authoring (REST โ collections-and-requests; GraphQL โ graphql-authoring; fixture-driven values โ test-data-fixtures).
If a tool you expect appears unavailable, call getEnabledTools first โ the MCP runs in minimal mode (40 tools) by default and may not expose every tool from the full set (116 tools).
Step 1 โ Get Workspace ID
- Default workspace: VirtoPlatform โ
8bd7a5b3-73e5-4414-a9c9-d59018b44079 (team workspace)
- Verify with
getWorkspaces({ type: "team" }) if uncertain, or ask the user
Step 2 โ Check Existing Resources
getCollections({ workspace, name: "<filter>" }) โ substring match by name
getEnvironments({ workspace }) โ check if the target environment exists
- Ask the user: reuse, update, or recreate?
Reading a collection's full content takes a separate call: getCollection({ collectionId, model: "full" }). The default response is a lightweight collection map (metadata + recursive itemRefs only).
Step 3 โ Create or Select Environment
See variables-and-environments.md. Map .env โ Postman env values, mark passwords/tokens as type: "secret", always include an empty authToken (the auth request's test script populates it).
Step 4 โ Build the Collection
See collections-and-requests.md. Every collection MUST include:
- v2.1.0 schema in
info.schema
- Collection-level Bearer auth using
{{authToken}}
- Collection variables for entity IDs (initially empty)
- Folder structure (Auth โ Setup โ Test โ Verify โ Cleanup)
- First request = OAuth2 token with
auth: { type: "noauth" }
Step 5 โ Add Requests
Resolve fixture values via test-data-fixtures.md (@td() resolver, test-data/aliases.json). For GraphQL bodies, verify field names against graphql-schema.md before writing โ see graphql-authoring.md.
Every request must have URL using {{baseUrl}}, proper headers, and a test script with at least a status-code assertion.
Step 6 โ Verify the Collection
See execution.md ยง2. getCollection({ collectionId, model: "full" }) then run the audit checklist.
Step 7 โ Hand Off for Execution
The MCP cannot execute collections. See execution.md ยง3 for Newman, Postman CLI, Monitor, and UI options.
Mode: create
Creates a purpose-built collection. Patterns ready to copy in examples.md:
- Auth testing โ token lifecycle, refresh, invalid creds, RBAC
- CRUD testing โ create/read/update/delete with chained entity IDs
- GraphQL testing โ xAPI queries and mutations with error checking (see graphql-authoring.md)
- Smoke testing โ lightweight health check across critical endpoints
For test data seeding โ use /qa-seed-data instead. It provides entity dependency ordering, API request bodies, batch patterns, and seed profiles. It delegates all Postman mechanics back to this skill's reference files.
Mode: env
Creates a Postman environment from .env variables. See variables-and-environments.md ยง3.
| Profile | Variables Included |
|---|
qa | URLs (BACK_URL, FRONT_URL), credentials (ADMIN, USER), store config |
staging | URLs (VIRTO_START_BACK, VIRTO_START_FRONT), same credentials |
full | All variables from both profiles |
Mode: verify
getCollections({ workspace, name: "<filter>" }) โ resolve the collection ID
getCollection({ collectionId, model: "full" }) โ fetch full payload
- Run the audit checklist in execution.md ยง2
- Report findings: pass/fail per criterion, list of issues found
Mode: export
getCollections({ workspace }) โ find the collection (capture its uid, format <OWNER>-<UUID>)
getEnvironments({ workspace }) โ find the matching environment (capture its uid)
- Output Newman/Postman-CLI run commands using those IDs (see execution.md ยง3)
- Note: actual collection/environment JSON files must be exported manually from the Postman UI โ there is no MCP tool that emits a Postman v2.1.0 export bundle
Mode: list
getCollections({ workspace }) + getEnvironments({ workspace }). Quick inventory check.
Mode: examples
Read and output examples.md.
Agents
| Agent | Role |
|---|
qa-backend-expert | Primary โ authors API/GraphQL collections, then hands them off to Newman/Postman CLI for execution |
qa-testing-expert | Uses collections for interactive debugging |
test-management-specialist | References collections for test planning |
Rules
- NEVER hardcode URLs โ always use
{{baseUrl}}, {{frontUrl}} from environment variables
- NEVER hardcode IDs/SKUs/emails/prices/order-numbers/paths โ resolve via test-data-fixtures.md (
@td() + aliases.json) or seed via API
- NEVER put credentials in collection variables โ use environment variables with
type: secret
- NEVER hardcode passwords in agent prompts โ agents read
process.env at runtime (populated by config.js from .env.${TEST_ENV} + .env.local; default TEST_ENV=vcst)
- ALWAYS include the auth request first โ every collection starts with OAuth2 token acquisition
- ALWAYS validate status codes in test scripts โ don't assume 200
- ALWAYS verify GraphQL field names against
graphql-schema.md before authoring
- ALWAYS use
pm.collectionVariables.set() for entity IDs from chained requests
- ALWAYS use
pm.environment.get() for credentials and URLs
- Schema is required โ
info.schema must be "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
- Collection name cannot be empty โ
info.name minLength is 1
- Workspace ID is required for create operations โ default
8bd7a5b3-73e5-4414-a9c9-d59018b44079 (VirtoPlatform)
runCollection does NOT exist โ execute via Newman, Postman CLI, Postman Monitor, or the Postman UI
- Collection ID format depends on the tool โ owner-qualified
<OWNER>-<UUID> for getCollection/putCollection/duplicateCollection; bare UUID for createCollectionRequest/updateCollectionRequest
getCollection returns a collection map by default โ pass model: "full" to get the complete v2.1.0 payload