{
    "format": "getmcp/server-v1",
    "generator": {
        "product": "GetMCP",
        "version": "1.7.0"
    },
    "server": {
        "name": "Blog (WordPress)",
        "slug": "blog",
        "status": "active",
        "transport_type": "streamable-http",
        "auth_type": "api-key",
        "auth_config": null,
        "outbound_auth_type": "basic",
        "outbound_auth_config": null,
        "cors_origins": null,
        "rate_limit_per_min": 60,
        "settings": {
            "description": "Write, edit and publish posts on your WordPress site.",
            "version": "1.0.0",
            "instructions": "Use these tools to manage posts on the user's WordPress site. Look up category and tag IDs with list_categories and list_tags before setting them on a post. Create posts as drafts unless the user asks to publish.",
            "variables": {
                "site": "REPLACE_ME__SITE"
            }
        }
    },
    "tools": [
        {
            "name": "list_posts",
            "slug": "list_posts",
            "description": "List or search posts. Defaults to published posts, newest first; pass status to reach drafts and pending posts (the account needs edit rights for those).",
            "endpoint_url": "https://{{site}}/wp-json/wp/v2/posts",
            "http_method": "GET",
            "tool_type": "http",
            "handler": "",
            "input_schema": {
                "type": "object",
                "properties": {
                    "search": {
                        "type": "string",
                        "description": "Search keyword; matches title and content"
                    },
                    "status": {
                        "type": "string",
                        "description": "Post status to list",
                        "enum": [
                            "publish",
                            "draft",
                            "pending",
                            "private",
                            "future",
                            "any"
                        ],
                        "default": "publish"
                    },
                    "per_page": {
                        "type": "integer",
                        "description": "Posts per page (max 100)",
                        "default": 10
                    },
                    "page": {
                        "type": "integer",
                        "description": "Page number",
                        "default": 1
                    },
                    "orderby": {
                        "type": "string",
                        "description": "Sort field",
                        "enum": [
                            "date",
                            "title",
                            "modified",
                            "id"
                        ],
                        "default": "date"
                    },
                    "order": {
                        "type": "string",
                        "description": "Sort direction",
                        "enum": [
                            "asc",
                            "desc"
                        ],
                        "default": "desc"
                    },
                    "categories": {
                        "type": "string",
                        "description": "Comma-separated category IDs — get them from list_categories"
                    },
                    "tags": {
                        "type": "string",
                        "description": "Comma-separated tag IDs — get them from list_tags"
                    },
                    "author": {
                        "type": "string",
                        "description": "Comma-separated author user IDs — get them from list_users"
                    }
                }
            },
            "body_template": null,
            "parameter_mapping": {
                "search": {
                    "target": "query"
                },
                "status": {
                    "target": "query"
                },
                "per_page": {
                    "target": "query"
                },
                "page": {
                    "target": "query"
                },
                "orderby": {
                    "target": "query"
                },
                "order": {
                    "target": "query"
                },
                "categories": {
                    "target": "query"
                },
                "tags": {
                    "target": "query"
                },
                "author": {
                    "target": "query"
                }
            },
            "response_mapping": null,
            "headers": null,
            "timeout": 30,
            "cache_ttl": 0,
            "retry_count": 0,
            "retry_backoff": "exponential",
            "ssl_verify": true,
            "rate_limit_per_min": 0,
            "status": "active",
            "tags": [],
            "annotations": null,
            "sort_order": 0
        },
        {
            "name": "get_post",
            "slug": "get_post",
            "description": "Retrieve one post by ID, including its content, status, categories, tags and dates. Pass context=edit to get the raw unrendered content and any registered custom fields — that needs an account which can edit the post.",
            "endpoint_url": "https://{{site}}/wp-json/wp/v2/posts/{{id}}",
            "http_method": "GET",
            "tool_type": "http",
            "handler": "",
            "input_schema": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "Post ID"
                    },
                    "context": {
                        "type": "string",
                        "description": "view returns rendered HTML; edit returns the raw source you can send back to update_post",
                        "enum": [
                            "view",
                            "edit"
                        ],
                        "default": "view"
                    }
                },
                "required": [
                    "id"
                ]
            },
            "body_template": null,
            "parameter_mapping": {
                "id": {
                    "target": "path"
                },
                "context": {
                    "target": "query"
                }
            },
            "response_mapping": null,
            "headers": null,
            "timeout": 30,
            "cache_ttl": 0,
            "retry_count": 0,
            "retry_backoff": "exponential",
            "ssl_verify": true,
            "rate_limit_per_min": 0,
            "status": "active",
            "tags": [],
            "annotations": null,
            "sort_order": 1
        },
        {
            "name": "create_post",
            "slug": "create_post",
            "description": "Create a post. Creates a draft unless a status is given. To make publishing impossible from an AI client, delete this tool's status parameter — an argument a tool does not declare never reaches WordPress, and WordPress defaults to draft.",
            "endpoint_url": "https://{{site}}/wp-json/wp/v2/posts",
            "http_method": "POST",
            "tool_type": "http",
            "handler": "",
            "input_schema": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "description": "Post title"
                    },
                    "content": {
                        "type": "string",
                        "description": "Post content (HTML or block markup)"
                    },
                    "status": {
                        "type": "string",
                        "description": "Post status",
                        "enum": [
                            "draft",
                            "pending",
                            "private",
                            "publish"
                        ],
                        "default": "draft"
                    },
                    "excerpt": {
                        "type": "string",
                        "description": "Short excerpt"
                    },
                    "slug": {
                        "type": "string",
                        "description": "URL slug"
                    },
                    "categories": {
                        "type": "array",
                        "description": "Category IDs — get them from list_categories",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "tags": {
                        "type": "array",
                        "description": "Tag IDs — get them from list_tags",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "featured_media": {
                        "type": "integer",
                        "description": "Attachment ID for the featured image — get it from list_media"
                    }
                },
                "required": [
                    "title"
                ]
            },
            "body_template": null,
            "parameter_mapping": {
                "title": {
                    "target": "body"
                },
                "content": {
                    "target": "body"
                },
                "status": {
                    "target": "body"
                },
                "excerpt": {
                    "target": "body"
                },
                "slug": {
                    "target": "body"
                },
                "categories": {
                    "target": "body"
                },
                "tags": {
                    "target": "body"
                },
                "featured_media": {
                    "target": "body"
                }
            },
            "response_mapping": null,
            "headers": {
                "Content-Type": "application/json"
            },
            "timeout": 30,
            "cache_ttl": 0,
            "retry_count": 0,
            "retry_backoff": "exponential",
            "ssl_verify": true,
            "rate_limit_per_min": 0,
            "status": "active",
            "tags": [],
            "annotations": null,
            "sort_order": 2
        },
        {
            "name": "update_post",
            "slug": "update_post",
            "description": "Update an existing post or draft. Only the fields you send are changed; everything else is left as it is. Delete this tool's status parameter to make publishing unreachable from an AI client.",
            "endpoint_url": "https://{{site}}/wp-json/wp/v2/posts/{{id}}",
            "http_method": "POST",
            "tool_type": "http",
            "handler": "",
            "input_schema": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "Post ID to update"
                    },
                    "title": {
                        "type": "string",
                        "description": "New title"
                    },
                    "content": {
                        "type": "string",
                        "description": "New content (HTML or block markup) — replaces the existing content in full"
                    },
                    "status": {
                        "type": "string",
                        "description": "New post status",
                        "enum": [
                            "draft",
                            "pending",
                            "private",
                            "publish"
                        ]
                    },
                    "excerpt": {
                        "type": "string",
                        "description": "New excerpt"
                    },
                    "slug": {
                        "type": "string",
                        "description": "New URL slug"
                    },
                    "categories": {
                        "type": "array",
                        "description": "Category IDs — replaces the current set",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "tags": {
                        "type": "array",
                        "description": "Tag IDs — replaces the current set",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "featured_media": {
                        "type": "integer",
                        "description": "Attachment ID for the featured image"
                    }
                },
                "required": [
                    "id"
                ]
            },
            "body_template": null,
            "parameter_mapping": {
                "id": {
                    "target": "path"
                },
                "title": {
                    "target": "body"
                },
                "content": {
                    "target": "body"
                },
                "status": {
                    "target": "body"
                },
                "excerpt": {
                    "target": "body"
                },
                "slug": {
                    "target": "body"
                },
                "categories": {
                    "target": "body"
                },
                "tags": {
                    "target": "body"
                },
                "featured_media": {
                    "target": "body"
                }
            },
            "response_mapping": null,
            "headers": {
                "Content-Type": "application/json"
            },
            "timeout": 30,
            "cache_ttl": 0,
            "retry_count": 0,
            "retry_backoff": "exponential",
            "ssl_verify": true,
            "rate_limit_per_min": 0,
            "status": "active",
            "tags": [],
            "annotations": null,
            "sort_order": 3
        },
        {
            "name": "delete_post",
            "slug": "delete_post",
            "description": "Trash a post, or delete it permanently when force is true. Installed switched off — turn it on from the Tools screen only if an AI should be able to remove posts.",
            "endpoint_url": "https://{{site}}/wp-json/wp/v2/posts/{{id}}",
            "http_method": "DELETE",
            "tool_type": "http",
            "handler": "",
            "input_schema": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "Post ID"
                    },
                    "force": {
                        "type": "boolean",
                        "description": "false moves the post to the trash and can be undone; true deletes it permanently",
                        "default": false
                    }
                },
                "required": [
                    "id"
                ]
            },
            "body_template": null,
            "parameter_mapping": {
                "id": {
                    "target": "path"
                },
                "force": {
                    "target": "query"
                }
            },
            "response_mapping": null,
            "headers": null,
            "timeout": 30,
            "cache_ttl": 0,
            "retry_count": 0,
            "retry_backoff": "exponential",
            "ssl_verify": true,
            "rate_limit_per_min": 0,
            "status": "inactive",
            "tags": [],
            "annotations": null,
            "sort_order": 4
        },
        {
            "name": "list_categories",
            "slug": "list_categories",
            "description": "List categories with their IDs, names and post counts. Use this to turn a category name into the ID that list_posts, create_post and update_post expect.",
            "endpoint_url": "https://{{site}}/wp-json/wp/v2/categories",
            "http_method": "GET",
            "tool_type": "http",
            "handler": "",
            "input_schema": {
                "type": "object",
                "properties": {
                    "search": {
                        "type": "string",
                        "description": "Search keyword"
                    },
                    "per_page": {
                        "type": "integer",
                        "description": "Categories per page (max 100)",
                        "default": 50
                    },
                    "page": {
                        "type": "integer",
                        "description": "Page number",
                        "default": 1
                    },
                    "orderby": {
                        "type": "string",
                        "description": "Sort field",
                        "enum": [
                            "name",
                            "count",
                            "id",
                            "slug"
                        ],
                        "default": "name"
                    },
                    "hide_empty": {
                        "type": "boolean",
                        "description": "Omit categories with no posts",
                        "default": false
                    },
                    "parent": {
                        "type": "integer",
                        "description": "Only children of this category ID"
                    }
                }
            },
            "body_template": null,
            "parameter_mapping": {
                "search": {
                    "target": "query"
                },
                "per_page": {
                    "target": "query"
                },
                "page": {
                    "target": "query"
                },
                "orderby": {
                    "target": "query"
                },
                "hide_empty": {
                    "target": "query"
                },
                "parent": {
                    "target": "query"
                }
            },
            "response_mapping": null,
            "headers": null,
            "timeout": 30,
            "cache_ttl": 0,
            "retry_count": 0,
            "retry_backoff": "exponential",
            "ssl_verify": true,
            "rate_limit_per_min": 0,
            "status": "active",
            "tags": [],
            "annotations": null,
            "sort_order": 5
        },
        {
            "name": "list_tags",
            "slug": "list_tags",
            "description": "List tags with their IDs, names and post counts. Use this to turn a tag name into the ID that list_posts, create_post and update_post expect.",
            "endpoint_url": "https://{{site}}/wp-json/wp/v2/tags",
            "http_method": "GET",
            "tool_type": "http",
            "handler": "",
            "input_schema": {
                "type": "object",
                "properties": {
                    "search": {
                        "type": "string",
                        "description": "Search keyword"
                    },
                    "per_page": {
                        "type": "integer",
                        "description": "Tags per page (max 100)",
                        "default": 50
                    },
                    "page": {
                        "type": "integer",
                        "description": "Page number",
                        "default": 1
                    },
                    "orderby": {
                        "type": "string",
                        "description": "Sort field",
                        "enum": [
                            "name",
                            "count",
                            "id",
                            "slug"
                        ],
                        "default": "name"
                    },
                    "hide_empty": {
                        "type": "boolean",
                        "description": "Omit tags with no posts",
                        "default": false
                    }
                }
            },
            "body_template": null,
            "parameter_mapping": {
                "search": {
                    "target": "query"
                },
                "per_page": {
                    "target": "query"
                },
                "page": {
                    "target": "query"
                },
                "orderby": {
                    "target": "query"
                },
                "hide_empty": {
                    "target": "query"
                }
            },
            "response_mapping": null,
            "headers": null,
            "timeout": 30,
            "cache_ttl": 0,
            "retry_count": 0,
            "retry_backoff": "exponential",
            "ssl_verify": true,
            "rate_limit_per_min": 0,
            "status": "active",
            "tags": [],
            "annotations": null,
            "sort_order": 6
        },
        {
            "name": "list_media",
            "slug": "list_media",
            "description": "List media library items with their IDs, URLs and alt text. Use it to find the attachment ID for a featured image. Uploading files is not part of this template — the REST API needs a binary upload for that.",
            "endpoint_url": "https://{{site}}/wp-json/wp/v2/media",
            "http_method": "GET",
            "tool_type": "http",
            "handler": "",
            "input_schema": {
                "type": "object",
                "properties": {
                    "search": {
                        "type": "string",
                        "description": "Search keyword; matches title, filename and alt text"
                    },
                    "per_page": {
                        "type": "integer",
                        "description": "Items per page (max 100)",
                        "default": 10
                    },
                    "page": {
                        "type": "integer",
                        "description": "Page number",
                        "default": 1
                    },
                    "media_type": {
                        "type": "string",
                        "description": "Restrict to one kind of attachment",
                        "enum": [
                            "image",
                            "video",
                            "audio",
                            "application",
                            "text"
                        ]
                    },
                    "parent": {
                        "type": "integer",
                        "description": "Only attachments belonging to this post ID"
                    }
                }
            },
            "body_template": null,
            "parameter_mapping": {
                "search": {
                    "target": "query"
                },
                "per_page": {
                    "target": "query"
                },
                "page": {
                    "target": "query"
                },
                "media_type": {
                    "target": "query"
                },
                "parent": {
                    "target": "query"
                }
            },
            "response_mapping": null,
            "headers": null,
            "timeout": 30,
            "cache_ttl": 0,
            "retry_count": 0,
            "retry_backoff": "exponential",
            "ssl_verify": true,
            "rate_limit_per_min": 0,
            "status": "active",
            "tags": [],
            "annotations": null,
            "sort_order": 7
        }
    ],
    "resources": [],
    "prompts": [],
    "excluded": {
        "fields": [
            "auth_credentials",
            "outbound_auth_credentials",
            "test_auth_credentials"
        ],
        "reason": "Stored credentials are encrypted with a key unique to the site that saved them, so they cannot be restored elsewhere. Re-enter them after importing."
    }
}
