Skip to content

HTTP Client ​

The EpsteinClient class is a thin async wrapper around the Epstein Exposed REST API. You can use it standalone, outside of the MCP server context.

Import ​

python
from src.epstein_client import EpsteinClient

Usage ​

python
async with EpsteinClient() as client:
    results = await client.search_persons("Doe")
    doc = await client.get_document("doc-123")

Manual lifecycle ​

python
client = EpsteinClient()
try:
    results = await client.search_persons("Smith")
finally:
    await client.close()

Constructor ​

python
EpsteinClient(base_url: str = BASE_URL)
ParameterTypeDefaultDescription
base_urlstrEPSTEIN_API_BASE_URL env or fallbackAPI base URL

Methods ​

search_persons(name, page=1, per_page=50) ​

Search for persons by name.

Returns: dict[str, Any]


get_person(person_id) ​

Fetch a single person by ID.

Returns: dict[str, Any]

Raises: httpx.HTTPStatusError if not found.


list_persons(page=1, per_page=100) ​

List all persons with pagination.

Returns: dict[str, Any]


get_document(doc_id) ​

Retrieve a document by ID.

Returns: dict[str, Any]

Raises: httpx.HTTPStatusError if not found.


list_documents(page=1, per_page=50, category=None) ​

List documents with optional category filter.

Returns: dict[str, Any]


get_person_mentions(name, page=1, per_page=50) ​

Get document mentions for a person. Falls back to search_persons if the /mentions endpoint is unavailable.

Returns: dict[str, Any]


close() ​

Close the underlying HTTP transport. Called automatically when using async with.

Released under the MIT License.