MCP server supporting both Streamable HTTP (Copilot Studio) and SSE (Copilot Cowork) transports for publishing posts to LinkedIn
Two tools with clear verb-noun naming and reasonable descriptions. Both have input schemas with typed parameters and descriptions. However, output schemas are not formally documented, parameter descriptions lack constraint details (e.g., character limits, format requirements), and error handling lacks recovery guidance. The create_linkedin_post tool correctly identifies itself as a write operation and includes a confirmation reminder in the description, but the schema and descriptions could be more precise for LLM reasoning.
Publishes a text post to LinkedIn on behalf of the authenticated user. Always confirm the post content with the user before calling this tool.
Retrieves the authenticated user's LinkedIn profile including their personUrn, display name, and headline. The personUrn is required as the author field when creating posts.
Output schemas not documented. Tool responses return JSON text blobs without formal schema definitions. LLMs cannot plan downstream calls or extract fields reliably.
Parameter descriptions lack constraint details. 'text' parameter states 'Max 3,000 characters' but no format, encoding, or special character handling is documented. 'person_urn' format is shown in description but not as a regex pattern in schema.
Error handling lacks recovery guidance. Errors like 'LinkedIn userinfo failed (401)' or 'LinkedIn post creation failed (400)' do not tell the LLM what to do next (retry, ask user, check token, etc.).
No idempotency or dry-run support for destructive operation. create_linkedin_post modifies state (publishes to LinkedIn) but offers no confirmation step, dry-run, or idempotency guarantee. Agents cannot safely retry on ambiguous failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Visibility parameter enum is correct, but default value 'PUBLIC' is a high-risk default for a write operation. Agents omitting the parameter will post publicly by default, which may not match user intent.