MCP server for Plain — AI-native Office artifact generation and editing. Provides tools to generate and edit decks, docs, and sheets via natural language.
Plain MCP server has 7 tools with basic schemas and descriptions, but significant gaps prevent higher scores. All tools have descriptions (10-100 chars, mostly adequate) and input schemas with type definitions. However, parameter descriptions are minimal or absent in several tools (e.g., fetch_url lacks maxBytes description). No output schemas are documented, critical for LLM planning. Error handling is not visible in the provided code. Tool naming follows verb_noun convention (generate_*, edit_*, fetch_*) which is good, but composition issues exist: generate_deck, generate_doc, generate_sheet are near-duplicates with minimal differentiation. The edit_* tools require currentSource as a string parameter rather than accepting resource URIs or IDs, forcing agents to manage source state externally. No evidence of idempotency, pagination, or recovery guidance in tool definitions.
Edit an existing deck via natural language instruction. Modifies a deck artifact based on user instructions.
Edit an existing document via natural language instruction. Modifies a document artifact based on user instructions.
Edit an existing sheet via natural language instruction. Modifies a sheet artifact based on user instructions.
Fetch content from a URL. Retrieves text content from web URLs for use in artifact generation and editing.
Generate a deck (presentation) from a natural language prompt. Creates a structured deck artifact with slides, layouts, and content.
Generate a document from a natural language prompt. Creates a structured document artifact with blocks and content.
Generate a sheet (dashboard/spreadsheet) from a natural language prompt. Creates a structured sheet artifact with columns and visualizations.
No output schemas documented. LLMs cannot plan downstream operations or extract structured results. All 7 tools lack return type documentation.
Parameter descriptions incomplete. fetch_url.maxBytes has no description. edit_* tools lack guidance on currentSource format (markdown? JSON? raw text?). generate_* mode enum values (brief, feature) need explanation of page counts.
Composition: generate_deck, generate_doc, generate_sheet are near-duplicates with identical structure (intent + mode/no mode). LLMs waste reasoning cycles choosing between them. Consider a single generate_artifact(type, intent, mode) tool or clearer differentiation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
edit_* tools require currentSource as a raw string parameter. This forces agents to manage source state externally and pass large strings repeatedly. Should accept resource URIs or document IDs instead, with server-side source resolution.
No error handling guidance visible. Tools return ToolResultPayload with kind='error', but no documentation of error categories (retryable, user-fixable, fatal) or recovery hints for LLMs.