Skip to main content
Glama

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.1.2

  • Disambiguation5/5

    Each tool serves a clearly distinct purpose: search, retrieve details, update rating/status, and get specific book lists. The meta-tool for category management is separate from book operations, eliminating any overlap.

    Naming Consistency4/5

    Most tools follow a verb_noun pattern in snake_case (search_books, get_book, update_book_rating). 'use_booklore_category' deviates slightly from the update/get/search verbs, but the pattern remains readable and consistent overall.

    Tool Count5/5

    Seven tools is well-scoped for a personal library assistant. Each tool addresses a core need—searching, viewing, updating, and tracking—without unnecessary redundancy or gaps.

    Completeness4/5

    The core book lifecycle is covered: search, details, rating, status, and reading progress. Missing create/delete operations are likely out of scope, and the category system hints at additional modules, so coverage is strong for the stated purpose.

  • Average 3.6/5 across 7 of 7 tools scored. Lowest: 2.9/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is failing
  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • 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.json to 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

  • Behavior2/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full burden for behavioral disclosure. It only says 'update', implying a mutation, but does not state whether the operation is idempotent, whether it overwrites the previous status, or what side effects or response to expect. This is minimal and leaves significant ambiguity.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, concise sentence with no wasted words. It is front-loaded with the core purpose, but could have included more useful context without being verbose, hence not a 5.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool has a simple two-parameter schema with no output schema and no annotations, but the description still fails to provide essential context such as usage, side effects, or relationship to other tools. It is bare-bones and not complete enough for an agent to fully understand the tool's behavior.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100%, as both 'bookId' and 'status' have detailed descriptions in the input schema. The tool description adds no additional meaning beyond those schema descriptions, so a baseline score of 3 is appropriate.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states a specific action ('Update') and a resource ('read status of a book'), which distinguishes it from the sibling 'update_book_rating'. However, it does not elaborate on what statuses exist or any nuance, so it is not a 5.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does 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 'update_book_rating' or 'get_book'. It does not mention any prerequisites or typical scenarios, leaving the agent without context for selection.

    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?

    With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does not explain what defines 'in progress' (e.g., percentage read, last accessed), whether results are ordered, or if any state changes occur. This lack of context is a significant gap for a tool without annotations.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, front-loaded sentence with no fluff. It efficiently conveys the tool's purpose without unnecessary words.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool is simple with one documented parameter and no output schema, but the description leaves ambiguity about what 'in progress' means and the ordering/return format. While complete enough for basic understanding, it does not fully clarify the tool's behavior in edge cases or list semantics.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The schema already fully documents the 'limit' parameter with a clear description, default, and bounds. The tool description adds no additional semantic value beyond what the schema provides, so the baseline score of 3 is appropriate.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool retrieves books that are in progress or ready for continued reading, using a specific verb ('get') and resource ('books'). However, it does not explicitly differentiate from sibling tools like search_books or get_recently_added, so it falls short of a 5.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The phrase 'currently in progress / ready to continue reading' implies a usage context (when the user wants to resume books), but there is no explicit guidance on when to prefer this tool over alternatives like search_books or get_recently_added. No exclusions or alternative tool mentions are provided.

    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?

    With no annotations, the description must carry the transparency burden. It discloses pagination ('Returns paginated results') but falsely claims support for filtering by 'series'—no such parameter exists in the schema. This misleading statement reduces trust and transparency.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is two concise sentences. It front-loads the primary purpose and lists capabilities, with no unnecessary fluff. Despite the inaccuracy, the structure is efficient.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given 13 optional parameters and no output schema, the description is too sparse. It does not explain how filters combine, default sort/pagination, or what the return payload looks like. The false 'series' claim further undermines completeness.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100%, setting a baseline of 3, but the description adds no meaningful per-parameter detail beyond what the schema already provides. Worse, it mentions a nonexistent 'series' filter, which could mislead agents into attempting an invalid parameter. This inaccurate addition lowers the score.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly starts with 'Search and filter books in your BookLore library,' identifying the specific verb and resource. It distinguishes this from sibling tools like get_book and update_book_rating by focusing on search/filter rather than single-item operations.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies use for broad search and filtering tasks, which is clear from context. However, it does not explicitly state when to prefer this over alternatives or provide exclusions, so it stops at 'clear context, no exclusions' level.

    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?

    There are no annotations, so the description must carry the full burden of behavioral disclosure. It only states the core action and rating range, and does not clarify whether the rating overwrites an existing rating, requires authentication, or has side effects. This is a significant gap for a mutation tool.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    One short, front-loaded sentence with no wasted words. It directly states the verb, object, and rating scale, making it highly efficient.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple two-parameter mutation with no output schema, the description and schema provide enough to select and invoke the tool correctly. It covers the essential purpose and parameters, though it omits behavioral nuances like overwrite semantics.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 100%, with both parameters already clearly described (bookId and rating with bounds). The description adds no additional parameter meaning beyond echoing the rating range, so a baseline of 3 applies.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the action ('Set') and the resource ('a personal rating for a book') with the rating range (1–5 stars). It distinguishes itself from sibling update_book_status by focusing on the personal rating rather than book status.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The usage context is implied: use this tool when you want to assign a personal rating to a book. However, it does not explicitly mention alternatives or when not to use it, relying on the name and sibling names to convey differentiation.

    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?

    No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds the 'across all libraries' scope, which is useful context beyond the name. However, it does not disclose the return format, ordering behavior (beyond 'most recently added'), or the effect of the limit parameter, which are relevant for an agent invoking the tool.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single, focused sentence that communicates the tool's purpose without any filler. It is front-loaded and every word contributes to understanding the tool.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness3/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The tool is relatively simple with one parameter and no output schema, but the description does not explain what the return value looks like (e.g., list of book objects, fields included). With no output schema, the description should have provided a bit more detail about the response structure or ordering to be fully complete for an agent.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The schema description coverage is 100% (the 'limit' parameter is fully described with type, default, min, and max). Thus, the description adds no parameter-level information, and the baseline score of 3 applies. The description also does not contradict or expand on the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's function: retrieving the most recently added books across all libraries. It uses a specific verb ('get') and resource ('books'), and the 'across all libraries' scope distinguishes it from sibling tools like search_books or get_book. This leaves no ambiguity about the tool's purpose.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies a clear use case (obtaining recently added books without filtering), but it does not explicitly mention when to use this tool over alternatives or any exclusions. Sibling tools like search_books are not referenced, leaving the agent to infer the appropriate context from the name and description alone.

    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, the description carries the full burden. It lists the specific categories of data returned, adding value beyond the tool name. It does not explicitly state it is read-only, but the verb 'get' implies it, and no side effects or error behavior are mentioned, preventing a higher score.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single sentence, front-loaded with the main action, and efficiently lists the included content. Every word earns its place.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple get-by-ID tool with one parameter and no output schema, the description covers the key return categories. It could mention response format or error cases, but the low complexity and clear content list make it adequately complete.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters3/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The schema already fully describes bookId (integer, BookLore book ID) with 100% coverage. The description only refers to 'its ID' without adding extra semantics, so it stays at the baseline.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool retrieves full details for a specific book by ID, with a specific verb and resource. It enumerates the content (metadata, reading progress, file information, shelves, notebook statistics), distinguishing it from siblings like search_books or update_book_rating.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides clear context: use when you need full details for a book given its ID. However, it does not explicitly mention alternatives or when not to use it, so it falls short of a perfect score.

    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, the description carries the burden of disclosure. It reveals that the tool toggles categories, affects tool availability, and that changes apply on the next request. This is useful behavioral context. It could be more explicit about side effects (e.g., whether disabling removes tools from the current context), but the description covers the key behavior.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is three concise sentences, front-loaded with the primary action. It includes all necessary information without any fluff or redundancy, making it easy to scan and understand.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple toggle tool, the description is fairly complete. It explains how to use it, the categories, and that tools become available on the next request. It does not explain return values, but the output schema is absent and the tool's effect on tool availability is more important. Slight gaps include no mention of error cases or reversibility, but these are minor.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 0%, but the description compensates by explaining 'Enable or disable' (mapping to the action parameter) and listing all category values, including the default state for books. It adds meaning beyond the enum literals by indicating the purpose of each parameter. More detail on what each category contains would be helpful, but the sibling tool names provide some hints.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's purpose: 'Enable or disable a BookLore tool category' with a specific verb and resource. It also lists the available categories and distinguishes itself from sibling tools that perform book operations, making its role as a meta-tool unmistakable.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description gives explicit usage context: 'Call this to activate a category before using its tools' and advises re-checking available tools after enabling. It also notes that books is enabled by default, which helps with when to use the tool. However, it does not explicitly mention when not to use it or alternative approaches, though the intent is clear.

    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

booklore-mcp MCP server

Copy to your README.md:

Score Badge

booklore-mcp MCP server

Copy to your README.md:

Latest Blog Posts

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/cyberglitchlabs/booklore-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server