books-agent

Open Library book data API - search, lookup, authors, subjects, and covers. Real-time access to millions of books.

  • 6 Entrypoints
  • v1.0.0 Version
  • Enabled Payments
books-agent-production.up.railway.app

Entrypoints

Explore the capabilities exposed by this agent. Invoke with JSON, stream responses when available, and inspect pricing where monetization applies.

overview

Invoke

Free overview - API status and sample search. Try before you buy.

Pricing Free
Network base
Invoke Endpoint POST /entrypoints/overview/invoke
Input Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Invoke with curl
curl -s -X POST \
  'https://books-agent-production.up.railway.app/entrypoints/overview/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {}
    }
  '

lookup

Invoke

Look up a book by ISBN-10, ISBN-13, or Open Library ID (e.g., OL7353617M)

Pricing Free
Network base
Invoke Endpoint POST /entrypoints/lookup/invoke
Input Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "description": "ISBN-10, ISBN-13, or Open Library ID"
    },
    "type": {
      "default": "isbn",
      "type": "string",
      "enum": [
        "isbn",
        "olid"
      ]
    }
  },
  "required": [
    "identifier",
    "type"
  ],
  "additionalProperties": false
}
Invoke with curl
curl -s -X POST \
  'https://books-agent-production.up.railway.app/entrypoints/lookup/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {
        "identifier": "<ISBN-10, ISBN-13, or Open Library ID>",
        "type": "isbn"
      }
    }
  '

search

Invoke

Search books by title, author, subject, or general query

Pricing Free
Network base
Invoke Endpoint POST /entrypoints/search/invoke
Input Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query"
    },
    "field": {
      "default": "all",
      "type": "string",
      "enum": [
        "all",
        "title",
        "author",
        "subject"
      ]
    },
    "limit": {
      "default": 10,
      "type": "number",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query",
    "field",
    "limit"
  ],
  "additionalProperties": false
}
Invoke with curl
curl -s -X POST \
  'https://books-agent-production.up.railway.app/entrypoints/search/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {
        "query": "<Search query>",
        "field": "all",
        "limit": 1
      }
    }
  '

author

Invoke

Get author information and their works by Open Library author ID or search by name

Pricing Free
Network base
Invoke Endpoint POST /entrypoints/author/invoke
Input Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Author name to search, or Open Library author ID (e.g., OL26320A)"
    },
    "includeWorks": {
      "default": true,
      "type": "boolean"
    },
    "worksLimit": {
      "default": 10,
      "type": "number",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query",
    "includeWorks",
    "worksLimit"
  ],
  "additionalProperties": false
}
Invoke with curl
curl -s -X POST \
  'https://books-agent-production.up.railway.app/entrypoints/author/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {
        "query": "<Author name to search, or Open Library author ID (e.g., OL26320A)>",
        "includeWorks": true,
        "worksLimit": 1
      }
    }
  '

subjects

Invoke

Get books by subject/topic (e.g., "machine_learning", "science_fiction")

Pricing Free
Network base
Invoke Endpoint POST /entrypoints/subjects/invoke
Input Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "subject": {
      "type": "string",
      "description": "Subject name (use underscores for spaces, e.g., \"artificial_intelligence\")"
    },
    "limit": {
      "default": 10,
      "type": "number",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "subject",
    "limit"
  ],
  "additionalProperties": false
}
Invoke with curl
curl -s -X POST \
  'https://books-agent-production.up.railway.app/entrypoints/subjects/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {
        "subject": "<Subject name (use underscores for spaces, e.g., \"artificial_intelligence\")>",
        "limit": 1
      }
    }
  '

covers

Invoke

Get book cover URLs by ISBN, Open Library ID, or cover ID. Returns multiple sizes.

Pricing Free
Network base
Invoke Endpoint POST /entrypoints/covers/invoke
Input Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "description": "ISBN, Open Library ID, or cover ID"
    },
    "type": {
      "default": "isbn",
      "type": "string",
      "enum": [
        "isbn",
        "olid",
        "id"
      ]
    }
  },
  "required": [
    "identifier",
    "type"
  ],
  "additionalProperties": false
}
Invoke with curl
curl -s -X POST \
  'https://books-agent-production.up.railway.app/entrypoints/covers/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {
        "identifier": "<ISBN, Open Library ID, or cover ID>",
        "type": "isbn"
      }
    }
  '

Client Example: x402-fetch

Use the x402-fetch helpers to wrap a standard fetch call and automatically attach payments. This script loads configuration from .env, pays the facilitator, and logs both the response body and the decoded payment receipt.

import { config } from "dotenv";
import {
  decodeXPaymentResponse,
  wrapFetchWithPayment,
  createSigner,
  type Hex,
} from "x402-fetch";

config();

const privateKey = process.env.AGENT_WALLET_PRIVATE_KEY as Hex | string;
const agentUrl = process.env.AGENT_URL as string; // e.g. https://agent.example.com
const endpointPath = process.env.ENDPOINT_PATH as string; // e.g. /entrypoints/echo/invoke
const url = `${agentUrl}${endpointPath}`;

if (!agentUrl || !privateKey || !endpointPath) {
  console.error("Missing required environment variables");
  console.error("Required: AGENT_WALLET_PRIVATE_KEY, AGENT_URL, ENDPOINT_PATH");
  process.exit(1);
}

/**
 * Demonstrates paying for a protected resource using x402-fetch.
 *
 * Required environment variables:
 * - AGENT_WALLET_PRIVATE_KEY    Wallet private key for signing payments
 * - AGENT_URL                   Base URL of the agent server
 * - ENDPOINT_PATH               Endpoint path (e.g. /entrypoints/echo/invoke)
 */
async function main(): Promise<void> {
  // const signer = await createSigner("solana-devnet", privateKey); // uncomment for Solana
  const signer = await createSigner("base-sepolia", privateKey);
  const fetchWithPayment = wrapFetchWithPayment(fetch, signer);

  const response = await fetchWithPayment(url, { method: "GET" });
  const body = await response.json();
  console.log(body);

  const paymentResponse = decodeXPaymentResponse(
    response.headers.get("x-payment-response")!
  );
  console.log(paymentResponse);
}

main().catch((error) => {
  console.error(error?.response?.data?.error ?? error);
  process.exit(1);
});

Manifest

Loading…
Fetching agent card…