MCP server for Writio — AI-native LinkedIn content creation, scheduling, and analytics for Claude Desktop, Cursor, and other MCP clients
The Writio MCP server presents 23 tools with generally well-structured definitions. Strengths: all tools have descriptions (ranging 80-180 chars, within baseline 194 avg); input schemas are present and mostly typed; tool annotations are used consistently (readOnlyHint, destructiveHint, idempotentHint); naming follows verb_noun convention throughout. Weaknesses: output schemas are NOT documented anywhere, critical gap for LLM planning; parameter descriptions vary in quality and specificity (some lack format/constraint guidance); several tools lack examples of valid enum values in descriptions; no documented error handling or recovery guidance; parameter dependencies (e.g., org_id only valid when posting_as='organization') are mentioned inline but not formalized; missing batch operations for common multi-step workflows.
Create a new LinkedIn post draft in Writio. Returns the draft ID which can be used to schedule it later.
Remix/rewrite a LinkedIn post to improve it. Applies tone, style, and formatting improvements.
Generate a complete LinkedIn carousel structure with AI. Returns intro, content sections, and outro slides. Pro feature.
Generate relevant LinkedIn hashtags for a post description. Returns 20-30 hashtags optimized for reach.
Generate attention-grabbing LinkedIn hook/opening lines for a given topic. Returns 5 hooks with quality scores.
Get your overall LinkedIn analytics including total posts, impressions, engagement, and follower growth.
Output schemas are completely undocumented. No tool describes what fields, types, or structure it returns. LLMs cannot plan chained calls or extract required IDs (e.g., draft_id from create_draft, post_id from get_post) without this information.
Parameter constraints are mentioned in text but not formalized. For example, 'posting_as' enum values and org_id dependency are described in prose rather than enforced via required[], enum, or dependentSchemas. This forces LLMs to guess valid combinations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Get community/audience analytics including engagement trends and top-performing content themes.
Get your current LinkedIn follower count.
Get LinkedIn content inspirations curated based on your industry and interests.
Get the next available posting time slot.
Get LinkedIn organization/company page analytics for a specific organization.
Get the full details of a specific post by ID.
Get AI-powered feedback and suggestions on a LinkedIn post draft. Analyzes hook quality, hashtags, clarity, and more.
Get your weekly posting schedule.
Get story ideas and templates for LinkedIn carousel/document posts.
Get your current plan usage including posts created, scheduled, and limits.
List all LinkedIn organizations/company pages you have posting access to.
List your LinkedIn posts in Writio. Filter by status: draft, scheduled, or published.
List your upcoming scheduled posts in the queue.
Immediately publish a post to LinkedIn.
Retry publishing a post that previously failed from the queue.
Schedule a post to be published on LinkedIn at the next available time slot. You can either provide content directly or reference an existing post ID.
Convert an inspiration to a draft post in your Writio workspace.
No error handling or recovery guidance documented. Tools like post_now (IRREVERSIBLE) have no confirmation step, dry-run option, or error scenarios explained. If a post fails to publish, the LLM has no guidance on retry logic or compensation.
Tools with no parameters (get_next_slot, get_schedule, get_analytics, get_follower_count, get_community_analytics, list_organizations, get_usage, get_inspirations, get_stories) lack input schema detail. While empty schemas are valid, descriptions should explain when to call each and what context they reveal.
Parameter descriptions lack specificity on formats and constraints. For example, 'days' in get_org_analytics has no range (1 - 365?); 'limit' in list_queue has no bounds stated in description; 'levers' in generate_hooks lists values in prose ('specific_numbers, story_based, ...') rather than as formal enum constraints.
No batch operations for common workflows. Agents cannot send multiple posts in one call, nor can they fetch analytics for multiple organizations at once. N sequential calls waste tokens and latency.
Pagination is missing for list_* tools. list_posts, list_queue, and list_organizations have no documented limit, offset, page_size, or next_cursor support. Large result sets will blow the context window.