Skip to main content
Glama
Zereo0317

Epstein-Files-Plugin

by Zereo0317

Epstein Files Plugin — fragen Sie die DOJ-Veröffentlichung des Epstein Files Transparency Act aus jedem KI-Agenten ab

Python Protocol MCP Tools Databases License

Verwandelt einen Namen, ein Datum, ein Schlagwort, eine EFTA-Seitenzahl oder eine offene Frage — zum E-Mail-Korpus, zu den Fotos, zu den Transkripten oder zum Wissensgraph — in das exakte, zitierfähige, offizielle DOJ-Dokument. Kein manuelles Durchblättern von ~2,8 Millionen Seiten. Kein Kampf mit der bot-blockierten Suche des DOJ.

Arbeitet ausschließlich mit bereits öffentlichen DOJ-Gerichtsakten und einem öffentlichen Volltextspiegel. Entwickelt für Recherche, Faktenprüfung und Quellenangabe — nicht für Re-Identifizierung, Belästigung oder Doxing. Siehe Verantwortungsvolle Nutzung.


Über das Plugin

Das Epstein Files Plugin indexiert und löst Dokumente in der öffentlichen DOJ-Veröffentlichung des Epstein Files Transparency Act (Public Law 119-38, unterzeichnet am 2025-11-19) auf — etwa 1,4 Mio. Dokumente / 2,8–2,9 Mio. Seiten, über 12 DataSets auf justice.gov/epstein veröffentlicht sowie vom Drittanbieter epstein-data.com gespiegelt und als 20 abfragbare Datenbanken indiziert (beide Zahlen am 2026-08-24 live verifiziert; der gesamte erfasste Korpus des DOJ ist mit ~6 Mio. Seiten noch größer — dies ist der bisher veröffentlichte Teil; bitte vor einer Zitierung als vollständig nochmals prüfen).

Verfügbar als:

  • 🧩 ein Claude-Code-Plugin — aus einer Marketplace-Umgebung in zwei Zeilen installiert

  • 🔌 ein MCP-Server (.mcp.json) — derselbe Server, eigenständig — lokales stdio, keine API-Schlüssel, kein Remote-Host, funktioniert mit jedem MCP-kompatiblen Client: Claude Desktop, Cursor, Windsurf oder eine eigene Agenten-Laufzeitumgebung auf Basis des offiziellen mcp-SDKs

  • 💻 eine Python-CLI — python src/efta_researcher.py, kein MCP-Client erforderlich

  • 📦 eine Python-Bibliothek — from efta_core import efta_to_url, get_dataset, direkt importierbar

Warum es nutzen:

  • 🚀 Schneller als die manuelle Suche. Die eigene DOJ-Suche ist für automatisierten/Headless-Zugriff blockiert (Akamai-Bot-Schutz — siehe Verantwortungsvolle Nutzung); dieses Plugin geht direkt von einem Namen, Datum oder Schlagwort in Sekunden zur passenden EFTA-Nummer.

  • 🎯 Direkt zur Quelle, jedes Mal. Jedes Ergebnis löst in die offizielle PDF-URL von justice.gov/epstein auf — Sie prüfen das Originaldokument selbst, niemals eine Paraphrase davon.

  • ✅ Faktengeprüft, nicht sensationsheisch. Das Register der bekannten Dokumente enthält belegte Faktenchecks (EUvsDisinfo, Reuters, Tempo u. a.), sodass eine „Verbindung" für das gekennzeichnet wird, was das Dokument tatsächlich zeigt — und nicht für das, was eine virale Bildunterschrift behauptet.

  • 🧠 Vollständig abfragbar, nicht nur das Postfach. Zwei spezialisierte Tools decken den E-Mail-Korpus ab; fünf generische Tools erreichen alle 20 Datenbanken — Bilder, Transkripte, OCR-Text, Handschrift, Vernehmungsprotokolle, den Wissensgraphen — plus eine read-only SQL-Luke für alles, was die Filter-API nicht ausdrücken kann.

  • 🗺️ Struktur, einmal rekonstruiert. Die 12-DataSet-/EFTA-Nummern-Grenztabelle wurde mit den Offenlegungsseiten des DOJ selbstungen abgeglichen, sodass Sie sie nicht für jede Abfrage neu ableiten müssen.

  • 🔓 Kein Lock-in. Dieselben Abfragen funktionieren von einer CLI, aus einem Python-Import oder jedem MCP-Client.

Related MCP server: aether-developer

Architektur

Zwei Werkzeugebenen: bewusst zweckgebaut (Wrapper über die am häufigsten genutzte Tabelle — schnell, ergonomisch, korrekte Paginierung) und eine generische Introspections-/Abfrage-/SQL-Schicht, die jede andere Datenbank ohne dediziertes Werkzeug pro Tabelle erreicht — die Antwort auf „Kann alles einebgefragt werden?“ und das, was dieses System auch noch funktioniert, wenn sich das Schema von epstein-data.com bis in 2031 weiterentwickelt, ohne neuen Code. Siehe CLAUDE.md für die vollständige Design-Begründung.

flowchart LR
    subgraph Client["Any MCP client"]
        A["Claude Code / Claude Desktop\nCursor · Windsurf · custom agent"]
    end

    subgraph Server["epstein-files-plugin — local stdio, no auth"]
        direction TB
        PB["Purpose-built tools\nefta_search · efta_filter_email\nefta_lookup · efta_known_docs"]
        GEN["Generic tools\nefta_list_databases · efta_list_tables\nefta_describe_table · efta_query_table\nefta_run_sql"]
        LOCAL["Local-only\nefta_get_url — pure computation,\nno network call"]
    end

    subgraph Upstream["Third-party mirror"]
        DS[("epstein-data.com\nDatasette JSON API\n20 databases")]
    end

    DOJ[("justice.gov/epstein\nofficial PDF source")]

    A -- "MCP / stdio\nJSON-RPC" --> Server
    PB --> DS
    GEN --> DS
    LOCAL -.->|"constructs URL,\nno request sent"| DOJ
    DS -.->|"indexes"| DOJ

    style Server fill:#1a2332,stroke:#4b8bbe,color:#e8edf4
    style Upstream fill:#0f1720,stroke:#2dd4a7,color:#e8edf4
    style DOJ fill:#0f1720,stroke:#94a3b8,color:#e8edf4

Ich möchte ...

Ziel

Verwenden Sie diese

Ein Dokument per Name, Datum oder Keyword finden

efta_search / efta_filter_email

Ein Zitat (EFTA00741068) in einen offiziellen DOJ-Link überführen

efta_get_url

Prüfen, ob eine virale Behauptung der Wahrheit entspricht

efta_known_docs → Recherche- & Faktencheck-Position

Bilder, Transkripte, OCR-Text oder den Wissensgraph durchsuchen

efta_list_databases → efta_query_table

Einen JOIN, eine Anzahl oder einen Zählen GROUP BY ausführen

efta_run_sql

Diese in einen Agenten einbinden, der nicht Claude Code ist

Nutzung mit KI-Agenten

Das EFTA-/DataSet-Verständnis verstehen

DataSet-Reference


Schnellstart

Voraussetzungen

Als Claude-Code-Plugin installieren

/plugin marketplace add Zereo0317/Epstein-Files-Plugin
/plugin install epstein-files-plugin@epstein-files-plugin

Für CLI / eigenständigen MCP / Bibliotheksnutzung installieren

git clone https://github.com/Zereo0317/Epstein-Files-Plugin.git
cd Epstein-Files-Plugin
python -m pip install --upgrade pip
pip install -r requirements.txt   # requests, mcp (pinned <2.0 — see below)

Die CLI ausführen

python src/efta_researcher.py --list
python src/efta_researcher.py --search "trilateral commission"
python src/efta_researcher.py --sender epstein --recipient schank --date 2009-10-23
python src/efta_researcher.py --efta EFTA00741068
python src/efta_researcher.py --databases
python src/efta_researcher.py --tables image_analysis
python src/efta_researcher.py --sql "select dataset, count(*) as n from doc_search group by dataset" --database full_text_corpus

Den MCP-Server eigenständig ausführen

python src/mcp_server.py

Die 11 Nur-Lese-MCP-Tools

🔎 Zweckgebaut (der häufigste Fall — Volltext + E-Mail-Metadaten):

Werkzeug

Nutzen

efta_search(query, limit, cursor)

Teilstring-Suche über den Datasette-Index — echte Gesamttrefferzahl + cursor-Seitungsläden

efta_filter_email(sender, recipient, date_exact, date_prefix, subject, limit, cursor)

E-Mails anhand von Metadatenfeldern filtern — gleiche Gesamtzahl der Treffer + Seitierung

efta_known_docs(category)

Vorab verifizierte, faktengeprüfte bekannte Dokumente auflisten

efta_get_url(efta_number)

Eine EFTA-Nummer in die offizielle DOJ-PDF-URL konverwerten

efta_verify_url(efta_number)

HEAD-Prüfung, ob eine DOJ-PDF-URL live ist (siehe Einschränkung bei later)

efta_lookup(efta_number)

Vollständige Dokument-Metadaten aus dem Datasette-Index

🧬 Generisch (Alle 20 Datenbanken, keine felseithärtes pro Tabelle):

Tool

Zweck

efta_list_databases()

Alle 20 Datasette-Datenbanken auflisten (Bilder, Transkripte, OCR, Aussagen, Wissensgraph, ... )

efta_list_tables(database)

Jede Tabelle in einer der beiden Datenbanken auflisten – mit Spalten und Zeilenzahl

efta_describe_table(database, table)

Spaltenliste + Zeilenzahl für eine Tabelle

efta_query_table(database, table, filters, limit, cursor)

Filter-Suffix-Abfrage gegen jegliche Tabelle

efta_run_sql(database, sql, params, limit)

Schreibgeschütztes SQL — JOINS, Aggregation, GROUP BY; Datasette lehnt jedes Nicht-SELECT mit HTTP 400 ab

✅ Alle 11 Tools sind gemäß der MCP-Token-Annotationskonvention mit readA/idempotentHint annotiert (und openWorldHint auf allem netzwerkbezogenes Eigenschaften) — ein Client kann sie sicher automatisch ausführen.

⚠️ Pagination: limit ist je nach Tool auf 50–100 begrenzt. Eine Abfrage kann sehr viel mehr Treffer haben (z. B. „pizza“ hat derzeit 233 Treffer) — die paginierten Tools zeigen (N von GESAMT angezeigt) und, wenn mehr vorhanden, rollen cursor zum Fortfahren an.

⚠️ URL-Verifizierung: justice.gov schaltet jede PDF hinter eine Altersprüfung + Akamai-Herausforderung. Ein reiner HTTP-Status kann daher zwischen „live“ und „fehlend“ nicht zuverlässig unterscheiden. Die URL-Korrektheit stammt aus der unten verifizien Bate (DataSet-Grenztabelle), nicht aus dem Proben von justice.gov.

❌ Nicht durch die Werkzeuge allein abgedeckt: image_analysis (92.000 mit Unter)n-notes versehene Bilder), transcripts (435 Audio-/Video-P) , knowledge_graph, ocr_database, handwriting_transcriptions und 13 weitere — alle stattessen über die generischen Werkzeuge aus erreichen. Aufrufe efta_list_databases() für die aktuelle, live Liste, anstatt dieser Tabelle zu vertrauen.

Nutzung mit KI-Agenten

Das Epstein Files Plugin ist MCP-first, nicht Claude-first: ein Standard- lokalen Server für stdio (gebaut auf der FastMCP-Klasse im offiziellen mcp-Python-SDK), der einfaches Model Context Protocol spricht. Es funktioniert mit jedem MCP-kompatiblen Client.

Client

Wie die Verbindung hergestellt wird

Claude Code / Claude Desktop

Brocken Sign-in / oder rohe .mcp.json

Cursor / Windsurf / Cline

Server-Eintrag aus .mcp.json in den MCP-Einstellungen des Clients hinzufügen

ChatGPT, Gemini oder einem eigenen/headless-Agenten

Auf src/mcp_server.py über stdio zeigen — kein Plugin-System oder Claude-Abhängigkeit erforderlich

Generische MCP-Client-Konfiguration

{
  "mcpServers": {
    "epstein-files-plugin": {
      "command": "python",
      "args": ["/absolute/path/to/epstein-files-plugin/src/mcp_server.py"]
    }
  }
}

Keine API-Keys, keine Authentifizierung, kein Remote-Remote-Server — ein lokaler Prozess spricht stdio; identisches Verhalten in jedem Client.

Claude Code

Als Plugin installiert, lädt derselbe Server automatisch aus der .mcp.json dieses Repos (verwendet ${CLAUDE_PLUGIN_ROOT}, keine Pfadanpassung nötig):

{
  "mcpServers": {
    "epstein-files-plugin": {
      "command": "python",
      "args": ["${CLAUDE_PLUGIN_ROOT}/src/mcp_server.py"],
      "env": { "PYTHONUNBUFFERED": "1" }
    }
  }
}

Umgebungs-Overrides (Robustheit bei Spiegel- oder Domainwechsel)

Variable

Standardwert

Betrifft

EFTA_DATASETTE_BASE_URL

https://epstein-data.com

Jedes Such-/Abfrage-/SQL-Werkzeug

EFTA_DOJ_BASE_URL

https://www.justice.gov

efta_get_url, efta_verify_url, die --download/--verify-Flags der CLI

Eine spätere Änderung an einem der beiden Drittanbieter-Hosts ist eine Konfigurationsänderung, keine Codeänderung.


Beispiele

Beispiel 1 — Eine Quellenangabe ihrer offiziellen Quelle zuordnen

User request:  "What's the DOJ URL for EFTA00741068, and which DataSet is it in?"

Response:
  EFTA: EFTA00741068
  DataSet: DS9
  URL: https://www.justice.gov/epstein/files/DataSet%209/EFTA00741068.pdf

Under the hood:
  efta_get_url("EFTA00741068") parses the Bates number, resolves it against the verified
  12-DataSet boundary table, and constructs the official DOJ URL — no network call, no guessing.

Beispiel 2 — Eine E-Mail nach Absender, Empfänger und Datum finden

User request:  "Find the Epstein -> Roger Schank email from October 23, 2009."

Response:
  Found 3 email(s):
    EFTA00741068  DS9   2009-10-23  12:01:12   <- primary
    EFTA00885615  DS9   2009-10-23  12:01:12   (OCR duplicate, reads "grnail.com")
    EFTA01821140 DS10   2009-10-23  12:01:12   (third copy, later processing batch)

Under the hood:
  efta_filter_email(sender="epstein", recipient="schank", date_exact="2009-10-23") queries the
  epstein-data.com Datasette API (DOJ's own /multimedia-search is blocked for headless clients)
  and returns every metadata match, so duplicate copies can be cross-referenced by timestamp.

Beispiel 3 — Über den E-Mail-Korpus hinaus suchen (generische Werkzeuge)

User request:  "Any photos in the release that show a passport?"

Response:
  efta_list_tables("image_analysis") -> "images" table, 92,249 rows, column "analysis_text"
  efta_query_table("image_analysis", "images", filters={"analysis_text__contains": "passport"})
  -> matching rows with efta_number, source_pdf, and the analysis text itself

Under the hood:
  image_analysis isn't reachable through efta_search (that only covers full_text_corpus).
  efta_query_table works against any of the 20 databases using the same filter-suffix syntax,
  so no dedicated "image search" tool was needed.

Beispiel 4 — Eine Abfrage, die die Filter-API nicht ausdrücken kann (rohes SQL)

User request:  "Break down the document count by DataSet."

Response:
  efta_run_sql("full_text_corpus",
    "select dataset, count(*) as n from doc_search group by dataset order by dataset")
  -> 1:650, 2:150, 3:57, 4:143, 5:82, 6:13, 7:17, 8:10479, 9:480658, 10:496404,
     11:331597, 12:12339, 98:6, 99:23210   (live counts, 2026-08-24)

Note: two values (98, 99) fall outside the documented 1-12 DataSet scheme — small catch-all
buckets in the source data itself. efta_get_url()/get_dataset() only resolve DataSets 1-12.

DataSet-Referenz

EFTA-Nummern sind Seiten- (Bates-)Kennungen, keine Dokumentenkennungen – ein 20-seitiges PDF verbraucht 20 aufeinanderfolgende EFTA-Nummern. Die Grenzen unten sind die forensischen Pro-Datei-Bereiche aus dem rhowardstone/Epstein-research-data-Mapping, abgeglichen mit den eigenen Offenlegungsseiten des DOJ.

DataSet

EFTA-Bereich

Inhalt

DS01

1 – 3,158

Fotos, physische Scans

DS02

3,159 – 3,857

Fotos, beschlagnahmte Scans

DS03

3,858 – 5,586

Grand-Jury-Beweisstücke

DS04

5,705 – 8,320

Aufzeichnungen, Gerichtsdokumente

DS05

8,409 – 8,528

Beschlagnahmte Scans, Zeugenaussagen

DS06

8,529 – 8,998

Zeugenaussagen, Anklageschriften

DS07

9,016 – 9,664

Transkripte

DS08

9,676 – 39,023

E-Mails, Polizeiberichte

DS09

39,025 – 1,262,781

Haupt-E-Mail-Korpus

DS10

1,262,782 – 2,205,654

E-Mails, Finanzunterlagen

DS11

2,205,655 – 2,730,264

E-Mails, Gerätedaten

DS12

2,730,265 – 2,858,497

Gerichtsdokumente, FBI + Erweiterung

DOJ-URL-Muster: https://www.justice.gov/epstein/files/DataSet%20{N}/EFTA{efta:08d}.pdf


Recherche- und Faktencheck-Grundsätze

Diese Veröffentlichung zieht Verschwörungsnarrationen an. Jeder Eintrag im Register der bekannten Dokumente (efta_known_docs) ist mit einem Konfidenz-Tag versehen und entdramatisiert:

Thema

Was die Dokumente zeigen

Trilateral Commission / CFR

Epsteins eigener Lebenslauf führte ihn als ehemaliges Mitglied auf – Eliten-Netzwerk, kein Komplott

Rothschild

Eine echte Beratungsbeziehung (ein-$25M Southern-Trust-Vereinbarung); die „Ukraine-Umbruch“-E-Mail – EUvsDisinfo hat die „Putsch“-Version als Desinformation eingestuft

Rockefeller

Ein Rök der Rockefeller University + Spenderbeziehung – institutionell, nicht „Blutlinie“

Illuminati

Eine eingehende, unaufgefordert E-Mail an Epstein; keine Antwort in den Aufzeichnungen; kein Beleg für eine Mitgliedschaft

Gates / BGC3

Ein echtes Scoping-Dokument zur Pandemievorsorge; Faktenchecker fanden keine Verbindung zu COVID-19-Planung


Verantwortungsvolle Nutzung

  • ✅ Arbeitet ausschließlich mit bereits öffentlichen DOJ-Veröffentlichungen unter justice.gov/epstein und einem öffentlichen Volltext-Spiegel eines Drittanbieters (epstein-data.com). Keine privaten Daten, keine Quellen hinter Bezahlschranken, kein Scraping hinter einem Login.

  • ✅ Jede Behauptung im Register der bekannten Dokumente trägt eine Quelle und ein Konfidenz-Tag – eine „Verbindung“ wird nur für das gekennzeichnet, was ein Dokument wörtlich zeigt, niemals für das, was eine virale Bildunterschrift behauptet.

  • ✅ efta_run_sql erweitert was abgefragt werden kann, nicht die ethische Haltung: Datasettes eigene API akzeptiert nur SELECT (ein Nicht-SELECT wird mit HTTP 400 abgelehnt, bevor es SQLite erreicht – live verifiziert), und sie ruft keine Daten ab, die epstein-data.com nicht ohnehin für jede Person bereitstellt, die die Website direkt ansteuert.

  • ❌ Nicht für Re-Identifizierung, Belästigung oder okay. Dies ist eine Quellzuordnungs- und Verifizierungswerkzeug, keine Vermittlungs- oder Unterstellungungsgegenstand – sie erhebt keinen, über ein Dokument hinaus sichtbares Fehlw nach.

  • ❌ Keine Rechtsberatung, kein offizielles DOJ-Produkt und keine Affinität zu epstein-data.com – ein unabhängiger Client deren öffentlicher API.


Stand des Tech-Stacks (2026-08-24)

  • Python: 3.11+ erforderlich (von 3.10 angehoben – der 2026-10-31 abgelegt und veraltet). Getestet gegen 3.14.7.

  • MCP SDK: auf mcp>=1.29.0,<2.0.0 gepinnt. Das v2.0.0 (2026-07-28) des offiziellen SDK hat mcp.server.fastmcp.FastMCP in mcp.server.mcpserver.MCPServer umbenannt – eine Hackensmabe Anderung, zu der dieser Server nicht migriert ist. Ein nicht gepinntes mcp>=1.0.0 würde stillschweigend zu v2.x Resultat und den Import brechen. Das unabhängige eigenständige PyPI-Paket fastmcp (PrefectHQ, inzwischen v3.x/4.0) ist keine Abhängigkeit.

  • pip: oben ausgeführter Befehl führt zuerst python -m pip install --upgrade pip aus.

  • requests: >=2.31.0, keine bekannte Einschränkung gegen neuere 2.x-Releases.


Projektstruktur

.claude-plugin/plugin.json   Plugin manifest (Claude Code convenience only)
.mcp.json                    Local stdio MCP server config (client-agnostic)
src/efta_core.py             DataSet boundary table, EFTA -> URL, known-document registry
src/epstein_datasette.py     epstein-data.com Datasette API client (purpose-built + generic layer)
src/doj_auth.py              justice.gov public anti-bot challenge helper + verification
src/efta_researcher.py       Standalone CLI
src/mcp_server.py            FastMCP server exposing the 11 tools above
skills/efta-research/        Claude Code skill: research methodology (optional convenience)
skills/doj-auth/             Claude Code skill: justice.gov access details (optional convenience)

Community & Support

Beitragen

Dies ist ein öffentliches Recherche-Werkzeug mit einzelnen Maintainer (Zereo0317/Epstein-Files-Plugin). Issues und Pull Requests willkommen.

Lizenz

MIT-0 (MIT No Attribution) – siehe LICENSE. Gewählt über dem einfachen MIT, speziell für ClawHub-Kompatibilität, die MIT-0 ohne Pillage-Optimungen gefordert. Das Repository ist öffentlich auf GitHub; die Lizenzgewähr gewährt die Weitergabe/Wiederverwendung des Codes durch jedermann.

Haftungsausschluss

Das Epic-Files-Plugin zeigt nur Dokumente, die das DOJ bereits unter dem Epstein Files Transparency Act öffentlich gemacht hat, sowie einen öffentlichen Volltext-Spiegel vomDrittanbieter (epstein-data.com). Es bringt Zitate zu ihrer offiziellen Quelle zurück und berichtet, was ein Dokument wörtlich enthält – es führt keine unabhängige Ermittlung durch unterstellt nichts über das, was ein Dokument zeigt, und hostet, rehostet nicht bzw. legt neue nicht denof non-public Daten. Gedacht für Recherche, faktencrock, source-Verifikation – nicht für Re-Identifikation, Belästigung oder okay.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to fact-check claims, verify citations, and check source freshness using Wikipedia, Wikidata, Crossref, and Wayback Machine.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to search SEC filings, earnings transcripts, and EU regulations with ready-to-cite evidence, including exact passages and source links.
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to create verifiable, replayable citations, search private knowledge bases, and publish Markdown with verified citation markers.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables full-text, page-level citation search over the House Oversight Committee's published Epstein investigation documents, plus structured search over transcribed rows from Epstein's pilot flight logbook with provenance and confidence markers.
    0
    MIT