JustBlogged

Create, edit, organize, publish, and configure JustBlogged blogs from MCP clients.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
99%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~10,772Tokens (tool definitions)
~1.8 KBTypical response size
Significant attention impact (8.42% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "justblogged": {
      "url": "https://justblogged.com/mcp"
    }
  }
}

Remote endpoints

https://justblogged.com/mcpstreamable-http

What it can do

Tool inventory

Tools (48)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_blogs

List the authenticated user's accessible blogs so later tool calls can target the right blogId.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "type": "object",
  "properties": {
    "blogId": {
      "type": "string",
      "minLength": 1,
      "description": "Blog ID."
    }
  },
  "required": [
    "blogId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "type": "object",
  "properties": {
    "blogId": {
      "type": "string",
      "minLength": 1,
      "description": "Blog ID."
    }
  },
  "required": [
    "blogId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "type": "object",
  "properties": {
    "blogId": {
      "type": "string",
      "minLength": 1,
      "description": "Blog ID."
    }
  },
  "required": [
    "blogId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "type": "object",
  "properties": {
    "blogId": {
      "type": "string",
      "minLength": 1,
      "description": "Blog ID."
    }
  },
  "required": [
    "blogId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "type": "object",
  "properties": {
    "blogId": {
      "type": "string",
      "minLength": 1,
      "description": "Blog ID. Use list_blogs to discover available blog IDs."
    }
  },
  "required": [
    "blogId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "type": "object",
  "properties": {
    "blogId": {
      "type": "string",
      "minLength": 1,
      "description": "Blog ID. Use list_blogs to discover available blog IDs."
    }
  },
  "required": [
    "blogId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢list_theme_files(blogId)

List the theme file tree for a blog (layouts, templates, assets, etc.).

Input Schema

{
  "type": "object",
  "properties": {
    "blogId": {
      "type": "string",
      "minLength": 1,
      "description": "Blog ID. Use list_blogs to discover available blog IDs."
    }
  },
  "required": [
    "blogId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢get_post(blogId, postId)

Get a single blog post by ID.

Input Schema

{
  "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
}

Output Schema

{
  "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. status=published makes the post live. collection_id is optional; omit it to use the empty-slug default Posts collection. If that default does not exist, provide collection_id (call list_collections or create_collection).

Input Schema

{
  "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": "Optional collection ID. When omitted, the collection with an empty slug is used. If none exists, use list_collections to choose a collection_id, or create_collection to create one first."
    },
    "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"
  ],
  "additionalProperties": false
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🔴delete_post(blogId, postId)

Delete a blog post by ID.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢list_pages(blogId, page, limit, status, orderBy, ...)

List static pages with pagination, filtering, and sorting.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢get_page(blogId, pageId)

Get a single static page by ID.

Input Schema

{
  "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
}

Output Schema

{
  "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. status=published makes the page live.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🔴update_page(blogId, pageId, title, slug, body, ...)

Update any editable field on an existing static page.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🔴delete_page(blogId, pageId)

Delete a static page by ID.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢get_redirect(blogId, redirectId)

Get a single redirect by ID. Requires owner or admin access through account-level OAuth or a user-scoped API key.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟡create_tag(blogId, name)

Create a new blog tag by name. Requires permission to manage taxonomy.

Input Schema

{
  "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": 50,
      "description": "New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods."
    }
  },
  "required": [
    "blogId",
    "name"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢list_tags(blogId, search)

List blog tags with optional case-insensitive search filtering.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🔴update_tag(blogId, tagId, name)

Rename a blog tag.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🔴delete_tag(blogId, tagId)

Delete a blog tag by ID.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢list_collections(blogId)

List all collections for a blog.

Input Schema

{
  "type": "object",
  "properties": {
    "blogId": {
      "type": "string",
      "minLength": 1,
      "description": "Blog ID. Use list_blogs to discover available blog IDs."
    }
  },
  "required": [
    "blogId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢get_collection(blogId, collectionId)

Get a single collection by ID, including its post count.

Input Schema

{
  "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."
    }
  },
  "required": [
    "blogId",
    "collectionId"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟡create_collection(blogId, name, slug, description)

Create a new collection with name, slug, and optional description.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🔴update_collection(blogId, collectionId, name, slug, description)

Update an existing collection's name, slug, or description.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}
🟢list_content_reviews(blogId, status)

List content review requests for a blog, filtered by status.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded48 tools
verifiedversion not recorded48 tools
verifiedversion not recorded48 tools
verifiedversion not recorded45 tools
verifiedversion not recorded45 tools
verifiedversion not recorded45 tools