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
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 '{
"source": "url",
"url": "https://www.postman.com/collections/abc123",
"commit": true,
"selected_temp_ids": ["pm_0", "pm_4", "pm_5"],
"imported_status": "active"
}'
import json, requests
with open("./my-collection.json") as f:
collection = f.read()
url = "https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/import-postman"
headers = {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
}
parse = requests.post(url, headers=headers, json={
"source": "text",
"content": collection,
}).json()
selected = [c["temp_id"] for c in parse["candidates"] if "users" in c.get("tags", [])]
commit = requests.post(url, headers=headers, json={
"source": "text",
"content": collection,
"commit": True,
"selected_temp_ids": selected,
"imported_status": "active",
}).json()
const url = "https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/import-postman";
const headers = {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
};
const collection = await (await fetch("./my-collection.json")).text();
const parse = await (await fetch(url, {
method: "POST",
headers,
body: JSON.stringify({ source: "text", content: collection }),
})).json();
const commit = await (await fetch(url, {
method: "POST",
headers,
body: JSON.stringify({
source: "text",
content: collection,
commit: true,
selected_temp_ids: parse.candidates.map(c => c.temp_id),
}),
})).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"
}
}
{
"created": [
{ "tool_id": 44, "uuid": "5376af81-6bb8-4b01-800c-508d7672e394", "name": "Get User", "slug": "get_user" }
],
"skipped": [],
"failed": []
}
{
"code": "invalid_spec",
"message": "Not a Postman 2.1 collection.",
"data": { "status": 400 }
}
{
"code": "tier_limit_import_method",
"message": "Importing tools from POSTMAN is not available on your FREE plan.",
"data": {
"status": 403,
"tier": "free",
"upgrade_url": "https://getmcp.com/pricing"
}
}
Tools
Import from Postman
Parse a Postman 2.1 collection and import the selected requests as tools.
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
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 '{
"source": "url",
"url": "https://www.postman.com/collections/abc123",
"commit": true,
"selected_temp_ids": ["pm_0", "pm_4", "pm_5"],
"imported_status": "active"
}'
import json, requests
with open("./my-collection.json") as f:
collection = f.read()
url = "https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/import-postman"
headers = {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
}
parse = requests.post(url, headers=headers, json={
"source": "text",
"content": collection,
}).json()
selected = [c["temp_id"] for c in parse["candidates"] if "users" in c.get("tags", [])]
commit = requests.post(url, headers=headers, json={
"source": "text",
"content": collection,
"commit": True,
"selected_temp_ids": selected,
"imported_status": "active",
}).json()
const url = "https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/import-postman";
const headers = {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
};
const collection = await (await fetch("./my-collection.json")).text();
const parse = await (await fetch(url, {
method: "POST",
headers,
body: JSON.stringify({ source: "text", content: collection }),
})).json();
const commit = await (await fetch(url, {
method: "POST",
headers,
body: JSON.stringify({
source: "text",
content: collection,
commit: true,
selected_temp_ids: parse.candidates.map(c => c.temp_id),
}),
})).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"
}
}
{
"created": [
{ "tool_id": 44, "uuid": "5376af81-6bb8-4b01-800c-508d7672e394", "name": "Get User", "slug": "get_user" }
],
"skipped": [],
"failed": []
}
{
"code": "invalid_spec",
"message": "Not a Postman 2.1 collection.",
"data": { "status": 400 }
}
{
"code": "tier_limit_import_method",
"message": "Importing tools from POSTMAN is not available on your FREE plan.",
"data": {
"status": 403,
"tier": "free",
"upgrade_url": "https://getmcp.com/pricing"
}
}
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
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
string
default:"text"
Where the collection content comes from. One of:
text (use content), url (use url).string
Raw Postman collection JSON. Required when
source is text. Hard cap of 10 MB.string
Public URL to fetch the collection from (Postman’s “raw” share link works). Required when
source is url.boolean
default:"false"
When
false (default), parse and return candidates only. When true, persist the candidates listed in selected_temp_ids.array
Array of
temp_id strings identifying which requests to create as tools. Required when commit is true.string
default:"skip"
Slug-collision policy. One of:
skip, duplicate.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
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 '{
"source": "url",
"url": "https://www.postman.com/collections/abc123",
"commit": true,
"selected_temp_ids": ["pm_0", "pm_4", "pm_5"],
"imported_status": "active"
}'
import json, requests
with open("./my-collection.json") as f:
collection = f.read()
url = "https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/import-postman"
headers = {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
}
parse = requests.post(url, headers=headers, json={
"source": "text",
"content": collection,
}).json()
selected = [c["temp_id"] for c in parse["candidates"] if "users" in c.get("tags", [])]
commit = requests.post(url, headers=headers, json={
"source": "text",
"content": collection,
"commit": True,
"selected_temp_ids": selected,
"imported_status": "active",
}).json()
const url = "https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/import-postman";
const headers = {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
};
const collection = await (await fetch("./my-collection.json")).text();
const parse = await (await fetch(url, {
method: "POST",
headers,
body: JSON.stringify({ source: "text", content: collection }),
})).json();
const commit = await (await fetch(url, {
method: "POST",
headers,
body: JSON.stringify({
source: "text",
content: collection,
commit: true,
selected_temp_ids: parse.candidates.map(c => c.temp_id),
}),
})).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"
}
}
{
"created": [
{ "tool_id": 44, "uuid": "5376af81-6bb8-4b01-800c-508d7672e394", "name": "Get User", "slug": "get_user" }
],
"skipped": [],
"failed": []
}
{
"code": "invalid_spec",
"message": "Not a Postman 2.1 collection.",
"data": { "status": 400 }
}
{
"code": "tier_limit_import_method",
"message": "Importing tools from POSTMAN is not available on your FREE plan.",
"data": {
"status": 403,
"tier": "free",
"upgrade_url": "https://getmcp.com/pricing"
}
}
Status Codes
| Code | Meaning |
|---|---|
200 | Collection parsed (phase 1) or commit completed (phase 2). |
400 | Malformed collection, empty content, or unfetchable URL. |
402 | 14-day trial expired and no active license. |
403 | Current license tier does not allow Postman import. |
404 | Server not found. |
⌘I

