Zum Inhalt springen
PressRadar

Dokumentation

PressRadar per MCP verbinden.

PressRadar stellt Ihrem KI-Assistenten über das Model Context Protocol (MCP) Werkzeuge bereit, um in Ihren Quellen zu suchen und Ihre eigenen Journalistendaten zu pflegen.

Überblick

Der MCP-Server ist unter dem Pfad /api/mcp dieser Website erreichbar (Streamable HTTP). Jede Anfrage authentifiziert sich mit dem API-Schlüssel Ihres Workspaces als Bearer-Token.

Ihr Assistent entscheidet selbst, wann er welches Tool nutzt. PressRadar sendet keine Nachrichten von sich aus; für regelmäßige Briefings richten Sie einen Zeitplan in Ihrem Client ein.

Gut zu wissen

MCP liefert keine Nachrichten von selbst in eine inaktive Unterhaltung. Ihr KI-Assistent fragt PressRadar nur ab, wenn Sie (oder eine Automatisierung) eine Anfrage stellen. Für automatische Briefings brauchen Sie einen separat eingerichteten Zeitplan, etwa eine geplante Aufgabe in Ihrem KI-Client, sofern dieser das unterstützt.

Einrichtung

  1. Registrieren Sie sich und schließen Sie den Fragebogen ab.
  2. Wählen Sie bis zu 10 Quellen und warten Sie, bis mindestens eine aktiv ist.
  3. Erstellen Sie im Workspace Ihren API-Schlüssel und kopieren Sie ihn – er wird nur einmal angezeigt.
  4. Fügen Sie PressRadar in den Einstellungen bzw. der MCP-Konfiguration von Claude oder Codex als Server hinzu und hinterlegen Sie dort den Schlüssel.
  5. Fragen Sie Ihren Assistenten, z. B.: „Welche relevanten Storys gibt es seit gestern in meinen Quellen?“

Die genaue Anleitung für Ihren Client finden Sie nach der Anmeldung im Workspace.

Fügen Sie Ihren API-Schlüssel niemals in einen KI-Chat ein. Hinterlegen Sie ihn als Umgebungsvariable (PRESSRADAR_API_KEY) oder im dafür vorgesehenen Einstellungsfeld Ihres Clients. Wurde ein Schlüssel versehentlich geteilt, widerrufen Sie ihn und erstellen Sie einen neuen. Fügen Sie Ihren API-Schlüssel niemals in einen Chat ein. Er gehört in die Einstellungen oder Konfigurationsdatei Ihres Clients. Gespeichert wird bei uns nur ein Hash; Sie können den Schlüssel jederzeit widerrufen.

Beispielfragen

  • Nur lesen„Welche für mein Unternehmen relevanten Meldungen sind in der letzten Sammlung erschienen?“
  • Nur lesen„Welche Journalistinnen und Journalisten haben über dieses Thema berichtet?“
  • Nur lesen„Zeigen Sie mir die Quellen und erklären Sie, warum diese Meldung relevant ist.“
  • Schreibt in Ihren Workspace„Speichern Sie diese Journalistin in meiner Liste und notieren Sie, dass sie über Energiepolitik schreibt.“
  • Schreibt in Ihren Workspace„Protokollieren Sie, dass ich den Journalisten heute per E-Mail kontaktiert und unsere Pressemitteilung geschickt habe.“

Anleitungen nach Client

Recherchiert anhand der offiziellen Dokumentation der Anbieter. Der Status zeigt ehrlich, was direkt funktioniert und was nur mit Umweg geht.

Claude CodeUnterstütztNicht durchgängig getestet

Claude Code unterstützt entfernte HTTP-MCP-Server mit eigenen Headern. Der API-Schlüssel wird als Authorization-Header gesendet.

  1. Legen Sie Ihren PressRadar-API-Schlüssel als Umgebungsvariable PRESSRADAR_API_KEY in Ihrer Shell an (z. B. in ~/.zshrc oder ~/.bashrc).
  2. Variante A: Führen Sie den Befehl `claude mcp add` aus. Die Shell setzt den Schlüssel dabei ein und Claude Code speichert ihn in seiner lokalen Konfiguration.
  3. Variante B (für Projekte im Team): Legen Sie im Projektordner eine Datei `.mcp.json` an. Dort steht nur `${PRESSRADAR_API_KEY}`; Claude Code setzt den Wert beim Start aus Ihrer Umgebung ein, der Schlüssel landet also nicht im Repository.
  4. Starten Sie Claude Code neu und prüfen Sie die Verbindung mit `/mcp`.
Per CLI hinzufügen
claude mcp add --transport http pressradar https://pressradar.website.cloud.brutal.ai/api/mcp \
  --header "Authorization: Bearer $PRESSRADAR_API_KEY"
.mcp.json im Projekt
{
  "mcpServers": {
    "pressradar": {
      "type": "http",
      "url": "https://pressradar.website.cloud.brutal.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${PRESSRADAR_API_KEY}"
      }
    }
  }
}

Basiert auf der offiziellen Dokumentation (Stand 06.11.2026); noch nicht durchgängig getestet.

Claude DesktopMit UmwegNicht durchgängig getestet

Die Connector-Einstellungen in Claude Desktop entsprechen denen von claude.ai: Ein fester API-Schlüssel geht dort nur mit der Beta „Request headers“. Als Umweg können Sie PressRadar über das Open-Source-Werkzeug mcp-remote als lokalen Server einbinden.

  1. Falls Ihre Organisation die Beta „Request headers“ hat, folgen Sie der Anleitung für Claude im Browser. Die Einstellung gilt dann auch in Claude Desktop.
  2. Andernfalls: Installieren Sie Node.js, damit `npx` verfügbar ist.
  3. Öffnen Sie die Datei `claude_desktop_config.json` von Claude Desktop und fügen Sie den Eintrag unten hinzu.
  4. Ersetzen Sie `$PRESSRADAR_API_KEY` direkt in dieser Datei durch Ihren Schlüssel. Claude Desktop liest hier keine Umgebungsvariablen aus Ihrer Shell.
  5. Schreiben Sie in `args` keine Leerzeichen um den Doppelpunkt (`Authorization:${AUTH_HEADER}`). Laut mcp-remote werden Leerzeichen in `args` unter Claude Desktop für Windows sonst falsch übergeben.
  6. Starten Sie Claude Desktop vollständig neu.
claude_desktop_config.json (über mcp-remote)
{
  "mcpServers": {
    "pressradar": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://pressradar.website.cloud.brutal.ai/api/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer $PRESSRADAR_API_KEY"
      }
    }
  }
}

Basiert auf der offiziellen Dokumentation (Stand 06.11.2026); noch nicht durchgängig getestet.

Claude (claude.ai)Noch nicht direktNicht durchgängig getestet

Benutzerdefinierte Connectors in claude.ai unterstützen OAuth oder Server ohne Anmeldung. Feste API-Schlüssel über „Request headers“ sind eine Beta für ausgewählte Organisationen. PressRadar bietet noch kein OAuth an, deshalb funktioniert die Verbindung nur, wenn Ihre Organisation diese Beta hat.

  1. Öffnen Sie in claude.ai „Customize > Connectors“ und klicken Sie auf „Add custom connector“. In Team- und Enterprise-Plänen fügt ein Owner den Connector unter „Organization settings > Connectors“ hinzu (Add > Custom > Web).
  2. Tragen Sie als MCP-Server-URL die unten angezeigte Adresse ein.
  3. Wählen Sie bei „Authentication“ die Option „No sign-in“.
  4. Öffnen Sie „Request headers“, wählen Sie den Header-Namen `authorization` und tragen Sie als Wert `Bearer ` gefolgt von Ihrem Schlüssel ein (mit Leerzeichen). Alternativ: Header `x-api-key` mit dem Schlüssel allein als Wert.
  5. Wenn der Abschnitt „Request headers“ fehlt, hat Ihre Organisation die Beta noch nicht. Nutzen Sie dann Claude Code oder Claude Desktop mit mcp-remote.
  6. Hinweis: In Team- und Enterprise-Plänen nutzen alle Mitglieder denselben hinterlegten Schlüssel. Header lassen sich nach dem Speichern nicht mehr ändern, nur durch Entfernen und erneutes Hinzufügen des Connectors.
MCP-Server-URL
https://pressradar.website.cloud.brutal.ai/api/mcp
Request header (authorization)
authorization: Bearer $PRESSRADAR_API_KEY

Basiert auf der offiziellen Dokumentation (Stand 06.11.2026); noch nicht durchgängig getestet.

OpenAI Codex CLIUnterstütztNicht durchgängig getestet

Codex unterstützt Streamable-HTTP-MCP-Server und liest den Bearer-Token aus einer Umgebungsvariable. Der Schlüssel selbst steht dabei nicht in der Konfigurationsdatei.

  1. Legen Sie Ihren PressRadar-API-Schlüssel als Umgebungsvariable PRESSRADAR_API_KEY an.
  2. Führen Sie `codex mcp add` aus. Angegeben wird nur der Name der Variable, nicht ihr Wert.
  3. Alternativ tragen Sie den Server direkt in `~/.codex/config.toml` ein (oder in `.codex/config.toml` eines vertrauenswürdigen Projekts).
  4. Starten Sie Codex neu. Mit `codex mcp --help` sehen Sie die Befehle zum Auflisten und Entfernen von Servern.
Per CLI hinzufügen
codex mcp add pressradar --url https://pressradar.website.cloud.brutal.ai/api/mcp \
  --bearer-token-env-var PRESSRADAR_API_KEY
~/.codex/config.toml
# ~/.codex/config.toml
[mcp_servers.pressradar]
url = "https://pressradar.website.cloud.brutal.ai/api/mcp"
bearer_token_env_var = "PRESSRADAR_API_KEY"

Basiert auf der offiziellen Dokumentation (Stand 06.11.2026); noch nicht durchgängig getestet.

OpenAI Codex (IDE extension)UnterstütztNicht durchgängig getestet

Die Codex-IDE-Erweiterung nutzt dieselbe Konfiguration wie die Codex CLI (`~/.codex/config.toml`). Ein einmal eingerichteter Server ist dort ebenfalls verfügbar.

  1. Richten Sie PressRadar wie bei der Codex CLI ein, per `codex mcp add` oder direkt in `~/.codex/config.toml`.
  2. Stellen Sie sicher, dass PRESSRADAR_API_KEY in der Umgebung gesetzt ist, aus der Ihr Editor gestartet wird.
  3. Laden Sie das Editorfenster neu bzw. starten Sie die Erweiterung neu.
~/.codex/config.toml
# ~/.codex/config.toml
[mcp_servers.pressradar]
url = "https://pressradar.website.cloud.brutal.ai/api/mcp"
bearer_token_env_var = "PRESSRADAR_API_KEY"

Basiert auf der offiziellen Dokumentation (Stand 06.11.2026); noch nicht durchgängig getestet.

Tool-Referenz

Parameterbeschreibungen stammen direkt aus dem Validierungsschema des Servers und sind daher englisch.

Nachrichten & Quellen

list_sourcesNur lesen

Listet die überwachten Quellen des Workspace mit Status der Erfassung (letzter Erfolg, nächster Lauf, Fehler, Artikel der letzten 7 Tage, veraltet) und dem Quellenlimit des Tarifs.

Keine Parameter.

Rückgabe
sources[]
sourceId, publisherId, Name, Domain, Status, lastSuccessAt, nextCollectAt, Fehler in Folge, letzter Laufstatus, Artikel (7 Tage), veraltet
limit / used
Quellenplätze im Tarif und belegte Plätze
Beispiel
list_sources({})
→ {"sources":[{"name":"Handelsblatt","status":"active","lastSuccessAt":"2026-11-06T06:02:11Z","stale":false}],"limit":10,"used":4}

search_newsNur lesen

Durchsucht Storys (Gruppen von Artikeln zum selben Ereignis) aus den Quellen des Workspace, sortiert nach Relevanz für den Workspace, dann Aktualität. Liefert Top-Artikel, Medien, Autor:innen, Treffer-Keywords, kurze Relevanzgründe und eine gekennzeichnete Modell-Zusammenfassung. Weitere Seiten mit nextCursor.

Parameter: search_news
ParameterTypeDescription
querystringWords to find in title, teaser or text (all must match; max 8 terms; "quoted phrase" allowed). Omit to list the most relevant stories.
sincestringOnly articles published/discovered at or after this time (ISO 8601, e.g. 2026-11-01 or 2026-11-01T08:00:00Z)
untilstringOnly articles published/discovered at or before this time (ISO 8601, e.g. 2026-11-01 or 2026-11-01T08:00:00Z)
sinceHoursintegerShortcut for since: only the last N hours (e.g. 6 for the latest collection, 24 for a day)
publisherIdsstring[]Limit to these sources (publisherId from list_sources)
minScorenumberMinimum relevance score 0..100 for this workspace
includeExcludedbooleanStandard: falseAlso return articles that matched an exclusion rule
authorstringOnly articles with an author whose name contains this text
cursorstringnextCursor from the previous result, to get the next page
limitintegerStandard: 10Stories per page (1..25)
Rückgabe
stories[]
storyId, Titel, Score (0..100 oder null), Top-Artikel {URL, Titel, Medium, publishedAt, Teaser}, Artikelanzahl, Medien, Autor:innen, Keywords, Relevanzgründe, Modell-Zusammenfassung
nextCursor
Als cursor für die nächste Seite übergeben; null am Ende
freshness
Zeitpunkt der letzten und nächsten geplanten Erfassung
Beispiel
search_news({"query":"Wasserstoff Förderung","sinceHours":24,"limit":5})
→ {"stories":[{"storyId":"cm…","title":"Bund stockt Wasserstoff-Förderung auf","score":87,"articleCount":4}],"nextCursor":null}

get_storyNur lesen

Liefert eine Story mit ihren Artikeln (URL, Medium, Daten, Teaser, optional Volltext), Autor:innen zusammengeführt mit Ihren eigenen Journalisten-Notizen und öffentlich belegten Kontakten (mit Quell-URL), der Relevanzbewertung und einer Liste fehlender Daten.

Parameter: get_story
ParameterTypeDescription
storyIdPflichtstringstoryId from search_news
includeTextbooleanStandard: falseInclude the article full text (third-party content, up to 20,000 characters per article)
maxArticlesintegerStandard: 10How many articles of the story to return (1..20)
Rückgabe
articles[]
URL, Titel, Medium, publishedAt, Teaser, Text/truncated (mit includeText), Textquelle, Textstatus, Autor:innen mit zusammengeführten Daten, fehlende Felder
relevance
Score, Gründe, Keywords, Methode, Modell-Zusammenfassung (gekennzeichnet)
missing[]
Nicht verfügbare Daten, z. B. publishedAt, authors, text, contacts
Beispiel
get_story({"storyId":"cm…","includeText":true,"maxArticles":3})
→ {"title":"…","articles":[{"outlet":"FAZ","textStatus":"full","textSource":"publisher","truncated":false}],"missing":["contacts"]}

get_freshnessNur lesen

Wann die letzte geplante Erfassung lief, wann die nächste fällig ist (alle 6 Stunden) und welche Quellen veraltet, unvollständig oder fehlerhaft sind.

Keine Parameter.

Rückgabe
lastCollectionAt / nextScheduledAt
ISO-Zeitstempel
staleSources / partialSources / failedSources
Quellen mit Problemen und Grund
Beispiel
get_freshness({})
→ {"lastCollectionAt":"2026-11-06T06:04:00Z","nextScheduledAt":"2026-11-06T12:00:00Z","staleSources":[]}

Journalist:innen & eigene Daten

search_journalistsNur lesen

Findet Journalist:innen nach Name, Medium oder Thema. Sortiert nach Anzahl passender Artikel in Ihren Quellen der letzten 90 Tage. Ihre eigenen Einträge und Notizen haben Vorrang vor öffentlichen Daten.

Parameter: search_journalists
ParameterTypeDescription
querystringName (or part of it)
topicstringTopic words; ranks journalists by recent coverage (90 days) in your sources
outletstringOutlet name or domain
limitintegerStandard: 10Max results (1..25)
Rückgabe
journalists[]
workspaceJournalistId, journalistId, Name, Medium, Rolle, Notizen, Tags, Nicht kontaktieren, Kontakte (Herkunft workspace / public_source), passende Artikel (90 Tage)
Beispiel
search_journalists({"topic":"Batteriezellen","limit":5})
→ {"journalists":[{"name":"…","outlet":"Handelsblatt","matchingArticles90d":6}]}

get_journalistNur lesen

Ein:e Journalist:in: zuerst Ihr eigener Eintrag (Notizen, Tags, Kontakte, Interaktionen), dann öffentlich belegte Kontakte mit Quell-URL und die letzten Artikel in Ihren Quellen.

Parameter: get_journalist
ParameterTypeDescription
workspaceJournalistIdstringYour workspace's own record id
journalistIdstringGlobal journalist id (from get_story / search_journalists)
Rückgabe
contacts[]
Herkunft 'workspace' (Ihre, mit contactId) zuerst, dann 'public_source' mit sourceUrl/sourceType
recentArticles[] / interactions[]
Letzte Artikel und Ihre protokollierten Interaktionen
Beispiel
get_journalist({"journalistId":"cm…"})
→ {"name":"…","contacts":[{"origin":"public_source","kind":"email","sourceUrl":"https://…/autor/…"}]}

save_journalistSchreibt in Ihren Workspace

Legt Ihren eigenen Eintrag zu einer/einem Journalist:in an oder aktualisiert ihn (nur in Ihrem Workspace sichtbar). Mit journalistId verknüpfen Sie ihn mit einem bekannten Profil. Nur übergebene Felder werden geändert; Notizen und Tags werden ersetzt.

Parameter: save_journalist
ParameterTypeDescription
workspaceJournalistIdstringUpdate this existing workspace record
journalistIdstringGlobal journalist id to link (from get_story / search_journalists)
namestringFull name (required when creating without journalistId)
outletstringOutlet / publication
rolestringRole or beat, e.g. 'Wirtschaftsredakteurin, Energie'
notesstringYour private notes (replaces previous notes)
tagsstring[]Tags (replaces previous tags)
doNotContactbooleanMark as do-not-contact
Rückgabe
created / journalist
Ob ein Eintrag neu angelegt wurde, und der zusammengeführte Eintrag inkl. workspaceJournalistId
Beispiel
save_journalist({"journalistId":"cm…","role":"Energie-Ressort","notes":"Bevorzugt Exklusivdaten, nicht vor 10 Uhr anrufen","tags":["energie"]})
→ {"created":true,"journalist":{"workspaceJournalistId":"cm…"}}

add_journalist_contactSchreibt in Ihren Workspace

Fügt Ihrem Journalisten-Eintrag eine Kontaktangabe hinzu (E-Mail, Telefon, Social-Handle, …). Wird geprüft und privat gespeichert.

Parameter: add_journalist_contact
ParameterTypeDescription
workspaceJournalistIdPflichtstringWorkspace record id from save_journalist
kindPflichtemail | phone | website | profile | x | linkedin | bluesky | mastodon | instagram | threads | otherContact type
valuePflichtstringEmail, phone, URL or handle
labelstringe.g. 'work', 'newsroom'
sourcestringWhere this contact came from (e.g. 'email signature', a URL)
Rückgabe
contactId
Id für remove_journalist_contact
Beispiel
add_journalist_contact({"workspaceJournalistId":"cm…","kind":"email","value":"name@example.org","source":"E-Mail-Signatur"})
→ {"contactId":"cm…","kind":"email"}

remove_journalist_contactSchreibt in Ihren Workspace

Entfernt eine Ihrer eigenen Kontaktangaben. Öffentliche Kontakte können hier nicht entfernt werden.

Parameter: remove_journalist_contact
ParameterTypeDescription
contactIdPflichtstringcontactId of a workspace contact (origin 'workspace' in get_journalist)
Rückgabe
removed
true, wenn gelöscht
Beispiel
remove_journalist_contact({"contactId":"cm…"})
→ {"removed":true}

log_interactionSchreibt in Ihren Workspace

Protokolliert Pitch, E-Mail, Anruf, Treffen, Berichterstattung oder Notiz zu einer/einem Journalist:in in Ihrem Workspace.

Parameter: log_interaction
ParameterTypeDescription
workspaceJournalistIdPflichtstringWorkspace record id from save_journalist
kindPflichtemail_sent | email_received | call | meeting | pitch | coverage | noteInteraction type
occurredAtstringWhen it happened; default now (ISO 8601, e.g. 2026-11-01 or 2026-11-01T08:00:00Z)
subjectstringShort subject
summarystringWhat happened / was agreed
articleIdstringRelated article (e.g. resulting coverage)
Rückgabe
interactionId
Id des Eintrags
Beispiel
log_interaction({"workspaceJournalistId":"cm…","kind":"pitch","subject":"Studie Q4","summary":"Interesse, Rückmeldung bis Freitag"})
→ {"interactionId":"cm…","kind":"pitch"}

request_journalist_enrichmentSchreibt in Ihren Workspace

Stellt eine Hintergrundsuche nach öffentlich angegebenen Kontaktdaten (Autorenseiten) in die Warteschlange. Antwortet sofort mit 'queued'; Ergebnisse erscheinen später in get_journalist. Max. 20 pro Workspace und Tag.

Parameter: request_journalist_enrichment
ParameterTypeDescription
journalistIdPflichtstringGlobal journalist id (from get_story / search_journalists)
Rückgabe
status
queued | already_queued, verbleibend heute
Beispiel
request_journalist_enrichment({"journalistId":"cm…"})
→ {"status":"queued","remainingToday":19}