Skip to main content
Glama
edricgsh

Readwise Reader MCP Server

by edricgsh

Readwise Reader MCP Server

A Model Context Protocol (MCP) server for the Readwise Reader API, built with TypeScript and the official Claude SDK.

Features

  • Secure Authentication: Uses environment variables for token storage

  • Document Management: Save, list, update, and delete documents with complete metadata

  • Tag Management: List and filter by tags

  • Rich Filtering: Filter documents by location, category, tags, and more

  • Pagination Support: Handle large document collections

  • LLM-Friendly Content: HTML content automatically converted to clean text using r.jina.ai

  • Complete Data Access: Returns full document information including content, metadata, and timestamps

Related MCP server: Dynalist MCP Server

API Documentation

For detailed information about the Readwise Reader API endpoints, parameters, and examples, please refer to the official API documentation:

📖 Readwise Reader API Documentation

This MCP server implements all the core endpoints described in the official documentation.

Installation

npm install
npm run build

Configuration

With Claude Desktop

  1. Build the MCP server:

    npm install
    npm run build
  2. Get your Readwise access token from: https://readwise.io/access_token

  3. Add the server to your Claude Desktop configuration. Open your Claude Desktop settings and add this to your MCP servers configuration:

    macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

    {
      "mcpServers": {
        "readwise-reader": {
          "command": "node",
          "args": ["/path/to/your/reader_readwise_mcp/dist/index.js"],
          "env": {
            "READWISE_TOKEN": "your_readwise_access_token_here"
          }
        }
      }
    }

    Replace:

    • /path/to/your/reader_readwise_mcp with the actual path to this project directory

    • your_readwise_access_token_here with your actual Readwise access token

  4. Restart Claude Desktop

Available Tools

readwise_save_document

Save a document (URL or HTML content) to Readwise Reader.

Parameters:

  • url (required): URL of the document to save

  • html (optional): HTML content of the document

  • tags (optional): Array of tags to add

  • location (optional): Location to save (new, later, shortlist, archive, feed)

  • category (optional): Document category (article, book, tweet, pdf, email, youtube, podcast)

readwise_list_documents

List documents from Readwise Reader with optional filtering. Returns complete document information including metadata and LLM-friendly text content.

Parameters:

  • id (optional): Filter by specific document ID

  • updatedAfter (optional): Filter documents updated after this date (ISO 8601)

  • location (optional): Filter by document location

  • category (optional): Filter by document category

  • tag (optional): Filter by tag name

  • pageCursor (optional): Page cursor for pagination

  • withHtmlContent (optional): ⚠️ PERFORMANCE WARNING: Include HTML content in the response. This significantly slows down the API. Only use when explicitly requested by the user or when raw HTML is specifically needed for the task.

  • withFullContent (optional): ⚠️ PERFORMANCE WARNING: Include full converted text content in the response. This significantly slows down the API as it fetches and processes each document's content. Only use when explicitly requested by the user or when document content is specifically needed for analysis/reading. Default: false for performance.

Returns: Complete document objects with all available fields:

  • id, title, author, url, source_url, summary

  • published_date, image_url, location, category

  • tags, created_at, updated_at

  • content: LLM-friendly text content (converted from source_url or url via r.jina.ai)

readwise_update_document

Update a document in Readwise Reader.

Parameters:

  • id (required): Document ID to update

  • title (optional): New title

  • author (optional): New author

  • summary (optional): New summary

  • published_date (optional): New published date (ISO 8601)

  • image_url (optional): New image URL

  • location (optional): New location

  • category (optional): New category

readwise_delete_document

Delete a document from Readwise Reader.

Parameters:

  • id (required): Document ID to delete

readwise_list_tags

List all tags from Readwise Reader.

Parameters: None

Search documents in Readwise Reader by topic using regex matching on title, summary, notes, and tags.

Parameters:

  • searchTerms (required): Array of search terms to match against document content (case-insensitive regex matching)

Returns: Search results with matching documents including:

  • Search terms used

  • Total number of matches

  • Complete document objects with all available metadata (same fields as readwise_list_documents)

Authentication

The server requires a Readwise access token to be provided via the READWISE_TOKEN environment variable. This token is used to authenticate all API requests to Readwise Reader.

Security Note: The token is stored in your MCP configuration and never exposed through Claude or the tools interface.

Rate Limits

  • Default: 20 requests/minute

  • Document CREATE/UPDATE: 50 requests/minute

  • 429 responses include "Retry-After" header

License

MIT

Available Tools

6 tools
readwise_delete_documentC

Delete a document from Readwise Reader

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDocument ID to delete

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Delete' implies a destructive mutation, the description doesn't specify whether this is permanent, reversible, requires specific permissions, or has rate limits. It provides minimal context beyond the basic action.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple deletion operation and front-loads the essential information.

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?

For a destructive mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after deletion (success confirmation, error handling), whether the action is permanent, or any authentication requirements. Given the complexity and lack of structured data, more context is needed.

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 the single parameter 'id' clearly documented in the schema as 'Document ID to delete'. The description doesn't add any additional meaning about the parameter beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Delete') and resource ('a document from Readwise Reader'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'readwise_update_document' or 'readwise_save_document' in terms of when to choose deletion over other document operations.

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 no guidance on when to use this tool versus alternatives. With siblings like 'readwise_update_document' and 'readwise_save_document', there's no indication of when deletion is appropriate versus modification or creation, nor any mention of prerequisites or consequences.

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

readwise_list_documentsC

List documents from Readwise Reader with optional filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoFilter by specific document ID
updatedAfterNoFilter documents updated after this date (ISO 8601)
addedAfterNoFilter documents added after this date (ISO 8601). Note: This will fetch all documents first and then filter client-side.
locationNoFilter by document location
categoryNoFilter by document category
tagNoFilter by tag name
pageCursorNoPage cursor for pagination
withHtmlContentNo⚠️ PERFORMANCE WARNING: Include HTML content in the response. This significantly slows down the API. Only use when explicitly requested by the user or when raw HTML is specifically needed for the task.
withFullContentNo⚠️ PERFORMANCE WARNING: Include full converted text content in the response. This significantly slows down the API as it fetches and processes each document's content. Only use when explicitly requested by the user or when document content is specifically needed for analysis/reading. Default: false for performance.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'optional filtering' but fails to describe key behaviors such as pagination handling, rate limits, authentication requirements, or what the response format looks like. This is inadequate for a tool with 9 parameters and no output schema.

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, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the complexity (9 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the return format, pagination behavior, or error handling, which are critical for an agent to use this tool effectively. The schema handles parameters well, but overall context is lacking.

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 has 100% description coverage, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond 'optional filtering', which is implied by the schema. This meets the baseline of 3 when schema coverage is high.

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 ('List') and resource ('documents from Readwise Reader'), making the purpose understandable. However, it doesn't differentiate this tool from sibling tools like 'readwise_list_tags' or 'readwise_topic_search' beyond mentioning documents specifically, which is why it doesn't reach a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'readwise_topic_search' or 'readwise_save_document'. It mentions optional filtering but doesn't specify scenarios or exclusions, leaving the agent without context for tool selection among siblings.

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

readwise_list_tagsB

List all tags from Readwise Reader

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as whether this is a read-only operation, if it requires authentication, rate limits, pagination, or what the return format looks like. This is inadequate for a tool with zero annotation coverage.

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, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., tag list format), behavioral constraints, or how it fits with sibling tools. For a tool in this context, more information is needed to guide proper 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?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't mention parameters, earning a high baseline score. However, it doesn't add any semantic context beyond the schema, preventing a perfect score.

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 ('List all tags') and resource ('from Readwise Reader'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings like 'readwise_list_documents' or 'readwise_topic_search' beyond the resource type, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention use cases, prerequisites, or how it differs from sibling tools like 'readwise_list_documents' or 'readwise_topic_search', leaving the agent with no context for selection.

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

readwise_save_documentC

Save a document (URL or HTML content) to Readwise Reader

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the document to save
htmlNoHTML content of the document (optional)
tagsNoTags to add to the document
locationNoLocation to save the document (default: new)
categoryNoCategory of the document (auto-detected if not specified)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool saves documents but doesn't mention authentication requirements, rate limits, error conditions, or what happens on success (e.g., whether it returns a document ID). For a write operation with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a tool with clear functionality and doesn't waste space on redundant information already available in the schema.

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?

For a write operation with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what happens after saving (success indicators, returned data), doesn't mention authentication or error handling, and provides minimal guidance despite rich parameter schema. The description should do more to compensate for the lack of structured metadata.

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 all parameters are documented in the schema. The description adds minimal value beyond the schema by mentioning URL or HTML content, but doesn't provide additional context about parameter interactions (e.g., that html is optional and overrides url if both provided) or practical usage examples. Baseline 3 is appropriate when the schema does most of the work.

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 ('Save') and resource ('a document to Readwise Reader'), specifying it accepts URL or HTML content. It distinguishes from siblings like delete_document and list_documents by focusing on creation rather than modification or retrieval. However, it doesn't explicitly differentiate from update_document which might also involve saving changes.

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 no guidance on when to use this tool versus alternatives like update_document or list_documents. It mentions what the tool does but offers no context about prerequisites, typical use cases, or when other tools might be more appropriate given the sibling set.

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

readwise_update_documentC

Update a document in Readwise Reader

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDocument ID to update
titleNoNew title for the document
authorNoNew author for the document
summaryNoNew summary for the document
published_dateNoNew published date (ISO 8601)
image_urlNoNew image URL for the document
locationNoNew location for the document
categoryNoNew category for the document

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Update' implies mutation, it doesn't specify permission requirements, whether changes are reversible, rate limits, or what happens to fields not mentioned. This leaves significant gaps for a mutation tool with 8 parameters.

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, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information.

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?

For a mutation tool with 8 parameters and no annotations or output schema, the description is inadequate. It doesn't address behavioral aspects like permissions, side effects, or response format, leaving the agent with insufficient context for safe and 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 schema already documents all 8 parameters thoroughly with descriptions and enums. The description adds no additional parameter information beyond what's in the schema, meeting the baseline for high schema coverage.

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 ('Update') and resource ('a document in Readwise Reader'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'readwise_save_document' which might have overlapping functionality, preventing a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when-not-to-use scenarios, or how it differs from sibling tools like 'readwise_save_document' or 'readwise_delete_document'.

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

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: list_documents, save_document, update_document, delete_document, list_tags, and topic_search. There is no overlap in functionality, and the descriptions clearly differentiate the operations on documents versus tags versus search.

Naming Consistency5/5

All tools follow a consistent 'readwise_verb_noun' pattern with snake_case throughout. The verbs (list, save, update, delete, search) are standard and predictable, making the tool set easy to navigate and understand.

Tool Count5/5

With 6 tools, this server is well-scoped for managing documents in Readwise Reader. It covers core CRUD operations (create/save, read/list, update, delete) plus additional utilities (list_tags, topic_search), which is appropriate for the domain without being overwhelming or insufficient.

Completeness5/5

The tool set provides complete CRUD coverage for documents (save, list, update, delete) and includes essential extras like tag management and topic-based search. There are no obvious gaps for typical document management workflows in Readwise Reader.

Maintenance

ActivityNo data
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables access and interaction with your Readwise library, allowing you to retrieve and search highlights, books, and documents through natural language queries when using Claude or other MCP-compatible assistants.
    16
    25
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude and other MCP clients to manage Instapaper accounts by reading, saving, organizing, and analyzing articles through natural language. It supports comprehensive bookmark management, bulk operations, folder organization, and full-text content retrieval for research and synthesis.
    20
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Exposes Readwise and Reader operations as MCP tools, enabling AI agents to save URLs, search documents, retrieve full content and highlights, and manage tags and locations.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/edricgsh/Readwise-Reader-MCP'

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