# create_blog_post

Create a new blog post in GoHighLevel. Requires blog ID, author ID, and category IDs which can be obtained from other blog tools.

Agent View of the PolicyLayer registry record for `create_blog_post`. HTML page: https://policylayer.com/tools/ghl/create-blog-post

## Facts

- Tool: `create_blog_post`
- Server: Ghl (`ghl-mcp-server`) — https://policylayer.com/tools/ghl.md
- Install: `npx -y ghl-mcp-server`
- Homepage: git+https://github.com/mastanley13/ghl-mcp.git
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 12 (9 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `tags` | array | no | Optional array of tags for the blog post |
| `title` | string | yes | Blog post title |
| `author` | string | yes | Author ID (use get_blog_authors to find available authors) |
| `blogId` | string | yes | Blog site ID (use get_blog_sites to find available blogs) |
| `status` | string | no | Publication status of the blog post |
| `content` | string | yes | Full HTML content of the blog post |
| `urlSlug` | string | yes | URL slug for the blog post (use check_url_slug to verify availability) |
| `imageUrl` | string | yes | URL of the featured image for the blog post |
| `categories` | array | yes | Array of category IDs (use get_blog_categories to find available categories) |
| `description` | string | yes | Short description/excerpt of the blog post |
| `publishedAt` | string | no | Optional ISO timestamp for publication date (defaults to now for PUBLISHED status) |
| `imageAltText` | string | yes | Alt text for the featured image (for SEO and accessibility) |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_blog_post",
    "arguments": {
      "title": "<title>",
      "author": "<author>",
      "blogId": "<blogId>",
      "content": "<content>",
      "urlSlug": "<urlSlug>",
      "imageUrl": "<imageUrl>",
      "categories": [],
      "description": "<description>",
      "imageAltText": "<imageAltText>"
    }
  }
}
```

## Why create_blog_post is rated Medium

This tool creates new blog post content, which is a reversible write operation. While it modifies the GoHighLevel system state, blog posts can be edited or deleted later. The severity is medium because misuse could spam the platform or publish unwanted content, but the blast radius is limited to blog content rather than critical business data or financial operations.

From the tool's own definition: "Tool name is 'create_blog_post' and description states 'Create a new blog post in GoHighLevel'. The verb 'Create' and action of generating new content clearly indicates data creation."

Risk signals: Accepts raw HTML/template content (content) · High parameter count (13 properties)

## Use case

AI agents use create_blog_post to create or update resources in Ghl, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Ghl environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Ghl:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "create_blog_post": {
      "limits": [
        {
          "counter": "create_blog_post_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Ghl (252)

- `bulk_delete_social_posts` — Destructive — https://policylayer.com/tools/ghl/bulk-delete-social-posts.md
- `cancel_scheduled_email` — Destructive — https://policylayer.com/tools/ghl/cancel-scheduled-email.md
- `cancel_scheduled_message` — Destructive — https://policylayer.com/tools/ghl/cancel-scheduled-message.md
- `delete_appointment` — Destructive — https://policylayer.com/tools/ghl/delete-appointment.md
- `delete_appointment_note` — Destructive — https://policylayer.com/tools/ghl/delete-appointment-note.md
- `delete_calendar` — Destructive — https://policylayer.com/tools/ghl/delete-calendar.md
- `delete_calendar_group` — Destructive — https://policylayer.com/tools/ghl/delete-calendar-group.md
- `delete_calendar_notification` — Destructive — https://policylayer.com/tools/ghl/delete-calendar-notification.md
- `delete_calendar_resource_equipment` — Destructive — https://policylayer.com/tools/ghl/delete-calendar-resource-equipment.md
- `delete_calendar_resource_room` — Destructive — https://policylayer.com/tools/ghl/delete-calendar-resource-room.md
- `delete_contact` — Destructive — https://policylayer.com/tools/ghl/delete-contact.md
- `delete_contact_note` — Destructive — https://policylayer.com/tools/ghl/delete-contact-note.md
- `delete_contact_task` — Destructive — https://policylayer.com/tools/ghl/delete-contact-task.md
- `delete_conversation` — Destructive — https://policylayer.com/tools/ghl/delete-conversation.md
- `delete_coupon` — Destructive — https://policylayer.com/tools/ghl/delete-coupon.md
- `delete_custom_provider_integration` — Destructive — https://policylayer.com/tools/ghl/delete-custom-provider-integration.md
- `delete_email_template` — Destructive — https://policylayer.com/tools/ghl/delete-email-template.md
- `delete_invoice_template` — Destructive — https://policylayer.com/tools/ghl/delete-invoice-template.md
- `delete_location` — Destructive — https://policylayer.com/tools/ghl/delete-location.md
- `delete_location_custom_field` — Destructive — https://policylayer.com/tools/ghl/delete-location-custom-field.md
- `delete_location_custom_value` — Destructive — https://policylayer.com/tools/ghl/delete-location-custom-value.md
- `delete_location_tag` — Destructive — https://policylayer.com/tools/ghl/delete-location-tag.md
- `delete_location_template` — Destructive — https://policylayer.com/tools/ghl/delete-location-template.md
- `delete_media_file` — Destructive — https://policylayer.com/tools/ghl/delete-media-file.md
- `delete_object_record` — Destructive — https://policylayer.com/tools/ghl/delete-object-record.md
- `delete_opportunity` — Destructive — https://policylayer.com/tools/ghl/delete-opportunity.md
- `delete_social_account` — Destructive — https://policylayer.com/tools/ghl/delete-social-account.md
- `delete_social_post` — Destructive — https://policylayer.com/tools/ghl/delete-social-post.md
- `ghl_delete_association` — Destructive — https://policylayer.com/tools/ghl/ghl-delete-association.md
- `ghl_delete_custom_field` — Destructive — https://policylayer.com/tools/ghl/ghl-delete-custom-field.md
- …and 222 more: https://policylayer.com/tools/ghl.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=ghl · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/ghl
