reading-cottage
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Most tools are clearly distinct: listing books, annotating, marking done, updating the journal, and fetching paragraph threads all have separate purposes. However, reader_start_reading and reader_get_chapter both return chapter content, so an agent could be uncertain which to use if it simply wants to read a chapter.
Naming Consistency4/5All tools share the reader_ prefix and mostly follow a verb_noun pattern such as list_books, get_chapter, add_annotation, and update_journal. reader_start_reading and reader_mark_chapter_done deviate slightly from the pure noun-object form but are still predictable and readable.
Tool Count5/5Seven tools is a well-scoped count for a reading, annotation, progress, and journal workflow. Each tool serves a distinct purpose and the set does not feel bloated or thin.
Completeness4/5The set covers the core lifecycle: list books, read chapters, annotate paragraphs, view annotation threads, advance progress, and update a journal. Minor gaps exist, such as no standalone journal retrieval or annotation update/delete, but reader_start_reading surfaces the journal and annotations appear designed as append-only.
Average 3.4/5 across 7 of 7 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 1 commit in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under AGPL 3.0.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'List' implies a read-only operation, but the description does not explicitly state that it makes no changes, nor does it mention any side effects, permissions, or other behavioral nuances. It provides minimal transparency beyond the obvious reading intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's purpose without any fluff or unnecessary words. It is appropriately front-loaded, giving the agent the core information immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (which reduces the need to describe return values), the description is incomplete for effective use. It lacks any explanation of the 'order' parameter, fails to provide usage guidance or alternatives, and does not elaborate on the distinction between 'local bookshelf' and 'shared reading progress.' The tool is simple, but the missing parameter documentation and usage context make it inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, meaning the 'order' parameter has no description in the schema, and the tool description does not mention it either. The description does not explain what 'order' means, what values it accepts, or how it affects results. This leaves the parameter completely undocumented, failing to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing the local bookshelf and shared reading progress. It uses a specific verb ('List') and identifies the resources, which distinguishes it from siblings that perform actions like starting reading or adding annotations. However, it does not explicitly name any sibling or mention differentiation, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no context on when to use this tool versus the alternatives. There is no mention of prerequisites, use cases, or exclusions. An agent would need to infer from the tool's purpose that it is for viewing content, but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations (e.g., readOnly or destructive hints) are provided, so the description itself carries the burden. 'Write' suggests a mutation, but it does not disclose any side effects, power requirements, or potential irreversible changes. The description lacks transparency about what happens after the annotation is written.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and gets directly to the point without unnecessary verbosity. It is well-structured and easy to read, though the phrase 'stable agent identity' adds a bit of complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only three parameters and no output schema, so the context is relatively simple. However, the description fails to provide adequate context about the parameters, their roles, or the expected format of the annotation, making it incomplete for a new user. It is sufficient for a basic understanding but lacks depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions for the parameters, and the tool description only vaguely references 'paragraph annotation.' It does not explain what 'content' should contain, what 'reply_to_id' refers to, or how 'paragraph_id' is used. The names are somewhat self-explanatory but lack the detail needed for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action is to 'write a paragraph annotation,' which is a specific verb and object. The phrase 'as this MCP server's stable agent identity' is somewhat ambiguous but does not obscure the core purpose. It is distinguishable from sibling tools like 'reader_get_paragraph_thread' which are about retrieval or navigation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used for adding annotations to a paragraph, but it does not explicitly state when to use it versus when to use sibling tools like listing books or reading chapters. There is no direct guidance on prerequisites or alternative scenarios, leaving some room for interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure. It does reveal a non-obvious side effect: advancing the book's shared progress. However, it omits details like idempotency, whether progress is overwritten or cumulative, and what happens if the chapter is already marked done.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It conveys the core action and its key side effect efficiently. It is concise without being merely tautological, though it could pack in more useful context without losing structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool with an output schema, the description states the essential action and side effect. However, it leaves gaps around prerequisites, failure cases, and the meaning of 'shared progress'. The presence of an output schema reduces the need to explain return values, but the behavioral and usage gaps keep this from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter-level meaning. The parameter names and titles are self-explanatory, but the description does not clarify details like indexing behavior, whether book_id must reference an existing book, or what chapter_index values are valid. The description fails to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Mark a chapter done') and adds a unique behavioral effect ('advance the book's shared progress'). This clearly distinguishes it from sibling tools like reader_get_chapter or reader_start_reading. No ambiguity about what action the tool performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit guidance on when to use this tool versus alternatives. It neither names sibling tools nor states conditions or exclusions. Usage must be inferred from the word 'done', which is not enough for a clear routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates a read operation returning a paragraph and its complete annotation thread, but it does not mention permissions, side effects, or output framing. This is adequate for a simple getter but not highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It front-loads the action and the resource, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with an output schema, the core semantics are present. Still, the description lacks usage context about when to prefer this over sibling tools and what to do with the paragraph_id, leaving an agent to infer the intended workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, paragraph_id, is intuitive from its name, and the description's phrase 'Get one paragraph' reinforces that it identifies which paragraph to fetch. However, schema description coverage is 0%, and the description does not explain where paragraph_id comes from or what an 'annotation thread' entails, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get') and a specific resource ('one paragraph and its complete annotation thread'), making the tool's function immediately clear. It is distinguishable from sibling reader_get_chapter by focusing on a paragraph-level annotation thread rather than a chapter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like reader_get_chapter or reader_add_annotation. There is no mention of when this is the right choice or when it is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses that the operation appends rather than overwrites and that the journal is scoped per agent identity and per book, but it does not describe side effects, ordering, idempotency, or any output-related behavior beyond the append action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every phrase adds meaningful scoping: append direction, agent identity, per-book separation, and journal as the target resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter append operation with an output schema, the core invocation is adequately covered. However, the description lacks any note about when to use this over nearby tools like reader_add_annotation, and it omits context about what the journal represents or how appends are structured.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It indirectly maps book_id to the per-book journal and implies that text is the content being appended, but it never explicitly states that text is the journal entry or provides constraints on format or length.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Append' and clearly identifies the resource as 'this agent identity's separate per-book running journal,' making the operation unambiguous. It is distinct from sibling tools like reader_add_annotation and reader_get_chapter because it explicitly names the journal as the target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention how journaling differs from adding annotations or when a journal append is appropriate, leaving the agent to infer the decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly indicates a read operation ('Get') and specifies what is included in the returned data ('all paragraph annotations and highlights'). No side effects or contradictions are present, but it does not disclose any potential errors or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with the action verb front-loaded. It contains no unnecessary words or filler, conveying the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters, and the description specifies enough about the expected output (chapter with annotations and highlights) to understand its general behavior. However, the absence of any output schema details or additional context about the return structure slightly limits completeness, though it is adequate for a basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only types and names for the two parameters (book_id, chapter_index) with zero descriptions. The description does not compensate by explaining the meaning, format, or constraints of these parameters (e.g., zero-based indexing, ID scope). This leaves parameter semantics largely undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb 'Get' and a specific resource: 'a chapter with all paragraph annotations and highlights.' It is distinct from sibling tools like reader_list_books and reader_get_paragraph_thread, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when needing chapter content with annotations and highlights) but does not explicitly contrast it with alternatives or state when not to use it. The usage is inferable from the name and description, but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden and does it well. It frames the output as context, warns that comments are not an unread-reply queue, and explicitly discloses that spoiler boundaries are convention-only and not enforced. It stops short of describing side effects or state changes, but for a read-like tool, the key behavioral caveats are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs with no filler. It front-loads the return value, then adds essential behavioral caveats about context, comments, and spoiler enforcement. Every sentence contributes useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description summarizes what is returned and gives important behavioral conventions, and the presence of an output schema reduces the need to document return fields. However, parameter conventions and sibling routing remain implicit, especially the distinction from reader_get_chapter. It is adequate for a simple tool but leaves some selection and invocation details to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not meaningfully explain book_id or chapter_index. It mentions 'one chapter' but never says which parameter selects the book or the chapter, nor does it specify indexing, bounds, or validation behavior. The parameter names are guessable, but the description adds no real semantic value beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific action and resource: return one chapter plus this agent's journal, pinned context, and previous discussion. This composite return clearly distinguishes it from sibling reader_get_chapter, which presumably returns only a chapter. The verb 'Return' and the explicit scope make the tool's purpose immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The name 'start_reading' and the bundled return value imply this is the initial-context tool, but the description never explicitly says when to use it instead of reader_get_chapter or another sibling. The line 'This is context, not an unread-reply queue' provides some usage framing, but it does not give direct alternative guidance. Usage is mostly inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
shields.io Endpoint
For READMEs with an existing badge row. Append &style=flat-square (or any other shields.io style) to match the rest, and &metric=tools, &metric=maintenance or &metric=claim to badge a different dimension.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/1nwooozip/reading-cottage'
If you have feedback or need assistance with the MCP directory API, please join our Discord server