JustBlogged
Create, edit, organize, publish, and configure JustBlogged blogs from MCP clients.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"justblogged": {
"url": "https://justblogged.com/mcp"
}
}
}원격 엔드포인트
https://justblogged.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (45)
🟢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",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_blog(blogId)
Get a single blog by ID, including settings like subdomain, domain, logo, and metadata.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_blog_members(blogId)
List blog members who can be assigned as post authors. Use a member id as authorId in create_post or update_post.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟡create_blog(name, description, logo)
Create a new blog. Subdomain is auto-generated from the name. Requires account-level OAuth or a user-scoped API key.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Blog name."
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Optional blog description."
},
"logo": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Optional logo URL."
}
},
"required": [
"name"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_blog(blogId, name, subdomain, description, logo)
Update blog settings including name, subdomain, description, and logo. Requires owner or admin access.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Updated blog name."
},
"subdomain": {
"type": "string",
"minLength": 1,
"maxLength": 40,
"pattern": "^(?!(?:api|admin|www|mail|app|dashboard|login|signup|blog|static|assets)$)(?!.*--)[a-z0-9]([a-z0-9-]*[a-z0-9])?$",
"description": "Updated blog subdomain."
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Updated blog description."
},
"logo": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Updated logo URL."
}
},
"required": [
"blogId",
"name",
"subdomain"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_blog(blogId)
Delete a blog by ID. Only the blog owner can delete. Active subscriptions are cancelled automatically.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_blog_metadata(blogId)
Get custom metadata for a blog (SEO fields, themeId, etc.). Does not include themeSettings values.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_blog_metadata(blogId, 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",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"pattern": "^(?!(?:themeId|themeSettings|hasThemeFiles|themeUpdatedAt|customThemeBaseId)$).+$"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"key",
"value"
],
"additionalProperties": false
},
"description": "Custom blog metadata entries as key/value objects. Theme changes must use switch_theme or update_theme_settings."
}
},
"required": [
"blogId",
"metadata"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_blog_domain(blogId, domain, domain_slug)
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",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
},
"domain": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9-]+(\\.[a-zA-Z]{2,})+$",
"maxLength": 100
},
{
"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",
"maxLength": 50,
"pattern": "^[a-zA-Z0-9-_]*$"
},
{
"type": "null"
}
],
"description": "Optional subdirectory slug for subdirectory hosting (e.g. example.com + blog)."
}
},
"required": [
"blogId",
"domain"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_available_themes(blogId)
List built-in themes available for a blog and show which theme is currently active.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_theme_settings(blogId)
Get theme settings schema and current values for a blog's active theme.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_theme_settings(blogId, values)
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",
"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."
}
},
"required": [
"blogId",
"values"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴switch_theme(blogId, theme_id)
Switch a blog to a different built-in theme or to custom if theme files exist.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"theme_id": {
"type": "string",
"enum": [
"just",
"obsidian",
"linen",
"tribune",
"beacon",
"aside",
"changes",
"custom"
],
"description": "Theme ID. Use custom for blogs with edited theme files."
}
},
"required": [
"blogId",
"theme_id"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_theme_files(blogId)
List the theme file tree for a blog (layouts, templates, assets, etc.).
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_theme_file(blogId, file_path)
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",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"file_path": {
"type": "string",
"minLength": 1,
"pattern": "^.+\\.(liquid|css|js|html|json|xml|txt)$",
"description": "Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt."
}
},
"required": [
"blogId",
"file_path"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_theme_file(blogId, file_path, content)
Create or update a theme file. Requires a Pro subscription. Copies the built-in theme first if no custom files exist yet.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"file_path": {
"type": "string",
"minLength": 1,
"pattern": "^.+\\.(liquid|css|js|html|json|xml|txt)$",
"description": "Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt."
},
"content": {
"type": "string",
"description": "Full file content."
}
},
"required": [
"blogId",
"file_path",
"content"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_theme_file(blogId, file_path)
Delete a custom theme file from a blog. Requires a Pro subscription. Cannot delete built-in-only files.
입력 스키마
{
"type": "object",
"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."
}
},
"required": [
"blogId",
"file_path"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟡upload_image(blogId, filename, mimeType, data, uploadType)
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",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Original image filename, including its extension."
},
"mimeType": {
"type": "string",
"enum": [
"image/png",
"image/jpeg",
"image/webp",
"image/gif",
"image/svg+xml"
],
"description": "Image MIME type. SVG is supported only for logo uploads."
},
"data": {
"type": "string",
"minLength": 1,
"maxLength": 11184812,
"pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
"description": "Base64-encoded image bytes without a data URL prefix. Maximum decoded size: 8 MB."
},
"uploadType": {
"type": "string",
"enum": [
"post",
"page",
"blog",
"logo"
],
"default": "post",
"description": "Where the image will be used. Default: post."
}
},
"required": [
"blogId",
"filename",
"mimeType",
"data"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_posts(blogId, page, limit, status, collectionId, ...)
List blog posts with pagination, filtering, and sorting by status, collection, tag, author, or date.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1,
"description": "Page number. Default: 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 30,
"description": "Page size. Default: 30, maximum: 100."
},
"status": {
"type": "string",
"enum": [
"draft",
"published",
"scheduled",
"all"
],
"description": "Filter by post status."
},
"collectionId": {
"type": "string",
"minLength": 1,
"description": "Filter by collection ID."
},
"tagId": {
"type": "string",
"minLength": 1,
"description": "Filter by tag ID."
},
"userId": {
"type": "string",
"minLength": 1,
"description": "Filter by author user ID."
},
"orderBy": {
"type": "string",
"enum": [
"createdAt",
"updatedAt",
"title",
"publishedAt"
],
"default": "createdAt",
"description": "Sort field. Default: createdAt."
},
"order": {
"type": "string",
"enum": [
"asc",
"desc"
],
"default": "desc",
"description": "Sort direction. Default: desc."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_post(blogId, postId)
Get a single blog post by ID.
입력 스키마
{
"type": "object",
"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."
}
},
"required": [
"blogId",
"postId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟡create_post(blogId, title, slug, content, status, ...)
Create a new blog post with title, HTML content, author, collection, tags, metadata, slug, image, and publishing options.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Post title."
},
"slug": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"description": "Post slug. Auto-generated from title when omitted."
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 1000000,
"description": "Post HTML content."
},
"status": {
"type": "string",
"enum": [
"draft",
"published"
],
"default": "draft",
"description": "Publishing status. Default: draft."
},
"collection_id": {
"type": "string",
"minLength": 1,
"description": "Collection ID for the post."
},
"authorId": {
"type": "string",
"minLength": 1,
"description": "Optional author user ID from list_blog_members. Assigning another member requires owner or admin access."
},
"image": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Optional featured image path or URL. Use upload_image for local files."
},
"published_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"description": "Optional publish datetime in ISO 8601 format."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"maxItems": 10,
"default": [],
"description": "Tag names. Maximum 10 tags."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"key",
"value"
],
"additionalProperties": false
},
"maxItems": 20,
"description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."
}
},
"required": [
"blogId",
"title",
"content",
"collection_id"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_post(blogId, postId, title, slug, content, ...)
Update any editable field on an existing blog post, including its author.
입력 스키마
{
"type": "object",
"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."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Updated post title."
},
"slug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Updated post slug."
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 1000000,
"description": "Updated HTML content."
},
"status": {
"type": "string",
"enum": [
"draft",
"published"
],
"description": "Updated publishing status."
},
"collection_id": {
"type": "string",
"minLength": 1,
"description": "Updated collection ID."
},
"authorId": {
"type": "string",
"minLength": 1,
"description": "Updated author user ID from list_blog_members. Reassignment requires owner or admin access."
},
"image": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Updated featured image path or URL. Use upload_image for local files."
},
"published_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"description": "Updated publish datetime in ISO 8601 format."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"maxItems": 10,
"description": "Updated tag names."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"key",
"value"
],
"additionalProperties": false
},
"maxItems": 20,
"description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."
}
},
"required": [
"blogId",
"postId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_post(blogId, postId)
Delete a blog post by ID.
입력 스키마
{
"type": "object",
"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."
}
},
"required": [
"blogId",
"postId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_pages(blogId, page, limit, status, orderBy, ...)
List static pages with pagination, filtering, and sorting.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1,
"description": "Page number. Default: 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 30,
"description": "Page size. Default: 30, maximum: 100."
},
"status": {
"type": "string",
"enum": [
"draft",
"published"
],
"description": "Filter by page status."
},
"orderBy": {
"type": "string",
"enum": [
"createdAt",
"updatedAt",
"title"
],
"default": "updatedAt",
"description": "Sort field. Default: updatedAt."
},
"order": {
"type": "string",
"enum": [
"asc",
"desc"
],
"default": "desc",
"description": "Sort direction. Default: desc."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_page(blogId, pageId)
Get a single static page by ID.
입력 스키마
{
"type": "object",
"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."
}
},
"required": [
"blogId",
"pageId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟡create_page(blogId, title, slug, body, status, ...)
Create a new static page with title, HTML body, metadata, slug, image, and status.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Page title."
},
"slug": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"description": "Page slug. Auto-generated from title when omitted."
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 1000000,
"description": "Page HTML body."
},
"status": {
"type": "string",
"enum": [
"draft",
"published"
],
"default": "draft",
"description": "Publishing status. Default: draft."
},
"image": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Optional featured image path or URL. Use upload_image for local files."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"key",
"value"
],
"additionalProperties": false
},
"maxItems": 20,
"description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."
}
},
"required": [
"blogId",
"title",
"body"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_page(blogId, pageId, title, slug, body, ...)
Update any editable field on an existing static page.
입력 스키마
{
"type": "object",
"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."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Updated page title."
},
"slug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Updated page slug."
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 1000000,
"description": "Updated HTML body."
},
"status": {
"type": "string",
"enum": [
"draft",
"published"
],
"description": "Updated publishing status."
},
"image": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Updated featured image path or URL. Use upload_image for local files."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 50
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"key",
"value"
],
"additionalProperties": false
},
"maxItems": 20,
"description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."
}
},
"required": [
"blogId",
"pageId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_page(blogId, pageId)
Delete a static page by ID.
입력 스키마
{
"type": "object",
"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."
}
},
"required": [
"blogId",
"pageId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_redirects(blogId, search, status, type, page, ...)
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",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"search": {
"type": "string",
"maxLength": 200,
"default": "",
"description": "Search source paths and destinations."
},
"status": {
"type": "string",
"enum": [
"all",
"active",
"inactive"
],
"default": "all",
"description": "Filter by active state."
},
"type": {
"type": "string",
"enum": [
"all",
"301",
"302"
],
"default": "all",
"description": "Filter by HTTP status code."
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1,
"description": "Page number, starting at 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20,
"description": "Redirects per page, from 1 to 100."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟡create_redirect(blogId, source_path, destination, status_code, active)
Create a redirect for a blog. Requires owner or admin access through account-level OAuth or a user-scoped API key.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"source_path": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "Incoming site path to redirect, starting with a single /. Query strings and fragments are not allowed."
},
"destination": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "Destination site path or absolute HTTP(S) URL."
},
"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."
},
"active": {
"type": "boolean",
"default": true,
"description": "Whether this redirect should be applied."
}
},
"required": [
"blogId",
"source_path",
"destination"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_redirect(blogId, redirectId, source_path, destination, status_code, ...)
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",
"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."
},
"source_path": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "Updated incoming site path, starting with a single /."
},
"destination": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "Updated destination site path or absolute HTTP(S) URL."
},
"status_code": {
"anyOf": [
{
"type": "number",
"const": 301
},
{
"type": "number",
"const": 302
}
],
"description": "Updated HTTP redirect status code."
},
"active": {
"type": "boolean",
"description": "Whether this redirect should be applied."
}
},
"required": [
"blogId",
"redirectId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_redirect(blogId, redirectId)
Delete a redirect by ID. Requires owner or admin access through account-level OAuth or a user-scoped API key.
입력 스키마
{
"type": "object",
"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."
}
},
"required": [
"blogId",
"redirectId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_tags(blogId, search)
List blog tags with optional case-insensitive search filtering.
입력 스키마
{
"type": "object",
"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."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_tag(blogId, tagId, name)
Rename a blog tag.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"tagId": {
"type": "string",
"minLength": 1,
"description": "Tag ID."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods."
}
},
"required": [
"blogId",
"tagId",
"name"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_tag(blogId, tagId)
Delete a blog tag by ID.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"tagId": {
"type": "string",
"minLength": 1,
"description": "Tag ID."
}
},
"required": [
"blogId",
"tagId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_collections(blogId)
List all collections for a blog.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟡create_collection(blogId, name, slug, description)
Create a new collection with name, slug, and optional description.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"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."
},
"description": {
"type": "string",
"maxLength": 256,
"description": "Optional collection description."
}
},
"required": [
"blogId",
"name",
"slug"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_collection(blogId, collectionId, name, slug, description)
Update an existing collection's name, slug, or description.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"collectionId": {
"type": "string",
"minLength": 1,
"description": "Collection ID."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"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."
},
"description": {
"type": "string",
"maxLength": 256,
"description": "Updated collection description."
}
},
"required": [
"blogId",
"collectionId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_collection(blogId, collectionId, reassign_to)
Delete a collection by ID and optionally reassign its posts to another collection.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"collectionId": {
"type": "string",
"minLength": 1,
"description": "Collection ID."
},
"reassign_to": {
"type": "string",
"minLength": 1,
"description": "Optional collection ID that should receive the deleted collection's posts."
}
},
"required": [
"blogId",
"collectionId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_content_revisions(blogId, contentType, contentId)
List the saved revision history for a post or page. Returns revision metadata without full snapshots.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"contentType": {
"type": "string",
"enum": [
"post",
"page"
],
"description": "Content type."
},
"contentId": {
"type": "string",
"minLength": 1,
"description": "Post or page ID."
}
},
"required": [
"blogId",
"contentType",
"contentId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_content_revision(blogId, contentType, contentId, revisionId)
Get one saved post or page revision, including its complete content snapshot.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"contentType": {
"type": "string",
"enum": [
"post",
"page"
],
"description": "Content type."
},
"contentId": {
"type": "string",
"minLength": 1,
"description": "Post or page ID."
},
"revisionId": {
"type": "string",
"minLength": 1,
"description": "Revision ID from list_content_revisions."
}
},
"required": [
"blogId",
"contentType",
"contentId",
"revisionId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_content_reviews(blogId, status)
List content review requests for a blog, filtered by status.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"changes_requested",
"superseded"
],
"default": "pending",
"description": "Review status. Default: pending."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_latest_content_review(blogId, contentType, contentId)
Get the latest review associated with the newest saved revision of a post or page.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"contentType": {
"type": "string",
"enum": [
"post",
"page"
],
"description": "Content type."
},
"contentId": {
"type": "string",
"minLength": 1,
"description": "Post or page ID."
}
},
"required": [
"blogId",
"contentType",
"contentId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟡submit_content_review(blogId, contentType, contentId, comment)
Submit the latest saved revision of a draft post or page for review.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"contentType": {
"type": "string",
"enum": [
"post",
"page"
],
"description": "Content type."
},
"contentId": {
"type": "string",
"minLength": 1,
"description": "Post or page ID."
},
"comment": {
"type": "string",
"maxLength": 2000,
"description": "Optional review comment. Maximum 2,000 characters."
}
},
"required": [
"blogId",
"contentType",
"contentId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴decide_content_review(blogId, reviewId, decision, comment)
Approve a pending content review or request changes. Approving a staged update to published content applies that revision.
입력 스키마
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"reviewId": {
"type": "string",
"minLength": 1,
"description": "Review ID from list_content_reviews."
},
"decision": {
"type": "string",
"enum": [
"approved",
"changes_requested"
],
"description": "Review decision."
},
"comment": {
"type": "string",
"maxLength": 2000,
"description": "Review comment. Required when requesting changes; maximum 2,000 characters."
}
},
"required": [
"blogId",
"reviewId",
"decision"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}커뮤니티
증거