JustBlogged
Create, edit, organize, publish, and configure JustBlogged blogs from MCP clients.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"justblogged": {
"url": "https://justblogged.com/mcp"
}
}
}Puntos de conexión remotos
https://justblogged.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (45)
🟢list_blogs
List the authenticated user's accessible blogs so later tool calls can target the right blogId.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}Esquema de salida
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_theme_files(blogId)
List the theme file tree for a blog (layouts, templates, assets, etc.).
Esquema de entrada
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_post(blogId, postId)
Get a single blog post by ID.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_post(blogId, postId)
Delete a blog post by ID.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_pages(blogId, page, limit, status, orderBy, ...)
List static pages with pagination, filtering, and sorting.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢get_page(blogId, pageId)
Get a single static page by ID.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_page(blogId, pageId, title, slug, body, ...)
Update any editable field on an existing static page.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_page(blogId, pageId)
Delete a static page by ID.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_tags(blogId, search)
List blog tags with optional case-insensitive search filtering.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_tag(blogId, tagId, name)
Rename a blog tag.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴delete_tag(blogId, tagId)
Delete a blog tag by ID.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_collections(blogId)
List all collections for a blog.
Esquema de entrada
{
"type": "object",
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"required": [
"blogId"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟡create_collection(blogId, name, slug, description)
Create a new collection with name, slug, and optional description.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🔴update_collection(blogId, collectionId, name, slug, description)
Update an existing collection's name, slug, or description.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}🟢list_content_reviews(blogId, status)
List content review requests for a blog, filtered by status.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"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.
Esquema de entrada
{
"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
}Esquema de salida
{
"type": "object",
"properties": {
"result": {}
},
"required": [
"result"
],
"additionalProperties": false
}Comunidad
Evidencia