Skip to main content
Glama
kristianedlund

hardcover-mcp

hardcover-mcp

PyPI License: MIT Python 3.14+

Talk to your Hardcover library from any AI assistant.

hardcover-mcp connects your Hardcover library to AI assistants like Claude and Copilot. Search for books, update your reading status, manage lists, explore series — all through natural conversation instead of clicking through menus.

What you can say

"What's on my currently reading list?"

"Add Project Hail Mary to my library as currently reading"

"Search for books by Brandon Sanderson"

"Look up ISBN 9780547928227"

"Create a list called 'Summer Reading' and add The Hobbit to it"

"Show me the Stormlight Archive series in reading order"

"Move Project Hail Mary and The Martian to currently reading"

"What books has Andy Weir written? Add any I haven't read to my want-to-read list"

"Compare my rating of Dune with the Hardcover average"

What's covered

  • Library tracking — status, ratings, reading dates

  • List management — create, edit, add/remove books

  • Discovery — search books, authors, series, editions, and more

  • Account info — your profile and reading stats

Related MCP server: mcp-ebook-server

Safety & control

  • You control your API key — it stays on your machine, never shared with third parties

  • Runs locally through your MCP client — no external server involved

  • Actions only happen when explicitly requested — nothing runs in the background

  • You review prompts and outputs in your client before anything is sent

Quick Start

  1. Install uv (a fast Python package runner — the setup takes seconds).

  2. Get an API token from hardcover.app/account/api.

  3. Add the config below to your MCP client — no manual install needed, uvx handles it.

VS Code

Add to .vscode/mcp.json:

{
  "servers": {
    "hardcover": {
      "command": "uvx",
      "args": ["hardcover-mcp"],
      "env": {
        "HARDCOVER_API_TOKEN": "<your token>"
      }
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "hardcover": {
      "command": "uvx",
      "args": ["hardcover-mcp"],
      "env": {
        "HARDCOVER_API_TOKEN": "<your token>"
      }
    }
  }
}

Tools

Browse & discover

What you can do

Tool

Search for books, authors, series, and more (with sort/filter)

search_books

Look up a book by title or ID

get_book

See what's trending now

get_trending_books

Browse curated recommendation collections (vibes)

get_vibes

Look up a specific edition by ISBN or ASIN

get_edition

Explore a series in reading order

get_series

Browse an author's catalogue

get_author

Look up another user's public profile (and optionally their library)

get_user

See recent activity from people you follow (or one user)

get_activity_feed

Follow or unfollow a user

follow_user / unfollow_user

Your library

What you can do

Tool

See your profile and book count

me

Get reading statistics (totals, ratings, books read per year)

get_reading_stats

Get your active reading goals and progress

get_reading_goal

Browse your library, filter by status, date range, or sort by rating/date

get_user_library

Check your status/rating for a specific book (includes privacy setting)

get_user_book

List your reviews

get_user_reviews

Read your journal entries (notes, quotes, status events)

get_reading_journal

List books you own, with edition details

get_owned_books

Create or update a reading goal (books/pages, date range)

set_reading_goal

Add a book or update its status, rating, review, notes, privacy, and edition

set_user_book

Mark an edition as owned or not owned

set_edition_owned

Log reading dates and progress (pages, audiobook time)

add_user_book_read / update_user_book_read

Remove a book or reading entry

delete_user_book / delete_user_book_read

Create or delete a journal note/quote entry

add_journal_entry / delete_journal_entry

Lists

What you can do

Tool

View all your lists

get_my_lists

View a specific list with its books

get_list

Create, rename, or delete a list

create_list / update_list / delete_list

Add or remove books from a list

add_book_to_list / remove_book_from_list

Development

git clone https://github.com/kristianedlund/hardcover-mcp.git
cd hardcover-mcp
uv sync

Lint and format checks (using Ruff):

uv run ruff check src/
uv run ruff format --check src/

Run tests:

uv run pytest tests/ -v

Integration Tests

Integration tests hit the live Hardcover API and require a valid token. They are skipped automatically in CI and when the token is absent.

To run them locally, create a .env file with your token:

HARDCOVER_API_TOKEN=your_token_here

Then run:

uv run pytest tests/integration/ -v

Write tests follow a create → verify → delete lifecycle so the account is left unchanged.

Contributing

Contributions are welcome! Please:

  1. Open an issue first to discuss the change.

  2. Fork the repo and create a branch (feature/short-description or fix/short-description).

  3. Run lint and tests before submitting:

    uv run ruff check src/
    uv run ruff format --check src/
    uv run pytest tests/ -v
  4. Keep PRs focused — one change per PR.

  5. Use conventional commit prefixes: feat:, fix:, chore:, docs:.

Rate Limiting

The Hardcover API allows 60 requests per minute. The server handles this automatically — it queues requests and retries if needed. You shouldn't hit this in normal use.

Troubleshooting

Problem

Fix

"API token is not set"

Add your token to the config (see Quick Start above)

"Access is denied" on Windows

Add "UV_LINK_MODE": "copy" to the env block in your config

Slow or repeated errors

The server retries automatically — wait a moment and try again

Unexpected results

Check for a newer version: the Hardcover API may have changed

Disclaimer

Unofficial project. Not affiliated with Hardcover.

Available Tools

39 tools
add_book_to_listC

Add a book to a Hardcover list.

ParametersJSON Schema
NameRequiredDescriptionDefault
book_idYesHardcover book ID to add.
list_idYesHardcover list ID.
positionNoPosition in the list (optional).

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as idempotency, error handling, or side effects. It only states the action.

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 appropriately front-loaded.

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 the tool has 3 parameters and no output schema or annotations, the description lacks info on return values, error conditions, or prerequisites, leaving it incomplete for effective use.

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%, so the parameter descriptions are adequate. The tool description adds no additional meaning beyond the schema, meeting the baseline of 3.

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 verb 'add' and the resource 'book to a Hardcover list', distinguishing it from siblings like 'remove_book_from_list'. However, it lacks mention that the book and list must exist.

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?

No guidance on when to use this tool versus alternatives such as 'set_user_book' or 'update_list'. No when-not-to-use conditions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_journal_entryB

Create a reading journal entry (for example a note or quote) for a book.

ParametersJSON Schema
NameRequiredDescriptionDefault
entryYesJournal entry text.
eventYesJournal event type.
book_idYesHardcover book ID.
edition_idNoOptional Hardcover edition ID.
privacy_setting_idNoOptional privacy setting ID (1 public, 2 followers, 3 private).

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description must cover behavioral traits. It only states 'create' without detailing side effects, permissions, or limitations. The return value is not mentioned, and there is no output schema to compensate.

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?

Single sentence, front-loaded with key action and resource, no extra words. Efficiently conveys the purpose.

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 the tool has 5 parameters and no output schema, the description is too sparse. It does not explain what happens on success, potential errors, or how the entry integrates with other journal features. Sibling tools for delete and get exist but no guidance on workflow.

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%, so the description adds minimal value beyond the schema. The mention of 'note or quote' repeats the enum. Baseline 3 is appropriate as schema already explains parameters.

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 ('create') and the resource ('reading journal entry'), with concrete examples ('note or quote') that align with the event enum. It distinguishes the tool from siblings like delete_journal_entry and get_reading_journal.

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?

No guidance on when to use this tool versus alternatives, no prerequisites or context provided. The sibling tools are listed but not differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_user_book_readA

Add a reading date or progress entry. Updates active read if one exists. Supports page progress and audiobook time tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
book_idNoBook ID (auto-resolves your user_book).
edition_idNoEdition ID (required for audiobook progress tracking).
started_atNoDate started reading (ISO 8601, e.g. '2025-01-15').
finished_atNoDate finished reading (ISO 8601, e.g. '2025-02-20').
user_book_idNouser_book ID if known (skips lookup).
progress_pagesNoPages read so far.
progress_secondsNoSeconds of audiobook listened to so far.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It reveals that it updates an active read if one exists, but omits details on side effects, permissions, or reversibility. Adequate but incomplete.

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?

Two sentences, no superfluous words. Efficiently conveys purpose and key capabilities.

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 description covers main behavior but lacks details on return values, error cases, or complex interactions. For 7 parameters and no output schema, more context would help.

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 coverage is 100% and schema descriptions are detailed. The description adds context about updating active reads but no additional parameter-level meaning. Baseline 3 is appropriate.

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 it adds a reading date or progress entry, supports both page and audiobook progress, and updates an existing active read. The verb 'Add' and resource 'reading date or progress entry' are specific.

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 does not provide guidance on when to use this tool versus siblings like update_user_book_read. It mentions updating an active read, but does not delineate scenarios or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

answer_promptA

Submit a book as an answer to a community book prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
book_idYesHardcover book ID to submit as the answer.
prompt_idYesHardcover prompt ID (use get_prompts to find IDs).

TDQS

A4.2/5.0
Behavior3/5

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

The description conveys a write/submit operation, but with no annotations it omits side effects such as whether an existing answer is replaced, whether duplicates are allowed, or what happens on success or failure.

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?

A single, direct sentence conveys the entire purpose without filler or unnecessary detail.

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 write operation, the description covers what and how; it does not describe return values, but the lack of an output schema and the tool's simplicity make this a minor omission.

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?

Both parameters are described and the descriptions add helpful context (Hardcover IDs and using get_prompts to find prompt IDs), though they do not specify constraints like positive integers or required existing entities.

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?

States the exact action (submit), the object (a book), and the target (a community book prompt), leaving no ambiguity about the tool's primary purpose.

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?

Clear from the verb and target that this is the action for answering a prompt; however, it does not explicitly contrast with sibling tools or note when not to use it, though no sibling serves the same purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_listC

Create a new Hardcover list.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new list.
privacyNopublic/followers_only/private. Default: public.
descriptionNoOptional description.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It only states 'Create a new...' but omits details like authentication requirements, rate limits, or what happens on duplicate names. This is insufficient.

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?

Single sentence is efficient and front-loaded. It is concise but slightly under-specified; still acceptable for a simple creation tool.

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 3 parameters, no output schema, and no annotations, the description is too minimal. It does not explain return values, validation rules, or side effects. Sibling tools exist but are not leveraged.

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%, so baseline is 3. The description adds no extra meaning beyond what the schema already provides for 'name', 'description', and 'privacy'.

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?

Description clearly states 'Create a new Hardcover list.' The verb 'Create' and resource 'list' are specific, but it does not differentiate from siblings like 'update_list' or 'add_book_to_list'.

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?

No guidance on when to use this tool versus alternatives like 'update_list' or 'delete_list'. No prerequisites or context-specific advice provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_journal_entryB

Delete a reading journal entry by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReading journal entry ID.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It states 'Delete' but does not disclose whether deletion is irreversible, idempotent, or has cascading effects. No error handling or side effects are described.

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, clear sentence with no extraneous information. Perfectly concise for a simple 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?

For a simple 1-parameter delete tool, the description is minimally complete. However, it lacks behavioral details and usage guidance that would make it robust. It meets the minimum viability.

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 a minimal description for the id parameter. The tool description does not add extra meaning beyond the schema, so baseline 3 is appropriate.

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 (Delete), the resource (reading journal entry), and the method (by ID). It is distinct from sibling tools like delete_list or delete_user_book which target different entities.

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?

No guidance on when to use this tool vs alternatives, no prerequisites or conditions mentioned. The description lacks context on when not to use it or how it fits into a workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_listA

Delete a Hardcover list by ID. This cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHardcover list ID to delete.

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses the irreversible nature of the delete, which is key. However, no annotations are provided, and it does not mention permissions, side effects, or success/failure indicators.

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 sentences, concise and front-loaded with the action and its consequence. No extraneous information.

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?

Given the simplicity of the tool (single parameter, no output schema), the description is nearly complete. It lacks only clarification of what happens on success or error.

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 input schema already describes the 'id' parameter clearly (100% coverage). The description adds no further semantic meaning.

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 'Delete a Hardcover list by ID', specifying the verb and resource. It distinguishes from sibling tools like create_list or update_list.

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 'This cannot be undone' implies caution, but there is no explicit guidance on when to use this tool versus alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_user_bookA

Remove a book from your library entirely. This cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
book_idNoHardcover book ID (will look up your library entry).
user_book_idNoDirectly specify user_book ID if known.

TDQS

A3.5/5.0
Behavior3/5

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

Discloses irreversibility ('cannot be undone'), which is critical behavioral info. However, lacks details on permissions, side effects (e.g., removal of associated data), given no 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?

Two sentences with no redundant information. Action and consequence are front-loaded, achieving maximum efficiency.

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?

Adequate for a simple tool with two parameters, but lacks comparison to siblings and more detailed behavioral context. Could explain when to use delete_user_book vs other delete/remove tools.

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 descriptions cover both parameters completely (100% coverage). The tool description adds no additional meaning beyond the schema, so 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?

Clearly states action: 'Remove a book from your library entirely.' Distinct from sibling tools like delete_user_book_read or remove_book_from_list by specifying 'library' instead of a list or read record.

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?

No guidance on when to use this tool versus alternatives. Does not mention differences from siblings such as delete_user_book_read or remove_book_from_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_user_book_readA

Delete a reading date entry by its ID. This cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe user_book_read ID to delete.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry all behavioral disclosure. It explicitly states the destructive, irreversible nature. However, it lacks details such as whether the deletion is permanent, if it cascades to other data, or any authorization requirements. For a destructive tool, slightly more transparency would be beneficial.

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 extremely concise at two sentences and zero wasted words. Every sentence serves a purpose: stating the action and warning about irreversibility. It is ideally sized for a simple 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?

For a tool with one parameter and no output schema, the description is minimally complete. It outlines what the tool does and its irreversible nature. However, it lacks clarity on what constitutes a 'reading date entry', potential error cases, or usage context (e.g., only applicable to the user's own entries). Slightly more context would improve completeness.

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 coverage is 100%, so the description adds no extra parameter meaning beyond stating the ID is used. The schema already documents the id field. Baseline 3 is appropriate as the description does not provide additional semantic context like where to obtain the ID.

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 'Delete' and the resource 'a reading date entry' along with the required identifier 'by its ID'. It distinguishes well from sibling tools like delete_journal_entry or delete_user_book by specifying the unique resource type.

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 provides a clear warning that the action cannot be undone, implying one should only use it when sure. However, it does not explicitly mention when to use this tool versus alternatives (e.g., updating instead of deleting) or provide any prerequisites or context for safe usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

follow_userC

Follow a Hardcover user by user_id or username.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoHardcover user ID to follow.
usernameNoUsername to follow (resolved to an ID).

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It does not disclose that this is a mutating/side-effecting operation, whether it is idempotent when the follow already exists, what error occurs for an unknown user, or what the response contains.

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?

A single efficient, front-loaded sentence with no filler. It is appropriately sized for such a simple tool, though it is arguably too terse to be fully instructive.

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?

This is a low-complexity tool with no nested objects and no output schema, so limited detail is acceptable. However, the zero-required-parameter schema plus the absence of annotations means an agent still lacks the basic facts (at least one identifier needed, idempotency, auth) to call it confidently.

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 coverage is 100%, so both parameters are already documented. The phrase 'by user_id or username' adds a little value by implying the two are alternative identifiers, but it does not clarify that neither is marked required or whether supplying both is legal. Baseline 3 fits when the schema does the heavy lifting.

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?

States a specific verb ('Follow') and resource ('Hardcover user'), plus the two identifier options. It is clearly distinguishable from the sibling unfollow_user by name, though the description itself never names or contrasts the opposite operation.

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?

No guidance on when to use this versus unfollow_user, no preconditions (e.g., authentication, must already exist as a user), and no indication of what happens on repeat calls. The agent must infer everything from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_activity_feedA

Get recent reading activity (status changes, ratings, reviews, list updates), newest first. Defaults to the feed of users you follow. Pass user_id or username to fetch a single user's activity instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events to return (default 25, max 100).
offsetNoPagination offset (default 0).
user_idNoFetch one user's activity by Hardcover user ID.
usernameNoFetch one user's activity by username.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden and does disclose ordering (newest first) and the default scoping behavior, which is genuinely useful. However, it says nothing about authentication requirements, whether the feed is filtered/moderation-controlled, or how pagination behaves beyond the schema's own limit/offset fields.

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?

Two sentences, front-loaded with what the tool returns before describing scope overrides. No filler and every clause carries information.

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 zero-required-parameter read tool with no annotations and no output schema, the description covers purpose, default scope, ordering, and scope override adequately. The main omission is any hint of the response shape or auth expectations, but that gap is minor.

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%, so the schema already documents limit, offset, user_id, and username. The description adds the semantic point that user_id and username are alternative ways to switch scope, but adds no format or constraint detail beyond the schema. Baseline 3 is appropriate.

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?

Names a specific resource (reading activity feed) and enumerates exactly what events it contains (status changes, ratings, reviews, list updates) plus ordering (newest first). This clearly separates it from siblings like get_reading_journal or get_user_reviews.

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?

Explicitly states the default scope (feed of users you follow) and the condition for overriding it (pass user_id or username for a single user). It gives clear usage context but does not name alternative tools or warn about when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_authorA

Get an author's details and books by Hardcover ID, slug, or name.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoHardcover author ID.
nameNoAuthor name (e.g. 'Brandon Sanderson').
slugNoAuthor slug (e.g. 'brandon-sanderson').
books_limitNoMax books to return (default 20, max 100).

TDQS

A3.5/5.0
Behavior3/5

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

The description implies a read operation but does not explicitly state it is non-destructive. Without annotations, it should add behavioral context like pagination or error behavior, which is missing.

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?

A single 11-word sentence that conveys the tool's purpose and method. No redundant or unnecessary information; every word earns its place.

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?

For a simple tool with no output schema, the description mentions returned content ('details and books') but omits details like return format, optionality of parameters, or behavior when multiple parameters are provided. Adequate but not thorough.

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 coverage is 100% with clear descriptions for each parameter. The description adds no extra semantics beyond listing the lookup keys and books_limit, meeting the baseline but not exceeding it.

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 'Get an author's details and books' and specifies three lookup methods (ID, slug, name). This defines a specific verb and resource, distinguishing it from sibling tools like get_book or get_edition.

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?

No guidance on when to use this tool versus alternatives (e.g., search_books) or which identifier to prefer. The description does not mention that at least one of id/slug/name is needed, leaving ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bookA

Get detailed info about a specific book by its Hardcover ID or slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoHardcover book ID.
slugNoHardcover book slug (e.g. 'project-hail-mary').

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description fully carries behavioral disclosure. It only states 'Get detailed info' without specifying return fields, read-only nature, or absence of side effects, leaving the agent without critical behavioral cues.

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 12-word sentence that directly communicates the tool's purpose with no extraneous information. Every word is earned.

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?

Given the simple tool (2 optional params, no output schema), the description is nearly complete but lacks any hint of return content. Adding what 'detailed info' includes would improve completeness without harming conciseness.

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%, so the schema already documents the parameters. The description's mention of 'Hardcover ID or slug' aligns but adds no new meaning beyond the schema, warranting the baseline 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 states the tool retrieves detailed info about a specific book using either a Hardcover ID or slug. This verb+resource+scope pattern distinguishes it from siblings like search_books (searching) or get_edition (specific edition).

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 usage when a book ID or slug is known but does not explicitly state when not to use this tool or mention alternatives such as search_books for discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_charactersB

Get characters associated with a book by its Hardcover ID. Returns character names and descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
book_idYesHardcover book ID.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided. The description only states what is returned ('character names and descriptions') but does not disclose pagination, error handling, or any behavioral constraints like rate limits.

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?

Two concise sentences with no fluff. The action and key detail are front-loaded.

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 ID lookup with one parameter and no output schema, the description is fairly complete. It could mention what happens if no characters are found, but overall adequate.

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 coverage is 100% with a description for 'book_id'. The tool description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.

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 verb 'Get', the resource 'characters', and the identifier 'book by its Hardcover ID'. It distinguishes from sibling tools which retrieve other entities like authors or books.

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?

No guidance on when to use this tool versus alternatives. There is no mention of prerequisites or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_editionC

Get edition details by Hardcover ID, ISBN-13, or ASIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoHardcover edition ID.
asinNoAmazon ASIN of the edition.
isbn_13NoISBN-13 of the edition (e.g. '9780547928227').

TDQS

C2.9/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, authentication requirements, rate limits, or side effects. The description carries the full burden but fails to provide this context.

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 that is front-loaded with the key action and resources. Every word is necessary, though it could be slightly expanded to include behavioral context without being verbose.

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 description is barely adequate for a simple lookup tool. No output schema is provided, and the lack of behavioral transparency leaves gaps. Given the simplicity, more context could have been included.

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 coverage is 100%, so parameters are already documented. The description adds minimal value by summarizing that any of the three identifiers can be used, but does not add meaning beyond what the schema provides.

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 verb 'Get', the resource 'edition details', and specifies three distinct identifiers (Hardcover ID, ISBN-13, ASIN) that differentiate it from sibling tools like get_book.

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?

No explicit guidelines on when to use this tool versus alternatives. Sibling tools like get_book exist, but the description does not clarify when to choose get_edition over get_book or other lookup tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_listA

Get a specific Hardcover list with its books by list ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHardcover list ID (use get_my_lists to find IDs).
book_limitNoMax books to return (default 25, max 100).
book_offsetNoOffset for book pagination (default 0).

TDQS

A3.9/5.0
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. It states the tool gets the list with books but does not explicitly note it is a read-only operation or mention pagination behavior. The schema partially compensates by defining book_limit and book_offset.

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 that front-loads the main purpose. It contains no unnecessary words and is efficient for its simple purpose.

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?

Given the lack of output schema, the description should more clearly explain the return structure (e.g., list details and book array). It covers the inputs well but leaves the output ambiguous. Sibling tools are diverse, but the description does not help with selection.

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 coverage is 100% with clear descriptions. The description adds value for the 'id' parameter by suggesting use of get_my_lists to find IDs. Other parameters are adequately described in 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 verb 'Get', the resource 'Hardcover list with its books', and the identifier 'list ID'. It distinguishes the tool from siblings like get_my_lists (which retrieves all lists) and other mutation tools.

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 provides a reference to get_my_lists for finding IDs, offering basic guidance. However, it does not explicitly state when to use this tool versus alternatives like search_books or get_my_lists, nor does it provide contexts or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_listsA

Get your Hardcover lists. Returns id, name, books count, privacy.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax lists to return (default 50, max 200).
offsetNoOffset for pagination (default 0).

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It confirms it's a read operation but does not mention authentication needs, rate limits, or what happens if no lists exist. The minimal detail is adequate for a simple tool but insufficient for full 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?

Single sentence, front-loaded with purpose and return fields. No wasted words.

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 list retrieval with no output schema and two well-documented parameters, the description is fairly complete. It mentions return fields and is sufficient for an agent to understand the tool's output.

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 coverage is 100% for the two parameters, and the description does not add extra meaning beyond the schema. Baseline is 3.

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 ('Get your Hardcover lists') and the return fields ('id, name, books count, privacy'). It distinguishes from sibling tools like 'get_list' and 'create_list' by focusing on personal lists retrieval.

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?

Usage context is implied by the name and description (fetching user's own lists), but no explicit guidance on when to use this vs alternatives like 'get_list' for a single list or 'create_list' for creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_owned_booksA

List all books you have marked as owned. Returns title, authors, and edition details.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1).
per_pageNoResults per page (default 20, max 100).

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral traits. It implies a read operation but does not state read-only status, lack of side effects, or other behaviors.

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?

Two concise sentences, front-loaded with purpose, no 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?

No output schema, so description should explain return values well. While it lists some fields, it omits pagination behavior and that results are paginated, leaving moderate gaps.

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 coverage is 100% and parameter descriptions are present. The description adds no extra meaning beyond the schema, so baseline of 3 is appropriate.

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?

Description clearly states the verb 'list', the resource 'books you have marked as owned', and the returned fields (title, authors, edition details). This distinguishes it from sibling tools like get_user_library.

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 when to use the tool (to list owned books), but does not provide explicit when-not guidance or contrast with alternatives like get_user_library.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_promptsA

List community book prompts. Optionally filter to featured prompts only. Returns question, description, answers_count, and books_count.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax prompts to return (default 25, max 100).
offsetNoPagination offset (default 0).
featuredNoIf true, return only featured prompts (default false).

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It clearly indicates this is a read-only listing operation and adds useful transparency by enumerating returned fields (question, description, answers_count, books_count). It does not discuss pagination behavior or side effects, but 'List' sufficiently signals a non-mutating call.

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, front-loaded sentences. The first sentence states the primary action, the second covers optional filtering, and the third documents the return fields, with no wasted words.

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 list tool with three optional parameters and full schema coverage, the description is largely complete: it states the purpose, optional filter, and return fields. There is no output schema, so the explicit return-field list helps compensate. It could be slightly stronger by noting how this relates to answer_prompt, but nothing essential for invoking it is missing.

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%, so the schema already documents limit, offset, and featured. The description only restates the featured filter and does not add meaningful new meaning beyond the parameter schema, justifying the baseline score of 3.

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 states a specific action ('List community book prompts') and a clear resource, which an agent can distinguish from answer_prompt by the verb 'list'. However, it does not explicitly call out sibling tools or differentiate itself beyond the implied contrast, so it stops short of full sibling differentiation.

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 use case is implied: call this when you need to list community book prompts rather than answer one. There is no explicit when/when-not guidance or mention of alternatives such as answer_prompt, though the optional featured filter gives some context about filtering behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_publisherA

Look up a publisher by Hardcover ID, slug, or name. Returns publisher info and a paginated list of editions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoHardcover publisher ID.
nameNoPublisher name (e.g. 'Tor Books').
slugNoPublisher slug (e.g. 'tor-books').
editions_limitNoMax editions to return (default 20, max 100).
editions_offsetNoOffset for editions pagination (default 0).

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the return of both publisher info and a paginated edition list, implicitly revealing the pagination behavior through editions_limit and editions_offset. No contradictions. Minor omission: no mention of error handling or output field details, but acceptable for a lookup 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 two-part sentence: first part states the lookup action and valid keys, second part specifies the return (info + paginated editions). No filler words, front-loaded with key action, and every clause earns its place.

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 description covers purpose, input identifiers, and output structure. However, with no output schema, it does not describe the fields in publisher info or the edition list structure. Also missing guidance on parameter mutual exclusivity (likely only one identifier at a time). Adequate but leaves some gaps given the 5-parameter complexity.

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 coverage is 100% with individual parameter descriptions. The description adds value by clarifying that the three identifier parameters (id, slug, name) are alternative lookup keys and that editions_limit/editions_offset control pagination of the returned list. This contextual grouping enhances schema semantics.

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 looks up a publisher by one of three identifiers (ID, slug, or name) and returns publisher info plus a paginated list of editions. This specific verb+resource+return distinguishes it from sibling get_* tools like get_author, get_book, etc.

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 implies usage for publisher lookups by three distinct identifiers but does not explicitly differentiate when to use which parameter or compare with other tools. However, the context of sibling tools (all for different entities) provides implicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reading_goalA

Get your active reading goals with target, metric, progress, and date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax goals to return (default 10, max 100).

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It specifies 'active' goals and includes progress attributes, but does not disclose if multiple active goals can exist, pagination behavior, or idempotency.

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 one sentence, under 20 words, front-loaded with the action and attributes, with no unnecessary information.

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 tool with one optional parameter and no output schema, the description adequately explains what is returned. Minor gap: no mention of what happens if no active goals exist.

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 coverage is 100% for the single parameter 'limit', which already has a clear description. The description adds no additional meaning beyond this.

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 it retrieves reading goals with specific attributes (target, metric, progress, date range), distinguishing it from sibling tools like 'set_reading_goal'.

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 usage for viewing active goals but provides no explicit when-to-use or when-not-to-use guidance, nor mentions alternatives like 'set_reading_goal' for modification.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reading_journalA

Fetch reading journal entries for the authenticated user. Includes notes, quotes, status changes, ratings, reviews, and progress updates. Supports optional filters: book_id, event type, limit, and offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
eventNoFilter by event type. Examples: 'note', 'quote', 'status_currently_reading', 'status_read', 'rated', 'reviewed', 'progress_updated'.
limitNoMax entries to return (default 25, max 100).
offsetNoPagination offset (default 0).
book_idNoFilter entries to a specific book by Hardcover book ID.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description uses 'Fetch' implying read-only behavior, but it does not explicitly state whether the operation mutates data, access restrictions, or other behavioral traits with the detail needed.

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, front-loaded with the main purpose, and includes relevant details without unnecessary words.

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?

Given the tool's simplicity (4 optional parameters, no output schema), the description covers key aspects (purpose, data types, filters) but lacks sorting or default order information.

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 coverage is 100% and the description summarizes parameters as 'optional filters', adding minimal extra meaning beyond the explicit schema descriptions.

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 verb 'fetch' and the resource 'reading journal entries' for the authenticated user, listing included data types (notes, quotes, etc.), which distinguishes it from sibling tools like get_book or get_user_library.

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 mentions optional filters for query context but does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare to siblings like add_journal_entry or delete_journal_entry.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reading_statsA

Get library reading statistics: total books, books per status, average rating, and books read in a given year.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear for the 'books_read_this_year' count (default: current year).

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavioral traits. It does not state whether the operation is read-only, requires authentication, or has performance implications. The description implies read-only but does not explicitly confirm.

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?

Single sentence, front-loaded with verb and resource, listing outputs. No redundant words; every part is meaningful. Highly concise and well-structured.

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 tool with one optional parameter and no output schema, the description lists output fields and explains the parameter's role. Could mention default behavior for year or scope (e.g., user's library). Still, it is sufficient for correct invocation.

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 coverage is 100% with one optional parameter 'year', which has a clear description. The tool description adds context by mentioning 'books read in a given year' but does not elaborate further. Adequate but not exceptional.

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?

Description clearly states action 'Get', resource 'library reading statistics', and lists specific statistics (total books, books per status, average rating, books read in a given year). This distinguishes it from sibling tools that retrieve individual entities.

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?

No explicit when-to-use or when-not-to-use guidance. However, the description implies it's for aggregate statistics, contrasting with sibling getters for specific items. Could be stronger with explicit alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_seriesA

Get a book series by id, slug, or name with books in reading order.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoHardcover series ID.
nameNoExact series name (e.g. 'The Stormlight Archive').
slugNoSeries slug (e.g. 'the-stormlight-archive').

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that results include books in reading order, a key behavioral trait. However, it does not mention potential side effects, permissions, or error handling.

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?

A single sentence front-loads the purpose and result format. Every word adds value, with no redundancy or filler.

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?

Given no output schema, the description hints at the return structure (series with books ordered). It omits details like pagination, limits, or behavior on multiple matches, but for a simple lookup tool this is reasonably 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?

Schema coverage is 100%, with each parameter already described. The description adds no extra meaning beyond stating the result format, so it does not improve understanding beyond 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 retrieves a book series by id, slug, or name, and includes books in reading order. This specific verb-resource combination distinguishes it from sibling tools like get_book or get_author.

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 usage when needing series info with ordered books, but gives no explicit guidance on when not to use it, prerequisites, or alternatives. The context is clear but lacks decision-making support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_userA

Look up another Hardcover user's public profile by id, username, or name. Returns bio, book/follower counts, and privacy. Set include_library=true to also fetch their recent library entries (subject to their privacy setting).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoHardcover user ID.
nameNoDisplay name to search for (resolves to the top match).
usernameNoHardcover username (e.g. 'adam').
library_limitNoMax library entries to return (default 10, max 50).
library_statusNoFilter library entries by status (e.g. 'Read', 'Currently Reading').
include_libraryNoIf true, include recent library entries (default false).

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and partially meets it: it discloses that only public profile data is returned and that library entries are gated by the target user's privacy setting, which is a real behavioral constraint an agent must anticipate. It stops short of stating auth requirements, rate limits, or failure behavior for an unresolved name.

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?

Two sentences, no filler, front-loaded with the action and identifier options before the optional flag. Every clause carries information the agent needs.

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?

With no output schema, the description usefully enumerates the return shape (bio, book/follower counts, privacy) and the conditional library payload. The one gap: six parameters with zero required means the agent must infer that at least one of id/username/name is necessary, and that constraint is not stated.

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 coverage is 100%, so the baseline is 3. The description adds genuine meaning by tying include_library to the target's privacy setting and by framing id/username/name as alternative lookup keys rather than listing fields already documented.

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?

States a specific verb ('look up') and resource ('another Hardcover user's public profile'), plus the three lookup keys (id, username, name). The word 'another' quietly distinguishes it from the sibling `me`, and the resource differs from `get_user_library`/`get_user_reviews`.

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?

Gives an explicit conditional for the main optional behavior: 'Set include_library=true to also fetch their recent library entries (subject to their privacy setting).' It does not, however, tell the agent when to prefer `get_user` over `get_user_library` or `me`, so it lacks true alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_bookB

Get your library entry for a book: status, rating, reads.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoHardcover book slug (e.g. 'project-hail-mary').
book_idNoHardcover book ID.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; description only lists returned fields (status, rating, reads). Does not disclose if it is read-only, authentication needs, or potential errors.

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?

Single, clear sentence front-loads the core function. Efficient but could be slightly more structured.

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?

Adequate for a simple retrieval tool with two parameters and no output schema. However, lacks details on required parameters or error conditions.

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 coverage is 100% with descriptions for both parameters (book_id and slug). Description adds no extra meaning beyond 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?

Description clearly states the tool retrieves the user's library entry for a specific book, including status, rating, and reads. It is distinct from siblings like get_book (general) and get_user_library (all entries).

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?

No explicit guidance on when to use vs alternatives like get_book or get_user_library. The context is implied but not clarified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_libraryA

Get books from your library. Filter by reading status or finished-date range (start_date + end_date). Sort by rating, title, or updated date. Use sort='rating', order='desc' to get top-rated books. Use start_date + end_date to answer 'what did I read in May last year?'

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort field: 'updated' (default), 'rating', or 'date_added'.
limitNoMax books to return (default 25, max 100).
orderNoSort direction: 'desc' (default) or 'asc'.
offsetNoOffset for pagination (default 0).
statusNoStatus filter (e.g. 'Read', 'Currently Reading').
end_dateNoLatest finished_at date (ISO 8601, e.g. '2025-12-31'). Must be paired with start_date.
start_dateNoEarliest finished_at date (ISO 8601, e.g. '2025-01-01'). Must be paired with end_date.

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It accurately describes the tool as read-only (getting library books) and mentions filtering and sorting, but doesn't disclose pagination limits (default 25, max 100) or that it only returns the current user's library, which could be inferred but not explicit.

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 sentences, each serving a purpose: stating the function, listing filters/sorts, and providing usage examples. No redundant information, well-structured.

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?

Given the complexity (7 parameters, no output schema), the description covers core functionality but omits details about the response format (e.g., fields returned, data types). The inclusion of pagination parameters suggests a need for output format guidance, which is lacking.

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?

With 100% schema description coverage, the description adds value by providing example usage for sort/order and date range pairing, which goes beyond the schema definitions. The examples clarify how to use parameters together.

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 'Get books from your library' and specifies filtering (reading status, finished-date range) and sorting options, distinguishing it from siblings like search_books or get_book. The example usage further clarifies its purpose.

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 explicit guidance on when to use filters (e.g., date range for 'what did I read in May last year?') and sorting (e.g., 'sort=rating, order=desc' for top-rated). However, it doesn't explicitly mention when not to use this tool or suggest alternatives like search_books for broader searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_reviewsB

List your reviews, newest first. Includes review text, rating, and book info.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax reviews to return (default 25, max 100).
offsetNoPagination offset (default 0).

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must cover behavioral traits. It only discloses ordering (newest first) but omits whether the operation is read-only, authentication requirements, or rate limits. Minimal disclosure.

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?

Two concise sentences, front-loaded with purpose. Every word adds value; no redundancy or fluff.

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?

Given no output schema, the description adequately summarizes return content (text, rating, book info). Lacks mention of pagination behavior beyond parameters, but sufficient for a simple list tool.

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%, so parameters are fully documented in the schema. The description adds no extra meaning beyond the schema's parameter descriptions, earning baseline score of 3.

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 lists user reviews, with ordering (newest first) and content (review text, rating, book info). It distinguishes from siblings by its specific resource focus, though not explicitly compared.

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?

No explicit guidance on when to use this tool versus alternatives like get_my_lists or get_owned_books. The description implies it's for personal reviews but provides no context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vibesB

List Hardcover 'vibes' — curated, themed book recommendation collections (e.g. 'Hidden Gem Fantasy'). Each vibe includes its books.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax vibes to return (default 10, max 50).
offsetNoPagination offset (default 0).
featuredNoIf true (default), return only featured vibes.
books_per_vibeNoBooks to include per vibe (default 10, max 50).

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that each vibe embeds its books (relevant to books_per_vibe), but it says nothing about read-only safety, rate limits, or pagination behavior. It adds some shape-of-result context beyond the schema without fully covering 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?

Two tight sentences, zero waste, with the resource definition front-loaded so an agent grasps the tool in one pass.

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?

No output schema exists, so the description rightly notes the return shape ('each vibe includes its books'). Combined with fully covered parameters, this is adequate for a simple read-only list tool, though it could say more about default featured filtering and result volume.

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%, so limit, offset, featured, and books_per_vibe are all already documented with defaults and maxes. The description adds nothing beyond the schema, which is the baseline-3 case; 'Each vibe includes its books' loosely relates to books_per_vibe but adds no syntax or semantics.

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?

States a clear verb ('List') and a specific resource ('Hardcover vibes'), and defines the domain term as curated, themed recommendation collections with a concrete example. It doesn't explicitly contrast with siblings like get_list or get_trending_books, so it falls short of a 5, but the resource is unambiguous.

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?

No guidance on when to use this versus alternatives such as get_list or get_trending_books, and no prerequisites or exclusions stated. Use is only implied by the 'List' verb; the agent must infer the browsing/recommendation context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meA

Get authenticated user info (id, username, name, books count).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
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. It correctly indicates a read operation ('Get') and implies authentication requirements via 'authenticated user info', but does not disclose error handling, rate limits, or what happens if unauthenticated.

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, concise sentence that front-loads the essential information: action, resource, and key returned fields. No extraneous words.

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?

Given the tool has no parameters, no output schema, and is a straightforward self-info retrieval, the description provides sufficient context. It covers the main use case and returned fields, though it lacks details on error scenarios or response format.

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?

There are zero parameters, and the schema coverage is 100%. The description adds value by specifying the exact fields returned, which compensates for the lack of parameter documentation.

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 'Get' and the resource 'authenticated user info', listing specific fields (id, username, name, books count). It distinguishes itself from siblings that target other entities like books, authors, or lists.

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 implies it should be used to retrieve current user profile details, but does not explicitly state when to use or not use it, nor mention alternatives. Given the simplicity of the tool, the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_book_from_listB

Remove a book from a list. Use id or list_id + book_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNolist_book ID. If unknown, use list_id + book_id.
book_idNoBook ID (use with list_id to find list_book).
list_idNoList ID (use with book_id to find list_book).

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the burden of behavioral disclosure. It only states the removal action but does not mention side effects, required permissions, error cases, or what happens to the book (e.g., it remains in the library). This is insufficient 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?

The description is two short sentences with no unnecessary words. Every sentence provides essential information, making it highly concise and well-structured.

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 no output schema and the tool's action (deleting an association), the description is incomplete. It lacks details on permissions, what happens to the book itself, and error handling (e.g., if the list_book doesn't exist).

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 coverage is 100%, providing baseline 3. The description adds value by explaining the alternative identification methods ('Use id or list_id + book_id'), clarifying how the parameters relate. This goes beyond the schema.

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 action (remove) and the resource (book from a list). However, it does not explicitly differentiate from siblings like delete_list or add_book_to_list, which would enhance clarity.

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 provides parameter usage guidance ('Use id or list_id + book_id') but no context on when to use this tool versus alternatives like delete_list or remove_book_from_list's inverse. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_booksC

Search Hardcover by title, author, or ISBN. Supports multiple entity types: books (default), authors, series, lists, users, publishers, characters, and prompts.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1).
sortNoTypesense sort expression, e.g. 'rating:desc' or 'users_count:desc' for most popular first.
queryYesSearch query (title, author name, ISBN, etc.).
per_pageNoResults per page (default 10, max 25).
filter_byNoTypesense filter expression, e.g. 'release_year:>2020' or 'release_year:[2020..2024]'.
query_typeNoEntity type to search (default: 'Book').

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses little: no return format, no pagination behavior (page/per_page live only in the schema), no ranking or rate-limit notes. The one behavioral claim, multi-entity support, largely repeats the enum already present in the schema.

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?

Two tight sentences with the core capability front-loaded and the entity-type scope second. Nothing is padded or redundant, though the second sentence is essentially a summary of the query_type enum.

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?

With no annotations and no output schema, the description should do more to explain what a search returns and how results differ per entity type. Parameter documentation is covered by the schema, but the absence of any behavioral or result-shape context leaves a moderate gap for a 6-parameter search tool.

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%, so the schema already documents query, page, per_page, sort, filter_by, and the query_type enum. The description only restates the query target (title/author/ISBN) and the entity types, adding no syntax or format detail beyond the schema, so the baseline of 3 applies.

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?

States a specific verb and resource with scope: searching Hardcover by title, author, or ISBN. It also names the supported entity types, so the agent can distinguish a free-text search from the get_* siblings that fetch a single entity. It stops short of explicitly contrasting itself with those getters.

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?

No when-to-use or when-not-to-use guidance is given. It never says to prefer this over get_book/get_author when you have an ID rather than a query string, nor does it mention any prerequisites. The entity-type list hints at scope but is not framed as usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_edition_ownedA

Mark an edition as owned or not owned. Use get_edition to find the edition ID first.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownedYestrue to mark as owned, false to un-own.
edition_idYesEdition ID (from get_edition).

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It indicates a mutable action (to set ownership), but lacks details on effects (e.g., overwrites previous status, permissions required, confirmation messages). For a simple boolean toggle, this may be sufficient but is minimal.

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?

Two concise sentences: first states the main action, second gives a clear prerequisite. No redundant information; 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?

Given no output schema, the description does not explain return values, but for a simple mutation tool with two well-described parameters, the provided information is largely sufficient to use it correctly. Could be improved by noting what the tool returns or confirms.

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 well-described. The description adds little beyond the schema: it restates the ownership marking and prerequisite. Baseline of 3 is appropriate as schema already explains parameters.

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?

Clearly states the action 'mark an edition as owned or not owned' and identifies the resource (edition). Additionally, provides a prerequisite (use get_edition to find edition ID), which helps distinguish it from sibling tools like get_owned_books.

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?

Explicitly instructs to use get_edition first to find the edition ID, providing clear context for when to use the tool. However, it does not mention when not to use it or compare with other ownership-related sibling tools like set_user_book.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_reading_goalB

Create or update a reading goal with target, metric, dates, and optional description/privacy.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesTarget count to reach by end_date.
metricYesGoal metric: 'book' or 'page'.
end_dateYesEnd date (ISO 8601, e.g. '2026-12-31').
start_dateYesStart date (ISO 8601, e.g. '2026-01-01').
descriptionNoOptional goal description.
privacy_setting_idNoOptional privacy setting ID.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It indicates a mutation ('create or update') but fails to explain whether it overwrites existing goals, idempotency, required permissions, or side effects. This is insufficient for a write operation.

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 that front-loads the action and resource. However, it may be slightly too brief given the tool's complexity. Still, no wasted words.

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?

With 6 parameters, no output schema, and no annotations, the description should provide more context about return values, error handling, and update semantics. It currently lacks essential behavioral details for a mutation tool.

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?

Input schema coverage is 100% with each parameter described. The description adds a high-level summary ('target, metric, dates, and optional description/privacy') but does not provide additional meaning beyond the schema. Baseline score of 3 is appropriate.

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 ('Create or update'), the resource ('reading goal'), and the key parameters (target, metric, dates, optional description/privacy). It effectively distinguishes from sibling tools that deal with books, lists, journals, etc., which are mentioned in the context.

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 does not provide any guidance on when to use this tool versus alternatives like 'get_reading_goal' or other mutation tools. It omits when to create vs. update, or any prerequisites or exclusions. No sibling differentiation is offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_user_bookA

Set a book's status, rating, review, privacy, and private notes. Preserves unspecified fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
ratingNoRating (e.g. 4.0, 3.5). Omit to leave unchanged.
statusNoStatus name (e.g. 'Read') or numeric ID (1-5).
book_idYesHardcover book ID.
privacyNoPrivacy setting: 'Public', 'Followers', or 'Private' (or numeric ID 1/2/3).
edition_idNoEdition ID (from get_edition). Sets which edition you're reading.
review_rawNoPlain-text review content (converted to Slate format).
reviewed_atNoISO date of the review (e.g. '2025-06-01').
private_notesNoPrivate notes visible only to you.
review_has_spoilersNoWhether the review contains spoilers.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description reveals that unspecified fields are preserved (a partial update hint), but it omits prerequisite details (e.g., book must exist in user's library) and potential side effects (e.g., overwriting existing data). The description is adequate but not thorough.

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 consists of two short sentences (14 words) that front-load the main purpose. Every word is necessary; there is no fluff.

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?

Given 9 parameters, no output schema, and no annotations, the description is minimal. It does not cover return values, error conditions, or prerequisites like book ownership. However, the schema handles parameter details, so it reaches a minimally acceptable completeness.

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 coverage is 100%, so the baseline is 3. The description adds 'Preserves unspecified fields' as behavioral context for the many optional parameters, but does not explain individual parameter semantics beyond what the schema provides.

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 verb 'Set' and the resource 'book's status, rating, review, privacy, and private notes', making its specific action evident. It distinguishes from siblings like add_user_book_read (new read), delete_user_book (deletion), and get_user_book (retrieval).

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 mentions 'Preserves unspecified fields', which implies partial updates, but does not explicitly contrast with siblings like add_user_book_read (adds a new read) or delete_user_book. No when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unfollow_userB

Unfollow a Hardcover user by user_id or username.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoHardcover user ID to unfollow.
usernameNoUsername to unfollow (resolved to an ID).

TDQS

B3.3/5.0
Behavior2/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 says nothing about whether unfollowing a non-followed user errors out, whether the operation is idempotent, what permissions or authentication are needed, or what the response contains. For a mutation tool with zero annotation coverage this is a real gap.

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?

A single front-loaded sentence with no filler; the verb and resource appear first and the accepted inputs follow. Nothing is wasted.

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?

Adequate for a simple two-parameter mutation with a fully documented schema, but with no annotations and no output schema the description should at least state idempotency/error behavior and whether auth is required. An agent can call it, but cannot predict edge-case outcomes.

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 coverage is 100%, so the schema already documents both parameters including the 'resolved to an ID' detail for username. The description adds only the OR relationship between the two parameters, which is the baseline expectation when the schema does the heavy lifting.

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?

States a specific verb ('Unfollow') and resource ('a Hardcover user') plus the two accepted identifiers, which is enough for an agent to distinguish it from read-only siblings. It does not explicitly name follow_user as the inverse, so sibling differentiation is only implied by the name.

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 'by user_id or username' hints at the either/or input choice, but there is no guidance on when to prefer one identifier, no prerequisites, and no mention of follow_user as the alternative operation. Usage is inferable but not taught.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_listA

Update an existing Hardcover list's name, description, or privacy.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHardcover list ID.
nameNoNew name.
privacyNoPrivacy: 'public', 'followers_only', 'private'.
descriptionNoNew description.

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses the update behavior but lacks additional behavioral context such as error states, permissions, or side effects. No annotations are provided, so the description carries full burden but is minimal.

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 concise sentence, front-loaded with the key action and resource. No 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 description is minimal and adequate for a simple update, but lacks details on error handling, return behavior, or idempotency. Given no annotations or output schema, more context would improve completeness.

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 coverage is 100% with clear parameter descriptions. The description's mention of 'name, description, or privacy' adds no new meaning beyond the schema, so baseline 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 identifies the tool as updating an existing Hardcover list, naming specific fields (name, description, privacy). It differentiates from siblings like create_list, delete_list, and get_list by using 'update'.

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 usage for modifying a list's fields but offers no explicit guidance on when to use this tool versus alternatives. No context on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_user_book_readA

Update a reading date or progress entry. Preserves unspecified fields. Supports page progress and audiobook time tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe user_book_read ID to update.
edition_idNoEdition ID (required for audiobook progress tracking).
started_atNoDate started reading (ISO 8601).
finished_atNoDate finished reading (ISO 8601).
progress_pagesNoPages read so far.
progress_secondsNoSeconds of audiobook listened to so far.

TDQS

A4.2/5.0
Behavior4/5

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

Description discloses key behavioral trait: 'Preserves unspecified fields' indicating partial update semantics. Also reveals support for page and audiobook progress tracking. No annotations present, so description carries full burden; it adequately covers mutation effects but lacks details on side effects or authorization.

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?

Three sentences, each purposeful: first states action, second adds behavioral constraint, third lists capabilities. No redundant or filler content; front-loaded with core purpose.

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 moderate-complexity update tool with 6 parameters and no output schema, description covers purpose, partial update, and supported progress types. Could mention idempotency or return value expectations, but overall sufficient for competent usage.

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 covers all parameters (100%) so baseline is 3. Description adds value by summarizing partial update behavior and progress tracking context, which helps interpret optional parameters. Does not add new detail beyond schema for individual parameters, but high-level semantics are clarified.

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?

Description clearly states verb 'Update' and resource 'reading date or progress entry'. Distinguishes from sibling tools like 'add_user_book_read' or 'delete_user_book_read' by focusing on modification. Explicitly mentions preservation of unspecified fields and support for two progress types, adding specificity.

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?

Description implies use for modifying existing entries but does not explicitly state when to use versus alternatives like creating or deleting. No 'when not to use' or comparison to other update tools provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.7.1
    • Addedfollow_user
    • Addedget_activity_feed
    • Addedget_trending_books
    • Addedget_user
    • Addedget_vibes
    • Changedsearch_books2 fields changed
      • addedInput schema / properties / filter_by
        Added value: +{
        +  "description": "Typesense filter expression, e.g. 'release_year:>2020' or 'release_year:[2020..2024]'.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Typesense sort expression, e.g. 'rating:desc' or 'users_count:desc' for most popular first.",
        +  "type": "string"
        +}
    • Addedunfollow_user
  2. 2 tool updatesv0.6.0
    • Addedanswer_prompt
    • Addedget_prompts
  3. 4 tool updatesv0.5.0
    • Changedadd_user_book_read1 field changed
      • addedInput schema / properties / edition_id
        Added value: +{
        +  "description": "Edition ID (required for audiobook progress tracking).",
        +  "type": "integer"
        +}
    • Addedget_characters
    • Addedget_publisher
    • Changedupdate_user_book_read1 field changed
      • addedInput schema / properties / edition_id
        Added value: +{
        +  "description": "Edition ID (required for audiobook progress tracking).",
        +  "type": "integer"
        +}
  4. 29 tool updatesv0.4.0
    • First observedadd_book_to_list
    • First observedadd_journal_entry
    • First observedadd_user_book_read
    • First observedcreate_list
    • First observeddelete_journal_entry
    • First observeddelete_list
    • First observeddelete_user_book
    • First observeddelete_user_book_read
    • First observedget_author
    • First observedget_book
    • First observedget_edition
    • First observedget_list
    • First observedget_my_lists
    • First observedget_owned_books
    • First observedget_reading_goal
    • First observedget_reading_journal
    • First observedget_reading_stats
    • First observedget_series
    • First observedget_user_book
    • First observedget_user_library
    • First observedget_user_reviews
    • First observedme
    • First observedremove_book_from_list
    • First observedsearch_books
    • First observedset_edition_owned
    • First observedset_reading_goal
    • First observedset_user_book
    • First observedupdate_list
    • First observedupdate_user_book_read

TDQS

B3.4/5.0

Scored across 39 tools

Disambiguation4/5

Most tools have clearly distinct resource/action purposes, but there is some overlap among read surfaces: get_activity_feed, get_reading_journal, and get_user_reviews all expose review/activity data. Similarly, search_books can return authors, series, lists, and users that also have dedicated getter tools, though descriptions generally clarify the intended use.

Naming Consistency4/5

The set mostly follows a predictable snake_case verb_noun pattern with clear prefixes like get_, set_, add_, update_, delete_, and create_. Minor deviations exist, such as the standalone 'me', 'get_reading_journal' versus 'add_journal_entry'/'delete_journal_entry', and 'get_my_lists' versus other get_user_* tools.

Tool Count2/5

With 39 tools, the server is heavy relative to typical MCP tool sets and exceeds the 25+ threshold that usually signals over-expansion. While Hardcover is a broad domain, several tools could likely be consolidated or grouped to reduce selection burden.

Completeness4/5

Coverage is broad: books, editions, authors, publishers, users, lists, journal entries, reading goals, owned books, prompts, and social follow actions are all represented. Minor gaps remain, such as updating journal entries, deleting reading goals, managing followers/following lists, or removing prompt answers.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to help users manage their reading experience by searching books, tracking reading progress, managing bookmarks, and generating personalized recommendations and summaries.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI assistants with direct access to your ebook library, enabling listing books, reading chapters, and searching across books via the Model Context Protocol.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with BookLore self-hosted libraries, allowing natural language queries to search books, manage reading status, ratings, series, authors, and highlights.
    7
    1
    -