An MCP server for interacting with Quip documents using the FastMCP framework
The Quip MCP server provides 8 well-named tools with consistent verb-starting naming conventions (read_*, search_*, append_*, prepend_*, replace_*, create_*, get_*). However, critical gaps in schema completeness, parameter descriptions, and output documentation significantly limit definition quality. While tool names are clear and descriptions exist for tools themselves, most parameter descriptions are minimal, and output schemas are completely undocumented. Error handling returns generic error strings rather than structured, actionable guidance. The server lands in the 'Fair' (C) range due to these documentation gaps, though naming discipline and basic structure prevent a lower score.
Append content to an existing Quip document
Create a new Quip document
Get details of a specific Quip folder
Get a list of Quip folders
Add content to the beginning of an existing Quip document
Read the content of a Quip document by its thread ID
Replace content in an existing Quip document
Output schemas are completely undocumented. Tools return JSON strings (search_documents, append_content) or unstructured plain text responses, but the schema of returned data is not documented. LLMs cannot reliably parse or chain these responses.
Parameter descriptions are minimal and lack detail. E.g., 'thread_id' is described as 'The Quip document thread ID' but does not explain format, length, or examples. 'content' parameters lack guidance on markdown support, length limits, or special character handling.
Error handling returns generic string errors ('Error: <str(e)>') with no actionable guidance. When an error occurs, the LLM receives 'Error: Not found' instead of 'Document thread_id not found. Verify the ID or use search_documents() to find it.' This prevents LLM self-correction.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | F | 10 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 59 | - | v1 |
Search for Quip documents matching a query
Missing pagination and result limits documentation. search_documents accepts a 'count' parameter with default 20, but the response schema does not document total_count, next_cursor, or whether results are truncated. Large result sets could exhaust context windows.
Destructive write operations (append_content, prepend_content, replace_content, create_document) lack confirmation or dry-run patterns. An LLM could permanently modify documents without a safeguard, and errors are non-recoverable (no undo tooling offered).
Tool descriptions do not clarify when to use similar tools. For example, append_content, prepend_content, and replace_content all modify documents but do not explain the difference or when to prefer one over another. This causes LLM confusion and mis-selection.
No input validation or constraint documentation for 'content' parameters. Markdown support, encoding, size limits, and forbidden characters are not specified. LLMs may pass binary data, excessively long content, or unsupported markup.