Skip to main content
Glama

readwise_search_highlights

Search across all highlights using text queries and field-specific filters to find specific content in your Readwise library.

Instructions

Advanced search across all highlights using text queries and field-specific filters. Equivalent to official Readwise MCP search functionality.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textQueryNoMain text to search for across all highlight content (like vector_search_term)
fieldQueriesNoSpecific field searches (like full_text_queries)
bookIdNoFilter results to specific book
limitNoMaximum number of results to return

Implementation Reference

  • The core handler function that executes the tool logic: initializes the Readwise client, maps arguments to search parameters, calls client.searchHighlights(), processes results, and returns formatted JSON.
    export async function handleSearchHighlights(args: any) {
      const client = await initializeClient();
      
      const params = {
        textQuery: args.textQuery,
        fieldQueries: args.fieldQueries,
        bookId: args.bookId,
        limit: args.limit,
      };
      
      const response = await client.searchHighlights(params);
      
      // Strip to essentials
      const minimal = response.data.map(result => ({
        text: result.highlight.text,
        note: result.highlight.note || undefined,
        book: result.book.title,
        author: result.book.author,
        score: result.score
      }));
      
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify(minimal, null, 2),
          },
        ],
      };
    }
  • Tool definition including name, description, and input schema for parameter validation.
    {
      name: 'readwise_search_highlights',
      description: 'Advanced search across all highlights using text queries and field-specific filters. Equivalent to official Readwise MCP search functionality.',
      inputSchema: {
        type: 'object',
        properties: {
          textQuery: {
            type: 'string',
            description: 'Main text to search for across all highlight content (like vector_search_term)',
          },
          fieldQueries: {
            type: 'array',
            items: {
              type: 'object',
              properties: {
                field: {
                  type: 'string',
                  enum: ['document_title', 'document_author', 'highlight_text', 'highlight_note', 'highlight_tags'],
                  description: 'Field to search in',
                },
                searchTerm: {
                  type: 'string',
                  description: 'Term to search for in the specified field',
                },
              },
              required: ['field', 'searchTerm'],
            },
            description: 'Specific field searches (like full_text_queries)',
          },
          bookId: {
            type: 'number',
            description: 'Filter results to specific book',
          },
          limit: {
            type: 'number',
            description: 'Maximum number of results to return',
          },
        },
        additionalProperties: false,
      },
    },
  • Dispatches calls to the 'readwise_search_highlights' tool to the appropriate handler function via switch case.
    case 'readwise_search_highlights':
      return handleSearchHighlights(args);
  • src/index.ts:24-26 (registration)
    Registers the full tools list (including readwise_search_highlights schema) for MCP ListTools requests.
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      return { tools };
    });
  • src/index.ts:28-33 (registration)
    Sets up the MCP CallTool handler that routes to handleToolCall based on tool name.
    server.setRequestHandler(CallToolRequestSchema, async (request) => {
      const { name, arguments: args } = request.params;
    
      try {
        return await handleToolCall(name, args);
      } catch (error) {

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/arnaldo-delisio/readwise-mcp-enhanced'

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