Publish to self-hosted WordPress from AI agents: markdown, images, SEO, and Notion sync.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your Notipo API key (create one at notipo.com → Settings → Account). The key scopes publishing to the blog that owns it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a new blog post. Creates a Notion page and triggers sync to WordPress. The body should be markdown. Set publish=true to publish immediately, or leave false to create a draft.
Post title
Post content in markdown
Custom URL slug
Tag names
Publish immediately (true) or create as draft (false)
Category name
SEO focus keyword
Custom meta description for SEO (max 160 chars). Auto-derived from content if not set.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Create a new blog post. Creates a Notion page and triggers sync to WordPress. The body should be markdown. Set publish=true to publish immediately, or leave false to create a draft.
| Argument | Type | Description |
|---|---|---|
| body | string | Post content in markdown |
| slug | string | Custom URL slug |
| tags | array | Tag names |
| title* | string | Post title |
| publish | boolean | Publish immediately (true) or create as draft (false) |
| category | string | Category name |
| seoKeyword | string | SEO focus keyword |
| seoDescription | string | Custom meta description for SEO (max 160 chars). Auto-derived from content if not set. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title"
],
"properties": {
"body": {
"type": "string",
"description": "Post content in markdown"
},
"slug": {
"type": "string",
"description": "Custom URL slug"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag names"
},
"title": {
"type": "string",
"description": "Post title"
},
"publish": {
"type": "boolean",
"default": false,
"description": "Publish immediately (true) or create as draft (false)"
},
"category": {
"type": "string",
"description": "Category name"
},
"seoKeyword": {
"type": "string",
"description": "SEO focus keyword"
},
"seoDescription": {
"type": "string",
"maxLength": 160,
"description": "Custom meta description for SEO (max 160 chars). Auto-derived from content if not set."
}
},
"additionalProperties": false
}Delete a post from Notipo, WordPress, and reset the Notion page status. This cannot be undone.
| Argument | Type | Description |
|---|---|---|
| postId* | string | The post ID to delete |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"postId"
],
"properties": {
"postId": {
"type": "string",
"description": "The post ID to delete"
}
},
"additionalProperties": false
}Publish a blog post directly to WordPress without Notion. Handles image uploads, Gutenberg conversion, featured image generation, and SEO metadata. Body must be markdown. Set publish=true to go live, false for draft. Use this instead of create_post when you don't need Notion.
| Argument | Type | Description |
|---|---|---|
| body* | string | Post content in markdown (required) |
| slug | string | Custom URL slug |
| tags | array | Tag names |
| title* | string | Post title |
| publish | boolean | Publish immediately (true) or create as draft (false) |
| category | string | Category name |
| imageTitle | string | Featured image title/text overlay |
| seoKeyword | string | SEO focus keyword |
| seoDescription | string | Custom meta description for SEO (max 160 chars) |
Check the status of a sync or publish job. Returns status (PENDING, RUNNING, COMPLETED, FAILED), progress steps, and any error message.
| Argument | Type | Description |
|---|---|---|
| jobId* | string | The job ID returned from create_post, update_post, or publish_post |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"description": "The job ID returned from create_post, update_post, or publish_post"
}
},
"additionalProperties": false
}Get details of a specific post by ID, including status, WordPress URL, and category.
| Argument | Type | Description |
|---|---|---|
| postId* | string | The post ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"postId"
],
"properties": {
"postId": {
"type": "string",
"description": "The post ID"
}
},
"additionalProperties": false
}Get your Notipo account configuration: which services are connected (Notion, WordPress), current plan, feature settings, and trigger statuses.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}List all WordPress categories synced to Notipo. Use these names when creating posts.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}List recent sync and publish jobs. Useful for monitoring pipeline activity.
| Argument | Type | Description |
|---|---|---|
| limit | number | Number of jobs to return (default 10) |
| status | string | Filter by job status |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Number of jobs to return (default 10)"
},
"status": {
"enum": [
"PENDING",
"RUNNING",
"COMPLETED",
"FAILED"
],
"type": "string",
"description": "Filter by job status"
}
},
"additionalProperties": false
}List all posts for your Notipo account. Returns title, status, WordPress URL, category, and timestamps.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}List all WordPress tags synced to Notipo. Use these names when creating posts.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}Publish a draft post to WordPress (make it live).
| Argument | Type | Description |
|---|---|---|
| postId* | string | The post ID to publish |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"postId"
],
"properties": {
"postId": {
"type": "string",
"description": "The post ID to publish"
}
},
"additionalProperties": false
}Trigger an immediate sync from Notion. Checks for any posts with trigger statuses and queues sync jobs. Pro plan only. Has a 15-second cooldown between calls.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}Update an existing post's content or properties in Notion, then re-sync to WordPress. Only provided fields are updated.
| Argument | Type | Description |
|---|---|---|
| body | string | New content in markdown (replaces entire body) |
| slug | string | New URL slug |
| tags | array | New tag names |
| title | string | New title |
| postId* | string | The post ID to update |
| publish | boolean | Set true to also publish after updating |
| category | string | New category name |
| seoKeyword | string | New SEO focus keyword |
| seoDescription | string | New meta description for SEO (max 160 chars) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"postId"
],
"properties": {
"body": {
"type": "string",
"description": "New content in markdown (replaces entire body)"
},
"slug": {
"type": "string",
"description": "New URL slug"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "New tag names"
},
"title": {
"type": "string",
"description": "New title"
},
"postId": {
"type": "string",
"description": "The post ID to update"
},
"publish": {
"type": "boolean",
"description": "Set true to also publish after updating"
},
"category": {
"type": "string",
"description": "New category name"
},
"seoKeyword": {
"type": "string",
"description": "New SEO focus keyword"
},
"seoDescription": {
"type": "string",
"maxLength": 160,
"description": "New meta description for SEO (max 160 chars)"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"body"
],
"properties": {
"body": {
"type": "string",
"description": "Post content in markdown (required)"
},
"slug": {
"type": "string",
"description": "Custom URL slug"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag names"
},
"title": {
"type": "string",
"description": "Post title"
},
"publish": {
"type": "boolean",
"default": false,
"description": "Publish immediately (true) or create as draft (false)"
},
"category": {
"type": "string",
"description": "Category name"
},
"imageTitle": {
"type": "string",
"description": "Featured image title/text overlay"
},
"seoKeyword": {
"type": "string",
"description": "SEO focus keyword"
},
"seoDescription": {
"type": "string",
"maxLength": 160,
"description": "Custom meta description for SEO (max 160 chars)"
}
},
"additionalProperties": false
}