Posthell
Social media scheduler for AI agents: draft posts into a human-approved queue for 15 networks.
Should I use this
Quality & Safety
Findings (1)
- LOWin shape_post
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"posthell": {
"url": "https://www.posthell.com/api/mcp"
}
}
}Remote endpoints
https://www.posthell.com/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟡shape_post(notes)
Turn rough notes about what the user did (shipped a feature, fixed a bug, hit a number) into 2-3 finished social-post angles in the user's voice. Grounded only in the notes - never invents facts. Uses one AI generation from the user's monthly quota.
Input Schema
{
"type": "object",
"properties": {
"notes": {
"type": "string",
"minLength": 8,
"maxLength": 4000,
"description": "Raw notes about what the user did. Rough is fine."
}
},
"required": [
"notes"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_draft(body, platforms, proposedTime)
Save a post as a DRAFT in the user's posthell queue. It is never published by this tool - the user approves it in the dashboard. Optionally propose a publish time (pre-fills their scheduler) and limit which platforms it targets (default: every connected account).
Input Schema
{
"type": "object",
"properties": {
"body": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "The post text"
},
"platforms": {
"description": "Limit to these platforms (default: all connected accounts)",
"type": "array",
"items": {
"type": "string",
"enum": [
"x",
"linkedin",
"instagram",
"threads",
"bluesky",
"facebook",
"tiktok",
"youtube",
"pinterest",
"reddit",
"telegram",
"discord",
"googlebusiness",
"whatsapp"
]
}
},
"proposedTime": {
"description": "Suggested publish time, ISO 8601. Only a suggestion - pre-fills the user's scheduler.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"body"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_posts(status, limit)
Read the user's recent posts and drafts with per-platform status. Published posts include engagement metrics (likes, comments, shares, engagementRate - impressions on plans with full analytics) once analytics have synced. Use it to avoid duplicating a topic AND to learn which topics performed before drafting the next post.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Filter by status (posted and published are synonyms)",
"type": "string",
"enum": [
"draft",
"scheduled",
"posted",
"published",
"failed",
"partly_posted"
]
},
"limit": {
"description": "Max results (default 15)",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡get_growth
The user's follower counts and 7-day growth per connected network, plus which network is growing fastest. Use this to decide where a post matters most or to report progress.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence