# Planable MCP

> Planable MCP Server connects your AI client to Planable, giving you control over your entire social media content lifecycle. You can list drafts and scheduled posts, review approval workflows, add comments, and approve or reject content—all without opening a browser.

## Overview
- **Category:** collaboration
- **Price:** Free
- **Tags:** content-calendar, social-media-management, approval-workflow, team-collaboration, post-scheduling, marketing-ops

## Description

Your AI client connects directly to Planable. You get control over your entire social media content cycle without ever opening a browser. Instead of clicking through dashboards, you just tell your agent what needs doing.

**Understanding Your Setup and Team**

You can start by getting a full picture of your organization using `list_workspaces`, which fetches every active Planable workspace associated with your account, giving you the member count and ID for each. To see exactly who’s on board across all locations, run `list_workspace_members`; this pulls names, emails, and roles for everyone connected to the workspace. Need to know what accounts are running? `list_pages` retrieves a roster of every social media page (account) linked in your Planable setup, specifying its platform type and name.

**Monitoring Content Status Across Platforms**

The system lets you see multiple posts at once using `list_posts`. You can filter these posts by status—whether they're still a draft, waiting for approval (`pending_approval`), fully approved, scheduled to go live, or already published. If you need to dig into one specific piece of content, `get_post` retrieves all the data points: media links, full text, and its entire approval history.

**Reviewing Details and Team Collaboration**

When you pull up a post using `get_post`, you get more than just the caption; you grab its complete metadata package. If the content has been discussed, you can check out the conversation threads by calling `list_comments` for any given post ID, which gives you the author, comment ID, and text of every message left behind. You'll also have the option to contribute directly by running `add_comment`, leaving visible feedback or making notes on a specific piece of content.

**Controlling the Workflow: Approval and Rejection**

This is where you save time. To speed up sign-off, use `approve_post`. This tool moves a post that's sitting in pending status straight to scheduled, confirming final approval with one command. If the content isn't ready, you can use `reject_post`. This reverses a post’s status back to draft mode and attaches explicit feedback notes so the original creator knows exactly what needs fixing. You also have the power to create brand-new pieces of content using `create_post`, which drafts or schedules posts by requiring the workspace ID, page ID, text content, and the precise future date and time.

**The Full Picture Summary**

You use these tools in sequence: first, you check what workspaces exist (`list_workspaces`) and which pages are attached (`list_pages`). Next, you list all posts to see their status (`list_posts`), then you get the full details on a specific post using `get_post`. If feedback is needed, you either add a comment (`add_comment`) or pull up the existing thread history (`list_comments`). Finally, you make the decision: Approve it with `approve_post`, send it back to fix with `reject_post`, or build it from scratch using `create_post`.

## Tools

### list_workspaces
Retrieves a list of every active Planable workspace associated with your account, including member counts and IDs.

### list_pages
Gets a list of connected social media pages (accounts) within the workspace, including their platform type and name.

### list_posts
Retrieves multiple posts in a workspace, filtering them by status: draft, pending_approval, approved, scheduled, or published.

### get_post
Retrieves all data for one specific post, including media links, full text, and its entire approval history.

### create_post
Drafts and schedules a new post by requiring the workspace ID, page ID, text content, and future date/time.

### approve_post
Moves a specific Planable post from pending status directly to scheduled, confirming approval.

### reject_post
Reverses a post's status back to draft mode and attaches explicit feedback notes for revisions.

### list_comments
Lists all authors, comment IDs, and text content from a given Planable post ID.

### add_comment
Adds a visible comment to any Planable post for team feedback or collaboration.

### list_workspace_members
Lists all people connected to the Planable workspace, showing their names, emails, and roles.

## Prompt Examples

**Prompt:** 
```
List all posts in the 'Acme Marketing' workspace that are currently awaiting approval.
```

**Response:** 
```
I found 4 posts marked `pending_approval`. The primary post (`ID: 29910`) is scheduled for tomorrow at 10 AM, targeting LinkedIn. The content reads: "We are excited to launch..." Would you like me to either directly approve this or insert a required revision comment?
```

**Prompt:** 
```
Draft a new Twitter post in our workspace announcing our new AI feature.
```

**Response:** 
```
Post created successfully via `create_post`. The underlying ID is `43109` mapped formally to the Twitter account logic array and deposited safely in draft status. Its exact body text generated: "Supercharge your endpoints with our revolutionary GenAI integration. Learn more today...".
```

**Prompt:** 
```
Reject post `98341x` and tell the team to rewrite the hook, it's too salesy.
```

**Response:** 
```
Understood. Sent the explicit mutation `reject_post` targeting `98341x`. I reversed the node state back into draft mode and attached the explicit feedback log: "Please rewrite the structural hook — it feels overly promotional and sales-oriented.". The content pipeline has been paused accordingly.
```

## Capabilities

### Manage content approvals
Move posts between stages—from draft to scheduled, or reject them entirely—by invoking the `approve_post` and `reject_post` tools.

### Draft and schedule new content
Create a new post draft with specified text, media, and target date using the `create_post` tool.

### Monitor content status across platforms
Retrieve lists of posts by status (draft, pending_approval, etc.) or list all active workspaces using `list_posts`, `list_workspaces`, and `list_pages`.

### Track team collaboration
Add comments to specific posts (`add_comment`) or retrieve the full comment thread history for any given post ID via `list_comments`.

### Retrieve detailed content metadata
Get a complete record of any single piece of content, including its schedule, media, and approval history, using `get_post`.

## Use Cases

### The urgent sign-off bottleneck
Marketing Director Sarah needs 20 posts approved for the week, but they're scattered across drafts. She asks her agent to run `list_posts` filtered by 'pending_approval'. The agent compiles a list of IDs and then runs `approve_post` on the top five, clearing the backlog in minutes.

### The forgotten comment thread
A Social Media Manager finds an old post that needs a quick update. They use `get_post` to pull the full content and history, then run `list_comments` to see all past feedback before they write their reply using `add_comment`.

### The last-minute schedule change
A Content Strategist realizes a post needs to move from next week to tomorrow. She uses `get_post` to confirm the current details, then runs `create_post` again with the new scheduled_at date to update the publishing window.

### The bad draft rejection
A post is submitted that has a legal error. Instead of having to manually edit it and re-submit, the agent runs `reject_post` on the content ID, automatically reverting it to draft mode while attaching specific feedback: 'Legal review required.'

## Benefits

- Speed up sign-off: Stop manually navigating approval queues. You can instruct the agent to run `approve_post` on a post ID and move it straight to 'scheduled,' cutting out multiple clicks.
- Centralized oversight: Instead of checking 10 different tabs, use `list_posts` to query all content in one workspace, filtering by status—draft, pending_approval, etc.—in seconds.
- Full context access: Need to know why a post was rejected? Use `get_post` to pull the full history and read every comment via `list_comments`, giving you immediate context without leaving your chat window.
- Effortless drafting: Draft content for multiple accounts at once. The `create_post` tool handles passing the workspace ID, page ID, and schedule time in one command.
- Team clarity: Need to know who owns what? Run `list_workspace_members` to get a roster of all team members and their assigned roles instantly.

## How It Works

The bottom line is: your AI client acts as the single dashboard, running the tools so you don't have to click through Planable itself.

1. First, subscribe to the Planable integration and inject your Planable Enterprise API Key.
2. Next, talk to your AI client (Claude, Cursor, etc.) and tell it exactly what you want—e.g., 'List all drafts for the Finance team.'
3. The agent runs the necessary tool (`list_posts`, `get_post`, etc.), pulls the data from Planable, and gives you a direct answer.

## Frequently Asked Questions

**How do I list all posts that are ready to be approved using `list_posts`?**
You run `list_posts` and filter the results by the 'pending_approval' status. This returns the IDs, content previews, and scheduled times for every post awaiting sign-off.

**What if I need to reject a post after reviewing it with `get_post`?**
After you review the full details using `get_post`, simply tell your agent to run `reject_post` on that ID. It automatically sends the content back to draft mode and requires you to input specific revision notes.

**Can I schedule a new post without knowing the exact page ID? Do I need `list_pages` first?**
Yes, it's best practice. Use `list_pages` first to retrieve all available platform IDs and names within your workspace. Then, use that specific page_id in your `create_post` command.

**Is there a tool for checking the history of who commented on a post?**
Yes, you run `list_comments` against the post ID. This returns a clean list of all comment IDs, the authors' names, and their full text.

**Before running any command, what details do I need to make sure my credentials are correct for `list_workspaces`?**
You must provide a valid Planable Enterprise API Key. The system uses this key to authenticate your agent and connect to the workspace data. If connection fails, check that your API key hasn't expired or been revoked.

**If I use `create_post` for multiple accounts, how does the tool handle different social media platform requirements?**
The tool handles platform-specific formatting automatically. When you provide content and target pages via `create_post`, it formats the text, adds necessary tags, and ensures compliance with each connected account’s guidelines before submitting.

**When I use `list_pages`, does the tool show me all connected accounts across every workspace?**
No, `list_pages` only shows connected social accounts for the specific workspace ID you target in your prompt. This keeps the scope narrow and focused on one collaboration area at a time.

**If I use `add_comment` and the comment gets rejected by Planable's internal rules, what does the tool return?**
It returns an error code indicating which specific rule was violated (e.g., length limit or prohibited keywords). This tells your agent exactly what needs to be changed for the post to proceed.

**Can my AI automatically review and bulk-approve pending posts?**
Yes. Instruct the agent to run `list_posts` filtered by 'pending_approval'. Tell your LLM to ensure they lack profanities or adhere strictly to brand tone. If they pass, you can command the AI to loop over their unique IDs mapping the `approve_post` mutation simultaneously, scheduling the calendar effortlessly.

**Can I leave comments for the rest of my design team through this?**
Absolutely. Using the `reject_post` functionality or directly targeting `add_comment` on a specific Post ID, the agent injects your exact critique ("Make the background logo larger") back into the underlying Planable portal in real-time. Your team sees your notes just as if you were logged onto their board.

**Will the API tell me exactly which social channel the post is meant for?**
Yes! Running `list_pages` maps the organizational identifiers. The API correlates structural pages inside your workspace to logical federated networks (Facebook, LinkedIn, TikTok), telling your agent explicitly what bounds to consider regarding content formatting constraints.