MCP 서버

JustBlogged

io.github.usamaejaz/justblogged
미디어 및 콘텐츠 생산성 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Manages JustBlogged sites, posts, pages, collections, redirects, themes, revisions, and content review workflows.

create_blog
Create blog
Create a new blog. Subdomain is auto-generated from the name. Requires account-level OAuth or a user-scoped API key.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'logo': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional logo URL.'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Blog name.'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional blog description.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_collection
Create collection
Create a new collection with name, slug, and optional description.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'name', 'slug'], 'properties': {'name': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Collection name.'}, 'slug': {'type': 'string', 'pattern': '^\\s*(?:$|(?=[a-zA-Z0-9_-]{1,32}\\s*$)(?!(?:[aA][dD][mM][iI][nN]|[lL][oO][gG][iI][nN]|[sS][iI][gG][nN][uU][pP]|[aA][pP][iI]|[aA][sS][sS][eE][tT][sS]|[rR][oO][bB][oO][tT][sS]\\.[tT][xX][tT]|[sS][iI][tT][eE][mM][aA][pP]\\.[xX][mM][lL]|[sS][iI][tT][eE][mM][aA][pP]-[iI][nN][dD][eE][xX]\\.[xX][mM][lL]|[fF][eE][eE][dD]|[rR][sS][sS]|[tT][aA][gG][sS]|[tT][aA][gG]|[cC][oO][lL][lL][eE][cC][tT][iI][oO][nN][sS]|[cC][oO][lL][lL][eE][cC][tT][iI][oO][nN]|[pP][aA][gG][eE][sS]|[pP][aA][gG][eE]|[sS][iI][tT][eE][mM][aA][pP]|[sS][iI][tT][eE][mM][aA][pP][sS]|[sS][eE][aA][rR][cC][hH]|[dD][aA][sS][hH][bB][oO][aA][rR][dD]|[sS][eE][tT][tT][iI][nN][gG][sS]|[pP][rR][oO][fF][iI][lL][eE]|[aA][uU][tT][hH][oO][rR][sS])\\s*$)(?!.*--)[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?)\\s*$', 'description': 'Collection slug.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'description': {'type': 'string', 'maxLength': 256, 'description': 'Optional collection description.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_page
Create page
Create a new static page with title, HTML body, metadata, slug, image, and status.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'title', 'body'], 'properties': {'body': {'type': 'string', 'maxLength': 1000000, 'minLength': 1, 'description': 'Page HTML body.'}, 'slug': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'description': 'Page slug. Auto-generated from title when omitted.'}, 'image': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional featured image path or URL. Use upload_image for local files.'}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Page title.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'status': {'enum': ['draft', 'published'], 'type': 'string', 'default': 'draft', 'description': 'Publishing status. Default: draft.'}, 'metadata': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'value': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_post
Create post
Create a new blog post with title, HTML content, author, collection, tags, metadata, slug, image, and publishing options.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'title', 'content', 'collection_id'], 'properties': {'slug': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'description': 'Post slug. Auto-generated from title when omitted.'}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'default': [], 'maxItems': 10, 'description': 'Tag names. Maximum 10 tags.'}, 'image': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Optional featured image path or URL. Use upload_image for local files.'}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Post title.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'status': {'enum': ['draft', 'published'], 'type': 'string', 'default': 'draft', 'description': 'Publishing status. Default: draft.'}, 'content': {'type': 'string', 'maxLength': 1000000, 'minLength': 1, 'description': 'Post HTML content.'}, 'authorId': {'type': 'string', 'minLength': 1, 'description': 'Optional author user ID from list_blog_members. Assigning another member requires owner or admin access.'}, 'metadata': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'value': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer.'}, 'published_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'description': 'Optional publish datetime in ISO 8601 format.'}, 'collection_id': {'type': 'string', 'minLength': 1, 'description': 'Collection ID for the post.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
create_redirect
Create redirect
Create a redirect for a blog. Requires owner or admin access through account-level OAuth or a user-scoped API key.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'source_path', 'destination'], 'properties': {'active': {'type': 'boolean', 'default': True, 'description': 'Whether this redirect should be applied.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'destination': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'Destination site path or absolute HTTP(S) URL.'}, 'source_path': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'Incoming site path to redirect, starting with a single /. Query strings and fragments are not allowed.'}, 'status_code': {'anyOf': [{'type': 'number', 'const': 301}, {'type': 'number', 'const': 302}], 'default': 301, 'description': 'HTTP redirect status code. Use 301 for permanent redirects and 302 for temporary redirects.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
decide_content_review
Decide content review
Approve a pending content review or request changes. Approving a staged update to published content applies that revision.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'reviewId', 'decision'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'comment': {'type': 'string', 'maxLength': 2000, 'description': 'Review comment. Required when requesting changes; maximum 2,000 characters.'}, 'decision': {'enum': ['approved', 'changes_requested'], 'type': 'string', 'description': 'Review decision.'}, 'reviewId': {'type': 'string', 'minLength': 1, 'description': 'Review ID from list_content_reviews.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_blog
Delete blog
Delete a blog by ID. Only the blog owner can delete. Active subscriptions are cancelled automatically.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_collection
Delete collection
Delete a collection by ID and optionally reassign its posts to another collection.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'collectionId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'reassign_to': {'type': 'string', 'minLength': 1, 'description': "Optional collection ID that should receive the deleted collection's posts."}, 'collectionId': {'type': 'string', 'minLength': 1, 'description': 'Collection ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_page
Delete page
Delete a static page by ID.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'pageId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'pageId': {'type': 'string', 'minLength': 1, 'description': 'Page ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_post
Delete post
Delete a blog post by ID.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'postId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'postId': {'type': 'string', 'minLength': 1, 'description': 'Post ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_redirect
Delete redirect
Delete a redirect by ID. Requires owner or admin access through account-level OAuth or a user-scoped API key.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'redirectId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'redirectId': {'type': 'string', 'minLength': 1, 'description': 'Redirect ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_tag
Delete tag
Delete a blog tag by ID.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'tagId'], 'properties': {'tagId': {'type': 'string', 'minLength': 1, 'description': 'Tag ID.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
delete_theme_file
Delete theme file
Delete a custom theme file from a blog. Requires a Pro subscription. Cannot delete built-in-only files.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'file_path'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'file_path': {'type': 'string', 'minLength': 1, 'description': 'Theme file path relative to the theme root.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_blog
Get blog
Get a single blog by ID, including settings like subdomain, domain, logo, and metadata.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_blog_metadata
Get blog metadata
Get custom metadata for a blog (SEO fields, themeId, etc.). Does not include themeSettings values.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_content_revision
Get content revision
Get one saved post or page revision, including its complete content snapshot.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId', 'contentType', 'contentId', 'revisionId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'contentId': {'type': 'string', 'minLength': 1, 'description': 'Post or page ID.'}, 'revisionId': {'type': 'string', 'minLength': 1, 'description': 'Revision ID from list_content_revisions.'}, 'contentType': {'enum': ['post', 'page'], 'type': 'string', 'description': 'Content type.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_latest_content_review
Get latest content review
Get the latest review associated with the newest saved revision of a post or page.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId', 'contentType', 'contentId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'contentId': {'type': 'string', 'minLength': 1, 'description': 'Post or page ID.'}, 'contentType': {'enum': ['post', 'page'], 'type': 'string', 'description': 'Content type.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_page
Get page
Get a single static page by ID.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId', 'pageId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'pageId': {'type': 'string', 'minLength': 1, 'description': 'Page ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_post
Get post
Get a single blog post by ID.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId', 'postId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'postId': {'type': 'string', 'minLength': 1, 'description': 'Post ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_theme_file
Get theme file
Read a theme file by path (e.g. layouts/theme.liquid). Falls back to the active built-in theme when no custom copy exists.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId', 'file_path'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'file_path': {'type': 'string', 'pattern': '^.+\\.(liquid|css|js|html|json|xml|txt)$', 'minLength': 1, 'description': 'Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
get_theme_settings
Get theme settings
Get theme settings schema and current values for a blog's active theme.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_available_themes
List available themes
List built-in themes available for a blog and show which theme is currently active.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_blog_members
List blog members
List blog members who can be assigned as post authors. Use a member id as authorId in create_post or update_post.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_blogs
List blogs
List the authenticated user's accessible blogs so later tool calls can target the right blogId.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_collections
List collections
List all collections for a blog.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_content_reviews
List content reviews
List content review requests for a blog, filtered by status.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'status': {'enum': ['pending', 'approved', 'changes_requested', 'superseded'], 'type': 'string', 'default': 'pending', 'description': 'Review status. Default: pending.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_content_revisions
List content revisions
List the saved revision history for a post or page. Returns revision metadata without full snapshots.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId', 'contentType', 'contentId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'contentId': {'type': 'string', 'minLength': 1, 'description': 'Post or page ID.'}, 'contentType': {'enum': ['post', 'page'], 'type': 'string', 'description': 'Content type.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_pages
List pages
List static pages with pagination, filtering, and sorting.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number. Default: 1.'}, 'limit': {'type': 'integer', 'default': 30, 'maximum': 100, 'minimum': 1, 'description': 'Page size. Default: 30, maximum: 100.'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction. Default: desc.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'status': {'enum': ['draft', 'published'], 'type': 'string', 'description': 'Filter by page status.'}, 'orderBy': {'enum': ['createdAt', 'updatedAt', 'title'], 'type': 'string', 'default': 'updatedAt', 'description': 'Sort field. Default: updatedAt.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_posts
List posts
List blog posts with pagination, filtering, and sorting by status, collection, tag, author, or date.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number. Default: 1.'}, 'limit': {'type': 'integer', 'default': 30, 'maximum': 100, 'minimum': 1, 'description': 'Page size. Default: 30, maximum: 100.'}, 'order': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction. Default: desc.'}, 'tagId': {'type': 'string', 'minLength': 1, 'description': 'Filter by tag ID.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'status': {'enum': ['draft', 'published', 'scheduled', 'all'], 'type': 'string', 'description': 'Filter by post status.'}, 'userId': {'type': 'string', 'minLength': 1, 'description': 'Filter by author user ID.'}, 'orderBy': {'enum': ['createdAt', 'updatedAt', 'title', 'publishedAt'], 'type': 'string', 'default': 'createdAt', 'description': 'Sort field. Default: createdAt.'}, 'collectionId': {'type': 'string', 'minLength': 1, 'description': 'Filter by collection ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_redirects
List redirects
List redirects for a blog with search, status, type, and pagination filters. Requires owner or admin access through account-level OAuth or a user-scoped API key.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number, starting at 1.'}, 'type': {'enum': ['all', '301', '302'], 'type': 'string', 'default': 'all', 'description': 'Filter by HTTP status code.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Redirects per page, from 1 to 100.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'search': {'type': 'string', 'default': '', 'maxLength': 200, 'description': 'Search source paths and destinations.'}, 'status': {'enum': ['all', 'active', 'inactive'], 'type': 'string', 'default': 'all', 'description': 'Filter by active state.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_tags
List tags
List blog tags with optional case-insensitive search filtering.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'search': {'type': 'string', 'description': 'Optional tag name search filter.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
list_theme_files
List theme files
List the theme file tree for a blog (layouts, templates, assets, etc.).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['blogId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
submit_content_review
Submit content review
Submit the latest saved revision of a draft post or page for review.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'contentType', 'contentId'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'comment': {'type': 'string', 'maxLength': 2000, 'description': 'Optional review comment. Maximum 2,000 characters.'}, 'contentId': {'type': 'string', 'minLength': 1, 'description': 'Post or page ID.'}, 'contentType': {'enum': ['post', 'page'], 'type': 'string', 'description': 'Content type.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
switch_theme
Switch theme
Switch a blog to a different built-in theme or to custom if theme files exist.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'theme_id'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'theme_id': {'enum': ['just', 'obsidian', 'linen', 'tribune', 'beacon', 'aside', 'changes', 'custom'], 'type': 'string', 'description': 'Theme ID. Use custom for blogs with edited theme files.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_blog
Update blog
Update blog settings including name, subdomain, description, and logo. Requires owner or admin access.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'name', 'subdomain'], 'properties': {'logo': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Updated logo URL.'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Updated blog name.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID.'}, 'subdomain': {'type': 'string', 'pattern': '^(?!(?:api|admin|www|mail|app|dashboard|login|signup|blog|static|assets)$)(?!.*--)[a-z0-9]([a-z0-9-]*[a-z0-9])?$', 'maxLength': 40, 'minLength': 1, 'description': 'Updated blog subdomain.'}, 'description': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Updated blog description.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_blog_domain
Update blog domain
Configure or remove a blog's custom domain. Use domain only for custom domains (requires CNAME/A DNS). Use domain + domain_slug for subdirectory hosting (requires TXT DNS verification). Pass an empty domain string to remove the domain.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'domain'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID.'}, 'domain': {'anyOf': [{'type': 'string', 'pattern': '^[a-zA-Z0-9-]+(\\.[a-zA-Z]{2,})+$', 'maxLength': 100, 'minLength': 1}, {'type': 'string', 'const': ''}], 'description': 'Custom domain (e.g. blog.example.com) or root domain for subdirectory mode. Pass empty string to remove.'}, 'domain_slug': {'anyOf': [{'type': 'string', 'pattern': '^[a-zA-Z0-9-_]*$', 'maxLength': 50}, {'type': 'null'}], 'description': 'Optional subdirectory slug for subdirectory hosting (e.g. example.com + blog).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_blog_metadata
Update blog metadata
Merge custom metadata into a blog. Pass only the keys you want to add or update. Theme changes use the dedicated theme tools.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'metadata'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID.'}, 'metadata': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string', 'pattern': '^(?!(?:themeId|themeSettings|hasThemeFiles|themeUpdatedAt|customThemeBaseId)$).+$'}, 'value': {'anyOf': [{'type': 'string'}, {'type': 'number'}, {'type': 'boolean'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'description': 'Custom blog metadata entries as key/value objects. Theme changes must use switch_theme or update_theme_settings.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_collection
Update collection
Update an existing collection's name, slug, or description.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'collectionId'], 'properties': {'name': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Updated collection name.'}, 'slug': {'type': 'string', 'pattern': '^\\s*(?:$|(?=[a-zA-Z0-9_-]{1,32}\\s*$)(?!(?:[aA][dD][mM][iI][nN]|[lL][oO][gG][iI][nN]|[sS][iI][gG][nN][uU][pP]|[aA][pP][iI]|[aA][sS][sS][eE][tT][sS]|[rR][oO][bB][oO][tT][sS]\\.[tT][xX][tT]|[sS][iI][tT][eE][mM][aA][pP]\\.[xX][mM][lL]|[sS][iI][tT][eE][mM][aA][pP]-[iI][nN][dD][eE][xX]\\.[xX][mM][lL]|[fF][eE][eE][dD]|[rR][sS][sS]|[tT][aA][gG][sS]|[tT][aA][gG]|[cC][oO][lL][lL][eE][cC][tT][iI][oO][nN][sS]|[cC][oO][lL][lL][eE][cC][tT][iI][oO][nN]|[pP][aA][gG][eE][sS]|[pP][aA][gG][eE]|[sS][iI][tT][eE][mM][aA][pP]|[sS][iI][tT][eE][mM][aA][pP][sS]|[sS][eE][aA][rR][cC][hH]|[dD][aA][sS][hH][bB][oO][aA][rR][dD]|[sS][eE][tT][tT][iI][nN][gG][sS]|[pP][rR][oO][fF][iI][lL][eE]|[aA][uU][tT][hH][oO][rR][sS])\\s*$)(?!.*--)[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?)\\s*$', 'description': 'Updated collection slug.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'description': {'type': 'string', 'maxLength': 256, 'description': 'Updated collection description.'}, 'collectionId': {'type': 'string', 'minLength': 1, 'description': 'Collection ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_page
Update page
Update any editable field on an existing static page.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'pageId'], 'properties': {'body': {'type': 'string', 'maxLength': 1000000, 'minLength': 1, 'description': 'Updated HTML body.'}, 'slug': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Updated page slug.'}, 'image': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Updated featured image path or URL. Use upload_image for local files.'}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Updated page title.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'pageId': {'type': 'string', 'minLength': 1, 'description': 'Page ID.'}, 'status': {'enum': ['draft', 'published'], 'type': 'string', 'description': 'Updated publishing status.'}, 'metadata': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'value': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_post
Update post
Update any editable field on an existing blog post, including its author.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'postId'], 'properties': {'slug': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Updated post slug.'}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'maxItems': 10, 'description': 'Updated tag names.'}, 'image': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}], 'description': 'Updated featured image path or URL. Use upload_image for local files.'}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Updated post title.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'postId': {'type': 'string', 'minLength': 1, 'description': 'Post ID.'}, 'status': {'enum': ['draft', 'published'], 'type': 'string', 'description': 'Updated publishing status.'}, 'content': {'type': 'string', 'maxLength': 1000000, 'minLength': 1, 'description': 'Updated HTML content.'}, 'authorId': {'type': 'string', 'minLength': 1, 'description': 'Updated author user ID from list_blog_members. Reassignment requires owner or admin access.'}, 'metadata': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'value': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer.'}, 'published_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'description': 'Updated publish datetime in ISO 8601 format.'}, 'collection_id': {'type': 'string', 'minLength': 1, 'description': 'Updated collection ID.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_redirect
Update redirect
Update a redirect source, destination, status code, or active state. Requires owner or admin access through account-level OAuth or a user-scoped API key.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'redirectId'], 'properties': {'active': {'type': 'boolean', 'description': 'Whether this redirect should be applied.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'redirectId': {'type': 'string', 'minLength': 1, 'description': 'Redirect ID.'}, 'destination': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'Updated destination site path or absolute HTTP(S) URL.'}, 'source_path': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'Updated incoming site path, starting with a single /.'}, 'status_code': {'anyOf': [{'type': 'number', 'const': 301}, {'type': 'number', 'const': 302}], 'description': 'Updated HTTP redirect status code.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_tag
Update tag
Rename a blog tag.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'tagId', 'name'], 'properties': {'name': {'type': 'string', 'maxLength': 50, 'minLength': 1, 'description': 'New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods.'}, 'tagId': {'type': 'string', 'minLength': 1, 'description': 'Tag ID.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_theme_file
Update theme file
Create or update a theme file. Requires a Pro subscription. Copies the built-in theme first if no custom files exist yet.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'file_path', 'content'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'content': {'type': 'string', 'description': 'Full file content.'}, 'file_path': {'type': 'string', 'pattern': '^.+\\.(liquid|css|js|html|json|xml|txt)$', 'minLength': 1, 'description': 'Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
update_theme_settings
Update theme settings
Update one or more theme setting values for a blog. Unspecified values are preserved. Use get_theme_settings first to discover valid keys.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'values'], 'properties': {'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'values': {'type': 'string', 'minLength': 2, 'description': 'JSON object containing theme setting names and values from get_theme_settings.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
upload_image
Upload image
Upload an image to a blog. Use the returned path as the image value when creating or updating a post, page, or blog.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['blogId', 'filename', 'mimeType', 'data'], 'properties': {'data': {'type': 'string', 'pattern': '^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$', 'maxLength': 11184812, 'minLength': 1, 'description': 'Base64-encoded image bytes without a data URL prefix. Maximum decoded size: 8 MB.'}, 'blogId': {'type': 'string', 'minLength': 1, 'description': 'Blog ID. Use list_blogs to discover available blog IDs.'}, 'filename': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Original image filename, including its extension.'}, 'mimeType': {'enum': ['image/png', 'image/jpeg', 'image/webp', 'image/gif', 'image/svg+xml'], 'type': 'string', 'description': 'Image MIME type. SVG is supported only for logo uploads.'}, 'uploadType': {'enum': ['post', 'page', 'blog', 'logo'], 'type': 'string', 'default': 'post', 'description': 'Where the image will be used. Default: post.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {}}, 'additionalProperties': False}
추가됨
decide_content_review
2026년 9월 17일 12:52 PM
추가됨
submit_content_review
2026년 9월 17일 12:52 PM
추가됨
get_latest_content_review
2026년 9월 17일 12:52 PM
추가됨
list_content_reviews
2026년 9월 17일 12:52 PM
추가됨
get_content_revision
2026년 9월 17일 12:52 PM
추가됨
list_content_revisions
2026년 9월 17일 12:52 PM
추가됨
delete_collection
2026년 9월 17일 12:52 PM
추가됨
update_collection
2026년 9월 17일 12:52 PM
추가됨
create_collection
2026년 9월 17일 12:52 PM
추가됨
list_collections
2026년 9월 17일 12:52 PM
추가됨
delete_tag
2026년 9월 17일 12:52 PM
추가됨
update_tag
2026년 9월 17일 12:52 PM
추가됨
list_tags
2026년 9월 17일 12:52 PM
추가됨
delete_redirect
2026년 9월 17일 12:52 PM
추가됨
update_redirect
2026년 9월 17일 12:52 PM
추가됨
create_redirect
2026년 9월 17일 12:52 PM
추가됨
list_redirects
2026년 9월 17일 12:52 PM
추가됨
delete_page
2026년 9월 17일 12:52 PM
추가됨
update_page
2026년 9월 17일 12:52 PM
추가됨
create_page
2026년 9월 17일 12:52 PM
추가됨
get_page
2026년 9월 17일 12:52 PM
추가됨
list_pages
2026년 9월 17일 12:52 PM
추가됨
delete_post
2026년 9월 17일 12:52 PM
추가됨
update_post
2026년 9월 17일 12:52 PM
추가됨
create_post
2026년 9월 17일 12:52 PM
추가됨
get_post
2026년 9월 17일 12:52 PM
추가됨
list_posts
2026년 9월 17일 12:52 PM
추가됨
upload_image
2026년 9월 17일 12:52 PM
추가됨
delete_theme_file
2026년 9월 17일 12:52 PM
추가됨
update_theme_file
2026년 9월 17일 12:52 PM