MCP server for publishing and inspecting LinkedIn posts.
Two tools with clear verb-noun naming (linkedin_create_post, linkedin_get_profile). Both have descriptions (60-80 chars, within baseline 34-392 range). Input schemas present for both: linkedin_create_post has a 'text' parameter with type and description; linkedin_get_profile has empty input. Error handling is comprehensive with redaction of sensitive data and categorized error codes. However, output schemas are not documented, LLMs cannot predict response structure. Parameter descriptions are minimal (e.g., 'text' lacks format constraints like max 3000 chars in the schema itself, only in code). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). linkedin_create_post is a write operation but lacks explicit confirmation/dry-run pattern.
Publish a public text post to the authenticated LinkedIn profile.
Get the authenticated LinkedIn member's OpenID profile information.
Output schemas not documented. LLMs cannot predict response structure (success/data/error fields, nested objects). Breaks downstream tool chaining and forces LLMs to guess field names.
linkedin_get_profile has empty input schema (no parameters). Description does not explain what profile data is returned or when to call it vs linkedin_create_post.
linkedin_create_post lacks tool annotations. No destructiveHint marking it as a write operation, no idempotentHint clarifying retry safety. Agents cannot determine if retrying is safe.
Parameter 'text' description in schema is minimal ('The text content of the post to publish (max 3000 characters)'). Does not explain format (plain text only? markdown? links?), tone guidance, or when to use vs other post types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
No confirmation/dry-run pattern for destructive write operation (linkedin_create_post). Agents can publish posts without preview or confirmation, risking accidental public posts.