curl --request POST \
--url https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export \
--header 'Authorization: Bearer gmcp_your_api_key' \
--header 'content-type: application/json' \
--data '{
"tool_ids": [
"448fd610-2a86-4e49-b4db-f2e8d2af381b",
"bf707299-9d5f-4996-9a19-e2dd634be3b8",
"5c0035c6-ad10-4c4c-a61f-14549ef112a4"
]
}'
curl --request POST \
--url https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export \
--header 'Authorization: Bearer gmcp_your_api_key' \
--header 'content-type: application/json' \
--data '{
"tool_ids": [
"5376af81-6bb8-4b01-800c-508d7672e394",
"e7a3c1d2-4f5b-6a7c-8d9e-0f1a2b3c4d5e"
]
}'
import json, requests
response = requests.post(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
headers={
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
},
json={},
)
manifest = response.json()
with open("./manifest.json", "w") as f:
json.dump(manifest, f, indent=2)
const response = await fetch(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
{
method: "POST",
headers: {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
}
);
const manifest = await response.json();
$response = wp_remote_post(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
[
"headers" => [
"Authorization" => "Bearer gmcp_your_api_key",
"Content-Type" => "application/json",
],
"body" => wp_json_encode( new stdClass() ),
]
);
$manifest = json_decode( wp_remote_retrieve_body( $response ), true );
{
"format": "getmcp/tools-v1",
"exported_at": "2025-03-18T10:00:00+00:00",
"server": {
"name": "My Weather Tools",
"slug": "my-weather-tools"
},
"tools": [
{
"name": "Get Weather",
"slug": "get_weather",
"description": "Get current weather for a city",
"endpoint_url": "https://wttr.in/{{city}}?format=j1",
"http_method": "GET",
"input_schema": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "The city name" }
},
"required": ["city"]
},
"parameter_mapping": {
"city": { "target": "path", "key": "city" }
},
"response_mapping": {
"selector": "",
"format": "json",
"template": ""
},
"headers": null,
"timeout": 30,
"cache_ttl": 300,
"retry_count": 0,
"retry_backoff": "exponential",
"rate_limit_per_min": 60,
"status": "active",
"tags": [],
"sort_order": 0
}
]
}
{
"code": "server_not_found",
"message": "Server not found.",
"data": { "status": 404 }
}
Tools
Export Tools
Export a server’s tools as a versioned JSON manifest for round-tripping.
POST
/
wp-json
/
getmcp
/
v1
/
servers
/
{server_id}
/
tools
/
export
curl --request POST \
--url https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export \
--header 'Authorization: Bearer gmcp_your_api_key' \
--header 'content-type: application/json' \
--data '{
"tool_ids": [
"448fd610-2a86-4e49-b4db-f2e8d2af381b",
"bf707299-9d5f-4996-9a19-e2dd634be3b8",
"5c0035c6-ad10-4c4c-a61f-14549ef112a4"
]
}'
curl --request POST \
--url https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export \
--header 'Authorization: Bearer gmcp_your_api_key' \
--header 'content-type: application/json' \
--data '{
"tool_ids": [
"5376af81-6bb8-4b01-800c-508d7672e394",
"e7a3c1d2-4f5b-6a7c-8d9e-0f1a2b3c4d5e"
]
}'
import json, requests
response = requests.post(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
headers={
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
},
json={},
)
manifest = response.json()
with open("./manifest.json", "w") as f:
json.dump(manifest, f, indent=2)
const response = await fetch(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
{
method: "POST",
headers: {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
}
);
const manifest = await response.json();
$response = wp_remote_post(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
[
"headers" => [
"Authorization" => "Bearer gmcp_your_api_key",
"Content-Type" => "application/json",
],
"body" => wp_json_encode( new stdClass() ),
]
);
$manifest = json_decode( wp_remote_retrieve_body( $response ), true );
{
"format": "getmcp/tools-v1",
"exported_at": "2025-03-18T10:00:00+00:00",
"server": {
"name": "My Weather Tools",
"slug": "my-weather-tools"
},
"tools": [
{
"name": "Get Weather",
"slug": "get_weather",
"description": "Get current weather for a city",
"endpoint_url": "https://wttr.in/{{city}}?format=j1",
"http_method": "GET",
"input_schema": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "The city name" }
},
"required": ["city"]
},
"parameter_mapping": {
"city": { "target": "path", "key": "city" }
},
"response_mapping": {
"selector": "",
"format": "json",
"template": ""
},
"headers": null,
"timeout": 30,
"cache_ttl": 300,
"retry_count": 0,
"retry_backoff": "exponential",
"rate_limit_per_min": 60,
"status": "active",
"tags": [],
"sort_order": 0
}
]
}
{
"code": "server_not_found",
"message": "Server not found.",
"data": { "status": 404 }
}
Returns a versioned JSON manifest of every tool on the server (or a selected subset). Pair with
POST /tools/import-getmcp on the receiving server to clone the catalog.
Identifiers (
id, uuid, server_id) and bookkeeping fields (created_at, updated_at, last_tested_at, last_test_response_ms) are deliberately stripped — they’re meaningless on the receiving server. Authentication is not included; configure auth on the destination server separately.Tools are exported regardless of status —
draft, active, and inactive rows all land in the manifest with their original status field intact.Path Parameters
string
required
The UUID of the source server (e.g.
836995ae-1cff-41ec-823e-a4f07ccca3a0). Numeric IDs are also accepted for backwards compatibility.Body Parameters
array
Optional array of tool UUIDs to limit the export to. When omitted (or empty), every tool on the server is exported. UUIDs that don’t belong to the server are silently skipped.
curl --request POST \
--url https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export \
--header 'Authorization: Bearer gmcp_your_api_key' \
--header 'content-type: application/json' \
--data '{
"tool_ids": [
"448fd610-2a86-4e49-b4db-f2e8d2af381b",
"bf707299-9d5f-4996-9a19-e2dd634be3b8",
"5c0035c6-ad10-4c4c-a61f-14549ef112a4"
]
}'
curl --request POST \
--url https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export \
--header 'Authorization: Bearer gmcp_your_api_key' \
--header 'content-type: application/json' \
--data '{
"tool_ids": [
"5376af81-6bb8-4b01-800c-508d7672e394",
"e7a3c1d2-4f5b-6a7c-8d9e-0f1a2b3c4d5e"
]
}'
import json, requests
response = requests.post(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
headers={
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
},
json={},
)
manifest = response.json()
with open("./manifest.json", "w") as f:
json.dump(manifest, f, indent=2)
const response = await fetch(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
{
method: "POST",
headers: {
"Authorization": "Bearer gmcp_your_api_key",
"Content-Type": "application/json",
},
body: JSON.stringify({}),
}
);
const manifest = await response.json();
$response = wp_remote_post(
"https://yoursite.com/wp-json/getmcp/v1/servers/836995ae-1cff-41ec-823e-a4f07ccca3a0/tools/export",
[
"headers" => [
"Authorization" => "Bearer gmcp_your_api_key",
"Content-Type" => "application/json",
],
"body" => wp_json_encode( new stdClass() ),
]
);
$manifest = json_decode( wp_remote_retrieve_body( $response ), true );
{
"format": "getmcp/tools-v1",
"exported_at": "2025-03-18T10:00:00+00:00",
"server": {
"name": "My Weather Tools",
"slug": "my-weather-tools"
},
"tools": [
{
"name": "Get Weather",
"slug": "get_weather",
"description": "Get current weather for a city",
"endpoint_url": "https://wttr.in/{{city}}?format=j1",
"http_method": "GET",
"input_schema": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "The city name" }
},
"required": ["city"]
},
"parameter_mapping": {
"city": { "target": "path", "key": "city" }
},
"response_mapping": {
"selector": "",
"format": "json",
"template": ""
},
"headers": null,
"timeout": 30,
"cache_ttl": 300,
"retry_count": 0,
"retry_backoff": "exponential",
"rate_limit_per_min": 60,
"status": "active",
"tags": [],
"sort_order": 0
}
]
}
{
"code": "server_not_found",
"message": "Server not found.",
"data": { "status": 404 }
}
Response Fields
string
Manifest format identifier. Currently
getmcp/tools-v1. Importers reject anything not prefixed with getmcp/tools-v.string
ISO 8601 UTC timestamp of when the manifest was generated.
object
Source server metadata (
name, slug) — informational only.array
Array of tool objects in
sort_order ascending. See the import endpoint for the per-tool field reference.⌘I

