API & MCP

Streampost MCP-API

Steuere Streampost direkt aus jedem KI-Agenten (Claude, ChatGPT …) über das Model Context Protocol. Lesen, posten, planen, sofort veröffentlichen und Status abfragen - über 10 Plattformen.

Einführung

Der Streampost-MCP-Server ist ein Streamable-HTTP-MCP-Server. Du erstellst im Dashboard unter MCP einen API-Key und verbindest damit deinen KI-Client. Der Agent erhält dann Tools, um Posts zu lesen, zu erstellen, zu planen und sofort zu veröffentlichen.

Endpoint
https://mcp.streampost.de/mcp
Protokoll
MCP · JSON-RPC 2.0

Verbindung & Authentifizierung

Es gibt zwei gleichwertige Wege. Der einfachste: der Key im URL-Pfad unter https://mcp.streampost.de/mcp/sp_live_DEIN_KEY. So kommt jeder Client mit der blanken URL aus — auch ChatGPT und die Claude-Connectors, die keine eigenen Header setzen können. Alternativ per Bearer-API-Key im Authorization-Header gegen https://mcp.streampost.de/mcp.

Keys werden gehasht gespeichert und sind nach dem Erstellen nur einmal sichtbar. Erstelle einen Key im Dashboard unter MCP → Neuen API Key erstellen. Da die URL den Key enthält, ist sie wie ein Passwort zu behandeln.

ParameterTypBeschreibung
AuthorizationheaderBearer sp_live_… — nur beim Header-Weg nötig
Content-Type*headerapplication/json

Health-Check (ohne Auth):

bash
curl https://mcp.streampost.de/health
# {"status":"ok","service":"streampost-mcp"}

Client einrichten

ChatGPT und Claude (Web & Desktop) - unter Einstellungen → Connectors einen eigenen Connector anlegen und die persönliche URL einfügen. Mehr ist nicht nötig.

Claude Code, Cursor, VS Code - in der MCP-Konfiguration des Clients. type ist Pflicht, sonst wird der Eintrag als lokaler Server gelesen und übersprungen:

json
{
  "mcpServers": {
    "streampost": {
      "type": "http",
      "url": "https://mcp.streampost.de/mcp/sp_live_DEIN_KEY"
    }
  }
}

Gemini CLI - erwartet httpUrl statt url:

json
{
  "mcpServers": {
    "streampost": {
      "httpUrl": "https://mcp.streampost.de/mcp/sp_live_DEIN_KEY"
    }
  }
}

Plattformen

create_post und publish_now unterstützen diese Plattform-Werte:

instagramtiktokyoutubetwitterlinkedinfacebookpinterestthreadsblueskygoogle_business

Hinweis: Geplante/sofortige Posts auf pinterest und google_business benötigen Board bzw. Standort und sind nur im Dashboard möglich.

Tools

Alle Tools werden als JSON-RPC-tools/call aufgerufen. * markiert Pflichtfelder. Antworten enthalten einen JSON-Text im content-Feld (hier zur Lesbarkeit entpackt).

list_social_accounts

lesend

Listet alle verbundenen Social-Media-Accounts inkl. id (für gezieltes Targeting in create_post / publish_now).

Keine Parameter.

Antwort (Beispiel)

json
{
  "id": "8a99377a-…",
  "platform": "tiktok",
  "platform_display_name": "Streampost",
  "platform_username": null,
  "created_at": "2026-06-14T14:29:16Z"
}

list_scheduled_posts

lesend

Listet geplante und Entwurfs-Posts (neueste zuerst), inkl. der Ziel-Plattformen.

ParameterTypBeschreibung
limitnumber (1–50)Maximale Anzahl Posts. Standard: 10.

Antwort (Beispiel)

json
{
  "id": "a5c008db-…",
  "master_content": "New Summer Sale …",
  "scheduled_at": null,
  "status": "draft",
  "platforms": ["instagram", "tiktok"]
}

get_analytics_summary

lesend

Aggregierte Analytics der letzten 30 Tage pro Plattform.

Keine Parameter.

Antwort (Beispiel)

json
{
  "platform": "instagram",
  "likes": 53,
  "comments": 44,
  "shares": 0,
  "reach": 0
}

create_post

schreibend

Erstellt einen Post (Text, Bild, Video oder Carousel). Ziel sind entweder ALLE Accounts der gewählten platforms ODER gezielt einzelne account_ids. Ohne scheduled_at entsteht ein Entwurf, mit scheduled_at ein geplanter Post, mit use_queue der nächste freie Slot.

ParameterTypBeschreibung
content*stringStandard-Text (max. 5000 Zeichen). Pro Plattform überschreibbar via per_platform.
platformsstring[]Plattformen - postet an ALLE aktiven Accounts dieser Plattformen. Entweder platforms ODER account_ids angeben.
account_idsuuid[]Gezielte Accounts (aus list_social_accounts).
media_urlsurl[]Öffentliche http(s)-URLs. 1 Bild/Video, mehrere Bilder = Carousel.
cover_urlurlCover-/Thumbnail-Bild (nur für Video-Posts).
per_platform{platform, content}[]Eigener Text je Plattform (überschreibt content).
scheduled_atISO 8601Geplanter Veröffentlichungszeitpunkt (UTC). Weglassen = Entwurf.
use_queuebooleanPlant automatisch in den nächsten freien Slot (4h nach dem letzten geplanten Post).

Antwort (Beispiel)

json
{
  "id": "1136e63b-…",
  "status": "scheduled",
  "scheduled_at": "2026-06-20T10:00:00Z",
  "post_type": "carousel",
  "media_count": 2,
  "has_cover": false,
  "accounts": [
    { "id": "b571e04c-…", "platform": "tiktok", "name": "Fivelle", "custom_caption": false },
    { "id": "d87bfd8f-…", "platform": "instagram", "name": "Streampost", "custom_caption": true }
  ]
}

publish_now

schreibend

Veröffentlicht einen Post SOFORT (statt nur zu planen). Gleiche Parameter wie create_post (ohne scheduled_at/use_queue). Pinterest & Google Business sind hier nicht möglich (benötigen Board/Standort).

ParameterTypBeschreibung
content*stringStandard-Text (max. 5000 Zeichen).
platformsstring[]Plattformen (alle aktiven Accounts) - oder account_ids.
account_idsuuid[]Gezielte Accounts.
media_urlsurl[]Bild/Video/Carousel per URL.
cover_urlurlVideo-Thumbnail.
per_platform{platform, content}[]Text je Plattform.

Antwort (Beispiel)

json
{
  "id": "9f2a…",
  "status": "scheduled",
  "post_type": "image",
  "media_count": 1,
  "publishing": "gestartet",
  "hint": "Ergebnis je Plattform mit get_post_status abrufen."
}

get_post_status

lesend

Zeigt den Veröffentlichungsstatus eines Posts je Plattform/Account inkl. Fehlergrund und öffentlicher Post-ID.

ParameterTypBeschreibung
post_id*uuidDie id aus create_post / publish_now.

Antwort (Beispiel)

json
{
  "id": "1136e63b-…",
  "status": "published",
  "post_type": "image",
  "variants": [
    {
      "platform": "tiktok",
      "account": "Fivelle",
      "status": "published",
      "error": null,
      "published_at": "2026-06-18T10:01:12Z",
      "public_id": "7380…"
    }
  ]
}

Raw HTTP (JSON-RPC)

Ohne MCP-Client kannst du die Tools direkt per HTTP aufrufen - z. B. einen Entwurf für alle TikTok-Accounts:

bash
curl -X POST https://mcp.streampost.de/mcp \
  -H "Authorization: Bearer sp_live_DEIN_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "create_post",
      "arguments": {
        "content": "Hallo von der API!",
        "platforms": ["tiktok"],
        "media_urls": ["https://example.com/bild.jpg"]
      }
    }
  }'

Fehler

ParameterTypBeschreibung
401 UnauthorizedhttpAPI-Key fehlt, ist ungültig oder widerrufen.
Unauthorizedtool errorTool-Aufruf ohne gültigen Bearer-Key.
Keine aktiven Ziel-Accountstool errorplatforms/account_ids treffen keinen aktiven Account.
Text für <Plattform> zu langtool errorInhalt überschreitet das Zeichenlimit der Plattform.
Fragen? Kontakt · API-Key erstellen im Dashboard → MCP.