books_by_topic
Pack: gutendex · Endpoint: https://gateway.pipeworx.io/gutendex/mcp
No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/books_by_topic for the schema, then POST the same URL with its arguments for the data.
Browse books by subject or topic (e.g., ‘science fiction’, ‘philosophy’). Returns matching titles, authors, and IDs.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
topic | string | yes | Topic 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
| Field | Type | Description |
|---|---|---|
count | number | Total number of books matching the topic |
topic | string | Topic/subject filter used |
books | array | List 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.