books_by_topic

Pack: gutendex · Endpoint: https://gateway.pipeworx.io/gutendex/mcp

Browse books by subject or topic (e.g., ‘science fiction’, ‘philosophy’). Returns matching titles, authors, and IDs.

Parameters

NameTypeRequiredDescription
topicstringyesTopic or subject keyword to filter books by (e.g. “science”, “love”, “history”).

Example call

Arguments

{
  "topic": "science fiction"
}

curl

curl -X POST https://gateway.pipeworx.io/gutendex/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"books_by_topic","arguments":{"topic":"science fiction"}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('books_by_topic', {
  "topic": "science fiction"
});

More examples

{
  "topic": "philosophy"
}

Response shape

Always returns: count, topic, books

FieldTypeDescription
countnumberTotal number of books matching the topic
topicstringTopic/subject filter used
booksarrayList of books matching the topic
Full JSON Schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "Total number of books matching the topic"
    },
    "topic": {
      "type": "string",
      "description": "Topic/subject filter used"
    },
    "books": {
      "type": "array",
      "description": "List of books matching the topic",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Project Gutenberg book ID"
          },
          "title": {
            "type": "string",
            "description": "Book title"
          },
          "authors": {
            "type": "array",
            "description": "List of book authors",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Author name"
                },
                "birth_year": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Author birth year or null"
                },
                "death_year": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Author death year or null"
                }
              },
              "required": [
                "name",
                "birth_year",
                "death_year"
              ]
            }
          },
          "languages": {
            "type": "array",
            "description": "Languages the book is available in",
            "items": {
              "type": "string"
            }
          },
          "subjects": {
            "type": "array",
            "description": "Subject tags for the book",
            "items": {
              "type": "string"
            }
          },
          "download_count": {
            "type": "number",
            "description": "Number of downloads"
          },
          "formats": {
            "type": "object",
            "description": "Available download formats and URLs",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "title",
          "authors",
          "languages",
          "subjects",
          "download_count",
          "formats"
        ]
      }
    }
  },
  "required": [
    "count",
    "topic",
    "books"
  ]
}

Connect

Add this to your MCP client config, or use one-click install buttons:

{
  "mcpServers": {
    "gutendex": {
      "url": "https://gateway.pipeworx.io/gutendex/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build May 9, 2026