Skip to main content
POST
/
wp-json
/
getmcp
/
v1
/
servers
/
{server_id}
/
tools
/
import-postman
curl --request POST \
     --url https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/import-postman \
     --header 'Authorization: Bearer gmcp_your_api_key' \
     --header 'content-type: application/json' \
     --data @./my-collection.json
{
  "candidates": [
    {
      "temp_id": "pm_0",
      "name": "Get User",
      "slug": "get_user",
      "description": "Fetch a user by ID.",
      "endpoint_url": "https://api.example.com/v1/users/{{id}}",
      "http_method": "GET",
      "input_schema": {
        "type": "object",
        "properties": {
          "id": { "type": "string", "description": "id" }
        },
        "required": ["id"]
      },
      "headers": {
        "Accept": "application/json"
      },
      "tags": ["Users"]
    }
  ],
  "info": {
    "title": "My Collection",
    "version": "2.1.0"
  }
}
This endpoint accepts a Postman 2.1 collection JSON and runs the same two-phase parse-then-commit flow as the OpenAPI / Swagger importers.
Postman folders become tags on the resulting tools, and {{variable}} placeholders that resolve against the collection’s environment / global variables are substituted at parse time. Unresolved placeholders are left in the URL so you can wire them up to tool inputs later.
Phase 1 (no commit flag) parses the collection and returns candidates with temp_ids. Phase 2 (commit: true) takes selected_temp_ids and writes the chosen tools. Imports default to draft so nothing goes live without a review pass.

Path Parameters

server_id
string
required
The UUID of the server to import into (e.g. 836995ae-1cff-41ec-823e-a4f07ccca3a0). Numeric IDs are also accepted for backwards compatibility.

Body Parameters

source
string
default:"text"
Where the collection content comes from. One of: text (use content), url (use url).
content
string
Raw Postman collection JSON. Required when source is text. Hard cap of 10 MB.
url
string
Public URL to fetch the collection from (Postman’s “raw” share link works). Required when source is url.
commit
boolean
default:"false"
When false (default), parse and return candidates only. When true, persist the candidates listed in selected_temp_ids.
selected_temp_ids
array
Array of temp_id strings identifying which requests to create as tools. Required when commit is true.
on_conflict
string
default:"skip"
Slug-collision policy. One of: skip, duplicate.
imported_status
string
default:"draft"
Status for newly created tools. One of: draft, active.
curl --request POST \
     --url https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/import-postman \
     --header 'Authorization: Bearer gmcp_your_api_key' \
     --header 'content-type: application/json' \
     --data @./my-collection.json
{
  "candidates": [
    {
      "temp_id": "pm_0",
      "name": "Get User",
      "slug": "get_user",
      "description": "Fetch a user by ID.",
      "endpoint_url": "https://api.example.com/v1/users/{{id}}",
      "http_method": "GET",
      "input_schema": {
        "type": "object",
        "properties": {
          "id": { "type": "string", "description": "id" }
        },
        "required": ["id"]
      },
      "headers": {
        "Accept": "application/json"
      },
      "tags": ["Users"]
    }
  ],
  "info": {
    "title": "My Collection",
    "version": "2.1.0"
  }
}

Status Codes

CodeMeaning
200Collection parsed (phase 1) or commit completed (phase 2).
400Malformed collection, empty content, or unfetchable URL.
40214-day trial expired and no active license.
403Current license tier does not allow Postman import.
404Server not found.