ChatGPT Custom GPT Integration

Du willst mit ChatGPT auf deine Brains zugreifen. ChatGPT kann kein MCP — aber Custom GPTs mit Actions (OpenAPI 3.1). Jede Instanz exposes eine REST-Variante der Brain-Tools genau dafür.

Voraussetzung: ChatGPT Plus / Team / Enterprise (Custom GPTs sind nicht im Free-Plan). Du brauchst einen GTS-Admin-Token aus deiner Instanz.


Was bietet der Connector

4 Actions die ChatGPT automatisch als Tools rendert:

Action HTTP Funktion
listBrains GET /api/chatgpt/brains Liste mit Titel zuerst, gefiltert nach Category/Tag
getBrain GET /api/chatgpt/brains/{id} Volltext (Frontmatter + Body)
searchBrains GET /api/chatgpt/search?q=… Substring über id/title/tags + body
writeBrain POST /api/chatgpt/brains Create / Update mit Schema-Validierung + atomarem Git-Commit

Alle authentisiert mit Bearer-Token — dasselbe Token das du für den Claude-MCP-Zugang (OAuth-Access-Token oder Admin-API-Key) nutzt.


Setup — Schritt für Schritt

1. Token holen

Im GTS-Web: Einstellungen → Remote MCP (Claude.ai)Neuen Token generieren. Kopieren, Passwort-Manager. (Gleicher Token funktioniert für Claude MCP + ChatGPT Actions parallel.)

2. Custom GPT erstellen

In ChatGPT:

  1. Sidebar → "Explore GPTs" → oben rechts "Create"
  2. Tab "Configure"
  3. Name + Beschreibung nach Geschmack — z.B.:
    • Name: „Mein Brain"
    • Instructions: „Du hilfst Gustavo mit seinem Ground Truth Personal Brain. Nutze die Actions um Brains zu lesen, durchsuchen, erstellen. Leite Antworten mit dem title ein — id nur zur Referenz in Monospace."
  4. Scroll runter zu "Actions""Create new action"

3. Schema laden

  • Authentication: Klick auf das Zahnrad → API KeyAuth Type: Bearer. Key einfügen.

  • Schema: Option 1 — "Import from URL":

    https://gu-brain.kuble.com/api/chatgpt/openapi.json
    

    ChatGPT fetcht und parst das Schema automatisch. Deine Instanz-URL passt du an.

    Option 2 — Schema manuell kopieren: öffne die URL im Browser, alles markieren, in ChatGPT's Schema-Feld einfügen.

4. Privacy Policy (optional aber nervig)

ChatGPT verlangt für öffentliche GPTs eine Privacy-Policy-URL. Für persönliche Custom GPTs (nicht geshared) kannst du das Feld leer lassen — dann ist der GPT nur für dich.

5. Testen

Im "Test"-Bereich rechts in Create-Dialog → frag „liste meine Brains". ChatGPT ruft listBrains auf, zeigt Titel + IDs, zitiert beim Öffnen.


Beispiel-Prompts

  • „Zeig mir alle Brains in Kategorie projekt."
  • „Was steht im Brain gustavo.kunde.axa?"
  • „Suche nach ‚swiss ai desk' und fasse die Treffer zusammen."
  • „Leg ein neues Projekt-Brain gustavo.projekt.xyz an, Status active, Titel ‚XYZ-Studie'."

Unterschiede zur MCP-Integration

Claude MCP ChatGPT Actions
Protokoll JSON-RPC 2.0 über HTTPS OpenAPI 3.1 REST
Auth OAuth 2.1 (dynamic) oder Bearer Bearer
Tools brain_list, brain_read, brain_search, brain_write, brain_capture, brain_history listBrains, getBrain, searchBrains, writeBrain
Stateful nein (stateless) nein
Schreibrechte ja ja

Beides nutzt dieselbe Backend-Logik (@gts/core.writeBrain). Ein in ChatGPT erstelltes Brain ist sofort in Claude und im Web-UI sichtbar.


Security-Modell

  • Rollen werden enforct: viewer kann nur lesen, member schreibt nur nicht-admin-Brains, admin hat vollen Zugriff. Admin-Kategorie ist via ChatGPT-Connector komplett geblockt (auch für admins — edit admin- Brains im Web-UI). Auch Writes auf synced Business-Mirrors (<slug>.business.*) sind auf Personal-Instanzen geblockt.
  • OAuth-Scopes werden geprüft: Token braucht brain.read für GET und brain.write für POST. Legacy-Admin-API-Keys gelten als "full" (beide Scopes).
  • Admin-Brain-Sichtbarkeit: Nur admin-Rolle oder explizite allowed_users in der Brain-Frontmatter sehen admin-Kategorie-Brains in Listen, Suche und Read. Alle anderen Callers bekommen 404 (nicht 403 — damit IDs nicht leaken).
  • Admin-only Felder (allowed_users, allowed_connections, hourly_rate, budget, rate_card) werden aus extras für nicht-admin-Tokens gestript, bevor das Brain geschrieben wird.

Warnung: Bearer-Tokens sind statisch. Teile niemals einen Custom GPT öffentlich, der deinen Token als Action-Auth eingetragen hat — jeder User des GPTs kann dann effektiv mit deinen GTS-Rechten schreiben (begrenzt durch die Rolle oben, aber immer noch deine Daten). Nutze Custom GPTs mit GTS-Tokens nur privat, oder nutze stattdessen den Claude Remote MCP mit pro-User-OAuth.

Einschränkungen

  • Keine Capture/History — bewusst weggelassen, kannst du bei Bedarf ergänzen. Für Inbox: nutze writeBrain mit Category inbox.
  • ChatGPT Memory != GTS-Brains. Der Connector schreibt in GTS, nicht in ChatGPT's interne Memory.
  • Rate-Limits: keine speziellen Limits vom GTS, aber ChatGPT drosselt selbst bei zu vielen Tool-Calls pro Minute.
  • Admin-Kategorie: komplett über diesen Connector geblockt (siehe Security-Modell oben).

Troubleshooting

"Unknown error: Schema ungültig" → OpenAPI-Fetch hat nicht funktioniert. Direkt im Browser https://<host>/api/chatgpt/openapi.json öffnen — kommt JSON zurück? Wenn nicht, Instanz-URL prüfen.

"401 Unauthorized" bei jedem Tool-Call → Token falsch eingetippt oder wurde widerrufen. Neuen generieren in /settings/integrations/mcp.

"WRONG_INSTANCE" beim Schreiben → Du hast im id das falsche Präfix. Muss mit <slug>. deiner Instanz beginnen — z.B. gustavo.projekt.xyz, nicht kuble.projekt.xyz.

Schema validation failed → Frontmatter-Pflichtfelder für die Kategorie fehlen. Siehe SCHEMAS.md. Für source brauchst du type + date, für projekt customer, etc.