Notipo
What this MCP does
Creates, edits, synchronizes, publishes, and manages Markdown blog posts across Notion and WordPress, including images, SEO metadata, categories, tags, and job status.
Tools
Input schema
{'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}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['jobId', 'notionPageId'], 'properties': {'jobId': {'type': 'string', 'description': 'Use get_job to poll status'}, 'notionPageId': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'The post ID to delete'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deleted'], 'properties': {'deleted': {'type': 'boolean'}}, 'additionalProperties': False}
Input schema
{'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}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string', 'description': 'Use get_job to poll status'}}, 'additionalProperties': False}
Input schema
{'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}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'type', 'status', 'error', 'createdAt', 'completedAt', 'startedAt', 'post'], 'properties': {'id': {'type': 'string'}, 'post': {'anyOf': [{'type': 'object', 'required': ['id', 'title', 'status', 'wpUrl'], 'properties': {'id': {'type': 'string'}, 'title': {'type': 'string'}, 'wpUrl': {'type': ['string', 'null']}, 'status': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'type': {'type': 'string', 'description': 'SYNC_POST | PUBLISH_POST'}, 'error': {'type': ['string', 'null']}, 'result': {'anyOf': [{}, {'type': 'null'}]}, 'status': {'type': 'string', 'description': 'PENDING | RUNNING | COMPLETED | FAILED'}, 'createdAt': {'type': 'string'}, 'startedAt': {'type': ['string', 'null']}, 'completedAt': {'type': ['string', 'null']}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'The post ID'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'title', 'status', 'wpUrl', 'category', 'createdAt', 'updatedAt', 'wpPostId', 'notionPageId'], 'properties': {'id': {'type': 'string'}, 'title': {'type': 'string'}, 'wpUrl': {'type': ['string', 'null']}, 'status': {'type': 'string', 'description': 'DRAFT | PUBLISHED | SYNCED | FAILED, etc.'}, 'category': {'type': ['string', 'null']}, 'wpPostId': {'type': ['number', 'null']}, 'createdAt': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'notionPageId': {'type': ['string', 'null']}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['notionConnected', 'wordpressConnected', 'plan', 'wpSeoPlugin', 'codeHighlighter'], 'properties': {'plan': {'type': 'string', 'description': 'FREE | TRIAL | PRO'}, 'wpSeoPlugin': {'type': ['string', 'null'], 'description': 'RANK_MATH | YOAST | SEOPRESS | AIOSEO'}, 'codeHighlighter': {'type': ['string', 'null']}, 'notionConnected': {'type': 'boolean'}, 'wordpressConnected': {'type': 'boolean'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['categories'], 'properties': {'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'wpCategoryId'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'wpCategoryId': {'type': ['number', 'null']}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'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}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['jobs'], 'properties': {'jobs': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'status', 'error', 'createdAt', 'completedAt'], 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string', 'description': 'SYNC_POST | PUBLISH_POST'}, 'error': {'type': ['string', 'null']}, 'status': {'type': 'string', 'description': 'PENDING | RUNNING | COMPLETED | FAILED'}, 'createdAt': {'type': 'string'}, 'completedAt': {'type': ['string', 'null']}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['posts'], 'properties': {'posts': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'status', 'wpUrl', 'category', 'createdAt', 'updatedAt'], 'properties': {'id': {'type': 'string'}, 'title': {'type': 'string'}, 'wpUrl': {'type': ['string', 'null']}, 'status': {'type': 'string', 'description': 'DRAFT | PUBLISHED | SYNCED | FAILED, etc.'}, 'category': {'type': ['string', 'null']}, 'createdAt': {'type': 'string'}, 'updatedAt': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tags'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'wpTagId'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'wpTagId': {'type': ['number', 'null']}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'The post ID to publish'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string', 'description': 'Use get_job to poll status'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['triggered', 'message'], 'properties': {'message': {'type': 'string'}, 'triggered': {'type': 'boolean'}}, 'additionalProperties': False}
Input schema
{'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}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string', 'description': 'Use get_job to poll status'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
Hermoso
Supports ad research, competitor analysis, video and static ad creation, campaign policy checks, content publishing, and performa…
John's Essentials
Analyzes and converts documents, images, audio, video, archives, data files, and other media formats, with PDF chat and file insp…
Heista
Analyzes video advertising, builds brand intelligence profiles, researches markets, and generates advertising scripts and creativ…
HelpySelf
Provides utilities for PDF and image conversion, compression, redaction, scanning, encoding, calculations, accessibility checks, …
Spook SEO
Provides SEO analysis, keyword and content generation, AEO checks, ad copy tools and automated article generation and publishing.
VarynForge
Supports SEO research and content planning through niche analysis, competitor and keyword research, opportunity discovery, and wr…
AfterLaunch: the agentic growth marketing engine
Runs growth-marketing workflows covering SEO, AI-search visibility, competitor analysis, content planning, distribution channels,…
JustBlogged
Manages JustBlogged sites, posts, pages, collections, redirects, themes, revisions, and content review workflows.